|
|
-- tb_TOP_Serial_Driver_Wcounter.vhd
|
|
|
library IEEE;
|
|
|
use IEEE.std_logic_1164.all;
|
|
|
use IEEE.numeric_std.all;
|
|
|
|
|
|
|
|
|
entity tb_TOP_Serial_Driver_Wcounter is
|
|
|
end entity;
|
|
|
|
|
|
|
|
|
|
|
|
architecture ar_tb_TOP_Serial_Driver_Wcounter of tb_TOP_Serial_Driver_Wcounter is
|
|
|
|
|
|
constant Speed : integer := 4*1000*1000;
|
|
|
constant Tclk : time := real(1000*1000*1000/Speed) * 1 ns;
|
|
|
constant Size : integer := 8;
|
|
|
constant MinFCnt: integer := 144;
|
|
|
constant MajFCnt: integer := 64;
|
|
|
|
|
|
signal clk : std_logic := '0';
|
|
|
signal sclk : std_logic := '0';
|
|
|
signal Gate : std_logic:='1';
|
|
|
signal Data : std_logic;
|
|
|
signal MinF : std_logic:='1';
|
|
|
signal MajF : std_logic:='1';
|
|
|
signal flag : std_logic;
|
|
|
|
|
|
begin
|
|
|
|
|
|
SD0 : entity work.TOP_Serial_Driver_Wcounter
|
|
|
--generic map(Size,MinFCnt)
|
|
|
generic map(Size,MinFCnt,MajFCnt)
|
|
|
port map(clk,sclk,Gate,MinF,MajF,Data);
|
|
|
|
|
|
sclk <= not sclk after Tclk/2;
|
|
|
|
|
|
clk <= not clk after 20ns;
|
|
|
|
|
|
|
|
|
process
|
|
|
begin
|
|
|
|
|
|
gate <= '1';
|
|
|
wait for (48)*Tclk;
|
|
|
gate <= '0'; --1 ADMLF1.1
|
|
|
wait for (16)*Tclk;
|
|
|
gate <= '1';
|
|
|
wait for (48)*Tclk;
|
|
|
gate <= '0'; --2 ADMLF2.1
|
|
|
wait for (32)*Tclk;
|
|
|
gate <= '1';
|
|
|
wait for (16)*Tclk;
|
|
|
gate <= '0'; --3 ADMDC1 LSB
|
|
|
wait for (48)*Tclk;
|
|
|
gate <= '1';
|
|
|
wait for (16)*Tclk;
|
|
|
gate <= '0'; --4 ADMDC2 LSB
|
|
|
wait for (32)*Tclk;
|
|
|
gate <= '1';
|
|
|
|
|
|
|
|
|
wait for (48)*Tclk;
|
|
|
gate <= '0';
|
|
|
wait for (16)*Tclk;
|
|
|
gate <= '1';
|
|
|
wait for (48)*Tclk;
|
|
|
gate <= '0';
|
|
|
wait for (16)*Tclk;
|
|
|
gate <= '1';
|
|
|
wait for (48)*Tclk;
|
|
|
gate <= '0';
|
|
|
wait for (16)*Tclk;
|
|
|
gate <= '1';
|
|
|
wait for (48)*Tclk;
|
|
|
gate <= '0';
|
|
|
wait for (16)*Tclk;
|
|
|
gate <= '1';
|
|
|
wait for (48)*Tclk;
|
|
|
gate <= '0';
|
|
|
wait for (16)*Tclk;
|
|
|
gate <= '1';
|
|
|
wait for (48)*Tclk;
|
|
|
gate <= '0';
|
|
|
wait for (16)*Tclk;
|
|
|
gate <= '1';
|
|
|
wait for (48)*Tclk;
|
|
|
gate <= '0';
|
|
|
wait for (16)*Tclk;
|
|
|
gate <= '1';
|
|
|
wait for (48)*Tclk;
|
|
|
gate <= '0';
|
|
|
wait for (16)*Tclk;
|
|
|
gate <= '1';
|
|
|
wait for (48)*Tclk;
|
|
|
gate <= '0';
|
|
|
wait for (16)*Tclk;
|
|
|
gate <= '1';
|
|
|
wait for (48)*Tclk;
|
|
|
gate <= '0';
|
|
|
wait for (16)*Tclk;
|
|
|
gate <= '1';
|
|
|
wait for (48)*Tclk;
|
|
|
gate <= '0';
|
|
|
wait for (16)*Tclk;
|
|
|
gate <= '1';
|
|
|
wait for (48)*Tclk;
|
|
|
gate <= '0';
|
|
|
wait for (16)*Tclk;
|
|
|
gate <= '1';
|
|
|
wait for (48)*Tclk;
|
|
|
gate <= '0';
|
|
|
wait for (16)*Tclk;
|
|
|
gate <= '1';
|
|
|
wait for (48)*Tclk;
|
|
|
gate <= '0';
|
|
|
wait for (16)*Tclk;
|
|
|
gate <= '1';
|
|
|
end process;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
process
|
|
|
begin
|
|
|
MinF <= '0';
|
|
|
wait for Tclk;
|
|
|
MinF <= '1';
|
|
|
wait for (MinFCnt)*(Size)*Tclk-Tclk;
|
|
|
end process;
|
|
|
|
|
|
|
|
|
|
|
|
process
|
|
|
begin
|
|
|
MajF <= '0';
|
|
|
wait for Tclk;
|
|
|
MajF <= '1';
|
|
|
wait for (MajFCnt)*(MinFCnt)*(Size)*Tclk-Tclk;
|
|
|
end process;
|
|
|
|
|
|
|
|
|
|
|
|
end ar_tb_TOP_Serial_Driver_Wcounter;
|