Advertisement
Litigare

Untitled

Jun 20th, 2021
944
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 6.06 KB | None | 0 0
  1. LIBRARY ieee;
  2. USE ieee.std_logic_1164.all;
  3.  
  4. ENTITY Main IS
  5.     PORT
  6.     (
  7.         A :  IN  STD_LOGIC;
  8.         B :  IN  STD_LOGIC;
  9.         C :  IN  STD_LOGIC;
  10.         D :  IN  STD_LOGIC;
  11.         CLK1 :  IN  STD_LOGIC;
  12.         CLK2 :  IN  STD_LOGIC;
  13.         CLRN :  IN  STD_LOGIC;
  14.         LDN :  IN  STD_LOGIC;
  15.         QA :  OUT  STD_LOGIC;
  16.         QB :  OUT  STD_LOGIC;
  17.         QC :  OUT  STD_LOGIC;
  18.         QD :  OUT  STD_LOGIC
  19.     );
  20. END Main;
  21.  
  22. ARCHITECTURE bdf_type OF Main IS
  23.  
  24. SIGNAL  sig0 :  STD_LOGIC;
  25. SIGNAL  sig1 :  STD_LOGIC;
  26. SIGNAL  sig2 :  STD_LOGIC;
  27. SIGNAL  sig3 :  STD_LOGIC;
  28. SIGNAL  sig4 :  STD_LOGIC;
  29. SIGNAL  sig5 :  STD_LOGIC;
  30. SIGNAL  sig6 :  STD_LOGIC;
  31. SIGNAL  sig7 :  STD_LOGIC;
  32. SIGNAL  sig8 :  STD_LOGIC;
  33.  
  34. SIGNAL  sig9 :  STD_LOGIC;
  35. SIGNAL  sig10 :  STD_LOGIC;
  36. SIGNAL  sig11 :  STD_LOGIC;
  37. SIGNAL  sig12 :  STD_LOGIC;
  38.  
  39. BEGIN
  40. QA <= sig9;
  41. QB <= sig10;
  42. QC <= sig11;
  43. QD <= sig12;
  44.  
  45. sig0 <= (NOT LDN OR NOT CLRN);
  46. sig1 <= NOT(A AND sig0);
  47. sig2 <= NOT(B AND sig0 AND CLRN);
  48. sig3 <= NOT(C AND sig0 AND CLRN);
  49. sig4 <= NOT(D AND sig0 AND CLRN);
  50.  
  51. sig5 <= NOT(not sig1 AND CLRN);
  52. sig6 <= NOT(not sig2 AND CLRN);
  53. sig7 <= NOT(not sig3 AND CLRN);
  54. sig8 <= NOT(not sig4 AND CLRN);
  55.  
  56. process(CLK1,CLK2,sig0,sig1,sig2,sig3,sig4,sig5,sig6,sig7,sig8,sig9,sig10,sig11,sig12)
  57. begin
  58.  
  59. if(rising_edge(CLK1)) then--dla A
  60.     if((sig1='0') and (sig5='1')) then
  61.         sig9 <= '0';
  62.     elsif((sig1='1') and (sig5='0')) then
  63.         sig9 <= '1';
  64.     elsif((sig1='0') and (sig5='0')) then
  65.         sig9 <= sig9;
  66.     end if;
  67. end if;
  68.  
  69.  
  70. if(rising_edge(CLK2)) then--dla b
  71.     if((sig2='0') and (sig6='1')) then
  72.         sig10 <= '0';
  73.     elsif((sig2='1') and (sig6='0')) then
  74.         sig10 <= '1';
  75.     elsif((sig2='0') and (sig6='0')) then
  76.         sig10<= sig10;
  77.     end if;
  78. end if;
  79.  
  80. if(not(sig10='0')) then
  81.     if((sig3='0') and (sig7='1')) then
  82.         sig11 <= '0';
  83.     elsif((sig3='1') and (sig7='0')) then
  84.         sig11 <= '1';
  85.     elsif((sig3='0') and (sig7='0')) then
  86.         sig11 <=sig11;
  87.     end if;
  88. end if;
  89. if(not(sig11='0')) then
  90.     if((sig4='0') and (sig8='1')) then
  91.         sig12 <= '0';
  92.     elsif((sig4='1') and (sig8='0')) then
  93.         sig12 <= '1';
  94.     elsif((sig4='0') and (sig8='0')) then
  95.         sig12 <= sig12;
  96.     end if;
  97. end if;
  98.  
  99.  
  100. end process;
  101.  
  102.  
  103. END bdf_type;
  104.  
  105.  
  106. _____________________________________________________________________________________________________________________________________
  107.  
  108.  
  109. LIBRARY ieee;
  110. USE ieee.std_logic_1164.ALL;
  111.  
  112. ENTITY TestBench74177 IS
  113. END TestBench74177;
  114.  
  115. ARCHITECTURE behavior OF TestBench74177 IS
  116.  
  117.     COMPONENT Main
  118.     PORT(
  119.          CLK1 : IN  std_logic;
  120.          A : IN  std_logic;
  121.          B : IN  std_logic;
  122.          C : IN  std_logic;
  123.             D : IN  std_logic;
  124.          CLK2 : IN  std_logic;
  125.          CLRN : IN  std_logic;
  126.          LDN : IN  std_logic;
  127.          QA : OUT  std_logic;
  128.          QB : OUT  std_logic;
  129.          QC : OUT  std_logic;
  130.          QD : OUT  std_logic
  131.         );
  132.     END COMPONENT;
  133.    
  134.  
  135.    --Inputs
  136.    signal CLK1 : std_logic := '0';
  137.    signal A : std_logic := '0';
  138.    signal B : std_logic := '0';
  139.    signal C : std_logic := '0';
  140.     signal D : std_logic := '0';
  141.    signal CLK2 : std_logic := '0';
  142.    signal CLRN : std_logic := '0';
  143.    signal LDN : std_logic := '0';
  144.    
  145.  
  146.     --Outputs
  147.    signal QA : std_logic;
  148.    signal QB : std_logic;
  149.    signal QC : std_logic;
  150.    signal QD : std_logic;
  151.  
  152.    -- Clock period definitions
  153.    constant CLK1_period : time := 10 ns;
  154.    constant CLK2_period : time := 10 ns;
  155.  
  156. BEGIN
  157.  
  158.     -- Instantiate the Unit Under Test (UUT)
  159.    uut: Main PORT MAP (
  160.           CLK1 => CLK1,
  161.           A => A,
  162.           B => B,
  163.           C => C,
  164.              D => D,
  165.           CLK2 => CLK2,
  166.           CLRN => CLRN,
  167.           LDN => LDN,
  168.           QA => QA,
  169.           QB => QB,
  170.           QC => QC,
  171.           QD => QD
  172.         );
  173.  
  174.    -- Clock process definitions
  175.    CLK1_process :process
  176.    begin
  177.         CLK1 <= '0';
  178.         wait for CLK1_period/2;
  179.         CLK1 <= '1';
  180.         wait for CLK1_period/2;
  181.    end process;
  182.  
  183.    CLK2_process :process
  184.    begin
  185.         CLK2 <= '0';
  186.         wait for CLK2_period/2;
  187.         CLK2 <= '1';
  188.         wait for CLK2_period/2;
  189.    end process;
  190.  
  191.  
  192.    -- Stimulus process
  193.    stim_proc: process
  194.    begin       
  195.       -- hold reset state for 100 ns.
  196.       wait for 50 ns;  
  197.       wait for CLK1_period*10;
  198.  
  199.       A <= '0';
  200.         B <= '0';
  201.         C <= '0';
  202.         D <= '0';
  203.         CLRN <= '1';
  204.         LDN <= '0';
  205.         wait for 50 ns;
  206.         A <= '0';
  207.         B <= '0';
  208.         C <= '0';
  209.         D <= '0';
  210.         CLRN <= '1';
  211.         LDN <= '1';
  212.        
  213.         wait for 50 ns;
  214.         A <= '0';
  215.         B <= '0';
  216.         C <= '0';
  217.         D <= '1';
  218.         CLRN <= '1';
  219.         LDN <= '0';
  220.         wait for 50 ns;
  221.         A <= '0';
  222.         B <= '0';
  223.         C <= '0';
  224.         D <= '1';
  225.         CLRN <= '1';
  226.         LDN <= '1';
  227.         wait for 50 ns;
  228.        
  229.         wait for 50 ns;
  230.         A <= '0';
  231.         B <= '0';
  232.         C <= '1';
  233.         D <= '0';
  234.         CLRN <= '1';
  235.         LDN <= '0';
  236.         wait for 50 ns;
  237.         A <= '0';
  238.         B <= '0';
  239.         C <= '1';
  240.         D <= '0';
  241.         CLRN <= '1';
  242.         LDN <= '1';
  243.         wait for 50 ns;
  244.         A <= '0';
  245.         B <= '0';
  246.         C <= '1';
  247.         D <= '0';
  248.         CLRN <= '0';
  249.         LDN <= '1';
  250.         wait for 50 ns;
  251.        
  252.        
  253.        
  254.        
  255.        
  256.         A <= '0';
  257.         B <= '0';
  258.         C <= '0';
  259.         D <= '0';
  260.         CLRN <= '1';
  261.         LDN <= '0';
  262.         wait for 50 ns;
  263.         A <= '0';
  264.         B <= '0';
  265.         C <= '0';
  266.         D <= '1';
  267.         wait for 50 ns;
  268.         A <= '0';
  269.         B <= '0';
  270.         C <= '1';
  271.         D <= '0';
  272.         wait for 50 ns;
  273.         A <= '0';
  274.         B <= '0';
  275.         C <= '1';
  276.         D <= '1';
  277.         wait for 50 ns;
  278.         A <= '0';
  279.         B <= '1';
  280.         C <= '0';
  281.         D <= '0';
  282.         wait for 50 ns;
  283.         A <= '0';
  284.         B <= '1';
  285.         C <= '0';
  286.         D <= '1';
  287.         wait for 50 ns;
  288.         A <= '0';
  289.         B <= '1';
  290.         C <= '1';
  291.         D <= '0';
  292.         wait for 50 ns;
  293.         A <= '0';
  294.         B <= '1';
  295.         C <= '1';
  296.         D <= '1';
  297.         wait for 50 ns;
  298.         A <= '1';
  299.         B <= '0';
  300.         C <= '0';
  301.         D <= '0';
  302.         wait for 50 ns;
  303.         A <= '1';
  304.         B <= '0';
  305.         C <= '0';
  306.         D <= '1';
  307.         wait for 50 ns;
  308.         A <= '1';
  309.         B <= '0';
  310.         C <= '1';
  311.         D <= '0';
  312.         wait for 50 ns;
  313.         A <= '1';
  314.         B <= '0';
  315.         C <= '1';
  316.         D <= '1';
  317.         wait for 50 ns;
  318.         A <= '1';
  319.         B <= '1';
  320.         C <= '0';
  321.         D <= '0';
  322.         wait for 50 ns;
  323.         A <= '1';
  324.         B <= '1';
  325.         C <= '0';
  326.         D <= '1';
  327.         wait for 50 ns;
  328.         A <= '1';
  329.         B <= '1';
  330.         C <= '1';
  331.         D <= '0';
  332.         wait for 50 ns;
  333.         A <= '1';
  334.         B <= '1';
  335.         C <= '1';
  336.         D <= '1';
  337.         wait for 50 ns;
  338.        
  339.       wait;
  340.    end process;
  341.  
  342. END;
  343.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement