【发布时间】: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 << i_address?跨度> -
优秀。谢谢你。一位资深的时刻再次令我! SPAN>