Verilog 使用一个热信号设置寄存器

Verilog 使用一个热信号设置寄存器,verilog,hdl,Verilog,Hdl,我有一组寄存器:reg[7:0]dataRegs[3:0]我有一个单热信号:reg[3:0]oneHot。我只想将一个值写入由一个热信号指示的寄存器。因此,如果oneHot=4'b0010,则会写入dataRegs[2]。最好的方法是什么 因此,要从特定寄存器读取,我有三态缓冲区,如下所示: for (i=0; i<4; i++) begin output = oneHot[i]?dataRegs[i]:'bz; end 对于(i=0;i当i=0时,仅写入注册表[0]。当i=1时,

我有一组寄存器:
reg[7:0]dataRegs[3:0]
我有一个单热信号:
reg[3:0]oneHot
。我只想将一个值写入由一个热信号指示的寄存器。因此,如果
oneHot
=4'b0010,则会写入
dataRegs[2]
。最好的方法是什么

因此,要从特定寄存器读取,我有三态缓冲区,如下所示:

for (i=0; i<4; i++) begin
  output = oneHot[i]?dataRegs[i]:'bz;
end 

对于(i=0;i当i=0时,仅写入注册表[0]。当i=1时,仅写入注册表[1],以此类推

always @(posedge clk) begin
    for (i=0; i<4; i++) begin
        if (oneHot[i]) dataRegs[i] <= wdata;
    end 
end
始终@(posedge clk)开始
对于(i=0;i