简易计算器EDA技术课程设计.docx

上传人:b****8 文档编号:9562090 上传时间:2023-02-05 格式:DOCX 页数:37 大小:369.75KB
下载 相关 举报
简易计算器EDA技术课程设计.docx_第1页
第1页 / 共37页
简易计算器EDA技术课程设计.docx_第2页
第2页 / 共37页
简易计算器EDA技术课程设计.docx_第3页
第3页 / 共37页
简易计算器EDA技术课程设计.docx_第4页
第4页 / 共37页
简易计算器EDA技术课程设计.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

简易计算器EDA技术课程设计.docx

《简易计算器EDA技术课程设计.docx》由会员分享,可在线阅读,更多相关《简易计算器EDA技术课程设计.docx(37页珍藏版)》请在冰豆网上搜索。

简易计算器EDA技术课程设计.docx

简易计算器EDA技术课程设计

 

EDA技术课程设计

 

题目简易计算器设计

系(部)信息工程系

班级

姓名

学号

指导教师

 

2013年7月8日至7月12日共1周

EDA技术课程设计任务书

一、设计题目、内容及要求

设计题目:

简易计算器设计

内容及要求:

(1)基本设计内容1:

设计简易通用型计算器,完成对数据通路架构,控制模块和运算器模块设计,可进行加减乘除基本运算。

(2)基本设计内容2:

加入按键消除抖动模块,并在试验箱或开发板上通过数码管显示计算器输入数值及输出结果,实现一个完整计算器。

(3)进阶设计内容:

通过矩阵键盘实现数据输入。

(4)进阶设计内容:

实现有符号数计算。

(5)进阶设计内容:

实现浮点数计算。

设计要求:

(1)根据任务要求确定电路各功能模块;

(2)写出设计程序;

(3)分析时序仿真结果;

(4)提交设计总结。

二、设计原始资料

QuartusⅡ软件;EDA实验箱;计算机一台;

三、要求设计成果(课程设计说明书、设计实物、图纸等)

课程设计说明书1份,不少于2000字,应包含设计原理分析、相关软件介绍、仿真波形分析,实验箱下载验证等。

四、进程安排

周1-周3:

查阅资料,上机编写并调试设计程序;

周4:

整理、撰写说明书;

周5:

课程设计答辩并提交设计说明书。

五、主要参考资料

[1].VokneiA.Pedroni.《VHDL数字电路设计教程》.电子工业出版社,2008.5

[2].潘松,黄继业.《EDA技术实用教程》(第二版).科学出版社,2005.2

[3].焦素敏.《EDA应用技术》.清华大学出版社,2002.4

指导教师(签名):

教研室主任(签名):

课程设计成绩评定表

出勤

情况

出勤天数

缺勤天数

出勤情况及设计过程表现(20分)

课设答辩(20分)

设计成果(60分)

总成绩(100分)

提问

(答辩)

问题

情况

 

 

指导教师签名:

年月日

1绪论

硬件描述语言(hardwaredescriptionlanguage,HDL)是电子系统硬件行为描述,结构描述,数据流描述语言。

目前,利用硬件描述语言可以进行数字电子系统设计。

随着研究深入,利用硬件描述语言进行模拟电子系统设计或混合电子系统设计也正在探索中。

国外硬件描述语言种类很多,有从Pascal发展而来,也有一些从C语言发展而来。

有些HDL成为IEEE标准,但大部分是企业标准。

VHDL来源于美国军方,其他硬件描述语言则多来源于民间公司。

可谓百家争鸣,百花齐放。

这些不同语言传播到国内,同样也引起了不同影响。

在我国比较有影响有两种硬件描述语言:

VHDL语言和VerilogHDL语言。

这两种语言已成为IEEE标准语言。

电子设计自动化(electronicdesignautomation,EDA)技术理论基础,设计工具,设计器件应是这样关系:

设计师用硬件描述语言HDL描绘出硬件结构或硬件行为,再用设计工具将这些描述综合映射成及半导体工艺有关硬件配置文件,半导体器件FPGA则是这些硬件配置文件载体。

当这些FPGA器件加载,配置上不同文件时,这个器件便具有了相应功能。

在这一系列设计,综合,仿真,验证,配置过程中,现代电子设计理论和现代电子设计方法贯穿于其中。

以HDL语言表达设计意图,以FPGA作为硬件实现载体,以计算机为设计开发工具,以EDA软件为开发环境现代电子设计方法日趋成熟。

VHDL语言英文全名是VeryHighSpeedIntegratedCircuitHardwareDescriptionLanguage,即超高速集成电路硬件描述语言。

HDL发展技术源头是:

在HDL形成发展之前,已有了许多程序设计语言,如汇编,C,Pascal,Fortran,Prolog等。

这些语言运行在不同硬件平台和不同操作环境中,它们适合于描述过程和算法,不适合作硬件描述。

CAD出现,使人们可以利用计算机进行建筑,服装等行业辅助设计,电子辅助设计也同步发展起来。

在从CAD工具到EDA工具进化过程中,电子设计工具人机界面能力越来越高。

在利用EDA工具进行电子设计时,逻辑图,分立电子原件作为整个越来越复杂电子系统设计已不适应。

任何一种EDA工具,都需要一种硬件描述语言来作为EDA工具工作语言。

这些众多EDA工具软件开发者,各自推出了自己HDL语言。

 

2软件介绍

2.1QuartusII介绍

QuartusII是Alter公司综合性PLD/FPGA开发软件,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有综合器以及仿真器,可以完成从设计输入到硬件配置完整PLD设计流程。

QuartusII提供了完全集成且于电路结构无关开发环境,具有数字逻辑设计全部特性,包括:

可利用原理图、结构框图、VerilogHDL、AHDL和VHDL完成电路描述,并将其保存为设计实体文件;芯片(电路)平面布局连线编辑;LogicLock增量设计方法,用户可建立并优化系统,然后添加对原始系统性能影响较小或无影响后续模块;功能强大逻辑综合工具;完备电路功能仿真及时序逻辑仿真工具;定时/时序分析及关键路径延时分析;可使用SignalTapII逻辑分析工具进行嵌入式逻辑分析;支持软件源文件添加和创建,并将它们链接起来生成编程文件;使用组合编译方式可一次完成整体设计流程;自动定位编译错误;高效期间编程及验证工具;可读入标准EDIF网表文件、VHDL网表文件盒Verilog网表文件;能生成第三方EDA软件使用VHDL网表和Verilog网表文件。

Max+plusII作为Altera上一代PLD设计软件,由于其出色易用性而得到了广泛应用。

目前Altera已经停止了对Max+plusII更新支持。

QuartusII是Altera公司继Max+plusII之后开发一种针对其公司生产系列CPLD/PGFA器件综合性开发软件,它版本不断升级,从4.0版到10.0版,这里介绍是QuartusII8.0版,该软件有如下几个显著特点:

1、QuartusII优点

该软件界面友好,使用便捷,功能强大,是一个完全集成化可编程逻辑设计环境,是先进EDA工具软件。

该软件具有开放性、及结构无关、多平台、完全集成化、丰富设计库、模块化工具等特点,支持原理图、VHDL、VerilogHDL以及AHDL(AlteraHardwareDescriptionLanguage)等多种设计输入形式,内嵌自有综合器以及仿真器,可以完成从设计输入到硬件配置完整PLD设计流程。

  QuartusII可以在XP、Linux以及Unix上使用,除了可以使用Tcl脚本完成设计流程外,提供了完善用户图形界面设计方式。

具有运行速度快,界面统一,功能集中,易学易用等特点。

2、QuartusII对器件支持

QuartusII支持Altera公司MAX3000A系列、MAX7000系列、MAX9000系列、ACEX1K系列、APEX20K系列、APEXII系列、FLEX6000系列、FLEX10K系列,支持MAX7000/MAX3000等乘积项器件。

支持MAXIICPLD系列、Cyclone系列、CycloneII、StratixII系列、StratixGX系列等。

支持IP核,包含了LPM/MegaFunction宏功能模块库,用户可以充分利用成熟模块,简化了设计复杂性、加快了设计速度。

此外,QuartusII通过和DSPBuilder工具及Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性开发平台。

3、QuartusII对第三方EDA工具支持

对第三方EDA工具良好支持也使用户可以在设计流程各个阶段使用熟悉第三放EDA工具。

AlteraQuartusII可编程逻辑软件属于第四代PLD开发平台。

该平台支持一个工作组环境下设计要求,其中包括支持基于Internet协作设计。

Quartus平台及Cadence、ExemplarLogic、MentorGraphics、Synopsys和Synplicity等EDA供应商开发工具相兼容。

改进了软件LogicLock模块设计功能,增添了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。

2.2ModelSim介绍

Mentor公司ModelSim是业界最优秀HDl语言仿真软件,它能提供友好仿真环境,是业界唯一但内核支持VHDL和Verilog混合仿真仿真器。

它采用直接优化编译技术、Tcl/Tk技术、和单一内核仿真技术,编译仿真速度快,编译代码及平台无关,便于保护IP核,个性化图形界面和用户接口,为用户加快调错提供强有力手段,是FPGA/ASIC设计首选仿真软件。

ModelSim主要特点:

RTL和门级优化,本地编译结构,编译仿真速度快,跨平台跨版本仿真;单内核VHDL和Verilog混合仿真;源代码末班和助手,项目管理;集成了性能分析、波形比较、代码覆盖、数据流ChaseX、SignalSpay、虚拟对象VirualObject、Memory窗口、Assertion窗口、源码窗口显示信号值、信号条件断点等众多调试功能;C和Tcl/Tk接口、C调试;对SystemC直接支持,和HDL任意混合;支持SystemVerilog设计功能;对系统级描述语言最全面支持,SystemVerilog、SystemC、PSL;可以单独或同事进行行为、RTL级、和门级代码。

ModelSim分几种不同版本:

SE、PE、LE和OEM,其中SE是最高级版本,而集成在Actel、Atmel、Altera、Xilinx以及Lattice等FPGA厂商设计工具中均是其OEM版本。

SE版和OEM版在功能和性能方面有较大差别,比如对于大家都关心仿真速度问题,以Xilinx公司提供OEM版本ModelSimXE为例,对于代码少于40000行设计,ModelSimSE比ModelSimXE要快10倍;对于代码超过40000行设计,ModelSimSE要比ModelSimXE快近40倍。

ModelSimSE支持PC、UNIX和LINUX混合平台;MentorGraphics公司提供业界最好技术支持及服务。

 

3设计原理

本设计主要利用状态机进行整体设计,分部完成,便于大家分组进行合作,此设计要求完成对数据通路架构,控制模块和运算器模块设计,可进行加减乘除基本运算。

应用上周所学知识,利用状态机进行简易计算器编写。

简易计算器由键盘输入模块、键盘去抖动模块、状态机、计算模块、OP1、OP2模块、显示模块组成,结构清晰,易于编写。

简易计算器采用自顶向下设计原则,检测按键次数时,以scancode从非空到空跳变使计数器加一,第一运算数则在press_count=1时,将scancode装配到bcd码最低位bcd[3:

0],在press_count=2时,装配到bcd[7:

4],……

FSM在检测到+-×/键时,将bcd赋予bcd2,同时启动alu操作alu_op。

FSM根据scancode进度,输出对应outsel,选择显示不同bcd数据。

计算器模块化设计原理图如图3-1所示。

 

 

4模块化设计分析

4.1键盘矩阵模块

计算器输入数字和其他功能按键要用到很多按键,如果采用独立按键方式,在这种情况下,编程会很简单,但是会占用大量I/O口资源,因此在很多情况下都不采用这种方式,而是采用矩阵键盘方案。

矩阵键盘采用四条线作为行线,四条线作为列线组成键盘,在行线和列线每个交叉点上设置一个按键。

这样键盘上按键个数就为4×4个。

键盘模块采用4×4矩阵键盘,4位行线接上上拉电阻后接到高电平上,列线接上上拉电阻后依次给予低电平来判断哪个节点为低电平时即这个节点被按下,从而被读入到下一单元。

矩阵键盘模块原理图如图4-1所示,矩阵键盘仿真波形如图4-2所示。

 

图4-1矩阵键盘模块原理图

 

图4-2矩阵键盘仿真波形

4.2去抖模块设计

作为机械开关键盘,在开关开启或关闭瞬间会出现电压抖动,消除抖动方法一般有硬件和恶、软件方法,一般进行软件处理,这样实现简单、设计灵活、节约成本。

程序设计原理:

按键去抖动关键在于提取稳定电平状态,滤除抖动毛刺,对于一个按键信号,可以用一次脉冲对其进行取样,如果连续三次取样为低电平,则为低电平,如果不满足三次取样都为低,则认为按键稳定状态结束。

去抖模块原理图如图4-3所示,仿真波形如图4-4所示。

 

图4-3去抖模块原理图

 

图4-4去抖模块仿真波形

4.3ALU模块设计

ALU模块主要实现数据加减乘除运算,用VHDL代码描述逻辑单元、算数单元、选择器单元,要求输入两组二进制数据,利用元件例化语句将设计三个单元进行组合,建立一个包含所有元件包集。

ALU模块原理图如图4-5所示,仿真波形图如图4-6所示。

 

图4-5ALU模块原理图

 

图4-6ALU模块仿真波形

4.4FSM模块设计

状态机由六个状态组成,主要是判断键盘输入是数据还是运算符,从而来进行不同运算,首先判断第一个输入数据是否为数字,若不是数据则等待,若是数据则进入下一个状态等键盘弹起后判断下一个数据为数字还是运算符,若是数据则将数据存入OP1,

若是运算符,则将数据存入OP1和OP2,并等待下一个数据到来,状态机中值得注意是在进行数据运算时,将运算数据要存入OP1和OP2中。

FSM模块原理图如图4-7所示,FSM仿真波形图如图4-8所示。

 

图4-7FSM模块原理图

 

图4-8FSM模块仿真波形图

4.5OP1模块设计

OP1模块主要功能是实现数据输入及存储,主要用来做被加数、被除数等,在第一次输入数据时,数据存入OP1等进行操作后,数据会被装载到OP1和OP2模块中,待数据被输入时更新OP1中数据。

OP1模块原理图如图4-9所示,仿真波形图如图4-10所示。

 

图4-9OP1模块原理图

 

图4-10OP1模块仿真波形

4.6OP2模块设计

OP2模块主要功能是用来存储运算完成数据,使计算器有连续计算能力。

当进行完一次运算后,此时OP2_LOAD为1,此时将运算完数据装载到OP2模块中。

OP2模块原理图如图4-11所示,仿真波形图如图4-12所示。

 

图4-11OP2模块设计原理图

 

图4-12OP2模块仿真波形图

4.7BIN模块设计

二进制模块功能是将二进制数字转化成BCD码。

BIN模块原理图如图4-13,仿真波形图如图4-14。

 

图4-13BIN模块原理图

图4-14BIN模块仿真波形

4.8BCD模块设计

BCD模块是将BCD码转化成二进制数字。

BCD模块原理图如图4-14,仿真波形

图如图4-15。

 

图4-14BCD模块原理图

图4-15BCD模块仿真波形

 

5总结

这次设计,给我印象很深,通过这次课程设计,我对EDA这门课程有了很好很深理解。

通过做计算器,我对QuartusII和ModelSim应用更加熟悉了。

本次课程设计,要求做一个简易计算器,第一周首先由北京至芯科技公司老师来为我们讲解相关知识,讲解做计算器方法。

通过老师讲解我对本课题有了一定了解。

但是,在对该课题有一定了解前提下,也发现了很多问题。

认识到理论及实践之间差距,联系实际应用去理解只是比一大堆理论来直接及清晰明了。

本简易计算器设计,是用QuartusII软件进行代码编写、原理图设计,用ModelSim软件来实现仿真。

通过对简易计算器设计,熟悉了QuartusII运行环境,初步掌握了VHDL语言基本库函数调用和编写基本程序等应用;明白了原理图和代码之间关系;学会了做一个工程一般步骤,以及分模块化设计好处。

最后,我要在这里对给我这次课程设计提供帮助魏老师和王老师,还有同学们说声诚挚感谢。

正是由于你们帮助和支持,我才能克服一个一个困难和疑惑,直至本次课程设计圆满完成。

在这个过程中我学到了很多知识,不仅巩固了已有知识,而且强化了一些关于数学MATLAB软件应用方面知识,非常感谢你们帮助。

 

参考文献

[1]乔庐峰,王志功.数字电路设计教程[M].北京电子工业出版社,2010

[2]潘松,黄继业.EDA技术实用教程(第二版)[M].科学出版社,2005

[3]焦素敏,EDA应用技术[M].北京清华大学出版社,2002

[4]谭会生,张昌凡.EDA技术及应用[M].西安西安电子科技大学出版社,2008

[5]曾繁泰,陈美金.VHDL程序设计[M].北京清华大学出版社,2007

 

附录

-------------------------------------键盘矩阵模块程序-----------------------------------

LIBRARYieee;

USEieee.std_logic_1164.all;

USEieee.std_logic_unsigned.all;

ENTITYkeysIS

PORT

clk:

INSTD_LOGIC;

rst:

INSTD_LOGIC;

row:

INSTD_LOGIC_VECTOR(3downto0);

col:

OUTSTD_LOGIC_VECTOR(3downto0);

scancode:

OUTSTD_LOGIC_VECTOR(15downto0)

);

ENDkeys;

ARCHITECTUREkeys_architectureOFkeysIS

signalcurrent_state,next_state:

std_logic_vector(1downto0);

signalenable:

std_logic;

BEGIN

process(clk,rst,enable)

begin

ifrst='1'thencurrent_state<="00";

elsifclk'eventandclk='1'andenable='0'then

current_state<=next_state;

endif;

endprocess;

process(rst,current_state,row)

begin

ifrst='1'thencol<="1111";

else

casecurrent_stateis

when"00"=>

col<="1110";

next_state<="01";

when"01"=>

col<="1101";

next_state<="10";

when"10"=>

col<="1011";

next_state<="11";

when"11"=>

col<="0111";

next_state<="00";

whenothers=>col<="1111";next_state<="00";

endcase;

endif;

endprocess;

process(current_state,row)

begin

ifrst='1'thenscancode<=X"0000";enable<='0';

elsifcurrent_state="00"then

caserowis

when"1110"=>scancode<=X"0001";enable<='1';

when"1101"=>scancode<=X"0002";enable<='1';

when"1011"=>scancode<=X"0004";enable<='1';

when"0111"=>scancode<=X"0008";enable<='1';

whenothers=>scancode<=X"0000";enable<='0';

endcase;

elsifcurrent_state="01"then

caserowis

when"1110"=>scancode<=X"0010";enable<='1';

when"1101"=>scancode<=X"0020";enable<='1';

when"1011"=>scancode<=X"0040";enable<='1';

when"0111"=>scancode<=X"0080";enable<='1';

whenothers=>scancode<=X"0000";enable<='0';

endcase;

elsifcurrent_state="01"then

caserowis

when"1110"=>scancode<=X"0100";enable<='1';

when"1101"=>scancode<=X"0200";enable<='1';

when"1011"=>scancode<=X"0400";enable<='1';

when"0111"=>scancode<=X"0800";enable<='1';

whenothers=>scancode<=X"0000";enable<='0';

endcase;

else

caserowis

when"1110"=>scancode<=X"1000";enable<='1';

when"1101"=>scancode<=X"2000";enable<='1';

when"1011"=>scancode<=X"4000";enable<='1';

when"0111"=>scancode<=X"8000";enable<='1';

whenothers=>scancode<=X"0000";enable<='0';

endcase;

endif;

endprocess;

ENDkeys_architecture;

---------------------------------------去抖模块程序----------------------------------

LIBRARYieee;

USEieee.std_logic_1164.all;

ENTITYfilterIS

PORT

clk:

INSTD_LOGIC;

rst:

INSTD_LOGIC;

scancode:

INSTD_L

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1