Yeah. That runs. Funny.
Here's my code:
LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.numeric_std.ALL;
ENTITY tb IS END tb;
ARCHITECTURE behavior OF tb IS
component top port ( clk : in std_logic; reset : in std_logic; vframe_in : in std_logic; -- 1 when the image is valid vline_in : in std_logic; -- 1 when the line is valid vblob : out std_logic; vin : in std_logic_vector(7 downto 0); vred : out std_logic_vector(7 downto 0); vgreen : out std_logic_vector(7 downto 0); vblue : out std_logic_vector(7 downto 0) ); end component;
signal clk : std_logic; signal reset : std_logic; signal vframe_in : std_logic; signal vline_in : std_logic;
-- signal vline_out : std_logic; signal vblob : std_logic; signal vin : std_logic_vector(7 downto 0); signal vred : std_logic_vector(7 downto 0); signal vgreen : std_logic_vector(7 downto 0); signal vblue : std_logic_vector(7 downto 0);
constant start_recording_row_delay : integer := 2; constant start_recording_col_delay : integer := 8;
constant clkperiod : time := 20 ns; constant line_synchs : integer := 4;
type char_file is file of character; -- one byte each
file my_file : char_file; file my_file2 : char_file;
constant file_name : string := "infile.bmp"; constant file_name2 : string := "outfile.bmp";
type int_array is array(53 downto 0) of integer; type char_array is array(53 downto 0) of character;
signal bmp_char:char_array; signal start_recording : std_logic; signal row_counter : std_logic_vector(15 downto 0);
function bmp_function( bmp_header:int_array; bmp_start, bmp_data_size : integer ) return integer is variable result : integer; variable multiplier : integer; variable bmp_pointer : integer; begin result := 0; multiplier := 1; bmp_pointer := bmp_start; for i in 0 to (bmp_data_size-1) loop result := result + multiplier*bmp_header(bmp_pointer); multiplier := multiplier*256; bmp_pointer := bmp_pointer+1; end loop;
-- result_vector := std_logic_vector(to_unsigned(result,result_vector'length)); return result; end function bmp_function;
--BMP Header signal file_size : std_logic_vector(31 downto 0); signal reserved1 : std_logic_vector(31 downto 0); signal reserved2 : std_logic_vector(31 downto 0); signal offset : std_logic_vector(31 downto 0);
--BMP Info signal size : std_logic_vector(31 downto 0); signal width : std_logic_vector(31 downto 0); signal height : std_logic_vector(31 downto 0); signal planes : std_logic_vector(31 downto 0); signal bits : std_logic_vector(31 downto 0); signal compression : std_logic_vector(31 downto 0); signal imagesize : std_logic_vector(31 downto 0); signal xresolution : std_logic_vector(31 downto 0); signal yresolution : std_logic_vector(31 downto 0); signal ncolors : std_logic_vector(31 downto 0); signal importantcolors : std_logic_vector(31 downto 0);
BEGIN
uut: top PORT MAP( clk => clk, reset => reset, vframe_in => vframe_in,
-- vframe_out => vframe_out, vline_in => vline_in,
-- vline_out => vline_out, vblob => vblob, vin => vin, vred => vred, vgreen => vgreen, vblue => vblue );
clock_process: process begin clock_loop: loop clk