【问题标题】:What is the equivalent hardware circuit to this code?该代码的等效硬件电路是什么?
【发布时间】:2019-03-19 02:32:33
【问题描述】:

这段代码说明了什么?我如何解释它的电路?

module add(input logic clock, output logic[7:0] f);
    logic[7:0] a, b, c;
    always_ff @(posedge clock)
    begin
    a <= b + c;
    b = c + a;
    c = a + b;
    end
    assign f = c;
    endmodule

【问题讨论】:

  • 不要以这种方式混合阻塞和解除阻塞分配。您最终可能会遇到模拟/综合不匹配和/或模拟竞赛。
  • 我认为这就是问题的重点
  • 如果我取 a = 11011100、b = 00110011 和 c = 10101010 的初始值,那么最终值 a、b、c 和 f 是什么?我无法理解我应该如何进行添加,因为已经使用了阻塞和非阻塞语句。我也想知道制作这个电路要用什么电路元件。

标签: verilog add system-verilog sequential circuit


【解决方案1】:

你应该和

一样解释这段代码
module add(input logic clock, output logic[7:0] f);
  logic[7:0] a, b;
  always_ff @(posedge clock)
    a <= b + f;
  always_ff @(posedge clock)
    b <= f + a;
  always_ff @(posedge clock)
    f <= a + b;
 endmodule

这在逻辑上等同于您编写的内容,但对于在posedge clock 上对输出f 进行采样的任何代码都提供了可预测的模拟结果

【讨论】:

  • 电路会是什么样子?
  • 我不认为这是等效的。 c/f 会有不同的结果,并可能导致 sim/synt 不匹配。
  • @MeganWinchester 我没有设置工具来绘制原理图。我以为您只是对阻塞和非阻塞分配的混合感到好奇,真正的电路需要重置。
  • @Serge 就其本身而言,c/f 的结果没有差异当 f 用于比赛的其余设计时,只有模拟差异的可能性
猜你喜欢
  • 2017-06-09
  • 2019-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-06
  • 1970-01-01
  • 2021-11-17
  • 2012-05-29
相关资源
最近更新 更多