永发信息网

求大神帮忙用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用连续赋值
全部回答
  • 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;
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯