收藏 分销(赏)

简易计算器EDA关键技术专业课程设计.doc

上传人:丰**** 文档编号:2685268 上传时间:2024-06-04 格式:DOC 页数:48 大小:745.04KB
下载 相关 举报
简易计算器EDA关键技术专业课程设计.doc_第1页
第1页 / 共48页
简易计算器EDA关键技术专业课程设计.doc_第2页
第2页 / 共48页
简易计算器EDA关键技术专业课程设计.doc_第3页
第3页 / 共48页
简易计算器EDA关键技术专业课程设计.doc_第4页
第4页 / 共48页
简易计算器EDA关键技术专业课程设计.doc_第5页
第5页 / 共48页
点击查看更多>>
资源描述

1、 EDA技术 课 程 设 计 题 目 简易计算器设计 系 (部) 信息工程系 班 级 姓 名 学 号 指引教师 年 7 月 8 日至 7 月 12 日 共 1 周 EDA技术 课程设计任务书一、设计题目、内容及规定 设计题目:简易计算器设计内容及规定:(1)基本设计内容1:设计简易通用型计算器,完毕对数据通路架构,控制模块和运算器模块设计,可进行加减乘除基本运算。(2)基本设计内容2:加入按键消除抖动模块,并在实验箱或开发板上通过数码管显示计算器输入数值与输出成果,实现一种完整计算器。(3)进阶设计内容:通过矩阵键盘实现数据输入。(4)进阶设计内容:实既有符号数计算。(5)进阶设计内容:实现浮

2、点数计算。设计规定:(1)依照任务规定拟定电路各功能模块; (2)写出设计程序;(3)分析时序仿真成果; (4)提交设计总结。二、设计原始资料 Quartus软件;EDA实验箱;计算机一台;三、规定设计成果(课程设计阐明书、设计实物、图纸等)课程设计阐明书1份,不少于字,应包括设计原理分析、有关软件简介、仿真波形分析,实验箱下载验证等。四、进程安排周1-周3: 查阅资料,上机编写并调试设计程序;周4:整顿、撰写阐明书;周5:课程设计答辩并提交设计阐明书。五、重要参照资料1.Voknei A.Pedroni.VHDL数字电路设计教程.电子工业出版社,.52.潘松,黄继业.EDA技术实用教程(第二

3、版).科学出版社,.23.焦素敏.EDA应用技术.清华大学出版社,.4指引教师(签名):教研室主任(签名):课程设计成绩评估表出勤状况出勤天数 缺勤天数成绩评定出勤状况及设计过程体现(20分)课设答辩(20分)设计成果(60分)总成绩(100分)提问(答辩)问题状况综合评定 指引教师签名: 年 月 日目 录1 绪论12 软件简介22.1 Quartus II简介22.2 ModelSim简介33 设计原理54模块化设计分析64.1键盘矩阵模块64.2去抖模块设计64.3 ALU模块设计74.4 FSM模块设计74.5 OP1模块设计84.6 OP2模块设计94.7 BIN模块设计94.8 BC

4、D模块设计105 总结11参照文献12附录131 绪论硬件描述语言(hardware description language,HDL)是电子系统硬件行为描述,构造描述,数据流描述语言。当前,运用硬件描述语言可以进行数字电子系统设计。随着研究进一步,运用硬件描述语言进行模仿电子系统设计或混合电子系统设计也正在摸索中。国外硬件描述语言种类诸多,有从Pascal发展而来,也有某些从C语言发展而来。有些HDL成为IEEE原则,但大某些是公司原则。VHDL来源于美国军方,其她硬件描述语言则多来源于民间公司。可谓百家争鸣,百花齐放。这些不同语言传播到国内,同样也引起了不同影响。在国内比较有影响有两种硬件

5、描述语言:VHDL语言和Verilog HDL语言。这两种语言已成为IEEE原则语言。 电子设计自动化(electronic design automation,EDA)技术理论基本,设计工具,设计器件应是这样关系:设计师用硬件描述语言HDL描绘出硬件构造或硬件行为,再用设计工具将这些描述综合映射成与半导体工艺关于硬件配备文献,半导体器件FPGA则是这些硬件配备文献载体。当这些FPGA器件加载,配备上不同文献时,这个器件便具备了相应功能。在这一系列设计,综合,仿真,验证,配备过程中,当代电子设计理论和当代电子设计办法贯穿于其中。以HDL语言表达设计意图,以FPGA作为硬件实现载体,以计算机为设

6、计开发工具,以EDA软件为开发环境当代电子设计办法日趋成熟。VHDL语言英文全名是Very High Speed Integrated Circuit Hardware Description Language,即超高速集成电路硬件描述语言。HDL发展技术源头是:在HDL形成发展之前,已有了许多程序设计语言,如汇编,C,Pascal,Fortran,Prolog等。这些语言运营在不同硬件平台和不同操作环境中,它们适合于描述过程和算法,不适合伙硬件描述。CAD浮现,使人们可以运用计算机进行建筑,服装等行业辅助设计,电子辅助设计也同步发展起来。在从CAD工具到EDA工具进化过程中,电子设计工具人机

7、界面能力越来越高。在运用EDA工具进行电子设计时,逻辑图,分立电子原件作为整个越来越复杂电子系统设计已不适应。任何一种EDA工具,都需要一种硬件描述语言来作为EDA工具工作语言。这些众多EDA工具软件开发者,各自推出了自己HDL语言。2 软件简介2.1 Quartus II简介Quartus II 是Alter公司综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等各种设计输入形式,内嵌自有综合器以及仿真器,可以完毕从设计输入到硬件配备完整PLD设计流程。Quartus II提供了完

8、全集成且于电路构造无关开发环境,具备数字逻辑设计所有特性,涉及:可运用原理图、构造框图、Verilog HDL、AHDL和VHDL完毕电路描述,并将其保存为设计实体文献;芯片(电路)平面布局连线编辑;LogicLock增量设计办法,顾客可建立并优化系统,然后添加对原始系统性能影响较小或无影响后续模块;功能强大逻辑综合工具;完备电路功能仿真与时序逻辑仿真工具;定期/时序分析与核心途径延时分析;可使用SignalTap II逻辑分析工具进行嵌入式逻辑分析;支持软件源文献添加和创立,并将它们链接起来生成编程文献;使用组合编译方式可一次完毕整体设计流程;自动定位编译错误;高效期间编程与验证工具;可读入

9、原则EDIF网表文献、VHDL网表文献盒Verilog网表文献;能生成第三方EDA软件使用VHDL网表和Verilog网表文献。Max+plus II 作为Altera上一代PLD设计软件,由于其出众易用性而得到了广泛应用。当前Altera已经停止了对Max+plus II 更新支持。Quartus II 是Altera公司继Max+plus II之后开发一种针对其公司生产系列CPLD/PGFA器件综合性开发软件,它版本不断升级,从4.0版到10.0版,这里简介是Quartus II 8.0版,该软件有如下几种明显特点:1、Quartus II 长处该软件界面和谐,使用便捷,功能强大,是一种完

10、全集成化可编程逻辑设计环境,是先进EDA工具软件。该软件具备开放性、与构造无关、多平台、完全集成化、丰富设计库、模块化工具等特点,支持原理图、VHDL、VerilogHDL以及AHDL(Altera Hardware Description Language)等各种设计输入形式,内嵌自有综合器以及仿真器,可以完毕从设计输入到硬件配备完整PLD设计流程。Quartus II可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完毕设计流程外,提供了完善顾客图形界面设计方式。具备运营速度快,界面统一,功能集中,易学易用等特点。2、Quartus II对器件支持Quartus II支持Al

11、tera公司MAX 3000A系列、MAX 7000系列、MAX 9000系列、ACEX 1K系列、APEX 20K系列、APEX II系列、FLEX 6000系列、FLEX 10K系列,支持MAX7000/MAX3000等乘积项器件。支持MAX II CPLD系列、Cyclone系列、Cyclone II、Stratix II系列、Stratix GX系列等。支持IP核,包括了LPM/MegaFunction宏功能模块库,顾客可以充分运用成熟模块,简化了设计复杂性、加快了设计速度。此外,Quartus II 通过和DSP Builder工具与Matlab/Simulink相结合,可以以便地实

12、现各种DSP应用系统;支持Altera片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性开发平台。3、Quartus II对第三方EDA工具支持对第三方EDA工具良好支持也使顾客可以在设计流程各个阶段使用熟悉第三放EDA工具。AlteraQuartus II可编程逻辑软件属于第四代PLD开发平台。该平台支持一种工作组环境下设计规定,其中涉及支持基于Internet协作设计。Quartus平台与Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商开发工具相兼容。改进了软件Log

13、icLock模块设计功能,增添 了FastFit编译选项,推动了网络编辑性能,并且提高了调试能力。2.2 ModelSim简介Mentor公司ModelSim是业界最先进HDl语言仿真软件,它能提供和谐仿真环境,是业界唯一但内核支持VHDL和Verilog混合仿真仿真器。它采用直接优化编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译代码与平台无关,便于保护IP核,个性化图形界面和顾客接口,为顾客加快调错提供强有力手段,是FPGA/ASIC设计首选仿真软件。ModelSim重要特点:RTL和门级优化,本地编译构造,编译仿真速度快,跨平台跨版本仿真;单内核VHDL和Verilo

14、g混合仿真;源代码末班和助手,项目管理;集成了性能分析、波形比较、代码覆盖、数据流ChaseX、Signal Spay、虚拟对象Virual Object、Memory窗口、Assertion窗口、源码窗口显示信号值、信号条件断点等众多调试功能;C和Tcl/Tk接口、C调试;对SystemC直接支持,和HDL任意混合;支持SystemVerilog设计功能;对系统级描述语言最全面支持,SystemVerilog、SystemC、PSL;可以单独或同事进行行为、RTL级、和门级代码。ModelSim分几种不同版本:SE、PE、LE和OEM,其中SE是最高档版本,而集成在 Actel、Atmel、

15、Altera、Xilinx以及Lattice等FPGA厂商设计工具中均是其OEM版本。SE版和OEM版在功能和性能方面有较大差别,例如对于人们都关怀仿真速度问题,以Xilinx公司提供OEM版本ModelSim XE为例,对于代码少于40000行设计,ModelSim SE 比ModelSim XE要快10倍;对于代码超过40000行设计,ModelSim SE要比ModelSim XE快近40倍。ModelSim SE支持PC、UNIX和LINUX混合平台; Mentor Graphics公司提供业界最佳技术支持与服务。3 设计原理本设计重要运用状态机进行整体设计,分部完毕,便于人们分组进行

16、合伙,此设计规定完毕对数据通路架构,控制模块和运算器模块设计,可进行加减乘除基本运算。应用上周所学知识,运用状态机进行简易计算器编写。简易计算器由键盘输入模块、键盘去抖动模块、状态机、计算模块、OP1、OP2模块、显示模块构成,构造清晰,易于编写。简易计算器采用自顶向下设计原则,检测按键次数时,以scancode从非空到空跳变使计数器加一,第一运算数则在press_count=1时,将scancode装配到bcd码最低位bcd3:0,在press_count=2时,装配到bcd7:4,FSM在检测到+-/键时,将bcd赋予bcd2,同步启动alu操作alu_op。FSM依照scancode进度

17、,输出相应outsel,选取显示不同bcd数据。计算器模块化设计原理图如图3-1所示。检测按键次数press_count第1运算数bcdFSM第2运算数bcdbcd2(+-*/) loadALUbcdbcd2alu_opresdisplayoutselopkeyscancode图3-1 简易计算器模块化设计原理图4模块化设计分析4.1 键盘矩阵模块计算器输入数字和其她功能按键要用到诸多按键,如果采用独立按键方式,在这种状况下,编程会很简朴,但是会占用大量I/O 口资源,因而在诸多状况下都不采用这种方式,而是采用矩阵键盘方案。矩阵键盘采用四条线作为行线,四条线作为列线构成键盘,在行线和列线每个交

18、叉点上设立一种按键。这样键盘上按键个数就为44个。键盘模块采用44矩阵键盘,4位行线接上上拉电阻后接到高电平上,列线接上上拉电阻后依次予以低电平来判断哪个节点为低电平时即这个节点被按下,从而被读入到下一单元。矩阵键盘模块原理图如图4-1所示,矩阵键盘仿真波形如图4-2所示。图4-1 矩阵键盘模块原理图图4-2 矩阵键盘仿真波形4.2 去抖模块设计作为机械开核心盘,在开关启动或关闭瞬间会浮现电压抖动,消除抖动办法普通有硬件和恶、软件办法,普通进行软件解决,这样实现简朴、设计灵活、节约成本。程序设计原理:按键去抖动核心在于提取稳定电平状态,滤除抖动毛刺,对于一种按键信号,可以用一次脉冲对其进行取样

19、,如果持续三次取样为低电平,则为低电平,如果不满足三次取样都为低,则以为按键稳定状态结束。去抖模块原理图如图4-3所示,仿真波形如图4-4所示。图4-3 去抖模块原理图图4-4 去抖模块仿真波形4.3 ALU模块设计ALU模块重要实现数据加减乘除运算,用VHDL代码描述逻辑单元、算数单元、选取器单元,规定输入两组二进制数据,运用元件例化语句将设计三个单元进行组合,建立一种包括所有元件包集。ALU模块原理图如图4-5所示,仿真波形图如图4-6所示。图4-5 ALU模块原理图图4-6 ALU模块仿真波形4.4 FSM模块设计状态机由六个状态构成,重要是判断键盘输入是数据还是运算符,从而来进行不同运

20、算,一方面判断第一种输入数据与否为数字,若不是数据则等待,若是数据则进入下一种状态等键盘弹起后判断下一种数据为数字还是运算符,若是数据则将数据存入OP1,若是运算符,则将数据存入OP1和OP2,并等待下一种数据到来,状态机中值得注意是在进行数据运算时,将运算数据要存入OP1和OP2中。FSM模块原理图如图4-7所示,FSM仿真波形图如图4-8所示。图4-7 FSM模块原理图图4-8 FSM模块仿真波形图4.5 OP1模块设计OP1模块重要功能是实现数据输入及存储,重要用来做被加数、被除数等,在第一次输入数据时,数据存入OP1等进行操作后,数据会被装载到OP1和OP2模块中,待数据被输入时更新O

21、P1中数据。OP1模块原理图如图4-9所示,仿真波形图如图4-10所示。图4-9 OP1模块原理图图4-10 OP1模块仿真波形4.6 OP2模块设计OP2模块重要功能是用来存储运算完毕数据,使计算器有持续计算能力。当进行完一次运算后,此时OP2_LOAD为1,此时将运算完数据装载到OP2模块中。OP2模块原理图如图4-11所示,仿真波形图如图4-12所示。图4-11 OP2模块设计原理图图4-12 OP2模块仿真波形图4.7 BIN模块设计二进制模块功能是将二进制数字转化成BCD码。BIN模块原理图如图4-13,仿真波形图如图4-14。图4-13 BIN模块原理图图4-14 BIN模块仿真波

22、形4.8 BCD模块设计BCD模块是将BCD码转化成二进制数字。BCD模块原理图如图4-14,仿真波形图如图4-15。图4-14 BCD模块原理图图4-15 BCD模块仿真波形5 总结这次设计,给我印象很深,通过这次课程设计,我对EDA这门课程有了较好很深理解。通过做计算器,我对Quartus II和ModelSim应用更加熟悉了。本次课程设计,规定做一种简易计算器,第一周一方面由北京至芯科技公司教师来为咱们解说有关知识,解说做计算器办法。通过教师解说我对本课题有了一定理解。但是,在对该课题有一定理解前提下,也发现了诸多问题。结识到理论与实践之间差距,联系实际应用去理解只是比一大堆理论来直接与

23、清晰明了。本简易计算器设计,是用Quartus II软件进行代码编写、原理图设计,用ModelSim软件来实现仿真。通过对简易计算器设计,熟悉了Quartus II运营环境,初步掌握了VHDL语言基本库函数调用和编写基本程序等应用;明白了原理图和代码之间关系;学会了做一种工程普通环节,以及分模块化设计好处。最后,我要在这里对给我这次课程设计提供协助魏教师和王教师,尚有同窗们说声诚挚感谢。正是由于你们协助和支持,我才干克服一种一种困难和疑惑,直至本次课程设计圆满完毕。在这个过程中我学到了诸多知识,不但巩固了已有知识,并且强化了某些关于数学MATLAB软件应用方面知识,非常感谢你们协助。参照文献1

24、 乔庐峰,王志功.数字电路设计教程M. 北京电子工业出版社,2 潘松,黄继业.EDA技术实用教程(第二版)M. 科学出版社,3 焦素敏,EDA应用技术M. 北京清华大学出版社,4 谭会生,张昌凡.EDA技术及应用M. 西安西安电子科技大学出版社,5 曾繁泰,陈美金.VHDL程序设计M. 北京清华大学出版社,附录-键盘矩阵模块程序-LIBRARY ieee;USE ieee.std_logic_1164.all;USE ieee.std_logic_unsigned.all;ENTITY keys ISPORT(clk :IN STD_LOGIC;rst :IN STD_LOGIC;row :I

25、N STD_LOGIC_VECTOR(3 downto 0);col :OUT STD_LOGIC_VECTOR(3 downto 0);scancode :OUT STD_LOGIC_VECTOR(15 downto 0);END keys;ARCHITECTURE keys_architecture OF keys ISsignal current_state,next_state:std_logic_vector(1 downto 0);signal enable:std_logic;BEGINprocess(clk,rst,enable)beginif rst=1 then curre

26、nt_state=00;elsif clkevent and clk=1 and enable=0thencurrent_state=next_state;end if;end process;process(rst,current_state,row)begin if rst=1 then colcol=1110 ;next_statecol=1101 ;next_statecol=1011 ;next_statecol=0111 ;next_statecol=1111;next_state=00;end case;end if;end process;process(current_sta

27、te,row)beginif rst=1 then scancode=X0000;enablescancode=X0001;enablescancode=X0002;enablescancode=X0004;enablescancode=X0008;enablescancode=X0000;enablescancode=X0010;enablescancode=X0020;enablescancode=X0040;enablescancode=X0080;enablescancode=X0000;enablescancode=X0100;enablescancode=X0200;enables

28、cancode=X0400;enablescancode=X0800;enablescancode=X0000;enablescancode=X1000;enablescancode=X;enablescancode=X4000;enablescancode=X8000;enablescancode=X0000;enable=0;end case;end if;end process;END keys_architecture;-去抖模块程序-LIBRARY ieee;USE ieee.std_logic_1164.all;ENTITY filter ISPORT(clk :IN STD_LO

29、GIC;rst :IN STD_LOGIC;scancode :IN STD_LOGIC_VECTOR(15 downto 0);sc :OUT STD_LOGIC_VECTOR(15 downto 0);END filter;ARCHITECTURE filter_architecture OF filter ISsignal count:integer range 0 to 100001;signal temp:STD_LOGIC_VECTOR(15 downto 0);constant G1:integer :=100;BEGINprocess(clk,rst,scancode)begi

30、nif rst=1 then count=0;elsif clkevent and clk=1thenif scancode=X0000 then count=0;elsif countG1 then count=count+1;end if;end if;end process;process(rst,count,scancode) beginif rst=1 then sc=X0000;temptemp if temp = scancode thensc=temp;else scsc AUL_OUT temp1:=op1_in;temp2:=op2_in;temp:=temp1+temp2

31、;AUL_OUT t1:=conv_integer(op1_in);t2:=conv_integer(op2_in);if t2=t1 thent3:=t2-t1;AUL_OUT=conv_STD_LOGIC_VECTOR(t3,28);else AUL_OUT t1:=conv_integer(op1_in); t2:=conv_integer(op2_in); t3:=t1*t2; if t3=99999999 then AUL_OUT=conv_STD_LOGIC_VECTOR(t3,28); else AUL_OUT t1:=conv_integer(op1_in);t2:=conv_

32、integer(op2_in);if t2=0 then AUL_OUT=X8888888;else t3:=t2/t1;AUL_OUT AUL_OUTkey=0;numberkey=1;numberkey=1;numberkey=1;numberkey=1;numberkey=1;numberkey=1;numberkey=1;numberkey=1;numberkey=1;numberkey=1;numberkey=1;numberkey=1;numberkey=1;numberkey=1;numberkey=1;numberkey=1;numberkey=0;number=0;end case;end process;process(clk,rst)beginif (rst = 1) then current_state=000;elsif(clkevent and clk = 1) then current_state = next_state;end if;end process;process(current_state,rst,sc,key,number)beginif rst=1 thenop1_add = 0;op1_clear = 0 ;op1_load = 0;op2_load = 0;o

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服