流水灯作业
流水灯左流与右流,只要led左移或者右移就可以了。不具述。
如何用拨码开关控制左流与右流?
我加一个输入,sw1,进行管脚设置,在移位的位置先做一下判断,决定如何移位,如下,
if(!sw1)
led<=led<<1;
else
led<=led>>1;
可惜不成功,这是为什么?
下面是源文件。
`timescale 1ns / 1ps
module Led( sys_clk ,
sys_rstn ,
led ,
sw1
);
//
input sys_clk ;
input sys_rstn ;
input sw1 ;
output [3:0] led ;
//
reg [3:0] led ;
reg [24:0] delay_cnt ;
//
always@(posedge sys_clk or negedge sys_rstn)
begin
if(!sys_rstn)
delay_cnt<=25'd0;
else if(delay_cnt==25'd14999999)
delay_cnt<=25'd0;
else
delay_cnt<=delay_cnt+1'b1;
end
always@(posedge sys_clk or negedge sys_rstn)
begin
if(!sys_rstn)
led<=4'b1111;
else
begin
if(delay_cnt==25'd14999999)
begin
if(!sw1)
led<=led<<1;
else
led<=led>>1;
if(led==4'b0000)
led<=4'b1111;
end
else
led<=led;
end
end
endmodule
跑马灯试验和作业
跑马灯的试验主要是学习移位寄存器。
完成。
下面的程序是用拨码开关控制马跑的方向的。
`timescale 1ns / 1ps
module Led( sys_clk ,
sys_rstn ,
led ,
sw1
);
//
input sys_clk ;
input sys_rstn ;
input sw1 ;
output [3:0] led ;
//
reg [3:0] led ;
reg [24:0] delay_cnt ;
//
always@(posedge sys_clk or negedge sys_rstn)
begin
if(!sys_rstn)
delay_cnt<=25'd0;
else if(delay_cnt==25'd14999999)
delay_cnt<=25'd0;
else
delay_cnt<=delay_cnt+1'b1;
end
always@(posedge sys_clk or negedge sys_rstn)
begin
if(!sys_rstn)
led<=4'b0111;
else
begin
if(delay_cnt==25'd14999999)
begin
if(!sw1)
led<={led[0],led[3:1]};
else
led<={led[2:0],led[3]};
end
else
led<=led;
end
end
endmodule
回复
我要赚赏金打赏帖 |
|
|---|---|
| 设备功耗web监控界面(ESP32C5)被打赏¥28元 | |
| OrangePiZero2W系统被打赏¥33元 | |
| Linux环境下以模拟方式快速实现出入管理功能测试被打赏¥24元 | |
| 树莓派3+Klipper,老3D打印机满血升级被打赏¥33元 | |
| OK1126B-S开发板下串口屏及其应用被打赏¥21元 | |
| 低功耗超声波液位测距仪(ESP32S3)被打赏¥27元 | |
| 在K230DBOX上实现多时段语音提示功能被打赏¥14元 | |
| 使K230DBOX实现相机持续拍照功能被打赏¥12元 | |
| 基于K230DBOX的文本管理器设计被打赏¥14元 | |
| 基于K230DBOX的彩色画板功能实现被打赏¥15元 | |
我要赚赏金
