Advertisement
Guest User

Untitled

a guest
Sep 18th, 2014
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 3.19 KB | None | 0 0
  1. library ieee;
  2. use ieee.std_logic_1164.all;
  3.  
  4. entity tb_receiver is
  5. end tb_receiver;
  6.  
  7. architecture testbench of tb_receiver is
  8.  
  9. signal clk          : std_logic;
  10. signal areset       : std_logic;
  11. signal ack          : std_logic;
  12. signal RxD          : std_logic;
  13. signal data         : std_logic_vector(7 downto 0);
  14. signal received : std_logic;
  15. signal fault        : std_logic;
  16.  
  17. component receiver is
  18.     generic (
  19.         sys_freq    : integer := 50000000;
  20.         baudrate    : integer := 9600
  21.     );
  22.    
  23.     port (
  24.         clk     : in std_logic;                             -- Bound to 50 MHz system clock
  25.         areset  : in std_logic;                             -- Bound to BUTTON0
  26.         ack     : in std_logic;                             -- Bound to BUTTON1
  27.         RxD     : in std_logic;
  28.         data        : out std_logic_vector(7 downto 0);
  29.         received    : out std_logic;
  30.         fault       : out std_logic
  31.     );
  32. end component receiver;
  33.  
  34. begin
  35.  
  36.     dut : receiver
  37.     port map (
  38.         clk     => clk,
  39.         areset  => areset,
  40.         ack     => ack,
  41.         RxD     => RxD,
  42.         data        => data,
  43.         received    => received,
  44.         fault       => fault
  45.     );
  46.    
  47.     clockgen: process is
  48.     begin
  49.         clk <= '0';
  50.         wait for 1 ns;
  51.         clk <= '1';
  52.         wait for 1 ns;
  53.     end process clockgen;
  54.    
  55.     datagen: process is
  56.     begin
  57.    
  58.         -- Set with initial values
  59.         areset  <= '1';
  60.         ack     <= '1';
  61.         RxD     <= '1';
  62.         wait until clk = '1';
  63.         wait for 10 ns;
  64.         -- Send in false bit
  65.         areset  <= '1';
  66.         ack     <= '1';
  67.         RxD     <= '0';
  68.         wait until clk = '1';
  69.         wait for 2 us;
  70.         -- Let it stay in faulty for a bit
  71.         areset  <= '1';
  72.         ack     <= '1';
  73.         RxD     <= '1';
  74.         wait until clk = '1';
  75.         wait for 2 us;
  76.         -- Acknowledge
  77.         areset  <= '1';
  78.         ack     <= '0';
  79.         RxD     <= '1';
  80.         wait until clk = '1';
  81.         wait for 20 ns;
  82.         -- Let it stay idle a bit
  83.         areset  <= '1';
  84.         ack     <= '1';
  85.         RxD     <= '1';
  86.         wait until clk = '1';
  87.         wait for 20 ns;
  88.         -- Send in proper data, startbit here, we're receiving 00000000, LSB on the left
  89.         areset  <= '1';
  90.         ack     <= '1';
  91.         RxD     <= '0';
  92.         wait until clk = '1';
  93.         wait for 2*5208 ns;
  94.         -- 1st data bit
  95.         areset  <= '1';
  96.         ack     <= '1';
  97.         RxD     <= '0';
  98.         wait until clk = '1';
  99.         wait for 2*5208 ns;
  100.         -- 2st data bit
  101.         areset  <= '1';
  102.         ack     <= '1';
  103.         RxD     <= '0';
  104.         wait until clk = '1';
  105.         wait for 2*5208 ns;
  106.         -- 3rd data bit
  107.         areset  <= '1';
  108.         ack     <= '1';
  109.         RxD     <= '0';
  110.         wait until clk = '1';
  111.         wait for 2*5208 ns;
  112.         -- The 4th data bit
  113.         areset  <= '1';
  114.         ack     <= '1';
  115.         RxD     <= '0';
  116.         wait until clk = '1';
  117.         wait for 2*5208 ns;
  118.         -- 5th data bit
  119.         areset  <= '1';
  120.         ack     <= '1';
  121.         RxD     <= '0';
  122.         wait until clk = '1';
  123.         wait for 2*5208 ns;
  124.         -- 6th data bit
  125.         areset  <= '1';
  126.         ack     <= '1';
  127.         RxD     <= '0';
  128.         wait until clk = '1';
  129.         wait for 2*5208 ns;
  130.         -- 7th data bit
  131.         areset  <= '1';
  132.         ack     <= '1';
  133.         RxD     <= '0';
  134.         wait until clk = '1';
  135.         wait for 2*5208 ns;
  136.         -- 8th data bit
  137.         areset  <= '1';
  138.         ack     <= '1';
  139.         RxD     <= '0';
  140.         wait until clk = '1';
  141.         wait for 2*5208 ns;
  142.         -- Stop bit and let it stay in succes for a bit
  143.         areset  <= '1';
  144.         ack     <= '1';
  145.         RxD     <= '1';
  146.         wait until clk = '1';
  147.         wait for 2*6208 ns;
  148.         -- Acknowledge
  149.         areset  <= '1';
  150.         ack     <= '0';
  151.         RxD     <= '1';
  152.         wait until clk = '1';
  153.         wait for 20 ns;
  154.         -- We're done
  155.         areset  <= '1';
  156.         ack     <= '1';
  157.         RxD     <= '1';
  158.         wait until clk = '1';
  159.         wait for 20 ns;
  160.         wait;
  161.     end process;
  162. end testbench;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement