------------------------------------------------------------------------------- -- Title : CRC generator test bench -- Project : Bluetooth baseband core ------------------------------------------------------------------------------- -- File : crc_gen_tb.vhd -- Author : Jamil Khatib (khatib@ieee.org) -- Organization: OpenIPCore Project -- Created : 2000/12/07 -- Last update : 2000/12/09 -- Platform : -- Simulators : Modelsim 5.3XE/Windows98 -- Synthesizers: -- Target : -- Dependency : ieee.std_logic_1164 -- bluetooth.components_pkg -- pck_crc16_d1 Package ------------------------------------------------------------------------------- -- Description: CRC generator core test bench ------------------------------------------------------------------------------- -- Copyright (c) 2000 Jamil Khatib -- -- This VHDL design file is an open design; you can redistribute it and/or -- modify it and/or implement it after contacting the author -- You can check the draft license at -- http://www.opencores.org/OIPC/license.shtml ------------------------------------------------------------------------------- -- Revisions : -- Revision Number : 1 -- Version : 0.1 -- Date : 7 Dec 2000 -- Modifier : Jamil Khatib (khatib@ieee.org) -- Desccription : Created -- Known bugs : -- To Optimze : ------------------------------------------------------------------------------- library ieee; use ieee.std_logic_1164.all; use work.pck_crc16_d1.all; library bluetooth; use bluetooth.components_pkg.all; entity crc_gen_tb is end crc_gen_tb; architecture crc_gen_beh_tb of crc_gen_tb is signal reset : std_logic := '0'; -- Reset signal signal clk : std_logic := '0'; -- clock signal constant init_value : std_logic_vector(15 downto 0) := "1100100100000000"; -- lfst init value signal initsignal : std_logic_vector(15 downto 0) := init_value; constant bitstream : std_logic_vector(19 downto 0) := "01110110010101100101"; signal enable : std_logic; -- crc enable signal dout : std_logic; -- Dataout signal din : std_logic; -- DataIn signal reg_value : std_logic_vector(15 downto 0) := (others => '0'); -- Regsiter begin -- crc_gen_beh_tb --reset <= '1' after 5 ns; clk <= not clk after 10 ns; uut : crc_gen_ent port map ( clk => clk, rst => reset, en => enable, DataIn => din, DataOut => dout, Init => initsignal ); process begin -- process if reset = '0' then wait for 5 ns; reset <= '1'; enable <= '0'; din <= '0'; else wait until clk = '0'; enable <= '1'; wait until clk = '1'; reg_value <= init_value; -- reg_value <= nextCRC16_D1( bitstream(i), init_value ); for i in 0 to bitstream'length-1 loop din <= bitstream(i); wait until clk = '1'; assert reg_value(0) = Dout report "Incorrect output, en = 1" severity error; reg_value <= nextCRC16_D1( bitstream(i), reg_value ); end loop; -- i enable <= '0'; for i in 0 to 15 loop din <= '0'; wait until clk = '1'; assert reg_value(0) = Dout report "Incorrect output, en = 0" severity error; reg_value <= nextCRC16_D1( '0', reg_value ); end loop; -- i end if; end process; end crc_gen_beh_tb;