用verilog写出 实现20Hz 4个LED 流水灯的程序及仿真 10
展开全部
周期=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用连续赋值
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询