我是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 ;:语法错误,意外' [',期待')'。
我很感谢你们的任何建议,帮助我解决这个问题。
答案 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);
那是你在找什么?