Advertisement
Guest User

Untitled

a guest
May 27th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 3.15 KB | None | 0 0
  1. ENTITY pobudzenia_testowe IS
  2. generic (N: natural := 2);
  3. END pobudzenia_testowe;
  4.  
  5. LIBRARY ieee;
  6. USE ieee.std_logic_1164.ALL;
  7. use IEEE.std_logic_textio.all;
  8. use STD.textio.all;
  9. use ieee.std_logic_arith.all;
  10. use ieee.std_logic_unsigned.all;
  11.  
  12. ARCHITECTURE structural OF pobudzenia_testowe IS
  13.  
  14.     -- Component Declaration for the Unit Under Test (UUT)
  15.  
  16.     COMPONENT rca_nbit
  17.      generic (N: integer);
  18.     PORT(
  19.          a : IN  std_logic_vector(N-1 downto 0);
  20.          b : IN  std_logic_vector(N-1 downto 0);
  21.          cin : IN  std_logic;
  22.          sum : OUT  std_logic_vector(N-1 downto 0);
  23.          cout : OUT  std_logic
  24.         );
  25.     END COMPONENT;
  26.    
  27.  
  28.    --Inputs
  29.    signal a : std_logic_vector(N-1 downto 0) := (others => '0');
  30.    signal b : std_logic_vector(N-1 downto 0) := (others => '0');
  31.    signal cin : std_logic := '0';
  32.  
  33.     --Outputs
  34.    signal sum : std_logic_vector(N-1 downto 0);
  35.    signal cout : std_logic;
  36.    
  37.     --zmienne przechowujące liczby, do sprawdzanie poprawności sumowania
  38.     signal a_int : integer;
  39.     signal b_int : integer;
  40.     signal sum_int : integer := 0;
  41.     signal sum_conv : integer := 0;
  42.     signal results : integer := 0;
  43.    
  44.     signal done : std_logic := '0'; --flaga zapisu do pliku
  45.  
  46. BEGIN
  47.  
  48.     --tutaj ustawić n!!! / c++
  49.    uut: rca_nbit generic map (N) PORT MAP (
  50.           a => a,
  51.           b => b,
  52.           cin => cin,
  53.           sum => sum,
  54.           cout => cout
  55.         );
  56.          
  57.  
  58.     cin <= '0'; --wyzerowanie przeniesienia wejściowego
  59.    
  60.     test:
  61.      process (a,b,sum,cout,a_int,b_int,sum_int,sum_conv, results) is
  62.      variable size : integer := 2**(N-1);
  63.     begin
  64.         results <= 0;
  65.         for i in 0 to size loop
  66.             a_int <= i;
  67.             a <= conv_std_logic_vector(a_int,N);
  68.             for j in 0 to size loop
  69.                 b_int <= j;
  70.                 b <= conv_std_logic_vector(b_int,N);
  71.                 sum_int <= a_int+b_int after 5 ns;
  72.                 sum_conv <= conv_integer(sum) after 5 ns;
  73.                 if (sum_int = sum_conv) then --jeśli sprawdzanie się powiedzie
  74.                     results <= results + 1 after 5 ns;  --to zwiększamy licznik dobrych sum
  75.                 end if;
  76.             end loop;          
  77.         end loop;
  78.      end process;
  79.        
  80.  
  81.        
  82.         --cin <= '0';
  83.         --a <= "01010";
  84.         --b <= "10101";
  85.        
  86.         --result <= conv_integer(a);    NIE DZIAŁA
  87.        
  88.         --write_file:
  89.         -- process (done,a,b,sum,cout) is
  90.         --  file my_output : TEXT open WRITE_MODE is "g:/file_io.out";
  91.         --  variable my_line : LINE;
  92.         --  variable my_output_line : LINE;
  93.         -- begin
  94.         --    done <= '1' after 5 ns;        -- opóźnienie, aby nie zapisywało 30 razy do pliku
  95.         --    if done = '1' then
  96.         --    write(my_output_line, string'("a = "));
  97.         --    write(my_output_line, a);
  98.         --    writeline(my_output, my_output_line);
  99.         --    write(my_output_line, string'("b = "));
  100.         --    write(my_output_line, b);
  101.         --    writeline(my_output, my_output_line);
  102.         --    write(my_output_line, string'("s = "));
  103.         --    write(my_output_line, cout);
  104.         --    write(my_output_line, sum);
  105.         --    writeline(my_output, my_output_line);
  106.         --    write(my_output_line, string'("ex = "));
  107.         --    write(my_output_line, result);
  108.         --    writeline(my_output, my_output_line);
  109.         --    end if;
  110.         -- end process write_file;
  111.      
  112.      
  113.  
  114.     --wynik <= a+b;
  115.     --sum = wynik;
  116.    
  117.  
  118. END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement