如何在 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);
这就是你要找的吗?
我是 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);
这就是你要找的吗?