327|0

4771

帖子

12

TA的资源

版主

楼主
 

用FPGA芯片设计和搭建复杂数字系统的设计能力 [复制链接]

 
FPGA学习日记之一
《简易计算器设计验证(四则运算)》
(加、减、乘、除 四则运算计算器设计过程实录)
一, 设计要求
设计验证的这款计算器能够进行四则运算(加减乘除),也可以进行累积运算。通过数码管显示需要进行四则运算的数据,最终显示运算后的结果。进行四则运算的数字需要通过矩阵键盘产生,四则运算的选择也通过矩阵键盘产生。
二, 设计分析
利用矩阵键盘0到9的按键产生需要进行计算的操作数和被操作数,A到D表示四则运算符(加减乘除),E表示等于。
仿真modelsim波形验证
该计算器进行四则运算的规则为:
对于数码管显示的操作数需要进行左移动作,每对按键进行一次数据的输入,数码管显示的数据进行左移四位。那么数码管数据的表示方式为:show_data= {show_data[19:0],key_value};//{20’d0,key_value};
数码管显示的数据不能够直接用来进行四则运算,现在我们需要考虑产生四则运算的数据方式:假设我们用num1表示操作数,num2表示被操作数,当我们对数字按键进行操作时,操作数num1 = num1 *10 + key_value;被操作数num2的产生方式和操作数相同。
在我们进行四则运算时,输入的操作数显示在数码管上,当我们对操作符(四则运算按键)进行操作时,数码管上显示的数据清零,操作数保持不变,接着可以输入被操作数,数码管显示方式和显示操作数方式相同,被操作数的产生方式与操作数相同;
对等于号(按键E)进行操作,数码管显示清零,操作数和被操作数进行对应的四则运算,对应的四则运算需要在产生被操作数前将我们进行操作的运算符按键值寄存起来,将num1和num2进行对应的四则运算,由于我们需要将运算结果显示在数码管上,那么我们就需要对四则运算的结果进行转码(bcd码),转码完成后给到数码管显示数据。
累积运算是将上一次运算的结果作为操作数,如果是对运算符号进行一次操作,那么上一次运算的结果就作为本次运算的操作数;如果是对数字进行操作,那么表示进行新的一次四则远算,其他按键保持当前运算结果。
电路视图数码管
根据指定的规则,我们需要如何进行计算器的设计?
利用有限状态机进行设计:
第一步:产生操作数状态,数码管显示数据show_data = {show_data[19:0],key_value};操作数num1 = num1 *10 + key_value;进行这样的数据产生动作需要将矩阵键盘驱动模块产生的标志信号寄存一拍,将寄存一拍后的标志信号作为数码管显示数据和操作数的标志信号。跳转条件为:对运算符按键进行操作,需要定义一个运算符寄存器code[3:0],将运算符按键键值寄存起来。在跳转的同时需要将数码管显示的操作数数据清零。num1保持不变。
第二步:产生被操作数,数码管显示数据show_data = {show_data[19:0],key_value};被操作数num2 = num12*10 + key_value;num1保持不变。运算符寄存器code[3:0]保持不变,跳转条件为:对等于号按键进行操作,数码管显示数据清零。
第三步:进行四则运算,根据运算符寄存器code[3:0]的值进行四则运算,运算完成后进入的转码状态,该状态持续时间只有一个驱动时钟周期。需要定义一个运算结果寄存器result。
第四步:转码状态,对运算出来的结果进行result转码,该状态持续时间只有一个驱动时钟周期。
第五步:显示运算结果状态,等待再次计算:包含重新开始计算和累积运算。如果我们对数字按键进行操作,表示重新开始计算,那么操作数num1 = {19’d0,key_vaule};被操作数清零,数码管显示数据show_data = {19’d0,key_vaule};状态跳转到第一步;如果我们对运算符按键进行操作,上一次运算结果要作为操作数num1,num1= result,数码管显示数据清零,被操作数num2清零,运算符寄存器code将现在操作的运算符按键键值寄存起来,状态跳转到第二步。
状态转移图:
状态转移图STG
 

点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
应用技巧/用68HC908GP32单片机实现EPP增强并口的接口技术

摘要:本文介绍了计算机并口的几种操作模式,给出了实现EPP接口设计的几种方案;着重介绍用Motorola公司的68HC908GP32单片机 ...

常用网络命令

常用网络命令 计算机网络的主要优点是能够实 ...

友善之臂嵌入式浏览器中文支持移植成功

经过本人的改造,友善之臂的qtopia自带的浏览器终于支持中文网页了,也就是,如果能把应用程序再汉化下,就可以应用到开发中。空 ...

谈谈我写书的经历

写书,在一些人看来是一个非常光荣而又伟大的事情;在又一些人看来却是一件赚钱的行当。为了让大家真正认识到写书的痛苦与艰辛, ...

留住身边的美景,2015年春天

本帖最后由 mmmllb 于 2015-4-9 12:28 编辑 不知道说现在是春天是否合适:Sweat:,先这么叫着。 话说最近各路的花都开了,有 ...

【DIY创意LED】参考设计(原理图+PCB)

本帖最后由 dcexpert 于 2020-9-15 17:05 编辑 这次使用了立创EDA进行设计,一个原因是立创EDA是国产免费软件,容易查找器件 ...

AD-DC整流、精密整流

AD-DC整流、精密整流: 1.整流桥、四个二极管整流和运放整流有哪些区别? 2.整流之后,为何把正半周信号丢弃了,并且 ...

直流转换电源电感下的铺铜

本帖最后由 qwqwqw2088 于 2022-7-18 09:08 编辑 对DC/DC 电源的电感底部是否应该铺铜这个问题,常常有意见分歧。 一种认为, ...

【Follow me第二季第1期】 开发环境的搭建-基于CircuitPython

二、开发环境的搭建(基于CircuitPython) 安装或更新CircuitPython 单击上面的链接并下载最新的 UF2 文件这里选择中 ...

MOSFET栅极振荡

那么是不是栅极驱动电流越大越好呢也就是我们的驱动电阻的内阻是不是越小越好这也有可能带来问题我们来对驱动电路进行定量仿真用 ...

关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表