基于DE2开发板的计算器设计.docx

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于DE2开发板的计算器设计

基于DE2开发板的计算器设计实验原理分析本设计是使用verilog编写一个运算系统,其功能是实现4位整数的加、减、乘、除运算。运算时通过矩阵键盘输入运算类型和运算所需要的数据,然后通过内部电路处理,并将计算的结果送于LCD1602显示。电路的设计包括按键扫描模块A、输入数据处理模块B、BCD转二进制模块C、运算模块D、二进制转BCD模块E、LCD控制模块F。其结构框图如下:设计思路是由模块A扫描按键并获得键值,非等号的话送与LCD控制器,在LCD上显示。同时模块B根据收到的键值判断并输出运算数(a,b)和运算类型(+-*/)。模块C将模块B传来的4位BCD转换成二进制输入模块D,模块D根据运算数和算类型算出结果,送到模块E,模块E将计算结果转换成BCD码送到模块F从而在LCD上显示运算结果。实验硬件实现设计输入采用4*4薄膜键盘DE2开发板上有4个IO口已经被拉高到3.3V,刚好可以作为矩阵键盘列扫描的输入,如图设计输出采用DE2开发板上自带的LCD1602模块介绍:按键扫描模块:其中CLOCK_50为时钟、reset为复位、row为列输入、col为行控制、key_value为输出键值,采用BCD编码,LCD_EN为LCD写使能信号,key_down为按键按下信号。输入数据处理模块:其中EN为使能,clk为时钟,key_in是输入的键值,a是第一个操作数,b是第二个操作数,a,b都是4位的BCD码,例如a=16‘b1000100010001000表示输入的数据是8888。Math表示运算类型,0为加,1为减,2为乘,3为除。 BCD转二进制模块:其中data_in为输入的BCD码,data_out为转换后的二进制码。运算模块:其中a,b为输入的操作数,该模块可以根据math_in的值选择相应的算术运算,支持加减乘除四种运算。Result为输出的运算结果。二进制转BCD模块:其中bin为输入的二进制码,BCD输出相应的BCD码。LCD控制模块:其中W_EN为写使能,iCLK为时钟,iRST_N为复位信号,key_in是键盘的键值,result为运算后的结果,LCD_DATA为写到LCD的数据,LCD_RW读/写控制信号, LCD_EN为LCD使能, LCD_RS为LCD输入指令/数据选择信号。运算系统顶层电路设计实验结果与展望:本次实验实现了4位整数的加、减、乘、除运算,并且送与LCD1602显示。但是其输入数最大支持四位数9999,计算结果不大于,且除法运算是取整运算,不能真正的算得上是一个计算器。查看quartus ii 的MegaWizard Plug-in Manager工具,发现Arithmetic 里有很多关于浮点数运算的IP核。如果深入设计的话可以采用浮点数输入,浮点数输出,从而设计出一个带小数的计算器。还可以让计算器增加根号、exp和log等功能。附录一:顶层程序calculatormodule calculator( input RST, input CLOCK_50, input [3:0] ROW, output [3:0] Column, inout [7:0] LCD_DATA, outputLCD_BLON, outputLCD_EN, outputLCD_ON, outputLCD_RS, outputLCD_RW );wire [7:0] LCD_D_1;wire LCD_RW_1;wire LCD_EN_1;wire LCD_RS_1;wire DLY_RST;//=============================================================================// Structural coding//=============================================================================// initial ////assign LCD_DATA = LCD_D_1;assign LCD_RW = LCD_RW_1;assign LCD_EN = LCD_EN_1;assign LCD_RS = LCD_RS_1; assign LCD_ON = 1b1;assign LCD_BLON = 1b0; //not supported;wire [3:0]key_BCD;wire key_pressed,LCDen;wire [15:0]data_a;wire [15:0]data_b;wire [15:0]data_a_bin;wire [15:0]

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档