Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ENTITY pobudzenia_testowe IS
- generic (N: natural := 2);
- END pobudzenia_testowe;
- LIBRARY ieee;
- USE ieee.std_logic_1164.ALL;
- use IEEE.std_logic_textio.all;
- use STD.textio.all;
- use ieee.std_logic_arith.all;
- use ieee.std_logic_unsigned.all;
- ARCHITECTURE structural OF pobudzenia_testowe IS
- -- Component Declaration for the Unit Under Test (UUT)
- COMPONENT rca_nbit
- generic (N: integer);
- PORT(
- a : IN std_logic_vector(N-1 downto 0);
- b : IN std_logic_vector(N-1 downto 0);
- cin : IN std_logic;
- sum : OUT std_logic_vector(N-1 downto 0);
- cout : OUT std_logic
- );
- END COMPONENT;
- --Inputs
- signal a : std_logic_vector(N-1 downto 0) := (others => '0');
- signal b : std_logic_vector(N-1 downto 0) := (others => '0');
- signal cin : std_logic := '0';
- --Outputs
- signal sum : std_logic_vector(N-1 downto 0);
- signal cout : std_logic;
- --zmienne przechowujące liczby, do sprawdzanie poprawności sumowania
- signal a_int : integer;
- signal b_int : integer;
- signal sum_int : integer := 0;
- signal sum_conv : integer := 0;
- signal results : integer := 0;
- signal done : std_logic := '0'; --flaga zapisu do pliku
- BEGIN
- --tutaj ustawić n!!! / c++
- uut: rca_nbit generic map (N) PORT MAP (
- a => a,
- b => b,
- cin => cin,
- sum => sum,
- cout => cout
- );
- cin <= '0'; --wyzerowanie przeniesienia wejściowego
- test:
- process (a,b,sum,cout,a_int,b_int,sum_int,sum_conv, results) is
- variable size : integer := 2**(N-1);
- begin
- results <= 0;
- for i in 0 to size loop
- a_int <= i;
- a <= conv_std_logic_vector(a_int,N);
- for j in 0 to size loop
- b_int <= j;
- b <= conv_std_logic_vector(b_int,N);
- sum_int <= a_int+b_int after 5 ns;
- sum_conv <= conv_integer(sum) after 5 ns;
- if (sum_int = sum_conv) then --jeśli sprawdzanie się powiedzie
- results <= results + 1 after 5 ns; --to zwiększamy licznik dobrych sum
- end if;
- end loop;
- end loop;
- end process;
- --cin <= '0';
- --a <= "01010";
- --b <= "10101";
- --result <= conv_integer(a); NIE DZIAŁA
- --write_file:
- -- process (done,a,b,sum,cout) is
- -- file my_output : TEXT open WRITE_MODE is "g:/file_io.out";
- -- variable my_line : LINE;
- -- variable my_output_line : LINE;
- -- begin
- -- done <= '1' after 5 ns; -- opóźnienie, aby nie zapisywało 30 razy do pliku
- -- if done = '1' then
- -- write(my_output_line, string'("a = "));
- -- write(my_output_line, a);
- -- writeline(my_output, my_output_line);
- -- write(my_output_line, string'("b = "));
- -- write(my_output_line, b);
- -- writeline(my_output, my_output_line);
- -- write(my_output_line, string'("s = "));
- -- write(my_output_line, cout);
- -- write(my_output_line, sum);
- -- writeline(my_output, my_output_line);
- -- write(my_output_line, string'("ex = "));
- -- write(my_output_line, result);
- -- writeline(my_output, my_output_line);
- -- end if;
- -- end process write_file;
- --wynik <= a+b;
- --sum = wynik;
- END;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement