关于Verilog hdl 中循环语句forever编译错误的疑问。

`timescale1us/1usmoduleclocktest;regClk_in,Rst_in,S1_in,S2_in;wireSpk_out;wire[6:0]Di... `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
展开
 我来答
shajiayu
2011-09-29 · TA获得超过381个赞
知道答主
回答量:58
采纳率:0%
帮助的人:92万
展开全部
Verilog 这个语言有两个部分,一部分是可综合的用来生成电路,一部分是不可综合的用来写testbench(测试脚本)。你贴的程序是不能综合的那部分,是testbench。不能综合的那部分非常的接近C语言,适合写测试文件。
我在网上看了一下,你是参考的《基于Verilog HDL设计的多功能数字钟》这篇论文
你贴的这部分代码是modelsim调用的仿真测试文件,不是用来综合的。
文献中“测试模块源代码如下:”这句话以上的代码是用来综合的。你先了解一下verilog的语法,以及quartus和modelsim的使用。然后看这篇论文你就明白了,才9月离答辩还远吧。
你要是真正对FPGA感兴趣,建议认真学一下。很好的一个范例。麻雀虽小,五脏俱全。
ppc68
2011-09-28 · TA获得超过581个赞
知道小有建树答主
回答量:1257
采纳率:100%
帮助的人:773万
展开全部
forever #HALF_PERIOD Clk_in=~Clk_in; 把HALF_PERIOD直接用个常数替代看看。不然还是直接用always好了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gcxia
2011-09-28
知道答主
回答量:5
采纳率:0%
帮助的人:6517
展开全部
首先,你这样写来进行仿真是没有问题的,只是quartus进行编译的时候是一起进行综合的,这个forever一直循环执行是不能综合的。就算改成了for(i=。。。。)进行有条件的循环时,quartus编译时analysis可以通过但这个TB文件的synthesis仍然不会通过的。 建议你使用VCS或modelsim等仿真工具进行仿真。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式