集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1147|回复: 1

雾盈FPGA笔记之(二十八)六位四则运算计算器(4)数码管消零显示模块

[复制链接]
雾盈 发表于 2016-8-28 13:01:03 | 显示全部楼层 |阅读模式
本帖最后由 雾盈 于 2016-8-28 13:44 编辑

六位四则运算计算器(4)数码管消零模块

                       
雾盈 2016-8-27


雾盈FPGA笔记汇总目录

一、写在之前

        我之前已经发过一篇数码管文章,链接在上面。那一个数码管程序实现的功能是可以显示三位十进制数。
这一篇和上一篇不同的是,加入了数码管消零模块,并且去除了十六进制转十进制的部分。
我的计算器设计里将数码管部分分为两个小模块来写的:1)数码管消零模块。2)数码管显示模块。


本篇文章,将用两种写法来讲数码管消零。

二、功能

        此数码管程序可以消去最高位之前无意义的零,直接显示数字的十六进制数值。

三、框图

       
 
四、思路及代码解释

        第一步:为了消去没有数字数码管位上的零,首先要确定这一位数码管上到底有米有数字。
我们下面的这一段代码就是为了实现这一目的:

       
       
六位数码管可以显示一个24位的十六进制数,所以让每个数码管上的四位相或,(或,全为零时才为零)。然后,让一个六位寄存器去存放这六个相或的结果,下一步用。


        第二步,确定最高位所在位,输出数码管显示开关,关掉最高位之前的数码管显示,即达到消零目的。
       
       
       
        第三步,同样实现上一步的功能,只是写法不同了。
       
       
       
        相或,取反。
        举个例子:001234 消去前面两个零。
由第一步的程序可以得到:
Bcd_r[5]=0, Bcd_r[4]=0,
  Bcd_r[3]= Bcd_r[2] = Bcd_r[1] = Bcd_r[0]=1 ,
这样相或后{ }内结果为{0,0,1,1,1,1},再取反是使开关为1 时有效,即bcd_off=6’b110000 ;
达到目的。

下一篇讲数码管显示。


源代码如下:
       
       






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
芙蓉王 发表于 2016-8-29 10:49:45 | 显示全部楼层
                                 感谢分享
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-11-16 19:06 , Processed in 0.060068 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表