将 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] 语法。但由于您只有 SIGNAL1SIGNAL2 等,您现在可以只使用 SIGNAL[1]SIGNAL[2]

您似乎想将这些位连接到一个新的寄存器中

wire [0:7] my_new_register;
assign my_new_register = {SIGNALP, SIGNAL1, ... SIGNAL7}; // you fill in ...

您没有指定您希望每个引脚如何映射到新信号,因此您必须调整它以满足您的需要。