如何在 systemverilog 中编写一个 8 位数组作为模块的输入

How can I write an 8-bit array as input of a module in systemverilog

我是 verilog 新手,我使用 Modelsim。 如何在 systemverilog 中编写一个 8 位数组作为模块的输入,它的位是另一个数组的位?

像这样:

module cmp2(input[1:0] A,B, output GT,EQ);
    mux8to1 M1(8'b0~B[0]11000B[0], 3'bB[1]A[1]A[0], GT);

mux8to1 定义为以下输入格式:

module mux8to1(input[0:7]a, input[2:0]s, output w);

编译 "cmp2" 失败并出现错误:

数字常量中指定基数的非法数字。

在“[”附近:语法错误,意外的“[”,预期的“)”。

我将感谢你们任何帮助我解决这个问题的建议。

这条线有几个问题, mux8to1 M1(8'b0~B[0]11000B[0], 3'bB[1]A[1]A[0], GT);

对于第一项,您似乎正在尝试对输入进行逐位取反。 你说 B[0]11000B[0], 不是合法的位向量。您是说 {B[0],5'b11000,B[0]} 吗?这将创建一个 7 位向量,而不是 8 位向量。

也不确定如果您分配 8'b0~{B[0],5'b11000,B[0]} 是什么意思,因为按位求反会影响后面的项。我想你是想说,制作一个 8 位向量,并且需要一个额外的零来做到这一点。也许您的意思是 {1'b0,B[0],5'b11000,B[0]},这将是一个 8 位向量。

第二个输入,也许你的意思是 {B[1],A[0],A[1]} 这将是一个 3 位向量。

作为一个整体,它看起来像这样

mux8to1 M1({1'b0,B[0],5'b11000,B[0]},{B[1],A[0],A[1]},GT);

这就是你要找的吗?