Verilog中实例化子模块的问题!

子模块是一个将16位符号数进行符号扩展的,代码如下:
module signext( input [15:0] inst,
output [31:0] data
);

assign data = (inst[15] ==
0)?inst:inst + 32'b11111111111111110000000000000000;
endmodule

顶层模块是实例化子模块的,顶层模块从文件mem_inst.txt中读取32位数,并将其中15-0位输入到子模块,顶层模块代码如下:
module test( input clk,
output reg [31:0] PC,
output reg [31:0]
Inst,
output wire [15:0] Inst_15_0

);

///PC and Inst
reg [31:0] InstMemFile [31:0];

initial
begin
PC
= 0;
$readmemb("./Src/mem_inst.txt", InstMemFile);
end

//PC = PC +
4
always @ (posedge clk)
PC <=
PC + 1;

//IF

always @ (PC)
Inst <= InstMemFile[PC];
///PC and Inst
//signext wire [31:0]
Inst_Signext;

assign Inst_15_0 =
Inst[15:0];

//实例化子模块
signext _signext(
.inst(Inst_15_0),
.data(Inst_Signext)
);
endmodule

用Isim仿真时,发现子模块中的输入inst和输出data都是xxxxxxxxx,如下图:

我如何能让子模块能够读到顶层模块“传递”给它的数据?

第1个回答  2013-03-16
先检查一下 $readmemb("./Src/mem_inst.txt", InstMemFile);是否读进来,Inst <= InstMemFile[PC];
Inst是否有值?
第2个回答  2013-03-15
实例化 子模块有问题 名字命名的不对

看一下verilog中 模块实例化问题
encyrpt u1 (.proclaimed_in_writing(temp),.start(start),.clk(clk),.cryptograph(temp1),.reset(reset_n));这个例化调用放在always语句块的外面!不能这样直接调用的!你要有电路的思想,一个例化调用就相当于一个电路,你用if语句,有时候要综合出这个电路有时候又不要综合出这个电路了,这个不...

verilog for循环中模块实例化的问题
你把一个模块同名的例化10遍,不出错才怪 如果你真的是要例化十遍,用generate语句

在verilog中实例化一个模型应注意的问题,是不是对应端口对的数据类型必...
当然可以不一样,顶层文件例化是将两个端口对应连接在一起,若该信号在当前模块中没有用到always语句等必须要reg型的 那是要用wire型的,因为他们是连线(将各个模块端口连接起来),而你说的原型模块那是设计时实现内部功能的,根据需求来定义数据类型。他们两个有对应关系却是不一样的东西。所以LZ多...

Verilog程序中如何调用子模块?
verilog在调用模块的时候(也称模块实例化),信号端口可以通过位置或名称关联,其形式如下面的例子:\\x0d\\x0a\\x0d\\x0amodule and (C,A,B);\\x0d\\x0ainput A,B;\\x0d\\x0aoutput C;\\x0d\\x0a... \\x0d\\x0aendmodule\\x0d\\x0a\\x0d\\x0aand A1 (T3, A1, B 1); \/\/...

Verilog 中的模块实例化问题
always里面好像不能调用模块的,只能调用任务和函数。

verilog 中顶层模块实例引用多个模块时端口怎么连接
1、首先,在项目上右键,点击New Source创建新的代码文件。2、选择User Document创建自定义的文本文件。3、创建好后,在下方切换到Files面板,双击打开该文件。4、数据文件写好后,就要编写Verilog测试模块读取该文件并对模块进行测试了。5、双击打开该文件,我们看到待测试模块输入对应了一些reg寄存器类型,...

Verilog HDL 生成块 的问题,为什么直接循环不行?
你要按照功能来啊。generate本来就是用来构建逻辑的,你这个位置就是实例化。而单纯的for只是用来做循环。2个在一起就是循环构建逻辑。你只是单纯的for,编译器当然不知道你是要干嘛。而且for是不能直接出现在module下的。

verilog中for循环中是不是不能模块实例化
initial和always语句都不能嵌套,你调用的模块里应该含有always语句

verilog中在同一模块中调用其他多个模块,模块是顺序执行的吗
verilog是通过模块调用或称为模块实例化的方式来实现这些子模块与高层模块的连接的。按照每个模块并行工作的思路来调整设计。这给软件开发人员入门带来了难度,但是同时也是FPGA的价值所在,正因为FPGA能够并行执行,所以很多算法和设计可以在低频时钟下高实时性,快速出结果。

verilog语言中的模块实例化方法可使用位置映射法和___>?
模块实例化方法有位置映射法和名字关联法;例如:module and (C,A,B);input A,B;output C;...and A1 (T3,A,B); \/\/位置映射法,T3对应输出端口C,A对应A,B对应B。and A2 ( .C(T3), .A(A), .B(B) );\/\/名字关联法,.C是and器件的端口,其与信号T3相连 ...

相似回答