完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
以前编译重来没出现过这样的错误,双击错误后,光标指在另外一个文件“db/and_***u_o7c.tdf”,好像是个系统自带的文件,不知为何会报错? 为了实现一个简单的倒计时,代码如下: module time_down(outshi,outge,clkin); parameter set_time=99; output[6:0] outshi,outge; input clkin; reg[6:0] outshi,outge; reg[25:0] counter; reg[3:0] shi,ge; integer num; initial begin num=set_time; counter=0; shi=num/10; ge=num%10; end /***************************************************************************/ always@(posedge clkin) begin if(counter<20000000)counter<=counter+1; else begin counter<=0; num<=num-1; shi<=num/10; ge<=num%10; if(num==0) num<=99; end end /********************************************************************/ always@(shi) begin case(shi) 4'd0000:outshi<=7'd0111111; 4'd0001:outshi<=7'd0000110; 4'd0010:outshi<=7'd1011011; 4'd0011:outshi<=7'd1001111; 4'd0100:outshi<=7'd1100110; 4'd0101:outshi<=7'd1101101; 4'd0110:outshi<=7'd1111101; 4'd0111:outshi<=7'd0000111; 4'd1000:outshi<=7'd1111111; 4'd1001:outshi<=7'd1101111; default:outshi<=7'd1; endcase end /****************************************************************/ always@(ge) begin case(ge) 4'd0000:ge<=7'd0111111; 4'd0001:ge<=7'd0000110; 4'd0010:ge<=7'd1011011; 4'd0011:ge<=7'd1001111; 4'd0100:ge<=7'd1100110; 4'd0101:ge<=7'd1101101; 4'd0110:ge<=7'd1111101; 4'd0111:ge<=7'd0000111; 4'd1000:ge<=7'd1111111; 4'd1001:ge<=7'd1101111; default:ge<=7'dx; endcase end endmodule 编译后就出现了如下图所示的错误,有点奇怪... 在线等各位大侠之高见,谢谢~~~ |
|
相关推荐
5 个讨论
|
|
发现一个很大的错误,就是case语句中,变量格式应为二进制,故应将‘d’改为‘b’;;;不过编译后仍然报相同的错误 |
|
|
|
|
|
今天上午又重新写了一个倒计时,调试可以了;
上面报错有这样几个原因:(最后发现Verilog和C还有很多不同之处) 1、Verilog中若出现对同一个变量进行always@()操作,容易出现竞争和冒险,这是报错的重要原因。以后写代码千万不能这样 2、貌似Verilog中计数应该采用8421码来计数,不知道是否支持这里的:shi=num/10; ge=num%10; 想补充个问题: 1、Verilog中的并行语句怎样用呀,就像fork ... join语句~ 2、Quartusii 9.0怎样才能写汉字的注释呢? 现在我用的不支持汉字注释... 下面是今天调试成功的60秒倒计时(Verilog) /************************任意秒倒计时调试成功2009-11-7************************************/ module tdown(outshi,outge,clkin,sec); output[6:0] outshi,outge; output sec; input clkin; reg[6:0] outshi,outge; reg[25:0] counter; reg[7:0] num; reg sec; initial begin num=8'b01100000; //倒计时初始化为60; counter=0; end /***************************************************************************/ always@(posedge clkin) begin counter<=counter+1; if(counter==20000000) //晶振为40MHZ,分频后周期为1HZ begin sec<=~sec; counter<=0; end end always@(negedge sec) begin if(num[3:0]==0) begin num[3:0]<=9; if(num[7:4]==0) num<=8'b01011001; //当num=0时,下一个周期将其赋值为59 else num[7:4]<=num[7:4]-1; end else num[3:0]<=num[3:0]-1; end /*******************************************************************************/ always@(num[3:0]) begin case(num[3:0]) 4'b0000:outge<=7'b0111111; 4'b0001:outge<=7'b0000110; 4'b0010:outge<=7'b1011011; 4'b0011:outge<=7'b1001111; 4'b0100:outge<=7'b1100110; 4'b0101:outge<=7'b1101101; 4'b0110:outge<=7'b1111101; 4'b0111:outge<=7'b0000111; 4'b1000:outge<=7'b1111111; 4'b1001:outge<=7'b1101111; default:outge<=7'b00000000; //共阴极数码管值,从0-9,倒计时的个位显示 endcase end /*******************************************************************************/ always@(num[7:4]) begin case(num[7:4]) 4'b0000:outshi<=7'b0111111; 4'b0001:outshi<=7'b0000110; 4'b0010:outshi<=7'b1011011; 4'b0011:outshi<=7'b1001111; 4'b0100:outshi<=7'b1100110; 4'b0101:outshi<=7'b1101101; 4'b0110:outshi<=7'b1111101; 4'b0111:outshi<=7'b0000111; 4'b1000:outshi<=7'b1111111; 4'b1001:outshi<=7'b1101111; default:outshi<=7'b0000000; //共阴极数码管值,从0-9,倒计时的十位显示 endcase end endmodule |
|
|
|
|
|
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
518 浏览 0 评论
845 浏览 0 评论
1683 浏览 0 评论
454 浏览 0 评论
631 浏览 0 评论
1216 浏览 23 评论
5451 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-2 19:30 , Processed in 0.646062 second(s), Total 63, Slave 49 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号