gpt4 book ai didi

verilog - 这段代码在综合时会产生多少次翻转?

转载 作者:行者123 更新时间:2023-12-02 12:15:27 24 4
gpt4 key购买 nike

我试图了解这段代码在合成时会产生多少次翻转?

我有 2 个带有非阻塞和阻塞赋值代码的测试用例。

测试 1。

wire aclk; 
wire [1:0] a;
reg [1:0] c;
reg [1:0] b;

always @(posedge aclk)
begin

b <= a + 1;
c = b;
end

测试 2。

wire aclk; 
wire [1:0] a;
reg [1:0] c;
reg [1:0] b;

always @(posedge aclk)
begin

b = a + 1;
c <= b;
end

测试 1 有 4 个 FF,测试 2 有 2 个 FF。

我不明白我只是切换代码有什么不同。

谢谢你让我知道。

最佳答案

它们在功能上是不同的。非阻塞赋值评估右侧,然后继续下一个语句,直到首先评估所有其他语句后,才会完成存储到左侧。阻塞语句评估右侧并立即将其存储到左侧。

Test1 is doing this:
evaluate (a+1)
store b into c , BEFORE (a+1) is stored into b!!!
store (a+1) into b

Test2 is doing this:
evaluate (a+1)
store (a+1) into b
store b into c

就像提到的工具一样,您通常在顺序逻辑中使用非阻塞语句。大多数人还建议不要在同一个开始结束 block 中混合非阻塞和阻塞语句。

关于verilog - 这段代码在综合时会产生多少次翻转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54150891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com