数字钟实验的课件资料_第1页
数字钟实验的课件资料_第2页
数字钟实验的课件资料_第3页
数字钟实验的课件资料_第4页
数字钟实验的课件资料_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字钟实验的课件资料第1页/共74页实验目的1.掌握计数器的基本设计方法;2.对利用VHDL硬件描述语言设计相关模块有一定的了解;3.ALTERAMAXPLUSII软件的使用。第2页/共74页用FPGA设计并实现数字钟一、EDA技术基础知识二、数字钟设计原理三、VHDL语言四、软件开发环境MAXPLUSII五、实验系统简介具备基础:数字逻辑第3页/共74页一、EDA技术的基础知识EDA——ElectronicDesignAutomation

以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程器件的开发软件及实验开发系统为设计工具,自动完成用软件方式描述的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门多学科融合的新技术。

第4页/共74页传统方法与EDA方法比较

传统方法1.自下至上(BottomUp)2.通用的逻辑元、器件3.系统硬件设计的后期进行仿真和调试4.主要设计文件是电原理图5.手工实现

EDA方法1.自上至下(TopDown)2.PLD(可编程逻辑器件)3.系统设计的早期进行仿真和修改4.多种设计文件,发展趋势以HDL描述文件为主5.自动实现

EDA技术极大地降低硬件电路设计难度,提高设计效率,是电子系统设计方法的质的飞跃。第5页/共74页1.EDA技术的主要内容实现载体:大规模可编程逻辑器件(PLD__ProgrammableLogicDevice)描述方式:硬件描述语言(HDL__HarddescripationLauguage)VHDL、VerlogHDL等设计工具:开发软件、开发系统硬件验证:实验开发系统第6页/共74页大规模可编程逻辑器件

(PLD__ProgrammableLogicDevice)FPGA__FieldProgrammableGatesArray——现场可编程门阵列CPLD__ComplexProgrammableLogicDevice——复杂可编程逻辑器件主流公司:Xilinx、Altera、LatticeFPGA/CPLD显著优点:开发周期短、投资风险小、产品上市速度快、市场适应能力强、硬件修改升级方便。第7页/共74页2.硬件描述语言VHDL

VHDL:

VHSIC(VeryHighSpeedIntegratedCircuit)

Hardware

Description

Language第8页/共74页VHDL语言特点①VHDL具有强大的语言结构,系统硬件抽象描述能力强、设计效率高。②VHDL语言可读性强,易于修改和发现错误。③VHDL具有丰富的仿真语句和库函数,可进行早期行为仿真,利于大系统的设计与验证。④VHDL设计与硬件电路关系不大。⑤VHDL设计不依赖于器件,与工艺无关。⑥移植性好。⑦VHDL体系符合TOP-DOWN和CE设计思想。⑧VHDL设计效率高,产品上市时间快,成本低。⑨易于ASIC实现。第9页/共74页二、数字钟设计原理要求:能够自动计时,并下载到实验箱中用七段数码管显示出时、分、秒第10页/共74页时钟的概念系统时钟:几乎所有数字系统都需要时钟产生:晶体振荡器,能够产生较为精确的方波脉冲信号,可以达到10-7甚至更高。时钟频率:单位时间内的方波脉冲信号的个数振荡器的时钟频率有32.768kHz,2MHz,10MHz,40MHz等。周期:频率的倒数,即一个方波脉冲信号的持续时间一个周期第11页/共74页数制的概念数制:二进制、十进制、十二进制、十六进制、六十进制等。如日常生活用十进制,秒到分为六十进制十进制数(整数)与二进制数(整数)的转换十进制数除2取余倒序排,如(23)10=(10111)2(10101)2=124+023+122+021+120=(21)102223211余15212余1余1余0余1低位第12页/共74页计数器原理计数:对输入方波脉冲信号进行数个数的过程计数的作用:产生周期更长(持续时间)的脉冲信号计数器的种类:二进制计数器、二十四进制计数器、六十进制计数器等第13页/共74页BCD码BCD码:用二进制数对十进制数字符号进行编号后所对应的0、1序列编码方法:十进制数有0~9共10个数字符号。而1个二进制位可以表示0、1两种状态;2个二进制位可以表示为00、01、10、11四种状态;3个二进制可以表示八种状态。因此要表示十个数字符号,就需要4个二进制位。但是4个二进制位共有16种状态。规定使用前10种。十进制0123456789BCD码0000000100100011010001010110011110001001第14页/共74页二进制数与BCD码的区别7的BCD码是0111;但7的二进制是011116的BCD码是00010110;但16的二进制数是10000因此数值大于等于10后,BCD码与二进制数完全不相同!已知十进制数求BCD时,只需写出每个十进制数的BCD码就可以了,但求二进制数时要按照前面的方法求解。本设计中的时、分、秒用BCD码表示第15页/共74页七段数码管结构七段显示数码管是由发光二极管按照一定的规则排列而成的电路结构排列形状abcfegd第16页/共74页七段数码管的显示原理公共极接低电平(电压)!非公共极接高电平(1)时,发光二极管点亮发光,显示笔画;非公共极也接低电平(0)时,发光二极管的电压差不够,不发光,笔画不显示。abcfegd第17页/共74页时分秒的显示BCD码表示的时、分、秒需要用七段数码管显示出来如“39”秒其BCD码是00111001要求显示的形状是“”因此要2个数码管,且第1个数码管的abcdg为高电平;第2个数码管的abcfg为高电平。其他为低电平第18页/共74页100001101000BCD码-七段显示码译码器gfedcbaDCBA七段数码输出BCD码输入001111110000310011111100411001100010511011011010611111010110700001111110811111110001911011111001210110110100第19页/共74页实现方案电路框图系统时钟秒计数器数据选择器六十进制计数器六十进制计数器译码器显示码数码管数码管数码管秒分时秒脉冲分脉冲时脉冲BCD码BCD码BCD码扫描码产生第20页/共74页数字钟电路图秒计数器分计数器时计数器显示译码器数据选择器第21页/共74页“秒计数”硬件描述语言(VHDL)程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitynewsecondisport(clk,reset:instd_logic;sec1,sec2:outstd_logic_vector(3downto0);carry:outstd_logic);endnewsecond;architecturet1ofnewsecondissignalsect1,sect2:std_logic_vector(3downto0);begin第22页/共74页续process(reset,clk)beginifreset='1'thensect1<="0000";sect2<="0000";elsif(clk'eventandclk='1')thenifsect1="1001"thensect1<="0000";ifsect2="0101"thensect2<="0000";else sect2<=sect2+1;endif;else sect1<=sect1+1;endif;第23页/共74页续if(sect1="1001"andsect2="0101")thencarry<='1';elsecarry<='0';endif; endif;endprocess;sec1<=sect1;sec2<=sect2;endt1;第24页/共74页三、VHDL语言

VHDL:

VHSIC(VeryHighSpeedIntegratedCircuit)

Hardware

Description

LanguageVHDL是一种IEEE工业标准硬件描述语言,是用于仿真和综合的高级别描述语言第25页/共74页3.1VHDL程序结构VHDL程序包括实体(Entity)声明结构体(Architecture)声明库(Library)、程序包(Package)声明第26页/共74页库、程序包实体(Entity)结构体(Architecture)进程或其它并行结构配置(Configuration)VHDL程序结构第27页/共74页3.1.1库VHDL库可分为5种:1、IEEE库:定义了四个常用的程序包:•

std_logic_1164(std_logictypes&relatedfunctions)•std_logic_arith(arithmeticfunctions)•std_logic_signed(signedarithmeticfunctions)•std_logic_unsigned(unsignedarithmeticfunctions)

2、STD库(默认库)库中程序包为:standard,定义的数据类型:Bit,bit_vector,Boolean,Integer,Real,andTime3、面向ASIC的库4、WORK库(默认库)5、用户定义库第28页/共74页库的使用库及程序包的使用语法:

library库名;

use库名.程序包名.All;例:时钟秒的库定义libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;第29页/共74页3.1.2实体声明ENTITY<实体名>IS

类属声明

端口声明END<entity_name>;(87版本)ENDENTITY<entity_name>;(93版本)端口声明:确定输入输出端口的数目和类型。Port(

端口名称{,端口名称}:端口方式端口类型;…端口名称{,端口名称}:端口方式端口类型);第30页/共74页端口方式与端口类型端口方式:

in输入型,此端口为只读型。

out输出型,此端口只能在实体内部对其赋值。

inout输入输出型,既可读也可赋值。

buffer缓冲型,与out相似,但可读。端口类型:预先定义好的数据类型。如:bit、integer、std_logic等第31页/共74页例:时钟秒的实体说明entitynewsecondisport(clk,reset:instd_logic;sec1,sec2:outstd_logic_vector(3downto0);carry:outstd_logic);endnewsecond;第32页/共74页3.1.3结构体声明architecture结构体名称of实体名称is[定义语句]内部信号、常数、数据类型、进程、子程序(函数、过程)、组件等的声明;begin[并行处理语句];end[结构体名称];第33页/共74页例:秒的结构体声明architecturet1ofnewsecondissignalsect1,sect2:std_logic_vector(3downto0);Beginprocess(reset,clk)

……endt1;第34页/共74页3.2VHDL中的数据数据对象:常量(Constant)、变量(Variable)、信号(Signal)格式:名称:数据类型约束条件:=表达式;例:constantwidth:integer:=8;variablecount:integerrange0to255:=10;signalinit:integer:=-1;VHDL数据类型:布尔量(boolean)、位(bit)、位矢量(bit_vector)、字符(character)、整数(integer)、字符串(string)、std_logic类型、std_logic_vector类型例:signalsect1,sect2:std_logic_vector(3downto0);第35页/共74页3.3VHDL中的描述语句顺序(Sequential)描述语句赋值语句;if语句;case语句;loop语句;next语句;exit语句;子程序;return语句;wait语句;null语句。并发(Concurrent)描述语句进程(process)语句、块(block)语句、顺序描述语句的并行版本、组件例化语句、生成语句。第36页/共74页3.3.1顺序(Sequential)描述语句赋值语句变量:=表达式;信号<=表达式;例:sect1<="0000";sect2<="0000";

temp:=‘0’;第37页/共74页2、IF语句if条件then

顺序处理语句;elsif条件then

顺序处理语句;else

顺序处理语句;endif;例:ifreset='1'thensect1<="0000";sect2<="0000";elsif(clk'eventandclk='1')thenifsect1="1001"thensect1<="0000";ifsect2="0101"thensect2<="0000";else sect2<=sect2+1;endif;else sect1<=sect1+1;endif;第38页/共74页3、CASE语句case表达式iswhen分支条件=>顺序处理语句;

when分支条件=>顺序处理语句;

when分支条件=>顺序处理语句;

endcase;例:casecountiswhen"000"=>data<=in1;when"001"=>data<=in2;when"010"=>data<=in3;when"011"=>data<=in4;when"100"=>data<=in5;whenothers=>data<=in6;endcase;第39页/共74页3.3.2并发(Concurrent)描述语句[标记:]process[(敏感信号表)] begin{顺序语句}

endprocess[标记];敏感信号表:进程内要读取的所有敏感信号(包括端口)的列表。每个敏感信号的变化,都将启动进程。1、同步进程的敏感信号表中只有时钟信号。例:process(clk)2、异步进程敏感信号表中除时钟信号外,还有其它信号。例:process(clk,reset)第40页/共74页例process(reset,clk)beginifreset='1'thensect1<="0000";sect2<="0000";…… sec1<=sect1;sec2<=sect2; endif;endprocess;第41页/共74页数字钟电路图秒计数器分计数器时计数器显示译码器数据选择器第42页/共74页“分计数”VHDL程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityAAAAisport(clk,reset:instd_logic;xxxx,yyyy:outstd_logic_vector(3downto0);bl:outstd_logic);endAAAA;architecturet1ofAAAAissignalcccc,dddd:std_logic_vector(3downto0);begin第43页/共74页

以下程序略第44页/共74页“时计数”VHDL程序略第45页/共74页六选一数据选择器VHDL程序libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitym6_1scanisport(clkscan,reset:instd_logic;in1,in2,in3,in4,in5,in6:instd_logic_vector(3downto0);data:outstd_logic_vector(3downto0);sel:outstd_logic_vector(2downto0));endm6_1scan;architecturet1ofm6_1scanissignalcount:std_logic_vector(2downto0);begin第46页/共74页显示译码VHDL程序libraryieee;useieee.std_logic_1164.all;entityclk7is

port(data:instd_logic_vector(3downto0);doute:outstd_logic_vector(6downto0));endclk7;architecturebehaveofclk7isbegin第47页/共74页四、软件开发环境MAXPLUSII创建新目录“E:\XX”运行MAXPLUSII软件第48页/共74页建立VHDL新文件

打开AlteraMAX+plus软件后,首先选择“File”中的“New”,建立一个新的VHDL文件;第49页/共74页选择待编辑的文件类型编辑VHDL源程序选择“TextEditorfile”第50页/共74页输入源程序第51页/共74页将源程序存为VHDL文件格式选择“FileSaveAs…”,出现右边窗口点击“Drivers:”,选择“E”驱动器点击“Directories:”,选择“XX”目录点击“AutomaticExtension”,选择“.vhd”在“FileName:”后输入文件名“second.vhd”点击“OK”按扭,即可保存写好的VHDL语言程序第52页/共74页建立并输入其他VHDL源文件按照上述方法,依次输入并建立各个VHDL源程序,得到下列所示各个文件。第53页/共74页设置VHDL文件为当前工程选择“FileProjectSetProjecttoCurrentFile”第54页/共74页编译VHDL源文件点击“MAX+plusIICompilerStart”进行编译如果警告和错误不为0,要改正错误直至全部正确第55页/共74页建立仿真文件

选择“FileNew”,建立一个新的仿真文件第56页/共74页建立仿真文件选择“WaveformEditorfile”,并选择文件扩展名为“.scf”,得到仿真波形窗口第57页/共74页添加仿真波形名称点击“NodeEnterNodesfromSNF…”,出现下面窗

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论