如何使用regs修改电线?
How to use regs to modify wires?
我是 Verilog 的新手,想知道如何修改连线。我知道你不能修改 always 块中的电线。
我见过这样的事情,您可以在其中声明一些 regs 并将线路分配给这些 regs(然后您可以修改 reg 来修改线路?)
module something
#(parameter D_W = 8)
(
input wire clk,
input wire rst,
output wire valid,
output wire [D_W-1:0] data,
);
reg valid_rg = 0;
reg [D_W-1:0] data_rg = 0;
assign valid = valid_rg;
assign data = data_rg;
我想知道如何为这样的电线做类似的事情:
wire [7:0] wire_a [7:0];
最初我的猜测是有这样的东西
reg [7:0] wire_a_rg [7:0];
assign wire_a[7:0] = wire_a_rg[7:0];
但我觉得这可能是错误的。我该如何处理?
除非您需要对 bi-directional 总线或具有多个驱动器的任何类型的电路建模,否则无需在 SystemVerilog 中使用连线。你可以写
module something
#(parameter D_W = 8)
(
input logic clk,
input logic rst,
output logic valid,
output logic [D_W-1:0] data,
);
然后您可以在 always
块或连续的 assign
语句(但不是两者)中对 valid
/data
进行程序分配。
顺便说一句,SystemVerilog 更喜欢使用 logic
关键字而不是同义词 reg
.
你应该阅读我关于 the difference between nets and variables 的 post。
我是 Verilog 的新手,想知道如何修改连线。我知道你不能修改 always 块中的电线。
我见过这样的事情,您可以在其中声明一些 regs 并将线路分配给这些 regs(然后您可以修改 reg 来修改线路?)
module something
#(parameter D_W = 8)
(
input wire clk,
input wire rst,
output wire valid,
output wire [D_W-1:0] data,
);
reg valid_rg = 0;
reg [D_W-1:0] data_rg = 0;
assign valid = valid_rg;
assign data = data_rg;
我想知道如何为这样的电线做类似的事情:
wire [7:0] wire_a [7:0];
最初我的猜测是有这样的东西
reg [7:0] wire_a_rg [7:0];
assign wire_a[7:0] = wire_a_rg[7:0];
但我觉得这可能是错误的。我该如何处理?
除非您需要对 bi-directional 总线或具有多个驱动器的任何类型的电路建模,否则无需在 SystemVerilog 中使用连线。你可以写
module something
#(parameter D_W = 8)
(
input logic clk,
input logic rst,
output logic valid,
output logic [D_W-1:0] data,
);
然后您可以在 always
块或连续的 assign
语句(但不是两者)中对 valid
/data
进行程序分配。
顺便说一句,SystemVerilog 更喜欢使用 logic
关键字而不是同义词 reg
.
你应该阅读我关于 the difference between nets and variables 的 post。