2013-03-25 74 views
0

只需具有这样的代码:变量赋值和综合代码

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 

对于上面所有这些变量赋值的示例将在1个时钟周期,这是相当不实用的来完成。在行为模拟中,它可以很好地工作,但是在后期合成中它很糟糕。我可以像延迟一样添加一个延迟或等待(等待语句是不可综合的),以使其等待util变量在跳到下一行之前获取它的值吗?

+1

你是什么意思的“搞砸”?结果是什么样的?你的发布代码中的temp(5)在哪里? – baldyHDL 2013-03-26 06:48:57

回答

0

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

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

0

综合你不能让延迟等待。只有在流水线化(时钟周期作为延迟单元)时才能进行明确定义的,可控制的综合延迟。