提问人:MohammadReza 提问时间:11/23/2021 最后编辑:toolicMohammadReza 更新时间:11/27/2021 访问量:63
为什么模块之间没有连接?
Why are modules not connected to each other?
问:
我必须在 Active HDL 12 中进行 Verilog 编码,但我不知道为什么这三个模块在顶部模块中没有相互连接。
顶部模块 '时间刻度 1 ns / 1 ps
module Main (Mx1,Mx2,Mx3,Mx4,My);
input Mx1;
input Mx2;
input Mx3;
input Mx4;
output My;
wire interface1;
wire interface2;
And a1(.X (MX1),.Y (MX2),.O1 (interface1));
Or o1(.X1 (MX3),.Y1 (MX4),.O2 (interface2));
Xor x1(.X2 (interface1),.Y2 (interface2),.O3 (My));
endmodule
And
模块
`timescale 1 ns / 1 ps
module And ( X ,Y ,O1 );
input X ;
input Y ;
output wire O1 ;
assign O1 = X & Y;
endmodule
Or
模块
`timescale 1 ns / 1 ps
module Or ( X1 ,Y1 ,O2 );
input X1 ;
input Y1 ;
output wire O2 ;
assign O2 = X1 & Y1;
endmodule
Xor
模块
`timescale 1 ns / 1 ps
module Xor (X2,Y2,O3);
input X2;
input Y2;
output O3;
assign O3 = X2 ^ Y2;
endmodule
在输出中,我根本没有看到答案。
答:
2赞
toolic
11/23/2021
#1
Verilog 区分大小写。这意味着 和 是两个不同的信号。例如,输入未连接到模块。解决此问题的一种方法是更改:Mx
MX
Mx
And
And a1(.X (MX1),.Y (MX2),.O1 (interface1));
Or o1(.X1 (MX3),.Y1 (MX4),.O2 (interface2));
自:
And a1(.X (Mx1),.Y (Mx2),.O1 (interface1));
Or o1(.X1 (Mx3),.Y1 (Mx4),.O2 (interface2));
某些模拟器会生成警告消息。例如,Cadence 模拟器(在 edaplayground 上可用)显示以下警告:
And a1(.X (MX1),.Y (MX2),.O1 (interface1));
|
xmelab: *W,CSINFI : implicit wire has no fanin (Main.MX2).
帮助识别此类常见错误的另一种方法是在代码中使用此编译器指令:
`default_nettype none
在这种情况下,模拟器应生成编译错误。
评论