求大神帮忙用verilog HDL写一个四个小灯的流水灯程序,50MHz的,要有分频过程的
答案:2 悬赏:60 手机版
解决时间 2021-03-17 08:09
- 提问者网友:謫仙
- 2021-03-17 04:48
希望程序不要太复杂,谢谢啦
最佳答案
- 五星知识达人网友:琴狂剑也妄
- 2021-03-17 06:23
周期=1/20秒
时钟晶振选用50mhz的话,0.05秒就需要clk跑5*0.01*50*10^6= 2 500 000
module led;
input clk,rst;
output ledcon;
reg [3:0] led; //led开关锁存位
reg d1,d2,d3,d4;//四个灯开关
reg [21:0] cnt_5; //0.05秒计数器
reg count; // 数满标志位
always @(posedge clk or negedge rst)
if (!rst)
cnt_5<=22'd0;
else if(cnt_5==22'd2500000)
cnt_5<=22'd0; //数满归零
else cnt_5<=cnt_5+1'b1;
always @(posedge clk or negedge rst))
if(!rst)
count<=1'b0;
else if (cnt_5==22'd2500000)
count<=1'b1;
我擦。。剩下我不写了。你查查网上资料吧。
就是每数满时间就依次轮换打开d1--d4开关并且关闭前一个。
ledcon用连续赋值
时钟晶振选用50mhz的话,0.05秒就需要clk跑5*0.01*50*10^6= 2 500 000
module led;
input clk,rst;
output ledcon;
reg [3:0] led; //led开关锁存位
reg d1,d2,d3,d4;//四个灯开关
reg [21:0] cnt_5; //0.05秒计数器
reg count; // 数满标志位
always @(posedge clk or negedge rst)
if (!rst)
cnt_5<=22'd0;
else if(cnt_5==22'd2500000)
cnt_5<=22'd0; //数满归零
else cnt_5<=cnt_5+1'b1;
always @(posedge clk or negedge rst))
if(!rst)
count<=1'b0;
else if (cnt_5==22'd2500000)
count<=1'b1;
我擦。。剩下我不写了。你查查网上资料吧。
就是每数满时间就依次轮换打开d1--d4开关并且关闭前一个。
ledcon用连续赋值
全部回答
- 1楼网友:山河有幸埋战骨
- 2021-03-17 06:52
代码如下,供参考
reg [24:0] cnt;
reg clk_1hz;
parameter c_25m = 25'd24_999_999;
always@(posedge clk_50m or negedge rst)
if (!rst)
cnt <= 25'b0;
else if (cnt >= c_25m ) //
cnt <= 25'b0;
else
cnt <= cnt + 1'b1;
always@(posedge clk_50m or negedge rst)
if (!rst)
clk_1hz <= 1'b0;
else if (cnt == c_25m )
clk_1hz <= !clk_1hz;
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯