看到有别的同学发帖子叫进程贴,挺好,我也叫进程贴吧。
其实,板子早拿到了,但是太陌生了,不知如何下手。只是用电脑USb供电上了一下电,看原有的跑马灯跑了一会。
我当了几本书看了看,现在想,要想看完书再动手不知何年何月了。还是像其他同学学习,争取在假期里跟教程走完,先来电上手经验,在进一步琢磨吧。
点亮LED,4、5、6楼。
15楼,加料跑马灯。
闪烁灯作业
这个确实比较简单。只要把计时常数从24999999改为49999999,同时寄存器变量delay_cnt的位数要增加一位,各有关位置均须相应改变。
程序如下。
`timescale 1ns / 1ps
module Led( sys_clk ,
sys_rstn ,
led
);
//
input sys_clk ;
input sys_rstn ;
output [3:0] led ;
//
reg [3:0] led ;
reg [25:0] delay_cnt ;
//
always@(posedge sys_clk or negedge sys_rstn)
begin
if(!sys_rstn)
delay_cnt<=26'd0;
else if(delay_cnt==26'd49999999)
delay_cnt<=26'd0;
else
delay_cnt<=delay_cnt+1'b1;
end
always@(posedge sys_clk or negedge sys_rstn)
begin
if(!sys_rstn)
led<=4'b1010;
else if(delay_cnt==26'd49999999)
led<=~led;
else
led<=led;
end
endmodule
我把led的初始值改为4'b1010,工作时好像一双蓝色的小眼睛左瞥一眼,右瞥一眼,十分有趣。
流水灯作业
流水灯左流与右流,只要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
打赏帖 | |
---|---|
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 | |
【我踩过的那些坑】DRC使用位置错误导致的问题被打赏100分 | |
我踩过的那些坑之混合OTL功放与落地音箱被打赏50分 | |
汽车电子中巡航控制系统的使用被打赏10分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏100分 | |
分享汽车电子中巡航控制系统知识被打赏10分 | |
分享安全气囊系统的检修注意事项被打赏10分 | |
分享电子控制安全气囊计算机知识点被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【OZONE】使用方法总结被打赏20分 | |
【分享开发笔记,赚取电动螺丝刀】【S32K314】芯片启动流程分析被打赏40分 |