verilog 中编译错误:port must be connected to a structural net expression
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了verilog 中编译错误:port must be connected to a structural net expression相关的知识,希望对你有一定的参考价值。
module counter8(clk,clr,te,le,a,tf);
input clk,te,le,clr;
input [7:0] a;
output [7:0] tf;
reg [7:0] tf,th;
regth u1(le,a,th);
count u2(clk,clr,te,th,tf);
endmodule
module regth(le,a,thout);
input le;
input [7:0] a;
output [7:0] thout;
reg[7:0] thout;
always@(le)
begin
if(le==1) thout<=a;
end
endmodule
module count(clk,clr,te,thinput,tf);
input clk,clr,te;
input [7:0] thinput;
output [7:0] tf;
reg[7:0] tf;
always@(posedge clk)
begin
if(clr==0)
tf<=8'b0;
else if(te==1) tf<=tf+1;
else if(tf==8'b1)
tf<=thinput;
end
endmodule
Error (10663): Verilog HDL Port Connection error at counter8.v(6): output or inout port "thout" must be connected to a structural net expression
已测试,望尽快采纳 参考技术C 都是对的。。reg是寄存器,怎么能当连线呢
关于Verilog hdl 中循环语句forever编译错误的疑问。
`timescale 1us/1us
module clocktest;
reg Clk_in,Rst_in,S1_in,S2_in;
wire Spk_out;
wire[6:0] Display_out;
wire[2:0] Sel_out;
parameter HALF_PERIOD=50;
//产生10KHZ 时钟
initial
begin
Clk_in=0;
forever #HALF_PERIOD Clk_in=~Clk_in; 第十三行
end
//产生复位信号
initial
begin
Rst_in=1;
#(2*HALF_PERIOD) Rst_in=0;
#(10*HALF_PERIOD) Rst_in=1;
end
//产生调节小时信号
initial
begin
S1_in=1;
#(35000*HALF_PERIOD) S1_in=0;
#(60000*HALF_PERIOD) S1_in=1;
end
//产生调节分钟信号
initial
begin
S2_in=1;
#(95000*HALF_PERIOD) S2_in=0;
#(60000*HALF_PERIOD) S2_in=1;
end
clock t(.Spk(Spk_out),.Display(Display_out),.Sel(Sel_out),
.Clk(Clk_in),.Rst(Rst_in), .S1(S1_in),.S2(S2_in));
endmodule
编译后出现
Error (10119): Verilog HDL Loop Statement error at clocktest.v(13): loop with non-constant loop condition must terminate within 250 iterations
Error: Can't elaborate top-level user hierarchy
Error: Quartus II Analysis & Synthesis was unsuccessful. 2 errors, 0 warnings
我在网上看了一下,你是参考的《基于Verilog HDL设计的多功能数字钟》这篇论文
你贴的这部分代码是modelsim调用的仿真测试文件,不是用来综合的。
文献中“测试模块源代码如下:”这句话以上的代码是用来综合的。你先了解一下verilog的语法,以及quartus和modelsim的使用。然后看这篇论文你就明白了,才9月离答辩还远吧。
你要是真正对FPGA感兴趣,建议认真学一下。很好的一个范例。麻雀虽小,五脏俱全。 参考技术A forever #HALF_PERIOD Clk_in=~Clk_in; 把HALF_PERIOD直接用个常数替代看看。不然还是直接用always好了 参考技术B 首先,你这样写来进行仿真是没有问题的,只是quartus进行编译的时候是一起进行综合的,这个forever一直循环执行是不能综合的。就算改成了for(i=。。。。)进行有条件的循环时,quartus编译时analysis可以通过但这个TB文件的synthesis仍然不会通过的。 建议你使用VCS或modelsim等仿真工具进行仿真。
以上是关于verilog 中编译错误:port must be connected to a structural net expression的主要内容,如果未能解决你的问题,请参考以下文章
运算符重载must take either zero or one argument错误
关于Verilog hdl 中循环语句forever编译错误的疑问。
错误记录编译 Android 版本的 ijkplayer 报错 ( You must define ANDROID_NDK before starting. | 下载指定版本 NDK )
在JSP中实例化类对象报编译错误“Classes from the default package must not be referenced from JSP file“
错误记录Kotlin 代码编译时报错 ( Variable ‘name‘ must be initialized | 初始化块定义在所有属性之后 )