6.25号收到板子和器件包,周末焊接完成,各种忙,迟上加迟啊,先上照片,看一下板子,稍后上进程细节。。。
时间:2013年9月19日
实验:LED闪烁 1S间隔(手把手教程对应的课后作业);
进程: 此间一直在学习Verilog语言,由于基础为零,只是理解CPLD的原理而已,至于开始一个设计,哪怕是小小的简单的,也不知道该如何下手,例如,FPGA开发当中仿真是非常重要的,那么每个工程都要进行仿真吗?最简单的点灯程序写好了,怎么分配管脚?我的Pin Planer打开了怎么看不到有待分配的管脚定义呢?一头雾水,初学者大概都有此类问题,每个问题都去坛子里群里问吧,那自己就没有什么思考了,而且,已经入门的高手大都享受过这样的进阶乐趣了,怎能在百忙中回答这些琐碎问题。自己来吧还是,绝知此事要躬行啊!
我首先看了教程中的例程,再三琢磨,终于明白了,算是看懂了吧,然后新建立一个工程,原样敲进去例程,编译、通过(必须啊,抄的啊这是),然后分配管脚,处理未使用管脚(容易忘哦这一点),然后下载,完成后立即观察到8只LED按照同样频率(0.5S周期)闪烁,欣喜!!
按照课后作业要求,使8只LED间隔1S闪烁,easy!于是我改了代码,如下:(稍等,记得有规则说此处不能上源码?而且我用手机拍照的,现在还没传到电脑上)。
要实现1S间隔闪烁,只需要让计数器计数到50M即可,外部晶振50M赫兹,也就是每秒计数50M次,那么这样的频率正是所要的。于是直接修改了计数寄存器的值为49 000 000,然后,编译,下载,就等1S闪烁了,结果,竟然闪烁的更快了!?什么情况呢,计数大了,反倒闪烁快了,难道是要缩小计数值??仔细看了代码,没错啊,计数大才能获得更长的周期啊,然后。。。终于想到,计数寄存器位宽设为25为,那么最大值是335 544 32,到不了49 000 000啊,原来如此,增加一位位宽,编译,下载,终于实现了,闹钟正在桌子上哦,闪烁节奏,正是秒针的节奏,就是这个了!
module led_flick(sys_clk,sys_rstn,led);
input sys_clk;
input sys_rstn;
output [7:0] led;
reg [7:0] led;
reg [25:0] delay_cnt;
always @(posedge sys_clk or negedge sys_rstn)
begin
if (!sys_rstn)
delay_cnt <= 26'd0;
else
begin
if (delay_cnt==26'd49999999)
delay_cnt<=26'd0;
else
delay_cnt<=delay_cnt+1'b1;
end
end
always @ (posedge sys_clk or negedge sys_rstn)
begin
if (!sys_rstn)
led <= 8'b11111111;
else
begin
if (delay_cnt==26'd49999999)
led=~led;
else
led=led;
end
end
endmodule
享受进步的快乐!
这可全得感谢CPLD DIY活动啊,这可还得感谢EEPW啊,珍惜这个活动,继续进行下一进程!
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
【笔记】生成报错synthdesignERROR被打赏50分 | |
【STM32H7S78-DK评测】LTDC+DMA2D驱动RGBLCD屏幕被打赏50分 | |
【STM32H7S78-DK评测】Coremark基准测试被打赏50分 | |
【STM32H7S78-DK评测】浮点数计算性能测试被打赏50分 | |
【STM32H7S78-DK评测】Execute in place(XIP)模式学习笔记被打赏50分 | |
每周了解几个硬件知识+buckboost电路(五)被打赏10分 | |
【换取逻辑分析仪】RA8 PMU 模块功能寄存器功能说明被打赏20分 | |
野火启明6M5适配SPI被打赏20分 | |
NUCLEO-U083RC学习历程2-串口输出测试被打赏20分 | |
【笔记】STM32CUBEIDE的Noruletomaketarget编译问题被打赏50分 |