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

时间:2017-03-08 02:28:41

标签: arrays verilog modelsim

我是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"失败并出现错误:

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

附近" [&#34 ;:语法错误,意外' [',期待')'。

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

1 个答案:

答案 0 :(得分:1)

这条线有几个问题,     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);

那是你在找什么?