完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 雾_盈 于 2016-8-30 09:30 编辑 六位十进制数四则运算计算器(1)整体结构及其设计思路 雾盈 2016-8-26 一、 写在之前 上周做的是一个小项目—计算器。 从这篇文章开始,陆续的,我会将计算器设计的各个模块分篇写出来。 今天的这篇文章先谈一下整体结构和设计思路。 二、功能实现: 1.六位十进制数的加减乘除四则运算。 2.按键输入操作数时,数码管移位显示。 3.数码管显示消零,控制数码管亮灭,对于无意义的零予以不显示。 4.运用小算法进行加减乘除运算,大量节省了FPGA内部硬件资源的消耗。 三、设计思路成形步骤 1.拿出一张纸,将自己想要实现的功能分点全部写出来。 我自己写的就是上面二里的功能。 2.对照着各个目标功能,联想其可能用到的逻辑设计想法。 例如,我想实现按键输入时,让数码管移位显示并参与计算,这个功能。我就联想到:必须有一个移位设计,而移位后这个数是BCD码,想让它参与计算,就还必须有BCD转二进制设计,计算完之后,还能让它显出在数码管上,那还得有一个二进制转BCD设计。 就这样,一个功能实现的思路就有了。 3.将单个目标功能和其逻辑设计想法整合成小的模块。 上一步进行完毕之后,这一步就可以很快的分出块了。 4.将上述的小模块之间的逻辑关系和顺序关系捋清并清楚表达在框图里。(我的设计框图在下面) 这一步也很重要,框图搭建完毕之后,敲代码就变的很容易,速度也快很多。 四、框图 顶层框图: 矩阵键盘模块: 数码管模块: 五、框图及模块介绍。 由上图可以看到,整个计算器顶层(Alu_top)里包含了六个子模块: 1. 矩阵键盘模块(keyscan_top): a) 按键模块(key_scan) b) 消抖模块(key_pulse) 2. 移位控制模块(shift) 这个模块在我的设计里是核心。计算,数码管显示,BCD与二进制相互转换,都要通过这个模块去控制。 3. BCD转二进制模块(bcd2bin) 移位后的数据经过此模块进入计算模块计算。 4.计算模块(Alu1) 用几个小算法去完成加减乘除的四则运算。 5.二进制转BCD模块(bin2bcd) 计算后的二进制结果要送回数码管以BCD码的形式显示。 6.数码管模块(smg_top): a)数码管开关模块(smg_off) 这个模块也可以叫做消零模块,几位数在数码管上就只显示几位数,不显示无意义的零。 b)数码管显示模块(smg_dsp) 这个数码管虽然做完了,但是我觉得还可以优化的更好一些,实现更多的功能,我会慢慢优化然后把优化的结果更新出来。 附源代码:
alu_top.zip
(1.14 KB, 下载次数: 29
)
|
|
相关推荐
|
|
很强势,分享万岁
|
|
|
|
|
|
好棒,,,,,,,,,,,,
|
|
|
|
|
|
学习学习
|
|
|
|
|
|
1367 浏览 1 评论
助力AIoT应用:在米尔FPGA开发板上实现Tiny YOLO V4
1046 浏览 0 评论
2442 浏览 1 评论
2146 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
2408 浏览 0 评论
1894 浏览 50 评论
6018 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 19:44 , Processed in 0.533928 second(s), Total 51, Slave 43 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号