【发布时间】:2013-11-24 17:43:59
【问题描述】:
我目前正在尝试实现一个数据路径,它在一个时钟周期内计算以下内容。
- 获取输入 A 和 B 并将它们相加。
- 将加法结果右移一位。 (除以 2)
- 从另一个输入 C 中减去移位后的结果。
实体的行为架构如下图所示。
signal sum_out : std_logic_vector (7 downto 0);
signal shift_out : std_logic_vector (7 downto 0);
process (clock, data_in_a, data_in_b, data_in_c)
begin
if clock'event and clock = '1' then
sum_out <= std_logic_vector(unsigned(data_in_a) + unsigned(data_in_b));
shift_out <= '0' & sum_out(7 downto 1);
data_out <= std_logic_vector(unsigned(data_in_c) - unsigned(shift_out));
end if;
end process;
当我模拟上面的代码时,我确实得到了我期望得到的结果。但是,在 3 个时钟周期后,我得到了结果,而不是我希望的 1 个。仿真波形如下图。
我还不熟悉实现具有时序问题的设计。我想知道,是否有办法在一个时钟周期内实现上述计算。如果有,我该如何实现它们?
【问题讨论】:
标签: hardware signal-processing vhdl