OpenCores
URL https://opencores.org/ocsvn/mkjpeg/mkjpeg/trunk

Subversion Repositories mkjpeg

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /mkjpeg/trunk
    from Rev 54 to Rev 56
    Reverse comparison

Rev 54 → Rev 56

/tb/wave.do
124,43 → 124,38
add wave -noupdate -divider BUF_FIFO
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_buf_fifo/clk
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_buf_fifo/rst
add wave -noupdate -format Literal -radix unsigned /jpeg_tb/u_jpegenc/u_buf_fifo/img_size_x
add wave -noupdate -format Literal -radix unsigned /jpeg_tb/u_jpegenc/u_buf_fifo/img_size_y
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/img_size_x
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/img_size_y
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_buf_fifo/sof
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_buf_fifo/iram_wren
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/iram_wdata
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/block_lock
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_buf_fifo/block_lock(10)
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_buf_fifo/block_lock(9)
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_buf_fifo/block_lock(8)
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_buf_fifo/block_lock(7)
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_buf_fifo/block_lock(6)
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_buf_fifo/block_lock(5)
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_buf_fifo/block_lock(4)
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_buf_fifo/block_lock(3)
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_buf_fifo/block_lock(2)
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_buf_fifo/block_lock(1)
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_buf_fifo/block_lock(0)
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_buf_fifo/fifo_almost_full
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_buf_fifo/fdct_fifo_hf_full
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/fdct_block_cnt
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_buf_fifo/fdct_fifo_rd
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/fdct_fifo_q
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_buf_fifo/fdct_fifo_hf_full
add wave -noupdate -format Literal -radix unsigned /jpeg_tb/u_jpegenc/u_buf_fifo/pixel_cnt
add wave -noupdate -format Literal -radix unsigned /jpeg_tb/u_jpegenc/u_buf_fifo/line_cnt
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/line_cnt
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/ramq
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/ramd
add wave -noupdate -format Literal -radix unsigned /jpeg_tb/u_jpegenc/u_buf_fifo/ramwaddr_d1
add wave -noupdate -format Literal -height 74 -radix unsigned /jpeg_tb/u_jpegenc/u_buf_fifo/ramwaddr
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/ramwaddr
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_buf_fifo/ramenw
add wave -noupdate -format Literal -radix unsigned /jpeg_tb/u_jpegenc/u_buf_fifo/ramraddr
add wave -noupdate -format Literal -radix unsigned /jpeg_tb/u_jpegenc/u_buf_fifo/write_ptr
add wave -noupdate -format Literal -radix unsigned /jpeg_tb/u_jpegenc/u_buf_fifo/read_ptr
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/ramraddr
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/pix_inblk_cnt
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/read_block_cnt
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/write_block_cnt
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/ramraddr_int
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/raddr_base_line
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/raddr_tmp
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/ramwaddr_d1
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/line_lock
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/memwr_line_cnt
add wave -noupdate -format Literal -radix unsigned /jpeg_tb/u_jpegenc/u_buf_fifo/memwr_line_cnt
add wave -noupdate -format Literal -radix unsigned /jpeg_tb/u_jpegenc/u_buf_fifo/wr_line_idx
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/line_inblk_cnt
add wave -noupdate -format Literal -radix unsigned /jpeg_tb/u_jpegenc/u_buf_fifo/write_block_cnt
add wave -noupdate -format Literal -radix unsigned /jpeg_tb/u_jpegenc/u_buf_fifo/read_block_cnt
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/ramraddr_int
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_buf_fifo/memrd_offs_cnt
add wave -noupdate -format Literal -radix unsigned /jpeg_tb/u_jpegenc/u_buf_fifo/memrd_line
add wave -noupdate -format Literal -radix unsigned /jpeg_tb/u_jpegenc/u_buf_fifo/rd_line_idx
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_buf_fifo/image_write_end
add wave -noupdate -divider FDCT
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_fdct/clk
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_fdct/rst
168,7 → 163,7
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_fdct/ready_pb
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_fdct/writing_en
add wave -noupdate -format Literal -radix unsigned -expand /jpeg_tb/u_jpegenc/u_fdct/fdct_sm_settings
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_fdct/bf_block_cnt
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_fdct/cur_cmp_idx
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_fdct/bf_fifo_rd
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_fdct/bf_dval
add wave -noupdate -format Literal -radix hexadecimal /jpeg_tb/u_jpegenc/u_fdct/bf_fifo_q
196,11 → 191,13
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_fdct/odv1
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_fdct/dcto1
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_fdct/cmp_idx
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_fdct/cur_cmp_idx
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_fdct/rd_addr
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_fdct/input_rd_cnt
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_fdct/rd_en
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_fdct/rd_en_d1
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_fdct/eoi_fdct
add wave -noupdate -format Literal -radix unsigned /jpeg_tb/u_jpegenc/u_fdct/x_pixel_cnt
add wave -noupdate -format Literal -radix unsigned /jpeg_tb/u_jpegenc/u_fdct/y_line_cnt
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_fdct/rdaddr
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_fdct/wr_cnt
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_fdct/dbuf_data
567,7 → 564,7
add wave -noupdate -format Logic /jpeg_tb/u_jpegenc/u_outmux/ram_wren
add wave -noupdate -format Literal /jpeg_tb/u_jpegenc/u_outmux/ram_wraddr
TreeUpdate [SetDefaultTree]
WaveRestoreCursors {{Cursor 4} {15100525000 ps} 0}
WaveRestoreCursors {{Cursor 4} {1221815000 ps} 0}
configure wave -namecolwidth 150
configure wave -valuecolwidth 83
configure wave -justifyvalue left
582,4 → 579,4
configure wave -timeline 0
configure wave -timelineunits ps
update
WaveRestoreZoom {3854654563 ps} {22956070813 ps}
WaveRestoreZoom {0 ps} {6725160750 ps}
/tb/vhdl/HostBFM.vhd
317,10 → 317,10
-- others => X"01"
-- 75%
--X"08", X"06", X"06", X"07", X"06", X"05", X"08", X"07", X"07", X"07", X"09", X"09", X"08", X"0A", X"0C", X"14",
--X"0D", X"0C", X"0B", X"0B", X"0C", X"19", X"12", X"13", X"0F", X"14", X"1D", X"1A", X"1F", X"1E", X"1D", X"1A",
--X"1C", X"1C", X"20", X"24", X"2E", X"27", X"20", X"22", X"2C", X"23", X"1C", X"1C", X"28", X"37", X"29", X"2C",
--X"30", X"31", X"34", X"34", X"34", X"1F", X"27", X"39", X"3D", X"38", X"32", X"3C", X"2E", X"33", X"34", X"32"
X"08", X"06", X"06", X"07", X"06", X"05", X"08", X"07", X"07", X"07", X"09", X"09", X"08", X"0A", X"0C", X"14",
X"0D", X"0C", X"0B", X"0B", X"0C", X"19", X"12", X"13", X"0F", X"14", X"1D", X"1A", X"1F", X"1E", X"1D", X"1A",
X"1C", X"1C", X"20", X"24", X"2E", X"27", X"20", X"22", X"2C", X"23", X"1C", X"1C", X"28", X"37", X"29", X"2C",
X"30", X"31", X"34", X"34", X"34", X"1F", X"27", X"39", X"3D", X"38", X"32", X"3C", X"2E", X"33", X"34", X"32"
-- 15 %
--X"35", X"25", X"28", X"2F",
341,37 → 341,37
--X"FF", X"FF", X"FF", X"FF"
-- 50%
X"10", X"0B", X"0C", X"0E", X"0C", X"0A", X"10", X"0E",
X"0D", X"0E", X"12", X"11", X"10", X"13", X"18", X"28",
X"1A", X"18", X"16", X"16", X"18", X"31", X"23", X"25",
X"1D", X"28", X"3A", X"33", X"3D", X"3C", X"39", X"33",
X"38", X"37", X"40", X"48", X"5C", X"4E", X"40", X"44",
X"57", X"45", X"37", X"38", X"50", X"6D", X"51", X"57",
X"5F", X"62", X"67", X"68", X"67", X"3E", X"4D", X"71",
X"79", X"70", X"64", X"78", X"5C", X"65", X"67", X"63"
--X"10", X"0B", X"0C", X"0E", X"0C", X"0A", X"10", X"0E",
--X"0D", X"0E", X"12", X"11", X"10", X"13", X"18", X"28",
--X"1A", X"18", X"16", X"16", X"18", X"31", X"23", X"25",
--X"1D", X"28", X"3A", X"33", X"3D", X"3C", X"39", X"33",
--X"38", X"37", X"40", X"48", X"5C", X"4E", X"40", X"44",
--X"57", X"45", X"37", X"38", X"50", X"6D", X"51", X"57",
--X"5F", X"62", X"67", X"68", X"67", X"3E", X"4D", X"71",
--X"79", X"70", X"64", X"78", X"5C", X"65", X"67", X"63"
);
constant qrom_chr : ROMQ_TYPE :=
(
-- 50% for chrominance
X"11", X"12", X"12", X"18", X"15", X"18", X"2F", X"1A",
X"1A", X"2F", X"63", X"42", X"38", X"42", X"63", X"63",
X"63", X"63", X"63", X"63", X"63", X"63", X"63", X"63",
X"63", X"63", X"63", X"63", X"63", X"63", X"63", X"63",
X"63", X"63", X"63", X"63", X"63", X"63", X"63", X"63",
X"63", X"63", X"63", X"63", X"63", X"63", X"63", X"63",
X"63", X"63", X"63", X"63", X"63", X"63", X"63", X"63",
X"63", X"63", X"63", X"63", X"63", X"63", X"63", X"63"
--X"11", X"12", X"12", X"18", X"15", X"18", X"2F", X"1A",
--X"1A", X"2F", X"63", X"42", X"38", X"42", X"63", X"63",
--X"63", X"63", X"63", X"63", X"63", X"63", X"63", X"63",
--X"63", X"63", X"63", X"63", X"63", X"63", X"63", X"63",
--X"63", X"63", X"63", X"63", X"63", X"63", X"63", X"63",
--X"63", X"63", X"63", X"63", X"63", X"63", X"63", X"63",
--X"63", X"63", X"63", X"63", X"63", X"63", X"63", X"63",
--X"63", X"63", X"63", X"63", X"63", X"63", X"63", X"63"
-- 75% chrominance
--X"09", X"09", X"09", X"0C", X"0B", X"0C", X"18", X"0D",
--X"0D", X"18", X"32", X"21", X"1C", X"21", X"32", X"32",
--X"32", X"32", X"32", X"32", X"32", X"32", X"32", X"32",
--X"32", X"32", X"32", X"32", X"32", X"32", X"32", X"32",
--X"32", X"32", X"32", X"32", X"32", X"32", X"32", X"32",
--X"32", X"32", X"32", X"32", X"32", X"32", X"32", X"32",
--X"32", X"32", X"32", X"32", X"32", X"32", X"32", X"32",
--X"32", X"32", X"32", X"32", X"32", X"32", X"32", X"32"
X"09", X"09", X"09", X"0C", X"0B", X"0C", X"18", X"0D",
X"0D", X"18", X"32", X"21", X"1C", X"21", X"32", X"32",
X"32", X"32", X"32", X"32", X"32", X"32", X"32", X"32",
X"32", X"32", X"32", X"32", X"32", X"32", X"32", X"32",
X"32", X"32", X"32", X"32", X"32", X"32", X"32", X"32",
X"32", X"32", X"32", X"32", X"32", X"32", X"32", X"32",
X"32", X"32", X"32", X"32", X"32", X"32", X"32", X"32",
X"32", X"32", X"32", X"32", X"32", X"32", X"32", X"32"
--X"08", X"06", X"06", X"07", X"06", X"05", X"08", X"07", X"07", X"07", X"09", X"09", X"08", X"0A", X"0C", X"14",
--X"0D", X"0C", X"0B", X"0B", X"0C", X"19", X"12", X"13", X"0F", X"14", X"1D", X"1A", X"1F", X"1E", X"1D", X"1A",
/design/BufFifo/BUF_FIFO.vhd
70,28 → 70,45
-------------------------------------------------------------------------------
architecture RTL of BUF_FIFO is
 
constant C_NUM_LINES : integer := 8 + C_EXTRA_LINES;
 
signal pixel_cnt : unsigned(15 downto 0);
signal line_cnt : unsigned(15 downto 0);
 
signal ramq : STD_LOGIC_VECTOR(C_PIXEL_BITS-1 downto 0);
signal ramd : STD_LOGIC_VECTOR(C_PIXEL_BITS-1 downto 0);
signal ramwaddr : unsigned(log2(C_MAX_LINE_WIDTH*8)-1 downto 0);
signal ramwaddr : unsigned(log2(C_MAX_LINE_WIDTH*C_NUM_LINES)-1 downto 0);
signal ramenw : STD_LOGIC;
signal ramraddr : unsigned(log2(C_MAX_LINE_WIDTH*8)-1 downto 0);
signal ramraddr : unsigned(log2(C_MAX_LINE_WIDTH*C_NUM_LINES)-1 downto 0);
signal pix_inblk_cnt : unsigned(7 downto 0);
signal line_inblk_cnt : unsigned(7 downto 0);
signal pix_inblk_cnt : unsigned(2 downto 0);
signal pix_inblk_cnt_d1 : unsigned(2 downto 0);
signal line_inblk_cnt : unsigned(2 downto 0);
signal read_block_cnt : unsigned(12 downto 0);
signal read_block_cnt_d1 : unsigned(12 downto 0);
signal write_block_cnt : unsigned(12 downto 0);
signal ramraddr_int : unsigned(23 downto 0);
signal raddr_base_line : unsigned(23 downto 0);
signal ramraddr_int : unsigned(16+log2(C_NUM_LINES)-1 downto 0);
signal raddr_base_line : unsigned(16+log2(C_NUM_LINES)-1 downto 0);
signal raddr_tmp : unsigned(15 downto 0);
signal ramwaddr_d1 : unsigned(log2(C_MAX_LINE_WIDTH*8)-1 downto 0);
signal ramwaddr_d1 : unsigned(ramwaddr'range);
signal block_lock : unsigned(C_MAX_LINE_WIDTH/8-1 downto 0);
signal line_lock : unsigned(log2(C_NUM_LINES)-1 downto 0);
signal memwr_line_cnt : unsigned(log2(C_NUM_LINES)-1 downto 0);
signal memrd_offs_cnt : unsigned(log2(C_NUM_LINES)-1+1 downto 0);
signal memrd_line : unsigned(log2(C_NUM_LINES)-1 downto 0);
signal wr_line_idx : unsigned(15 downto 0);
signal rd_line_idx : unsigned(15 downto 0);
signal image_write_end : std_logic;
-------------------------------------------------------------------------------
-- Architecture: begin
-------------------------------------------------------------------------------
102,7 → 119,7
U_SUB_RAMZ : entity work.SUB_RAMZ
generic map
(
RAMADDR_W => log2(C_MAX_LINE_WIDTH*8),
RAMADDR_W => log2( C_MAX_LINE_WIDTH*C_NUM_LINES ),
RAMDATA_W => C_PIXEL_BITS
)
port map
136,25 → 153,34
p_pixel_cnt : process(CLK, RST)
begin
if RST = '1' then
pixel_cnt <= (others => '0');
line_cnt <= (others => '0');
ramwaddr <= (others => '0');
ramwaddr_d1 <= (others => '0');
pixel_cnt <= (others => '0');
memwr_line_cnt <= (others => '0');
wr_line_idx <= (others => '0');
ramwaddr <= (others => '0');
ramwaddr_d1 <= (others => '0');
image_write_end <= '0';
elsif CLK'event and CLK = '1' then
ramwaddr_d1 <= ramwaddr;
if iram_wren = '1' then
-- pixel index in line
-- end of line
if pixel_cnt = unsigned(img_size_x)-1 then
pixel_cnt <= (others => '0');
-- line counter
line_cnt <= line_cnt + 1;
-- RAM is only 8 lines buffer
if line_cnt(2 downto 0) = 8-1 then
ramwaddr <= (others => '0');
else
ramwaddr <= ramwaddr + 1;
-- absolute write line index
wr_line_idx <= wr_line_idx + 1;
if wr_line_idx = unsigned(img_size_y)-1 then
image_write_end <= '1';
end if;
-- memory line index
if memwr_line_cnt = C_NUM_LINES-1 then
memwr_line_cnt <= (others => '0');
ramwaddr <= (others => '0');
else
memwr_line_cnt <= memwr_line_cnt + 1;
ramwaddr <= ramwaddr + 1;
end if;
else
pixel_cnt <= pixel_cnt + 1;
ramwaddr <= ramwaddr + 1;
162,35 → 188,14
end if;
if sof = '1' then
pixel_cnt <= (others => '0');
ramwaddr <= (others => '0');
pixel_cnt <= (others => '0');
ramwaddr <= (others => '0');
memwr_line_cnt <= (others => '0');
wr_line_idx <= (others => '0');
image_write_end <= '0';
end if;
end if;
end process;
 
write_block_cnt <= pixel_cnt(15 downto 3);
 
-------------------------------------------------------------------
-- lock written blocks, unlock after read
-------------------------------------------------------------------
p_mux6 : process(CLK, RST)
begin
if RST = '1' then
block_lock <= (others => '0');
elsif CLK'event and CLK = '1' then
if pixel_cnt(2 downto 0) = 8-1 then
if line_cnt(2 downto 0) = 8-1 then
block_lock(to_integer(write_block_cnt)) <= '1';
end if;
end if;
if pix_inblk_cnt = 8-1 then
if line_inblk_cnt = 8-1 then
block_lock(to_integer(read_block_cnt)) <= '0';
end if;
end if;
end if;
end process;
-------------------------------------------------------------------
-- FIFO half full / almost full flag generation
202,19 → 207,13
fifo_almost_full <= '0';
elsif CLK'event and CLK = '1' then
if block_lock(to_integer(read_block_cnt)) = '1' then
if rd_line_idx + 8 <= wr_line_idx then
fdct_fifo_hf_full <= '1';
else
fdct_fifo_hf_full <= '0';
end if;
if write_block_cnt = unsigned(img_size_x(15 downto 3))-1 then
if block_lock(0) = '1' then
fifo_almost_full <= '1';
else
fifo_almost_full <= '0';
end if;
elsif block_lock(to_integer(write_block_cnt+1)) = '1' then
if wr_line_idx > rd_line_idx + C_NUM_LINES-1 then
fifo_almost_full <= '1';
else
fifo_almost_full <= '0';
229,17 → 228,41
p_mux5 : process(CLK, RST)
begin
if RST = '1' then
memrd_offs_cnt <= (others => '0');
read_block_cnt <= (others => '0');
pix_inblk_cnt <= (others => '0');
line_inblk_cnt <= (others => '0');
rd_line_idx <= (others => '0');
pix_inblk_cnt_d1 <= (others => '0');
read_block_cnt_d1 <= (others => '0');
elsif CLK'event and CLK = '1' then
pix_inblk_cnt_d1 <= pix_inblk_cnt;
read_block_cnt_d1 <= read_block_cnt;
-- BUF FIFO read
if fdct_fifo_rd = '1' then
-- last pixel in block
if pix_inblk_cnt = 8-1 then
pix_inblk_cnt <= (others => '0');
 
-- last block in line
--if read_block_cnt = unsigned(img_size_x(15 downto 3))-1 then
-- rd_line_idx <= rd_line_idx + 1;
--end if;
 
-- last line in 8
if line_inblk_cnt = 8-1 then
line_inblk_cnt <= (others => '0');
 
-- last block in last line
if read_block_cnt = unsigned(img_size_x(15 downto 3))-1 then
read_block_cnt <= (others => '0');
rd_line_idx <= rd_line_idx + 8;
if memrd_offs_cnt + 8 > C_NUM_LINES-1 then
memrd_offs_cnt <= memrd_offs_cnt + 8 - C_NUM_LINES;
else
memrd_offs_cnt <= memrd_offs_cnt + 8;
end if;
else
read_block_cnt <= read_block_cnt + 1;
end if;
246,15 → 269,25
else
line_inblk_cnt <= line_inblk_cnt + 1;
end if;
else
pix_inblk_cnt <= pix_inblk_cnt + 1;
end if;
end if;
if memrd_offs_cnt + (line_inblk_cnt) > C_NUM_LINES-1 then
memrd_line <= memrd_offs_cnt(memrd_line'range) + (line_inblk_cnt) - (C_NUM_LINES);
else
memrd_line <= memrd_offs_cnt(memrd_line'range) + (line_inblk_cnt);
end if;
if sof = '1' then
memrd_line <= (others => '0');
memrd_offs_cnt <= (others => '0');
read_block_cnt <= (others => '0');
pix_inblk_cnt <= (others => '0');
line_inblk_cnt <= (others => '0');
rd_line_idx <= (others => '0');
end if;
end if;
277,8 → 310,8
if RST = '1' then
ramraddr_int <= (others => '0');
elsif CLK'event and CLK = '1' then
raddr_base_line <= line_inblk_cnt * unsigned(img_size_x);
raddr_tmp <= (read_block_cnt & "000") + pix_inblk_cnt;
raddr_base_line <= (memrd_line) * unsigned(img_size_x);
raddr_tmp <= (read_block_cnt_d1 & "000") + pix_inblk_cnt_d1;
ramraddr_int <= raddr_tmp + raddr_base_line;
end if;
/design/mdct/FDCT.vhd
103,6 → 103,7
signal bf_dval : std_logic;
signal bf_dval_m1 : std_logic;
signal bf_dval_m2 : std_logic;
signal bf_dval_m3 : std_logic;
signal wr_cnt : unsigned(5 downto 0);
signal dbuf_data : std_logic_vector(11 downto 0);
signal dbuf_q : std_logic_vector(11 downto 0);
259,9 → 260,11
cur_cmp_idx_d9 <= cur_cmp_idx_d8;
start_int <= '0';
bf_dval_m2 <= bf_fifo_rd_s;
bf_dval_m3 <= bf_fifo_rd_s;
bf_dval_m2 <= bf_dval_m3;
bf_dval_m1 <= bf_dval_m2;
bf_dval <= bf_dval_m1;
fram1_rd_d <= fram1_rd_d(fram1_rd_d'length-2 downto 0) & fram1_rd;
-- SOF or internal self-start
305,7 → 308,8
fram1_rd <= '0';
-- stall reading from input FIFO and writing to output FIFO
-- when output FIFO is almost full
if rd_en = '1' and unsigned(fifo1_count) < 256-64 then
if rd_en = '1' and unsigned(fifo1_count) < 256-64 and
(bf_fifo_hf_full = '1' or cur_cmp_idx /= 0) then
-- read request goes to BUF_FIFO only for component 0.
if cur_cmp_idx = 0 then
bf_fifo_rd_s <= '1';
/design/common/JPEG_PKG.vhd
34,6 → 34,12
-- otherwise some onchip RAM will be wasted and never used
constant C_MAX_LINE_WIDTH : integer := 1280;
-- memory/performance tradeoff
-- 8 extra lines highest performance
-- 0 extra lines lowest area
constant C_EXTRA_LINES : integer := 8; -- from 0 to 8
 
-- 24 bit format RGB 888 bits
-- 16 bit format RGB 565 bits
constant C_PIXEL_BITS : integer := 24;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.