0

Simply having a code like this :

if(rising_edge(clk)) then
    temp(0):="001";
    temp(1):="011";
    temp(2):="101";
    temp(3):="000";
    temp(0):=temp(3)xor temp(5);
end if

For the example above all this variable assignment would be done in 1 clock cycle which is pretty unpractical. In the behavioral simulation it works fine but in post synthesis it's messed up. Can I add like a delay or a sth like a wait(wait statement is un-synthesizable) to make it wait util the variable gets its value before jumping to the next line?

4

2 回答 2

0

在一个时钟周期内完成所有这些事情很简单。硬件速度非常快,相对于处理器而言,FPGA 时钟速率并没有那么高。

由于您使用的是变量,因此会立即使用中间结果。如果您想要更明确的延迟,可以使用信号。上面带有信号的代码将temp(3)从前一个上升沿开始使用。

于 2013-03-25T19:02:19.530 回答
0

对于合成,您不能像等待一样进行延迟。定义明确、可控的综合延迟只能通过流水线(时钟周期作为延迟单位)来实现。

于 2013-03-26T06:47:31.413 回答