【问题标题】:Synthesis of wand as and gate魔杖和门的合成
【发布时间】:2015-04-10 06:58:12
【问题描述】:

这里我有多个用于 1 位端口 x 的驱动程序。我想通过使用wand 网络类型来解决它。当我查看原理图时,只有输入端口的最低有效位连接到端口x,而其余位未读。我希望a 的所有位都被使用并使用与门分配给x 端口以解析多个驱动程序。

module test(input [3:0]a, output [1:0]b);
  wire [3:0] d [1:0];

  wand temp;
  assign temp=a;

  inst inst_name (.x(temp),.y(d[1][3]),.z(b[1:0]));

  assign d[1] = {4'd15};
  assign d[0] = {4'd0};
endmodule

module inst (input wand x,y, output [1:0]z);
  assign z={x,y};
endmodule  

【问题讨论】:

    标签: verilog


    【解决方案1】:

    你可以使用for generate循环来实现你想要的:

    generate
      for(i = 0; i < 4; i = i + 1) begin: wand_loop
        assign temp = a[i];
      end
    endgenerate
    

    此代码将生成以下结构:

    编辑:正如@mcleod_ideafix 正确指出的那样,如果您将temp 定义为简单的wire,则可以使用以下分配:assign temp = &amp;a; 来实现您的目标。

    【讨论】:

    • 这个可以合成吗?
    • @mcleod_ideafix: 如你所见,确实如此。
    • 所以这基本上相当于执行temp = &amp;a;,其中temp 被定义为常规wire 而不是wand,不是吗?
    • 这个结构是由合成程序自动绘制的吗?如果是这样,它是什么?谢谢!
    • @mcleod_ideafix:你是对的,但问题是关于wand net 的使用。此图像来自 Altera Quartus II RTL Viewer。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 2017-12-24
    • 2015-07-07
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    相关资源
    最近更新 更多