linreceiver-vhdl/ReceptionTrame_lib/receptionTrame_tb.vhd
2023-09-26 11:35:03 +02:00

111 lines
1.9 KiB
VHDL

LIBRARY ieee;
USE ieee.std_logic_1164.all;
USE ieee.std_logic_arith.all;
ENTITY receptionTrame_tb IS
GENERIC(
CLOCK_PERIOD: time := 52 us;
UC_CLK_PERIOD: time := 43 ns
);
END receptionTrame_tb;
ARCHITECTURE arch of receptionTrame_tb IS
COMPONENT receptionTrame
PORT(
H: IN std_logic;
nCLR: IN std_logic;
Lin: IN std_logic;
AdrSel: IN std_logic_vector;
RecByte: OUT std_logic_vector(7 downto 0);
RecByte_WR: OUT std_logic;
RecBytes_RST: OUT std_logic;
Err_SET: OUT std_logic_vector(2 downto 0);
NbByteInc: OUT std_logic;
MsgReceived_SET: OUT std_logic;
NbRecByte_RST: OUT std_logic
);
END COMPONENT;
SIGNAL H: std_logic;
SIGNAL Lin: std_logic;
BEGIN
clkGen : PROCESS
BEGIN
H <= '1';
WAIT FOR UC_CLK_PERIOD / 2;
H <= '0';
WAIT FOR UC_CLK_PERIOD / 2;
END PROCESS clkGen;
linFrame : PROCESS
BEGIN
Lin <= '1';
WAIT FOR 100 us;
-- Sync Break
Lin <= '0';
WAIT FOR 14 * CLOCK_PERIOD;
Lin <= '1';
WAIT FOR 2 * CLOCK_PERIOD;
-- Sync field
for i in 4 downto 0 loop
Lin <= '0';
WAIT FOR CLOCK_PERIOD;
Lin <= '1';
WAIT FOR CLOCK_PERIOD;
end loop;
-- ID field (0x0, 2 data byte)
Lin <= '0';
WAIT FOR CLOCK_PERIOD;
Lin <= '0';
WAIT FOR 8 * CLOCK_PERIOD;
Lin <= '1';
WAIT FOR CLOCK_PERIOD;
-- data fields (both 0x00)
Lin <= '0';
WAIT FOR 9 * CLOCK_PERIOD;
Lin <= '1';
WAIT FOR CLOCK_PERIOD;
Lin <= '0';
WAIT FOR 9 * CLOCK_PERIOD;
Lin <= '1';
WAIT FOR CLOCK_PERIOD;
-- checksum (0x0)
Lin <= '0';
WAIT FOR 9 * CLOCK_PERIOD;
Lin <= '1';
WAIT FOR CLOCK_PERIOD;
report "Finished" severity failure ;
END PROCESS;
U0 : receptionTrame
PORT MAP(
H => H,
nCLR => '1',
Lin => Lin,
AdrSel => "000000",
RecByte => OPEN,
RecByte_WR => OPEN,
RecBytes_RST => OPEN,
Err_SET => OPEN,
NbByteInc => OPEN,
MsgReceived_SET => OPEN,
NbRecByte_RST => OPEN
);
END ARCHITECTURE arch;