本帖为mihu525 CPLD DIY进程贴
由于刚刚收到板子就出差了,所以进程会推迟
先将要做的事情整理一下
步骤:
0、安装QuartusII 8.0,复习Verilog语言,了解板子原理图
1、焊接,并使用自带的例程进行测试
2、流水灯
3、用数码管显示温度
4、用数码管显示时间
5、使用串口和PC传送数据
6、PS2接口键盘驱动,将数据传送到pc上
实现流水灯功能
当代码中使用同步复位时,上电后需要按一下复位键才好使
如果使用异步复位,则上电复位直接就运行
我猜想,在同步复位的过程中,上电复位的时间不足以让其检测到复位信号,而按复位开关的时间比较长,所以能检测到,但是,系统时钟的时间是50M分之一,0.02us,应该不足以检测不到啊?电容充电应该怎么计算,我算的电容充电时间是1ms,也不知道计算的对不对。
写这一个小程序漏洞百出,用了77个逻辑门,用的是不是太多了,大程序可能逻辑门都不够用,语言不用,语法就忘了,这个程序算是捡了一下Verilog语言的知识,继续努力!
用数码管显示温度(1)
数码管显示温度,主要就是两部分读出温度,显示到数码管上,本来以为挺简单的,真正自己弄起来挺麻烦,在设计的过程中遇到了一个很麻烦的问题,就是数码管显示十进制的问题。在单片机中,我通常都用‘/’‘%’来拆分出来各个位,在CPLD里貌似不能用这种方法,如果非要用还要先写一个除法器,比较麻烦。其他的方法还没想到,在网上也没找到什么好的方法,问题先搁置。打算先用16进制显示,等到功能完事了之后再解决这个问题。
先让数码管亮起来吧,哪知道点亮数码管都这么麻烦。开始直接想让数码管显示01234567,结果出来乱码
如下图
感觉有可能是芯片引脚的问题,一个一个的点亮果然发现了问题,有的引脚短路,有的虚焊。
重新焊了一下,再一个个的点亮,都能正式点亮了,很开心。
接着把01234567烧写进去,又是乱码,这回排除了焊接的问题,那问题又在哪呢??
单个显示都没问题,只要我打算动态显示就是乱码,有的时候能够正常显示数据,但是有可能对应的数字不在我要求的位置上,有的显示正常,按下复位或者重启之后又乱显示了,这一个8那一个9的,我实在想不通,代码没几行,我觉得还有可能是复位的问题,我把程序改成异步复位,问题又解决了。。。
这是为什么?同步复位不靠谱?不可能啊,我把之前焊上去的电解电容拿掉,仍然有相同的问题,困惑啊。我决定先不细扣这个问题了,先继续往后走,没准慢慢就找到原因了。
传一个完成后的图
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |