【问题标题】:Verilog : Assigning ONE wire high in a vector and rest low?Verilog:在向量中分配一根线高,其余为低?
【发布时间】:2019-11-24 14:15:03
【问题描述】:

在一个FPGA,而不是使用一个寄存器,例如; P>

module FooReg(output wire o_foo, input wire [1:0] i_address);

  parameter FOO_MSB = 3;

  reg [FOO_MSB:0] r_data = 0;

  assign o_foo = r_data[FOO_MSB]; // OUTPUT HEAD OF FOO

  always @(*)
  begin
    r_data            = 0;        // RESET DATA VECTOR
    r_data[i_address] = 1'b1;     // SET ADDRESSED ELEMENT OF VECTOR
  end
endmodule // FooReg

但有一个方法仅使用母语来实现相同的功能? P>

例如;

module FooNet(output wire o_foo, input wire [1:0] i_address);

  parameter FOO_MSB = 3;

  wire [FOO_MSB:0] w_data = (w_data[i_address] is 1'b1) BUT REST ARE 1'b0; // <------

  assign o_foo = w_data[FOO_MSB]; // OUTPUT HEAD OF FOO

endmodule // FooNet

原谅我,如果答案是显而易见的....但在我的实际的Verilog中的数据可以是256位宽,并采用8位或更大的解决,我试图避免占用的存储,如果这是可以做到单独接线和我仍然在学习如何使用FPGA ...(我指正,这是所有的组合逻辑,无论如何等等都是引擎盖下相当于无论如何,由于我的“章”对此我的意义误解荷。)

【问题讨论】:

  • w_data = 256'b1 &lt;&lt; i_address?跨度>
  • 优秀。谢谢你。一位资深的时刻再次令我! SPAN>

标签: verilog fpga


【解决方案1】:

您没有使用/制作寄存器!

reg 关键字具有误导性。这并不意味着您创建一个或多个寄存器 如果您在 always 部分中分配给变量,则需要“reg”关键字。

如果您遵循标准注册模板always @(posedge clk) ....,您只能实例化一个注册。

请注意,在 System Verilog 中,名称 wirereg 被替换为关键字“逻辑”,您仍然可以使用与以前完全相同的语法。

我已使用“//>>>”标记为您的代码添加注释

reg [FOO_MSB:0] r_data = 0;

  assign o_foo = r_data[FOO_MSB]; // OUTPUT HEAD OF FOO

  //>>> The section below generates a combinatorial circuit 
  //>>> and as such you only get logic or wires out of this.
  always @(*)
  begin
    //>>> No you are NOT resetting a register here
    //>>> Your setting a vector (a bundle of wires) wire to all zeros 
    r_data            = 0;        // RESET REGISTER
    //>>> One of the wires is not zero but one
    r_data[i_address] = 1'b1;     // SET REQUESTED BIT
  end
endmodule // FooRegister //>>> And change the name because no registers are made here :-) 

另见This post

【讨论】:

    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-04
    • 2012-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多