EDA技术与VHDL实用教程_第1页
EDA技术与VHDL实用教程_第2页
EDA技术与VHDL实用教程_第3页
EDA技术与VHDL实用教程_第4页
EDA技术与VHDL实用教程_第5页
已阅读5页,还剩343页未读 继续免费阅读

下载本文档

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

文档简介

会计学1EDA技术与VHDL实用教程一、EDA技术概念

现代电子设计技术的核心就是EDA(电子设计自动化,ElectronicDesignAutomation)技术。利用EDA技术,电子设计师可以方便地实现IC设计、电子电路设计和PCB设计等工作。EDA技术与VHDL实用教程2第1页/共348页3

广义的EDA技术,除了狭义的EDA技术外,还包括计算机辅助分析CAA技术(如PSPICE,EWB,MATLAB等),印刷电路板计算机辅助设计PCB-CAD技术(如PROTEL,ORCAD等)。在广义的EDA技术中,CAA技术和PCB-CAD技术不具备逻辑综合和逻辑适配的功能,因此它并不能称为真正意义上的EDA技术。

EDA技术与VHDL实用教程第2页/共348页4

狭义的EDA技术,就是以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的开发软件及实验开发系统为设计开发工具的EDA技术。

本书讨论的对象专指狭义的EDA技术。

EDA技术与VHDL实用教程第3页/共348页EDA技术的3个层次5(1)EWB、PSpice、protel的学习作为EDA的最初级内容;(2)利用VHDL完成对CPLD/FPGA的开发等作为中级内容;(3)ASIC的设计作为最高级内容EDA技术与VHDL实用教程第4页/共348页6二、EDA技术的主要特征EDA技术主要有以下这些特征:(1)高层综合与优化的理论与方法取得了很大的进展,其结果大大缩短了复杂的ASIC的设计周期,同时改进了设计质量;(2)采用硬件描述语言来描述10万门以上的设计,形成了国际通用的VHDL等硬件描述语言。它们均支持不同层次的描述,使得复杂IC的描述规范化,便于传递、交流、保存与修改,并可建立独立的工艺设计文档,便于设计重用;

EDA技术与VHDL实用教程第5页/共348页7(3)开放式的设计环境(各厂家均适合);(4)自顶向下的算法;(5)丰富的元器件模块库;(6)具有较好的人机对话界面与标准的CAM接口;(7)建立并行设计工程框架结构的集成化设计环境,以适应当今ASIC的特点:规模大而复杂,数字与模拟电路并存,硬件与软件并存,产品上市更新快。

EDA技术与VHDL实用教程第6页/共348页8三、EDA技术发展历程EDA技术的发展分为三个阶段20世纪70年代——计算机辅助设计CAD阶段20世纪80年代

——计算机辅助工程设计阶段20世纪90年代——电子系统设计自动化阶段EDA技术与VHDL实用教程第7页/共348页9四、EDA技术的主要内容(一)硬件描述语言硬件描述语言(HDL)是各种描述方法中最能体现EDA优越性的描述方法。所谓硬件描述语言,实际就是一个描述工具,其描述的对象就是待设计电路系统的逻辑功能、实现该功能的算法、选用的电路结构以及其他各种约束条件等。通常要求HDL既能描述系统的行为,又能描述系统的结构。EDA技术与VHDL实用教程第8页/共348页10目前主要有以下两种HDL语言:1.Verilog-HDLVerilog-HDL语言是在1983年由GDA(GatewayDesignAutomation)公司首创的,主要用于数字系统的设计。2.VHDLVHDL语言是美国国防部于20世纪80年代后期,出于军事工业的需要开发的。EDA技术与VHDL实用教程第9页/共348页11VHDL语言是一种高级描述语言,适用于电路高级建模,综合的效率和效果较好。

Verilog-HDL语言是一种低级的描述语言,适用于描述门级电路,容易控制电路资源,但其对系统的描述能力不如VHDL语言。

EDA技术与VHDL实用教程第10页/共348页12(二)可编程逻辑器件可编程逻辑器件(简称PLD)是一种由用户编程来实现某种逻辑功能的新型逻辑器件。它不仅速度快、集成度高,能够完成用户定义的逻辑功能,还可以加密和重新定义编程,其允许编程次数可多达上万次。使用可编程逻辑器件可大大简化硬件系统、降低成本、提高系统的可靠性、灵活性。

EDA技术与VHDL实用教程第11页/共348页13目前,PLD主要分为FPGA(现场可编程门阵列)和CPLD(复杂可编程逻辑器件)两大类。FPGA和CPLD最明显的特点是高集成度、高速度和高可靠性。由于它们的明显特点,可以应用于超高速领域和实时测控方面以及嵌入式领域等等。EDA技术与VHDL实用教程第12页/共348页14(三)EDA软件目前在国内比较流行的EDA软件工具主要有Altera公司的MAX+plusⅡ和QuartusⅡ、Lattice公司的ExpertLEVER和Synario、Xilinx公司的Foundation和Alliance、Actel公司的ActelDesigner等,这四家公司的EDA开发软件特性如表0-1所示。

EDA技术与VHDL实用教程第13页/共348页15表0-1EDA开发软件特性

厂商EDA软件名称软件适用器件系列软件支持的描述方式AlteraMAX+plusⅡMAX、FLEX等逻辑图、波形图、AHDL文本、Verilog-HDL文本、VHDL文本等QuartusⅡMAX、FLEX、APEX等XilinxAllianceXilinx各种系列逻辑图、VHDL文本等FoundationXC系列LatticeSynarioMACHGAL、ispLSI、pLSI等逻辑图、ABEL文本、VHDL文本等ExpertLEVERIspLSI、pLSI、MACH等逻辑图、VHDL文本等ActelActelDesignerSX系列、MX系列逻辑图、VHDL文本等EDA技术与VHDL实用教程第14页/共348页16EDA与传统电子设计方法的比较手工设计方法的缺点是:

1)复杂电路的设计、调试十分困难。

2)如果某一过程存在错误,查找和修改十分不便。

3)设计过程中产生大量文档,不易管理。

4)对于集成电路设计而言,设计实现过程与具体生产工艺直接相关,因此可移植性差。

5)只有在设计出样机或生产出芯片后才能进行实测。EDA技术有很大不同:

1)采用硬件描述语言作为设计输入。

2)库(Library)的引入。

3)设计文档的管理。

4)强大的系统建模、电路仿真功能。

5)具有自主知识产权。

6)开发技术的标准化、规范化以及IP核的可利用性。

7)适用于高效率大规模系统设计的自顶向下设计方案。

8)全方位地利用计算机自动设计、仿真和测试技术。

9)对设计者的硬件知识和硬件经验要求低。10)高速性能好。11)纯硬件系统的高可靠性。EDA技术与VHDL实用教程第15页/共348页17EDA与传统电子设计方法的比较FPGA和DSP芯片实现FIR滤波器的速度对比8位FIR滤波器阶数FPGA的处理速度单位:MSPS达到相当速度所需DSP芯片的指令执行速度单位:MIPS8 16 24 32104

101

103

105832

1616

2472

3360EDA技术与VHDL实用教程第16页/共348页18EDA实验的3个层次1、逻辑行为的实现

2、控制与信号传输功能的实现3、算法的实现如:译码器、红绿交通灯控制、表决器、显示扫描器、电梯控制、乒乓球等电路的设计,时钟频率一般低于4MHz

如:各类信号发生器、A/D采样控制器、FIFO、RS232或PS/2通信、FPGA/CPLD与单片机综合控制等电路的设计,时钟频率一般在25MHz左右

如:离散FFT变换、数字滤波器、浮点乘法器、高速宽位加法器、数字振荡器、数字锁相环、调制解调器、图象DSP等电路的设计,时钟频率一般在50MHz以上

EDA技术与VHDL实用教程第17页/共348页19五、EDA技术的应用展望

电子EDA技术发展迅猛,逐渐在教学、科研、产品设计与制造等各方面都发挥着巨大的作用。

1.EDA技术将广泛应用与高校电类专业的实践教学工作中

2.EDA技术将广泛应用于科研工作和新产品的开发中

3.EDA技术将广泛应用于专用集成电路的开发

4.EDA技术将广泛应用于传统机电设备的升级换代和技术改造EDA技术与VHDL实用教程第18页/共348页第1章EDA技术概述<<EDA技术与VHDL实用教程>>20第19页/共348页EDA技术与VHDL实用教程要求熟悉面向FPGA/CPLD的EDA技术初步理论知识知识点理解可编程逻辑器件掌握面向FPGA/CPLD的EDA设计流程掌握面向FPGA/CPLD的常用EDA工具理解硬件描述语言重点和难点

EDA设计流程

QuartusⅡ软件包硬件描述语言VHDL语言

21第20页/共348页EDA技术与VHDL实用教程22第1章EDA技术概述可编程逻辑器件1.1EDA技术的主要特征1.2EDA技术发展历程1.3EDA技术的主要内容1.4第21页/共348页EDA技术与VHDL实用教程231.1可编程逻辑器件一、可编程逻辑器件概述(一)PLD/FPGA介绍CPLD:复杂可编程逻辑器件ComplexProgrammableLogicDeviceFPGA:现场可编程门阵列FieldProgrammableGateArray第22页/共348页PLD能做什么?

PLD能完成任何数字器件的功能,上至高性能的CPU,下至简单的74系列电路,都可以用PLD来实现.

PLD如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法或是硬件描述语言,自由的设计一个数字系统。如何使用PLD?数字电路基础,会使用计算机,有一定编程基础。24第23页/共348页二、PLD分类25第24页/共348页EDA技术与VHDL实用教程26三、PLD/FPGA的结构和原理(一)基于乘积项(Product-Term)的PLD结构(二)乘积项结构PLD的逻辑实现原理(三)查找表(Look-Up-Table)的原理与结构(四)查找表结构的FPGA逻辑实现原理第25页/共348页27例:用PROM完成半加器逻辑阵列第26页/共348页28CPLD的结构与可编程原理

第27页/共348页29FPGA的结构与工作原理

查找表逻辑结构第28页/共348页EDA技术与VHDL实用教程30FPGA:SRAM工艺;直接烧写程序掉电后程序丢失;理论上擦写100万次以上;一般使用需要外挂EEPROM,可以达到几百万门电路。比如ALTERA公司的APEX、FLEX、ACEX、STRATIX、CYCLONE系列。CPLD:EPPROM或FLASH工艺;直接烧写程序掉电后程序不会消失;一般可以擦写几百次,并且一般宏单元在512以下。(比如ALTERA的AX3000/5000/7000/9000和CLASSIC系列)。四、选择PLD还是FPGA第29页/共348页EDA技术与VHDL实用教程31PLD适合用于设计译码等复杂组合逻辑。

PLD分解组合逻辑的功能很强。而FPGA的一个LUT只能处理4输入的组合逻辑。如果设计中使用到大量触发器,那么使用FPGA就是一个很好选择。

FPGA的制造工艺确定了FPGA芯片中包含的LUT和触发器的数量非常多,往往都是几千上万,PLD一般只能做到512个逻辑单元,而且如果用芯片价格除以逻辑单元数量,FPGA的平均逻辑单元成本大大低于PLD。第30页/共348页EDA技术与VHDL实用教程321.2面向FPGA/CPLD的EDA设计流程

第31页/共348页EDA技术与VHDL实用教程331.源程序的编辑和编译常用的源程序输入方式有三种:(1)原理图输入方式:(2)状态图输入方式:(3)VHDL软件程序的文本方式:第32页/共348页EDA技术与VHDL实用教程34利用EDA工具提供的图形编辑器以原理图的方式进行输入。原理图输入方式比较容易掌握,直观且方便。(1)原理图输入方式:第33页/共348页EDA技术与VHDL实用教程35(2)状态图输入方式:以图形的方式表示状态图进行输入。当填好时钟信号名、状态转换条件、状态机类型等要素后,就可以自动生成VHDL程序。这种设计方式简化了状态机的设计,比较流行。(3)VHDL软件程序的文本方式:最一般化、最具普遍性的输入方法,任何支持VHDL的EDA工具都支持文本方式的编辑和编译。第34页/共348页2.逻辑综合和优化逻辑综合,就是将电路的高级语言描述转换成低级的,可与FPGA/CPLD或构成ASIC的门阵列基本结构相映射的网表文件。逻辑映射的过程,就是将电路的高级描述,针对给定硬件结构组件,进行编译,优化、转换和综合,最终获得门级电路甚至更底层的电路描述文件。而网表文件就是按照某种规定描述电路的基本组成及如何相互连接的关系的文件。36第35页/共348页3.目标器件的布线/适配所谓逻辑适配,就是将由综合器产生的网表文件针对某一具体的目标器件进行逻辑映射操作。其中包括底层器件配置、逻辑分割、逻辑优化、布线与操作等,配置于指定的目标器件中,产生最终的下载文件,如JEDEC格式的文件。37第36页/共348页4.目标器件的编程/下载如果编译、综合、布线/适配和行为仿真、功能仿真、时序仿真等过程都没有发现问题,即满足原设计的要求,则可以将由FPGA/CPLD布线/适配器产生的配置/下载文件通过编程器或下载电缆载入目标芯片FPGA或CPLD中。38第37页/共348页5.设计过程中的有关仿真设计过程中的仿真有三种,它们是:行为仿真:该仿真只是根据VHDL的语义进行的,与具体电路没有关系。功能仿真:就是将综合后的VHDL网表文件再送到VHDL仿真器所进行的仿真。时序仿真:该仿真已将器件特性考虑进去,因此可以得到精确的时序仿真结果。39第38页/共348页6.硬件仿真/硬件测试所谓硬件仿真,就是在ASIC设计中,常利用FPGA对系统的设计进行功能检测,通过后再将其VHDL设计以ASIC形式实现,这一过程称为硬件仿真。所谓硬件测试,就是针对FPGA或CPLD直接用于应用系统的设计中,将下载文件下载到FPGA后,对系统的设计进行的功能检测,这一过程称为硬件测试。注意:VHDL仿真器和VHDL综合器对设计的理解常常是不一致的,固需要硬件仿真和测试。40第39页/共348页二、分析方法基于EDA技术的设计方法则是自顶向下进行设计的。即首先采用可完全独立于目标器件芯片物理结构的硬件描述语言,在系统的基本功能或行为级上对设计的产品进行描述和定义,结合多层次的仿真技术,确保设计的可行性与正确性的前提下,完成功能确认。然后利用EDA工具的逻辑综合功能,把功能描述转换成某一具体目标芯片的网表文件,输出给该器件厂商的布局布线适配器,进行逻辑映射及布局布线,再利用产生的仿真文件进行包括功能和时序的验证,以确保实际系统的性能。41第40页/共348页EDA技术与VHDL实用教程42采用自顶向下的设计方法有如下优点:(1)自顶向下设计方法是一种模块化设计方法。符合常规的逻辑思维习惯;

(2)高层设计同器件无关,可以完全独立于目标器件的结构。

(3)采用硬件描述语言,设计易于在各种集成电路工艺或可编程器件之间移植。

(4)适合多个设计者同时进行设计。第41页/共348页三、表示方法1、文本表示方式(VHDL)2、图形表示方式(原理图,状态图、波形图)3、文本、图形混用方式43第42页/共348页EDA技术与VHDL实用教程44四、实现方法1.硬件描述语言编程实现法2.原理图设计实现法3.参数可设置兆功能块实现法4.软的或硬的IP核实现法第43页/共348页EDA技术与VHDL实用教程451.3面向FPGA/CPLD的常用EDA工具

目前世界上有十几家生产CPLD/FPGA的公司,最大的三家是:Altera,Xilinx和Lattice,其中Altera和Xilinx两家公司共占有60%以上的市场份额。通常来说,在欧洲用XILINX的人多,在日本和亚太地区用ALTERA的人多,在美国则是平分秋色。可以讲Altera和Xilinx共同决定了PLD技术的发展方向。对于FPGA/CPLD开发软件,国内很多人喜欢用Altera公司MaxPlusII、QuartusII,考虑到QuartusII是MaxPlusII的升级产品,所以本书的FPGA/CPLD的常用EDA工具主要介绍QuartusII。第44页/共348页EDA技术与VHDL实用教程46AlteraEDA软件工具QuartusII简介设计流程图第45页/共348页EDA技术与VHDL实用教程47设计输入文件类型第46页/共348页EDA技术与VHDL实用教程481.4硬件描述语言一、硬件描述语言常用硬件描述语言有VHDL、Verilog和ABEL语言。下面从使用方面将三者进行对比。1.逻辑描述层次2.设计要求3.综合过程4.对综合器的要求5.支持的EDA工具6.国际化程度第47页/共348页EDA技术与VHDL实用教程49本章小结EDA技术概述可编程逻辑器件面向FPGA/CPLD的EDA设计流程面向FPGA/CPLD的常用EDA工具硬件描述语言第48页/共348页第2章QuartusII原理图输入

设计法入门<<EDA技术与VHDL实用教程>>50第49页/共348页EDA技术与VHDL实用教程作者:苏莉萍陈东廖超平要求掌握QuartusII原理图输入法和QuartusII器件编程知识点理解QuartusII原理图输入法理解QuartusII器件编程重点和难点QuartusII原理图输入法

51第50页/共348页EDA技术与VHDL实用教程作者:苏莉萍陈东廖超平第2章QuartusII原理图输入

设计法入门QuartusII原理图输入法

2.1QuartusII器件编程2.2第51页/共348页EDA技术与VHDL实用教程2.1QuartusII原理图输入法

应用数字逻辑电路的基本知识,使用QuartusII原理图输入法可非常方便地进行数字系统的设计。应用QuartusII原理图输入法,还可以把原有的使用中小规模的通用数字集成电路设计的数字系统移埴到FPGA或CPLD中。下面以一个一位数值比较器的设计为例说明QuartusII原理图输入法的使用方法。

第52页/共348页EDA技术与VHDL实用教程一、建立工程文件夹1.新建一个文件夹作为工程项目目录首先在计算机中建立一个文件夹作为工程项目目录,此工程目录不能是根目录,比如D:,只能是根目录下的目录,比如D:\EDA_book\code\Chapter2\BiJiaoQi

第53页/共348页EDA技术与VHDL实用教程2.建立工程项目运行QuatrusII软件,执行File=>NewProjectWizad命令,建立工程。如下图示。第54页/共348页EDA技术与VHDL实用教程在图2-2界面中点击Next按扭。

第55页/共348页EDA技术与VHDL实用教程在所弹出的NewProjectWizard对话框中,填写Diectory,Name,Top-LevelEntity等项目。其中第一、第二、第三个文本框分别是工程项目目录、项目名称和项目顶层设计实体的名称。

第56页/共348页EDA技术与VHDL实用教程按Next按钮,出现添加工程文件的对话框如图

第57页/共348页EDA技术与VHDL实用教程若原来已有文件,可选择,这里直接按Next进行下一步,选择FPGA器件的型号如图示。

第58页/共348页EDA技术与VHDL实用教程在Family下拉框中,根据需要选择一种型号的FPGA;然后在“Availabledevices:”中根据需要的FPGA型号选择FPGA型号,注意在Filters一栏中选中“ShowAdvancedDevices”以显示所有的器件型号。再点击Next按钮,出现下面的对话框。

第59页/共348页EDA技术与VHDL实用教程这是选择其它EDA工具的对话框,我们使用QuatrusII的集成环境进行开发,因此不作任何改动。按Next进入工程的信息总概对话框如下图。按Finish按钮就建立了一个空的工程项目。第60页/共348页EDA技术与VHDL实用教程1.建立原理图文件执行File=>New命令,弹出新建文件对话框如图。二、编辑设计图形文件

第61页/共348页EDA技术与VHDL实用教程执行File=>Saveas命令,把它另存为文件名是BiJiaoQi的原理图文件,文件后缀为.bdf。将“Addfiletocurrentproject”选项选中,使该文件添加到刚建立的工程中去。如图下示。

第62页/共348页EDA技术与VHDL实用教程2.编辑输入原理图文件(1)元件的选择与放置(2)连接各个元件符号(3)设定各输入输出管脚名第63页/共348页EDA技术与VHDL实用教程第64页/共348页EDA技术与VHDL实用教程完成原理图编辑输入后,保存设计图形文件,就可编译设计图形文件。执行Processing=>StartCompilation,进行编译。编译结束后,会出现如下页图对话框,对话框会显示编译的错误和警告的情况。若有错误,则可先双击编译器界面下方出现的第一个错误提示,可使第一个错误处改变颜色。检查纠正第一个错误后保存再编译,如果还有错误,重复以上操作,直至最后通过。最后通过时应没有错误提示但可有警告提示。三、编译设计图形文件第65页/共348页EDA技术与VHDL实用教程可以通过查看编译报告了解有关情况,比如定时分析情况,下图是编译报告中关于每个输出信号对输入信号的延迟时间的报告。

第66页/共348页EDA技术与VHDL实用教程(1)新建用于仿真的波形文件(2)添加需要的输入输出引脚(3)设置仿真时间(4)设置栅格的大小(5)设置输入信号的波形(6)保存文件,保存名为默认名(7)进行功能仿真四、时序仿真设计文件

第67页/共348页EDA技术与VHDL实用教程执行File=>Great/Update=>GreatSymbolFilesforCurrentFile命令,将本设计电路封装生成一个元件符号,供以后在原理图编辑器下进行层次设计时调用。

五、生成元件符号

第68页/共348页EDA技术与VHDL实用教程使用QuartusII软件成功编译工程之后,就可以对Altera器件进行编程或配置,进而进行硬件测试。QuartusIICompiler的Assembler模块生成POF和SOF编程文件,QuartusIIProgrammer可以用编程文件与Altera编程硬件一起对器件进行编程或配置。还可以使用QuartusIIProgrammer的独立版本对器件进行编程和配置。

2.2QuartusII器件编程

第69页/共348页EDA技术与VHDL实用教程一、编程硬件与编程模式所使用的Altera编程硬件可以是MasterBlaster、ByteBlasterMV、ByteBlasterII或USB-Blaster下载电缆或Altera编程单元(APU)。国内许多开发板和实验箱使用ByteBlasterMV或ByteBlasterII下载电缆。具体情况请查看所使用的开发板和实验箱的有关所明。

第70页/共348页EDA技术与VHDL实用教程Programmer具有四种编程模式:被动串行模式(PSMode)、JTAG模式、主动串行编程模式(ASMode)和插座内编程模式(In-Socket)。被动串行和JTAG编程模式使用Altera编程硬件对单个或多个器件进行编程。主动串行编程模式使用Altera编程硬件对单个EPCS1或EPCS4串行配置器件进行编程。插座内编程模式使用Altera编程硬件对单个CPLD或配置器件进行编程。

第71页/共348页EDA技术与VHDL实用教程

二、器件设置和引脚的锁定1.器件的选择2.选择配置器件的工作方式(可不做)3.选择配置器件(使用EPCS器件的主动串行编程模式时)4.选择闲置引脚的状态(可不做)5.引脚的锁定第72页/共348页EDA技术与VHDL实用教程三、编程下载设计文件1.JTAG模式编程下载(1)硬件连接;(2)打开编程窗口、选择编程模式和配置文件;(3)设置编程器(若是初次安装时);(4)配置下载。第73页/共348页EDA技术与VHDL实用教程2.主动串行编程模式(ASMode)(1)硬件连接(2)打开编程窗口(3)选择编程模式和配置文件(4)设置编程器(若是初次安装时)(5)编程下载第74页/共348页EDA技术与VHDL实用教程四、设计电路硬件调试下载成功后即可进行设计电路硬件调试。具体方法应考虑所设计电路功能和开发板或实验箱的具体情况,这里不做详细介绍。第75页/共348页EDA技术与VHDL实用教程本章小结QuartusII原理图输入设计法入门器件编程原理图输入法建立工程文件夹编辑设计图形文件编译设计图形文件时序仿真设计文件生成元件符号编程硬件与编程模式器件设置和引脚的锁定编程下载设计文件设计电路硬件调试第76页/共348页EDA技术与VHDL实用教程要求进一步掌握QuartusII原理图输入法。

知识点原理图输入法中Max+plusII老式宏函数的应用原理图输入法中LPM函数的应用原理图输入法中的层次化设计

重点和难点

Max+plusII老式宏函数在原理图输入法中的应用原理图输入法中的层次化设计第77页/共348页EDA技术与VHDL实用教程第3章QuartusII原理图输入法深入原理图输入法中Max+plusII老式宏函数的应用

3.1原理图输入法中LPM函数的应用

3.2原理图输入法中的层次化设计3.3第78页/共348页EDA技术与VHDL实用教程3.1原理图输入法中Max+plusII老式宏函数的应用

在QuartusII原理图输入法中,可供使用的元件库除了基本逻辑元件库以外,还有Max+plusII库和LPM函数元件库。

第79页/共348页

要将设计文件保存至工程文件夹,并设置成currentfile,否则,编译不成功;

Compiler出错的原因:连线不实、不在工程文件夹下等;建立波形文件的方法;仿真之前,应先设置endtime;以便有足够长的仿真时间;仿真变量的设置:只给输入变量加入,输出是结果,是用来验证电路正确与否的,故输出不能设值;最好在全局范围内设值,否则,保存的波形不好看.原理图输入法常见错误第80页/共348页EDA技术与VHDL实用教程例3.1用74151设计一个三人表决电路。三人表决电路的真值表如下:

abcy00000010010001111000101111011111第81页/共348页EDA技术与VHDL实用教程其最小项表达式是:根据y的最小项表达式,就可知道使用74151设计的三人表决电路的原理图。

第82页/共348页EDA技术与VHDL实用教程同时,波形仿真结果如下:第83页/共348页EDA技术与VHDL实用教程例3.2用两块74161设计一个五十进制的计数器。

74161是4位二进制加法计数器,将两块74161可得八位二进制加法计数器。其模是256。如果计数器从开始0计数,要构成五十进制的计数器,当计数器的值计到十进制数49即二进制数00110001时,要让两块74161的同步置数端有效,使两块74161同时置零。根据此要求设计电路如下图。第84页/共348页EDA技术与VHDL实用教程第85页/共348页EDA技术与VHDL实用教程其仿真波形如图:第86页/共348页EDA技术与VHDL实用教程在原理图输入法中,有三种元件之间的连线:

节点(node)总线(bus)一般的不是节点和总线的连线。第87页/共348页EDA技术与VHDL实用教程

随着设计的数字系统越来越复杂,系统中每个模块都要从头开始设计是非常困难的。IP(IntellectualProperty)即知识产权的出现使得设计过程变得简单得多。IP核是指将一些在数字电路中常用但比较复杂的功能块,设计成参数可修改的模块,让其他用户可以直接调用这些模块。用户可以在自己的FPGA设计中使用这些严格测试和优化过的模块,减少设计和调试时间,降低开发成本,提高开发效率。3.2原理图输入法中LPM函数的应用

第88页/共348页EDA技术与VHDL实用教程IP包括基本宏功能(Megafuncition/PLM)和(MegaCore)两种,在Altera的开发工具QuatrusII中,有一些内带的基本宏功能(Megafuncition/PLM)可供用户使用,本节主要介绍这些QuatrusII内带的基本宏功能。基本宏功能可在原理图设计输入法中使用,也可在HDL设计输入法中使用,本节介绍的是基本宏功能在原理图设计输入法中使用,后者在第五章再做介绍。

第89页/共348页EDA技术与VHDL实用教程I/O组件包括时钟数据恢复、锁相环、双数据速率、千兆位收发器块LVDS收发器、PLL重新配置和远程更新宏功能模块altcdr_rxaltdqsaltcdr_txaltgxbaltclkctrlaltlvds_rxaltclklockaltlvds_txaltddio_bidiraltpllaltddio_inaltpll_reconfigaltddio_outaltremote_updatealtdqaltufm_oscSignalTapII逻辑分析组件SignalTapIILogicAnalyzerMegafunctionsld_signaltap存储组件存储器、移位寄存器宏模块和LPM存储器函数alt3pramscfifoaltcamlpm_ffaltdpramlpm_fifoaltqpramlpm_fifo_dcaltshift_tapslpm_latchaltsyncramlpm_ram_dpaltufm_i2clpm_ram_dqaltufm_nonelpm_ram_iolpm_romaltufm_spilpm_shiftregcsdpramlpm_dffcsfifolpm_tffdcfifoaltufm_parallel第90页/共348页EDA技术与VHDL实用教程例3.4lpm_mult宏函数应用二、基本宏功能应用实例第91页/共348页EDA技术与VHDL实用教程通过编译仿真,其仿真波形如图

:第92页/共348页EDA技术与VHDL实用教程例3.5lpm_counter宏函数应用第93页/共348页EDA技术与VHDL实用教程波形仿真结果:第94页/共348页EDA技术与VHDL实用教程例3.6lpm_bustri宏函数应用

第95页/共348页EDA技术与VHDL实用教程通过编译仿真,其仿真波形如下图。第96页/共348页EDA技术与VHDL实用教程例3.7lpm_fifo宏函数应用第97页/共348页EDA技术与VHDL实用教程通过编译仿真,其仿真波形如图:第98页/共348页EDA技术与VHDL实用教程层次化设计也称“自顶向下”设计方法,即将一个大的设计项目分解为若干子项目或若干层次来完成。划分是从顶层由高往下,而设计则可先设计底层的电路,然后在高层次的设计中,逐级调用低层次的设计结果。原理图输入法可很方便地进行层次化设计。一般层次化设计法用于较大的项目,但由于篇幅的原因,下面用一个不是很大的项目来说明层次化设计法。

3.3原理图输入法中的层次化设计

第99页/共348页EDA技术与VHDL实用教程例3.8用层次化设计设计一个两位二进制数乘法器。1.系统分析两位二进制数相乘,最多可得四位二进制数,系统可分解为两个半加器和几个与门联结而成。2.底层电路半加器设计第100页/共348页EDA技术与VHDL实用教程半加器电路真值表absc0000011010101101

由半加器的真值表可得,半加器的逻辑表达式如下:

s=aXORbc=aANDb第101页/共348页EDA技术与VHDL实用教程根据半加器的逻辑表达式,可按下图设计hadd.bdf文件。把hadd.bdf文件存放到文件夹hadd内,并以此文件建立工程,编译通过,执行File=>Greate/Update=>GreateSymbolFilesforCurrentFile命令,生成符号hadd.bsf。

第102页/共348页EDA技术与VHDL实用教程3.顶层电路两位二进制数乘法器设计根据系统分析所得结论,可按后页图设计两位二进制数乘法器电路。新建一个工程文件夹mult2,把hadd.bdf、hadd.bsf文件放入其中,新建一个原理图文件,使用插入符号命令,出现选择符号的界面,选择hadd.bsf将它放置于原理图编辑区中,以mult2.bdf命名并保存到mult2文件夹中。以此文件新建工程。调出有关其他元件并按下图连线,保存、编译并通过仿真。

第103页/共348页EDA技术与VHDL实用教程第104页/共348页EDA技术与VHDL实用教程通过编译仿真,其仿真波形如图:本例的底层电路符号用原理图设计输入法设计后生成,还可以用以后介绍的文本设计输入法设计后生成,这样的设计方法称混合设计输入法。第105页/共348页EDA技术与VHDL实用教程本章小结QuartusII原理图输入法深入原理图输入法中Max+plusII老式宏函数的应用原理图输入法中LPM函数的应用原理图输入法中的层次化设计第106页/共348页第4章VHDL设计入门<<EDA技术与VHDL实用教程>>108第107页/共348页EDA技术与VHDL实用教程要求掌握VHDL语言的基本知识和运用VHDL语言分析、设计逻辑电路的基本方法。知识点理解QuartusII的HDL输入法理解VHDL程序的基本结构理解VHDL程序的顺序结构理解VHDL程序的并行结构理解VHDL程序的语言要素

重点和难点QuartusII的HDL输入法VHDL程序的顺序结构VHDL程序的并行结构109第108页/共348页EDA技术与VHDL实用教程第4章VHDL设计入门QuartusII的HDL输入法

4.1VHDL程序的顺序结构4.3VHDL程序的并行结构4.4VHDL程序的语言要素4.5VHDL程序的基本结构4.2110第109页/共348页EDA技术与VHDL实用教程4.1QuartusII的HDL输入法HDL输入法是QuartusII的常用输入法,有AHDL、VHDL和VerilogHDL三种语言,本书主要介绍VHDL语言.111第110页/共348页EDA技术与VHDL实用教程一、输入编辑VHDL文件(实际操作)1.建立工程项目

2.

建立VHDL文件

3.编辑VHDL文件二、编译仿真VHDL文件1.编译VHDL文件

2.仿真VHDL文件112第111页/共348页EDA技术与VHDL实用教程一个完整的VHDL语言程序通常包含:库(Library)程序包(Package)声明;实体(Entity)声明;构造体(Architecture);配置(Configuration)。

4.2VHDL程序的基本结构

113第112页/共348页EDA技术与VHDL实用教程一、库、程序包

1.库与程序包的概念程序包(package)是预先定义或设计好的数据类型、子程序和各种设计实体的集合;库(Library)则是用来存储已经完成的程序包等VHDL设计与数据的仓库。库和程序包的引用声明放在设计文件的最前面。

114第113页/共348页EDA技术与VHDL实用教程

2.常见的库:(1)IEEE库:

IEEE库是最常用的库,它包含:STD_LOGIC_1164

、STD_LOGIC_ARITH、STD_LOGIC_UNSIGNED等程序包,这些程序包包含有IEEE的标准和其他一些工业标准。其中STD_LOGIC_1164程序包最为常用,它是许多其他程序包的基础。(2)STD库:是符合VHDL语言标准的库,使用时不需显式声明,它包含STANDARD、TEXTIO等程序包。

115第114页/共348页EDA技术与VHDL实用教程(3)ASIC矢量库:各公司提供的ASIC逻辑门库。(4)WORK库:为现行作业库,存放设计者的VHDL语言程序,是用户自己的库。使用时不需显式声明,但必需在根目录下建立一个文件夹作为用户项目目录,这目录将被综合器默认为WORK库,但WORK库并不以这个文件夹的名字为名字,它的名字是WORK。(5)用户自定义库:

用户自己定义的库。116第115页/共348页3、程序包的定义(了解)

PACKAGE

程序包名

IS

程序包首说明语句;

END[PACKAGE]

程序包名;

PACKAGEBODY

程序包名IS

程序包体说明语句;

END[PACKAGEBODY]

包集合名;

[重点提示]程序包体为可选项,程序包首与程序包体名字应相同;117第116页/共348页4、库与程序包的使用

除WORK、STD库外,其他库与程序包使用前首先要声明。格式如下:

LIBRARY

库名;

USE

库名.程序包名.项目名;

USE

库名.程序包名.ALL;

最后的一个USE语句中的ALL表示使用这个程序包中的所有资源。118第117页/共348页例如:

LIBRARYALTERA;USEALTERA.MAXPLUS2.ALL;LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;

库说明的作用范围从实体开始到其所属构造体、配置为止。

使用下面语句使用用户定义的程序包;

USEwork.包名.项目名;

USEwork.包名.ALL;119第118页/共348页实体(以下摘自北师大出版社教材)

设计实体可以是整个系统,如像CPU那样复杂的系统,也可以是一个芯片、逻辑器件或者是一个最简单的门电路。设计实体可以代表任何一个模块,它可以是某个层次中的一个元件,也可以是设计中的顶层模块。120第119页/共348页

二、实体实体(ENTITY)VHDL程序的主体,包括实体声明和结构体两部分。

实体声明部分描述所设计的电路与外部电路的接口,指定其输入/输出端口或引脚。

结构体则用来规定所设计电路的内部结构和输入与输出引脚间的逻辑关系。121第120页/共348页实体声明格式是:ENTITY

实体名IS[GENERIC(类属表);]----类属参数声明

PROT(端口表);----端口声明END[ENTITY]实体名;122第121页/共348页1、类属参数声明(了解)

放在端口声明之前,指定所设计电路所用到的类属参数,如矢量位数、时间单位等,主要在进行考虑一般性的设计时用到,通过改变这些类属参数可适应不同情况要求。例如:

GENERIC(n:POSITIVE:=8);---声明一个类属参数。123第122页/共348页2、端口声明

描述所设计的电路与外部电路的接口,指定其输入/输出端口或引脚。其格式如下:PORT(端口名:端口方向端口数据类型;……

端口名:端口方向端口数据类型);124第123页/共348页下面是一个实体声明的例子(参照课本P129)ENTITYand_nIS

GENERIC(n:POSITIVE:=8);---声明一个类属参数。

PORT(a:INBIT_VECTOR((n-1)DOWNTO0);

f:OUTBIT);---bit为位数据类型,只有‘0’和‘1’两个值,bit_vector是位矢量。ENDand_n;125第124页/共348页三、结构体

结构体则用来规定所设计电路的内部结构和输入输出引脚间的逻辑关系。其格式如下:ARCHITECTURE

结构体名OF

实体名IS

[声明语句]BEGIN

[功能描述语句]END[ARCHITECTURE]

结构体名;126第125页/共348页

1、结构体内的声明语句结构体的声明部分用来声明只能用于所设计电路内部的常数、数据类型、信号、元件和子程序。这些声明只能用于这个结构体中。

2、功能描述语句的类型

(1)进程语句,其内部为顺序语句。

(2)并行过程调用语句

(3)并行的信号赋值语句包括简单信号赋值语句、条件信号赋值语句和选择信号赋值语句。

(4)元件例化语句

(5)生成语句127第126页/共348页下面是一个实体与结构体的具体例子:

ENTITY

adder

IS

PORT(op1,op2:INUNSIGNED(7downto0);

Result:OUTINTEGER);

ENDadder;

ARCHITECTUREmaxpld

OF

adder

IS

BEGINResult<=CONV_INTEGER(op1+op2);

END

maxpld;128第127页/共348页四、配置(了解)

一个实体可有几个结构体。配置是在一个实体有几个结构体时,用来为实体指定特定的情况下使用哪个特定的结构体。在仿真时可利用配置为实体选择不同的结构体。其格式如下:CONFIGURATION

配置名OF

实体名IS

FOR

结构体名

ENDFOR;END[CONFIGURATION]

配置名;129第128页/共348页例1libraryieee;useieee.std_logic_1164.all;entitymux21aisport(a,b:in

std_logic;s:in

std_logic;y:outstd_logic);

endentitymux21a;

architectureoneofmux21ais

beginy<=awhens='0'elseb;

endarchitectureone;第129页/共348页例2ENTITYdtffIS

GENERIC(initial:BIT:='1');

PORT(d,clock:INBIT;q:BUFFERBIT:=initial);ENDdtff;ARCHITECTUREaOFdtffIS

BEGINq<=dWHEN(clock'EVENT

ANDclock='1');ENDa;第130页/共348页例3libraryieee;useieee.std_logic_1164.all;entityhaddisport(a,b:in

std_logic;co,so:outstd_logic);end

entityhadd;architectureoneofhaddisbeginso<=not(axor(notb));co<=aandb;endarchitectureone;

第131页/共348页133例4LIBRARYieee;USEieee.std_logic_1164.ALL;ENTITYdecl7sISPORT(d:INSTD_LOGIC_VECTOR(3DOWNTO0);led:OUT

STD_LOGIC_VECTOR(6DOWNTO0));

END;

ARCHITECTUREaOFDECL7SISBEGIN

PROCESS(d)

BEGINCASEdISWHEN"0000"=>led<="0111111";

WHEN"0001"=>led<="0000110";

WHEN"0010"=>led<="1011011";

WHEN,,,,,,;WHEN"1111"=>led<="1110001";

WHENOTHERS=>NULL;ENDCASE;

ENDPROCESS;ENDa;共阴数码管及其电路第132页/共348页4.3VHDL程序的顺序结构VHDL的基本描述语句有顺序语句(SequentialStatements)和并行语句(ConcurrentStatements)。顺序语句特点:其中每一条语句在行为仿真时的执行顺序都是按照它们的书写顺序。并行语句特点:各个并行语句在行为仿真时的执行是同步进行的,其执行顺序与书写顺序无关。134第133页/共348页

顺序语句只能出现在进程(Process)、函数(Function)和过程(Procedure)中。进程语句是常用的顺序语句。其本身是并行语句。但其内部的语句却是顺序语句。常见的顺序语句有赋值语句、IF语句、CASE语句、LOOP语句,还有一些其他不太常用的顺序语句。135第134页/共348页一、赋值语句

赋值语句分变量赋值语句和信号赋值语句。变量赋值时间延迟为零;信号赋值一定存在时间延迟。136第135页/共348页1、变量赋值语句例4.1A:=9;B:=7;Z:=X+Y;

其中A、B和Z都是变量,:=表示给变量赋值。变量赋值语句的格式是:

目标变量:=赋值源表达式;137第136页/共348页2、信号赋值语句例4.2A<=3;B(3TO4)<=C(1TO2);

其中A为信号,B则为数组型信号,<=表示给信号赋值。信号赋值信号语句的格式是:

目标信号<=赋值源表达式;VHDL规定赋值目标与赋值源的数据类型必需严格一致。138第137页/共348页二、IF语句IF语句即条件语句,是VHDL语言中常用的流程控制语句。IF语句有多种格式。例4.3

LIBRARY

ieee;

USEieee.std_logic_1164.ALL;

ENTITYmulti_2

IS

PORT(s,d0,d1:INSTD_LOGIC;-----标准逻辑位数据类型,有九种逻辑值

y:OUTSTD_LOGIC);

ENDmulti_2;139第138页/共348页ARCHITECTUREaOFmulti_2IS

BEGIN

--y<=(NOTsANDd0)OR(sANDd1);

PROCESS(s,d0,d1)

BEGIN

---进程语句开始

IF(s=’0’)THENy<=d0;---条件成立时执行此顺序语句

ELSEy<=d1;---条件不成立时执行此顺序语句

ENDIF;

---条件语句结束

END

PROCESS;---进程语句结束

ENDa;140第139页/共348页其仿真波形如下图示:141第140页/共348页

以上例子是一个数据选择器,其中所用IF语句的格式是IF的最基本的格式,即二选一控制格式。

IF语句的格式一:

IF

条件THEN

顺序语句;

ELSE

顺序语句;

ENDIF;

有时语句中缺少ELSE部分,则成为另一种格式,即门闩控制格式。142第141页/共348页例4.4

LIBRARYieee;

USEieee.std_logic_1164.ALL;

ENTITYdff1

IS

PORT(data_in:INstd_logic;clock:INstd_logic;data_out:OUTstd_logic);

ENDdff1;

ARCHITECTUREbehvOFdff1IS

BEGIN

PROCESS(data_in,clock)143第142页/共348页

BEGIN

IF(clock=‘1’andclock’event)THENdata_out<=data_in;

END

IF;

END

PROCESS;ENDbehv;

其仿真波形如下图示,这是一个D触发器。144第143页/共348页IF语句的格式二:

IF

条件THEN

顺序语句;

ENDIF;[重点提示]使用无ELSE部分的一类IF语句时,QuartusⅡ在综合设计文件时,会生成一个含有一定数量寄存器的结构,例如上例的D触发器描述。145第144页/共348页例4.5

LIBRARY

ieee;

USEieee.std_logic_1164.ALL;

ENTITYencoderIS

PORT(inv:INstd_logic_vector(7downto0);y:OUTstd_logic_vector(2downto0));

ENDencoder;

ARCHITECTURErt1OFencoderIS

BEGIN

PROCESS(inv)146第145页/共348页

BEGIN

IFinv(7)=’1’theny<=”111”;

ELSIFinv(6)=’1’theny<=”110”;

ELSIFinv(5)=’1’theny<=”101”;

ELSIFinv(4)=’1’theny<=”100”;

ELSIFinv(3)=’1’theny<=”011”;

ELSIFinv(2)=’1’theny<=”010”;

ELSIFinv(1)=’1’theny<=”001”;

ELSIFinv(0)=’1’theny<=”000”;

ELSEy<=”000”;

ENDIF;

ENDPROCESS;ENDrt1;147第146页/共348页其仿真波形如下图148第147页/共348页以上例子为8-3优先编码器。其真值如表4-1:

表4-18-3优先编码器真值表

输入输出Inv0Inv1Inv2Inv3Inv4Inv5Inv6Inv7Y2Y1Y0XXXXXXX1111XXXXXX10110XXXXX100101XXXX1000100XXX10000011XX100000010X100000000110000000000149第148页/共348页

在以上例子中,有多种选择条件,其中IF语句的格式为多选择控制格式。IF语句的格式三:

IF

条件1THEN

顺序语句1;

ELSIF

条件2THEN

顺序语句2;

……

ELSE

顺序语句n;

ENDIF

;

多选择控制格式其实又可分为有和无ELSE部分两种,上例是有ELSE部分的一种。150第149页/共348页[重点提示]在描述组合逻辑电路时,一般要使用有ELSE部分的一类IF语句,而不要使用无ELSE部分的一类IF语句。否则,QuartusⅡ在综合设计文件时,会生成一个含有一定数量寄存器的结构,增加电路复杂度。而在描述时序逻辑电路时则经常使用无ELSE部分的一类IF语句。151第150页/共348页三、CASE语句CASE语句即选择语句,它根据表达式的值,从多项顺序语句中选择满足条件的一项来执行。CASE语句也是VHDL语句的常用流程控制语句。例4.6

LIBRARYieee;

USEieee.std_logic_1164.ALL;

ENTITYdemulti_4vIS

PORT(d:INSTD_LOGIC;s:INSTD_LOGIC_VECTOR(1DOWNTO0);y0,y1,y2,y3:OUTSTD_LOGIC);

ENDdemulti_4v;152第151页/共348页

ARCHITECTUREaOFdemulti_4vIS

BEGIN

PROCESS(s,d)

BEGIN

CASEsIS

WHEN“00”=>y0<=d;y1<=‘0’;y2<=‘0’;y3<=‘0’;

WHEN“01”=>y0<=‘0’;y1<=d;y2<=‘0’;y3<=‘0’;

WHEN“10”=>y0<=‘0’;y1<=‘0’;y2<=d;y3<=‘0’;

WHENOTHERS=>y0<=‘0’;y1<=‘0’;y2<=‘0’;y3<=d;

ENDCASE;

ENDPROCESS;

ENDa;153第152页/共348页其仿真波形如下图示:

这是一个4路数据分配器,注意信号S为STD_LOGIC_VECTOR数据类型,其可能取值不止4种,因为STD_LOGIC数据类型有九种取值。故上例中存在WHENOTHERS这一项。154第153页/共348页下表为分配器的真值表输入输出S1S0Y3Y2Y1Y000000D0100D0100D0011D000

从上例可以看出,CASE语句的格式与电路的真值表相对应。155第154页/共348页CASE语句的格式:

CASE

表达式IS

WHEN

选择值=>顺序语句;

WHEN

选择值=>顺序语句;

WHENOTHERS=>顺序语句;

ENDCASE;[重点提示]CASE语句的格式与所描写的电路的真值表具有对应性。156第155页/共34

温馨提示

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

评论

0/150

提交评论