本人刚入门,想点亮一个led灯间隔200ms闪烁,用了两种方法,重点是always语句后面有不同。但只有一种方法能够实现。
方法一: always后面直接加延时时间,200ms(行为级仿真没有问题,但是用modelsim后仿led显示为红 {MOD}即stx状态,未知电平),下载进去led不亮
- module led_test(clk,led);
- input clk;
- output led;
- wire led;
- reg data;
- initial data=1'b0;
- always #200000000
- data=~data;
- assign led=data;
- endmodule
复制代码方法二:always后面采用clk的边沿触发 ,定义一个数据变量data用于计时,clk为50Mhz——20ns,一个周期记数一次,间隔也为200ms。前仿后仿都没问题,下载led也闪烁。
- module led_test(clk,led);
- input clk;
- output led;
- reg led;
- reg [31:0]data;
- initial
- begin
- led=1'b1;
- data=0;
- end
-
- always @(posedge clk)
- begin
- if(data==10000000)
- begin
- led=~led;
- data=0;
- end
- else data=data+1;
- end
- endmodule
复制代码以上就是我的两种方法。第二种成功,而第一种失败。引脚分配ok,请大家帮我分析分析,非常感谢!
恩 我也觉得不太能综合,不符合硬件的工作方式。不过你的提醒还是很感谢啊!!非常感谢
一周热门 更多>