FPGA|CPLD|ASIC论坛
直播中

y990441

12年用户 41经验值
私信 关注
[经验]

【芯航线FPGA开发板学习笔记】计算器开发笔记1

本帖最后由 y990441 于 2015-10-23 12:52 编辑

综述

看了一段时间小梅哥的视频,在程序验证方面主要学习了testbench的测试方法;在设计方面,学习了计数器和状态机的编写,感觉有了这两个东西…没有什么是设计不出来的了,于是自己动手做一个小项目:用矩阵键盘+7段数码显示管做简易的十进制+,-,*,/计算器,一方面检验下自己的小模块编写能力,另一方面体验下小小小小…项目的开发过程。

不说废话了,下面开始对这个项目做总体的设计,先上一个系统的框图:


1.jpg


矩阵键盘是输入设备,7段显示管是输出设备,ctrl控制器负责将keys的输入解释为计算器可理解的意义并驱动seg7显示。

各模块的接口信号(clk,rst_n都有故直接略去)。

Keys:key[3:0]表明哪个按键被按下;vld为是能时钟信号,有效时ctrl可获取key的值,否则key的值无效。

Seg7:Seg7的接口,data[31:0]以8421BCD码的方式指明要显示的数据;show_bit[3:0]说明显示最后的几位,比如show_bit=0,则不显示show_bit=1显示最后一位,show_bit=2,显示最后两位。这个信号很有必要,否则当你输入2的时候是希望看见2还是希望看见00000002?

这个系统可能的难点是要做乘除法。方法,当然是知己baidu,貌似乘除法都是直接对2进制作的,没有对8421码做的?(我没查到),但seg7显示却需要8421码,所以内部数据可用2进制表示,但显示的时候需要将2进制转换为8421码,这个非常简单,一个clk都可以搞定。。。所以似乎。。。没有什么难点???

接下来考虑如何设计

虽然看上去这玩样很容易,但是还是要充分考虑到自己的实力很弱。把这些东西一下全部鼓捣进来。。。估计debug会搞死我这样缺乏经验的人。所以我要分步骤让这个系统逐渐从一棵小树苗成长为参天大树。

首先,我个人认为任何系统必先做输出部分~~~这样可以看到东西了,所以,第一步是先搞定seg7模块,testbench后直接上板验证。这个太容易了,没有任何挑战,用来给自己增加信心很不错。

接着,搞定keys模块,这个可以搞个非常简易版本的ctrl,能让keys和seg7相连就OK。Testbench和上板也都可以基于这种模型。这个比前面难了一点,要状态机+计数器。

然后,搞ctrl模块,如果时间富裕,可以自己设计乘除法,不行的话,直接上网copy.为了保险,应该让keys和ctrl相连,用signaltap看ctrl是否正常。以这个作为这步的模型来testbench和上板。

最后,全部连上,应该不会出任何问题了。

本篇综述完成!!!



回帖(3)

梅雪松

2015-10-23 12:36:48
图片好“有个性”
举报

756589738

2015-10-24 21:24:22
支持!感觉小梅哥讲的视频把老师一学期讲的课给概括了!点赞!
举报

王磊

2015-10-25 08:58:14
不错  不错                                                  好
举报

更多回帖

发帖
×
20
完善资料,
赚取积分