Я хочу увидеть скорость моего проекта VHDL. Насколько мне известно, в программе Quartus II это обозначается Fmax. После компиляции моего дизайна он показывает Fmax 653,59 МГц. Я написал тестовый стенд и провел несколько тестов, чтобы убедиться, что дизайн работает должным образом. Проблема, с которой я столкнулся при разработке, заключается в том, что на переднем фронте тактового сигнала входы установлены правильно, но выход приходит только после еще одного цикла.
Мой вопрос: как я могу проверить скорость моей конструкции (самая длинная задержка между входными портами и выходным портом), а также получить вывод сложения одновременно с загрузкой входов/в том же цикле?
Результаты моего тестового стенда следующие:
a: 0001 и b: 0101 дает XXXX
a: 1001 и b: 0001 дает 0110 (ожидаемый результат предыдущего вычисления)
a: 1001 и b: 1001 дает 1010 (ожидаемый результат предыдущего вычисления )
и т. д.
Код:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity adder is
port(
clk : in STD_LOGIC;
a : in unsigned(3 downto 0);
b : in unsigned(3 downto 0);
sum : out unsigned(3 downto 0)
);
end adder;
architecture rtl of adder is
signal a_r, b_r, sum_r : unsigned(3 downto 0);
begin
sum_r <= a_r + b_r;
process(clk)
begin
if (rising_edge(clk)) then
a_r <= a;
b_r <= b;
sum <= sum_r;
end if;
end process;
end rtl;
Испытательный стенд:
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity testbench is
end entity;
architecture behavioral of testbench is
component adder is
port(
clk : in STD_LOGIC;
a : in unsigned(3 downto 0);
b : in unsigned(3 downto 0);
sum : out unsigned(3 downto 0)
);
end component;
signal a, b, sum : unsigned(3 downto 0);
signal clk : STD_LOGIC;
begin
uut: adder
port map(
clk => clk,
a => a,
b => b,
sum => sum
);
stim_process : process
begin
wait for 1 ns;
clk <= '0';
wait for 1 ns;
clk <= '1';
a <= "0001";
b <= "0101";
wait for 1 ns;
clk <= '0';
wait for 1 ns;
clk <= '1';
a <= "1001";
b <= "0001";
wait for 1 ns;
clk <= '0';
wait for 1 ns;
clk <= '1';
a <= "1001";
b <= "1001";
end process;
end behavioral;