原创 FPGA学习札记2 -CPLD电子钟硬件和对Verilog的一些认识

2010-6-21 12:24 2242 0 分类: FPGA/CPLD

最近工作非常忙,生活上又出了在我这个年纪早该已经淡定的变故,原本打算直接从SOPC开发板入手的,现在改为先做一块以CPLD为核心的数码电子钟,顺便熟悉verilog和QuartusII开发环境。这电子钟本来是在热恋期想作为生日礼物送她的,久拖之后,还是决定将其做完,给自己的一个纪念。


其实是个很简单的东西,用的EPM240的片子,带4个数码管显示时、分,3个按键,一个蜂鸣器,可设定闹钟。电源外接5V开关电源,可以作为家用床头电子表使用。自己完成原理图PCB,尺寸大约5*8cm,找家熟悉的加工厂投了板,数量不多也就几块,说了是自己做的东西让那边业务给我便宜点。不过PCB投出去了10多天还没做完,北京的加工速度跟南方差的真不是一个数量级。原理图和PCB的pdf贴后面,BOM单就不贴了,就那么几个东西有需要原理图参考吧。


计划的功能是s1、s2、s3三个按键:s1按下时显示闹钟时间,按下超过2s的话进入闹钟分钟设定状态,s2、s3上下调整,再按一次s1,进入闹钟小时设定状态,调整完成再按下s1退出闹钟设定;s2按下超过2s进入小时设定状态,s3键按下超过2s进入分钟设定状态,设定完成后按下s1即退出,或者在设定状态下3s内没有任何按键按下也自动退出设定状态,闹钟到点便鸣叫,按下s1键即关闭闹钟。


 


中间这些天除了不靠谱的生活就是在调试verilog代码,效率依旧不高,但心境还算是比较沉得住,单纯的计时程序非常简单,但凡是个CPLD教材都有,但设定时间和闹钟以及混合显示并没有我想象的简单。到今天为止仍然有很多问题没完成,主要是以前对组合逻辑、时序逻辑这些东西没啥深刻的理解,开始设计的思路基本上就是单片机C语言的套路,时序上一片混乱,其实从设计一开始也考虑到底层的门级实现,但本来对触发器这类东西了解就不够深,对片内实现的特性也不了解,所以刚开始设计了很多不可综合的代码,从多个always块中对同一reg赋值这种低级错误开始,到后来发现取余运算占用大量的逻辑单元,不得不重新选择系统节拍。学习这玩意,不动手永远不知道有啥问题,背下100本教材不如自己动手写100行程序。


 


现在计时、设定状态选择、显示等部分都完成了代码,闹钟设定、设定状态下数码管显示、蜂鸣功能还没完成,后面估计需要重新优化一下reg的选择设置,资源占用的有点多,不修改修改估计一片240都放不下。


这么简单一个功能做出这么大的空间,必须是个新手的不完美作品。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
0
×
广告
关闭 站长推荐上一条 /3 下一条