将 1 位输入适当地组合到单个寄存器中
Combine 1 bit inputs into single register appropriately
我正在用 verilog 编程,我有一系列 1 位输入 - 比如:
input SIGNALP,
input SIGNAL1,
input SIGNAL2,
input SIGNAL3,
input SIGNAL4,
input SIGNAL5,
input SIGNAL6,
input SIGNAL7
然后我想将这些位组合成一个8位寄存器,其中第一位是奇偶校验位(SIGNALP
),第二位是SIGNAL1
,第二位是SIGNAL2
,等等。我该怎么做?例如,将所有这些相加是行不通的,因为它无法识别这些的位值。我这样做的原因是并行数据比串行数据快。任何帮助,将不胜感激。谢谢!
只需将其设为单个向量即可:
input [7:0] SIGNAL;
如果您希望您的代码在引用奇偶校验位时看起来更好,您可以使用模块的参数来引用它(简短示例):
module parallel(input [7:0] SIGNAL,
...);
parameter PARITYBIT = 0;
...
always @(*) begin
p = SIGNAL[PARITYBIT];
...
不幸的是,范围的其余部分(即 [7:1]
)要干净地引用有点棘手,尽管您可以使用 [b:+w]
语法。但由于您只有 SIGNAL1
、SIGNAL2
等,您现在可以只使用 SIGNAL[1]
、SIGNAL[2]
等
您似乎想将这些位连接到一个新的寄存器中
wire [0:7] my_new_register;
assign my_new_register = {SIGNALP, SIGNAL1, ... SIGNAL7}; // you fill in ...
您没有指定您希望每个引脚如何映射到新信号,因此您必须调整它以满足您的需要。
我正在用 verilog 编程,我有一系列 1 位输入 - 比如:
input SIGNALP,
input SIGNAL1,
input SIGNAL2,
input SIGNAL3,
input SIGNAL4,
input SIGNAL5,
input SIGNAL6,
input SIGNAL7
然后我想将这些位组合成一个8位寄存器,其中第一位是奇偶校验位(SIGNALP
),第二位是SIGNAL1
,第二位是SIGNAL2
,等等。我该怎么做?例如,将所有这些相加是行不通的,因为它无法识别这些的位值。我这样做的原因是并行数据比串行数据快。任何帮助,将不胜感激。谢谢!
只需将其设为单个向量即可:
input [7:0] SIGNAL;
如果您希望您的代码在引用奇偶校验位时看起来更好,您可以使用模块的参数来引用它(简短示例):
module parallel(input [7:0] SIGNAL,
...);
parameter PARITYBIT = 0;
...
always @(*) begin
p = SIGNAL[PARITYBIT];
...
不幸的是,范围的其余部分(即 [7:1]
)要干净地引用有点棘手,尽管您可以使用 [b:+w]
语法。但由于您只有 SIGNAL1
、SIGNAL2
等,您现在可以只使用 SIGNAL[1]
、SIGNAL[2]
等
您似乎想将这些位连接到一个新的寄存器中
wire [0:7] my_new_register;
assign my_new_register = {SIGNALP, SIGNAL1, ... SIGNAL7}; // you fill in ...
您没有指定您希望每个引脚如何映射到新信号,因此您必须调整它以满足您的需要。