数字系统设计与CPLD应用专题实验指导书120222_第1页
数字系统设计与CPLD应用专题实验指导书120222_第2页
数字系统设计与CPLD应用专题实验指导书120222_第3页
数字系统设计与CPLD应用专题实验指导书120222_第4页
数字系统设计与CPLD应用专题实验指导书120222_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、数字系统设计与FPGA专题实验指导书西安交通大学电信学院数据广播研究中心 符均Dec 24 2012前言课程中文名称:数字系统设计与FPGA专题实验课程英文名称:Digital System Design and FPGA Topic Lab.课程编号:INFT3009实验学时:32学分:1适用专业:信息专业先修课程:数字逻辑电路开课学院:电信学院开课学期:第六学期教材及实验指导书:符均,数字系统设计与FPGA应用专题实验指导书,写作中一、实验课程简介 本课程通过一系列实验由浅入深,教导学生学习数字系统设计方法,学习系统的模块设计方法。学习可编程逻辑器件的原理与应用,学习相关软件及设计方法,并

2、涉及简单的系统在片技术,通过学习,学生能自主设计以可编程逻辑器件为核心构建的基本数字系统。二、实验课性质、目的和任务性质:专业专题实验目的:通过学习,学生能自主设计以可编程逻辑器件为核心构建的基本数字系统。任务:独立设计出一个简单的FPGA应用程序并验证三、实验课教学基本要求1讲解实验原理和基本知识2指导学生设计实验,和验证指导3指导学生进行独立设计选题第一节 FPGA原理11 简介PLD是可编程逻辑器件(Programable Logic Device)的简称,FPGA是现场可编程门阵列(Field Programable Gate Array)的简称,两者的功能基本相同,只是实现原理略有不

3、同,所以我们有时可以忽略这两者的区别,统称为可编程逻辑器件或PLD/FPGA。 PLD是电子设计领域中最具活力和发展前途的一项技术,它的影响丝毫不亚于70年代单片机的发明和使用。PLD能做什么呢?可以毫不夸张的讲,PLD能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路,都可以用PLD来实现。PLD如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由的设计一个数字系统。通过软件仿真,我们可以事先验证设计的正确性。在PCB完成以后,还可以利用PLD的在线修改能力,随时修改设计而不必改动硬件电路。使用PLD来开发数字电路,可以大大缩短设计时间,减少PCB面积

4、,提高系统的可靠性。 PLD的这些优点使得PLD技术在90年代以后得到飞速的发展,同时也大大推动了EDA软件和硬件描述语言(HDL)的进步。如何使用PLD呢?其实PLD的使用很简单,学习PLD比学习单片机要简单的多,有数字电路基础,会使用计算机,就可以进行PLD的开发。不熟悉PLD的朋友,可以先看一看可编程逻辑器件的发展历程。 开发PLD需要了解两个部分:1.PLD开发软件 2.PLD本身1.PLD开发软件 由于PLD软件已经发展的相当完善,用户甚至可以不用详细了解PLD的内部结构,也可以用自己熟悉的方法:如原理图输入或HDL语言来完成相当优秀的PLD设计。所以对初学者,首先应了解PLD开发软

5、件和开发流程。了解PLD的内部结构,将有助于提高我们设计的效率和可靠性。 如何获得PLD开发软件软件呢? 许多PLD公司都提供免费试用版或演示版(当然商业版大都是收费的),例如:可以免费从 上下载Altera公司的 QuartusII (web版),或向其代理商索取这套软件。Xilinx 公司也提供免费软件:ISE WebPack,这套可以从xilinx网站下载。Lattice 提供isplever Base版下载,Actel等公司也都有类似的免费软件提供。以上免费软件都需要在网上注册申请License文件,如果您对License的安装还有不清楚,请仔细阅读相关网页上的说明,也可以下载这篇文档

6、:EDA软件的license管理与安装。 通常这些免费软件已经能够满足一般设计的需要,当然,要想软件功能更强大一些,只能购买商业版软件。 如果您打算使用VHDL或Verilog HDL硬件描述语言来开发PLD/FPGA,通常还需要使用一些专业的HDL开发软件,这是因为FPGA厂商提供的软件的HDL综合能力一般都不是很强,需要其他软件来配合使用,详细情况可以通过浏览:开发软件栏目获得等多信息. 对于PLD产品,一般分为:基于乘积项(Product-Term)技术,EEPROM(或Flash)工艺的中小规模PLD,以及基于查找表(Look-Up table)技术,SRAM工艺的大规模PLD/FPG

7、A。EEPROM工艺的PLD密度小,多用于5,000门以下的小规模设计,适合做复杂的组合逻辑,如译码。SRAM工艺的PLD(FPGA),密度高,触发器多,多用于10,000门以上的大规模设计,适合做复杂的时序逻辑,如数字信号处理和各种算法。目前有多家公司生产CPLD/FPGA,最大的两家是:ALTERA,XILINX,Lattice。2.PLD/FPGA的分类和使用 在PLD/FPGA开发软件中完成设计以后,软件会产生一个最终的编程文件(如 .pof )。如何将编程文件烧到PLD芯片中去呢? 1.对于基于乘积项(Product-Term)技术,EEPROM(或Flash)工艺的PLD(如Alt

8、era的MAX系列,Lattice的大部分产品,Xilinx的XC9500,Coolrunner系列), 厂家提供编程电缆,电缆一端装在计算机的并行打印口上,另一端接在PCB板上的一个十芯插头,PLD芯片有四个管脚(编程脚)与插头相连。(如图) 它向系统板上的器件提供配置或编程数据,这就是所谓的在线可编程(ISP,如下图)。Byteblaster使用户能够独立地配置PLD器件,而不需要编程器或任何其它编程硬件。编程电缆可以向代理商购买,也可以根据厂家提供的编程电缆的原理图自己制作,成本仅需一,二十元。 早期的PLD是不支持ISP的,它们需要用编程器烧写。目前的PLD都可以用ISP在线编程,也可

9、用编程器编程。这种PLD可以加密,并且很难解密,所以常常用于单板加密。 1.将PLD焊在PCB板上 2.接好编程电缆 3.现场烧写PLD芯片 2.对于基于查找表(LUT,Look-Up table)技术,SRAM工艺的FPGA(如Altera的所有FPGA,如ACEX,Cyclone,Stratix系列,Xilinx的所有FPGA,如Spartan,Virtex系列,Lattice的EC/ECP系列等),由于SRAM工艺的特点,掉电后数据会消失,因此调试期间可以用下载电缆配置PLD器件,调试完成后,需要将数据固化在一个专用的EEPROM中(用通用编程器烧写,也有一些可以用电缆直接改写),上电时

10、,由这片配置EEPROM先对FPGA加载数据,十几个毫秒到几百个毫秒后,FPGA即可正常工作。(亦可由CPU配置FPGA)。但SRAM工艺的PLD一般不可以直接加密。 3.还有一种反熔丝(Anti-fuse)技术的FPGA,如Actel,Quicklogic的部分产品就采用这种工艺。但这种的PLD是不能重复擦写,需要使用专用编程器,所以开发过程比较麻烦,费用也比较昂高。但反熔丝技术也有许多优点:布线能力更强,系统速度更快,功耗更低,同时抗辐射能力强,耐高低温,可以加密,所以在一些有特殊要求的领域中运用较多,如军事及航空航天。 为了解决反熔丝FPGA不可重复擦写的问题,Actel等公司在90年代

11、中后期开发了基于Flash技术的FPGA,如ProASIC系列,这种FPGA不需要配置,数据直接保存在FPGA芯片中,用户可以改写(但需要10几伏的高电压)。 随着技术的发展,在2004年以后,一些厂家推出了一些新的PLD和FPGA,这些产品模糊了PLD和FPGA的区别。例如Altera最新的MAXII系列PLD,这是一种基于FPGA(LUT)结构,集成配置芯片的PLD,在本质上它就是一种在内部集成了配置芯片的FPGA,但由于配置时间极短,上电就可以工作,所以对用户来说,感觉不到配置过程,可以传统的PLD一样使用,加上容量和传统PLD类似,所以altera把它归作PLD。 还有像Lattice

12、的XP系列FPGA,也是使用了同样的原理,将外部配置芯片集成到内部,在使用方法上和PLD类似,但是因为容量大,性能和传统FPGA相同,也是LUT架构,所以Lattice仍把它归为FPGA。1.2发展历程 当今社会是数字化的社会,是数字集成电路广泛应用的社会。数字集成电路本身在不断地进行更新换代。它由早期的电子管、晶体管、小中规模集成电路、发展到超大规模集成电路(VLSIC,几万门以上)以及许多具有特定功能的专用集成电路。但是,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。系统设计师们更愿意自己设计专用集成电路(ASIC)芯片,而且希望ASIC的设计周期尽可能短,

13、最好是在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,因而出现了现场可编程逻辑器件(FPLD),其中应用最广泛的当属现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。 早期的可编程逻辑器件只有可编程只读存贮器(PROM)、紫外线可按除只读存贮器(EPROM)和电可擦除只读存贮器(EEPROM)三种。由于结构的限制,它们只能完成简单的数字逻辑功能。 其后,出现了一类结构上稍复杂的可编程芯片,即可编程逻辑器件(PLD),它能够完成各种数字逻辑功能。典型的PLD由一个“与”门和一个“或”门阵列组成,而任意一个组合逻辑都可以用“与一或”表达式来描述,所以, PLD能以乘积

14、和的形式完成大量的组合逻辑功能。 这一阶段的产品主要有PAL(可编程阵列逻辑)和GAL(通用阵列逻辑)。 PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出可以通过触发器有选择地被置为寄存状态。 PAL器件是现场可编程的,它的实现工艺有反熔丝技术、EPROM技术和EEPROM技术。还有一类结构更为灵活的逻辑器件是可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,但是这两个平面的连接关系是可编程的。 PLA器件既有现场可编程的,也有掩膜可编程的。 在PAL的基础上,又发展了一种通用阵列逻辑GAL (Generic Array Logic),如GAL16V8,G

15、AL22V10 等。它采用了EEPROM工艺,实现了电可按除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的设计具有很强的灵活性,至今仍有许多人使用。 这些早期的PLD器件的一个共同特点是可以实现速度特性较好的逻辑功能,但其过于简单的结构也使它们只能实现规模较小的电路。 典型的PLD的部分结构(实现组合逻辑的部分) 为了弥补这一缺陷,20世纪80年代中期。 Altera和Xilinx分别推出了类似于PAL结构的扩展型 CPLD(Complex Programmab1e Logic Dvice)和与标准门阵列类似的FPGA(Field Programmable Gate Array),它们都

16、具有体系结构和逻辑单元灵活、集成度高以及适用范围宽等特点。 这两种器件兼容了PLD和通用门阵列的优点,可实现较大规模的电路,编程也很灵活。与门阵列等其它ASIC(Application Specific IC)相比,它们又具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检验等优点,因此被广泛应用于产品的原型设计和产品生产(一般在10,000件以下)之中。几乎所有应用门阵列、PLD和中小规模通用数字集成电路的场合均可应用FPGA和CPLD器件。(注:不同厂家的叫法不尽相同,Xilinx把,基于查找表技术,SRAM工艺,要外挂配置用的EEPROM的PLD叫

17、FPGA;把基于乘积项技术,Flash(类似EEPROM工艺)工艺的PLD叫CPLD; Altera 把自己的PLD产品:MAX系列(乘积项技术,EEPROM工艺),FLEX系列(查找表技术,SRAM工艺)都叫作CPLD,即复杂PLD(Complex PLD),由于FLEX系列也是SRAM工艺,基于查找表技术,要外挂配置用的EPROM,用法和Xilinx的FPGA一样,所以很多人把Altera的FELX系列产品也叫做FPGA.)(下图:8寸硅晶片,每一个小方格经过切割,封装后就是一片芯片) FPGACPLD 概述 FPGA(现场可编程门阵列)与 CPLD(复杂可编程逻辑器件)都是可编程逻辑器件

18、,它们是在PAL,GAL等逻辑器件的基础之上发展起来的。同以往的PAL,GAL等相比较,FPGACPLD的规模比较大,它可以替代几十甚至几千块通用IC芯片。这样的FPGACPLD实际上就是一个子系统部件。这种芯片受到世界范围内电子工程设计人员的广泛关注和普遍欢迎。经过了十几年的发展,许多公司都开发出了多种可编程逻辑器件。比较典型的就是Xilinx公司的FPGA器件系列和Altera公司的CPLD器件系列,它们开发较早,占用了较大的PLD市场。通常来说,在欧洲用Xilinx的人多,在日本和亚太地区用ALTERA的人多,在美国则是平分秋色。全球PLD/FPGA产品60%以上是由Altera和Xil

19、inx提供的。可以讲Altera和Xilinx共同决定了PLD技术的发展方向。当然还有许多其它类型器件,如:Lattice,Vantis,Actel,Quicklogic,Lucent等。 (99年Lattice收购了Vantis,成为第三大PLD供应商;同年Xilinx收购了Philips的PLD部门)详细内容请浏览:PLD厂商 栏目1998年世界十大PLD公司排名 公司 销售额(亿美金) 市场占有率 1 Altera 5.96 30.1 2 Xilinx 5.74 29.0 3 Vantis 2.20 11.1 4 Lattice 2.18 11.0 5 Actel 1.39 7.0 6

20、Luccent 0.85 4.3 7 Cypress 0.44 2.2 8 Atmel 0.42 2.1 9 Philips 0.28 1.4 10 Quicklogic 0.24 1.2 资料来源:99年4月电子产品世界 尽管FPGA,CPLD和其它类型PLD的结构各有其特点和长处,但概括起来,它们是由三大部分组成的,·一个二维的逻辑块阵列,构成了PLD器件的逻辑组成核心。·输入输出块:·连接逻辑块的互连资源。连线资源:由各种长度的连线线段组成,其中也有一些可编程的连接开关,它们用于逻辑块之间、逻辑块与输入输出块之间的连接。 典型的PLD的框图 兰色:逻辑单元

21、红色:连线资源 黄色:输入输出块 对用户而言,CPLD与FPGA的内部结构稍有不同,但用法一样,所以多数情况下,不加以区分。FPGACPLD芯片都是特殊的ASIC芯片,它们除了具有ASIC的特点之外,还具有以下几个优点:·随着VlSI(Very Large Scale IC,超大规模集成电路)工艺的不断提高单一芯片内部可以容纳上百万个晶体管, FPGACPLD芯片的规模也越来越大,其单片逻辑门数已达到上百万门,它所能实现的功能也越来越强,同时也可以实现系统集成。·FPGACPLD芯片在出厂之前都做过百分之百的测试,不需要设计人员承担投片风险和费用,设计人员只需在自己的实验室

22、里就可以通过相关的软硬件环境来完成芯片的最终功能设计。所以, FPGACPLD的资金投入小,节省了许多潜在的花费。·用户可以反复地编程、擦除、使用或者在外围电路不动的情况下用不同软件就可实现不同的功能。所以,用FPGAPLD 试制样片,能以最快的速度占领市场。 FPGACPLD软件包中有各种输入工具和仿真工具,及版图设计工具和编程器等全线产品,电路设计人员在很短的时间内就可完成电路的输入、编译、优化、仿真,直至最后芯片的制作。 当电路有少量改动时,更能显示出FPGACPLD的优势。电路设计人员使用FPGACPLD进行电路设计时,不需要具备专门的IC(集成电路)深层次的知识, FPGA

23、CPLD软件易学易用,可以使设计人员更能集中精力进行电路设计,快速将产品推向市场。 1.3 PLD/FPGA 结构与原理初步(一)一.基于乘积项(Product-Term)的PLD结构采用这种结构的PLD芯片有:Altera的MAX7000,MAX3000系列(EEPROM工艺),Xilinx的XC9500系列(Flash工艺)和Lattice,Cypress的大部分产品(EEPROM工艺)我们先看一下这种PLD的总体结构(以MAX7000为例,其他型号的结构与此都非常相似):图1 基于乘积项的PLD内部结构这种PLD可分为三块结构:宏单元(Marocell),可编程连线(PIA)和I/O控制

24、块。 宏单元是PLD的基本结构,由它来实现基本的逻辑功能。图1中兰色部分是多个宏单元的集合(因为宏单元较多,没有一一画出)。可编程连线负责信号传递,连接所有的宏单元。I/O控制块负责输入输出的电气特性控制,比如可以设定集电极开路输出,摆率控制,三态输出等。 图1 左上的INPUT/GCLK1,INPUT/GCLRn,INPUT/OE1,INPUT/OE2 是全局时钟,清零和输出使能信号,这几个信号有专用连线与PLD中每个宏单元相连,信号到每个宏单元的延时相同并且延时最短。宏单元的具体结构见下图:图2 宏单元结构左侧是乘积项阵列,实际就是一个与或阵列,每一个交叉点都是一个可编程熔丝,如果导通就是

25、实现“与”逻辑。后面的乘积项选择矩阵是一个“或”阵列。两者一起完成组合逻辑。图右侧是一个可编程D触发器,它的时钟,清零输入都可以编程选择,可以使用专用的全局清零和全局时钟,也可以使用内部逻辑(乘积项阵列)产生的时钟和清零。如果不需要触发器,也可以将此触发器旁路,信号直接输给PIA或输出到I/O脚。二.乘积项结构PLD的逻辑实现原理下面我们以一个简单的电路为例,具体说明PLD是如何利用以上结构实现逻辑的,电路如下图:图3 假设组合逻辑的输出(AND3的输出)为f,则f=(A+B)*C*(!D)=A*C*!D + B*C*!D ( 我们以!D表示D的“非”)PLD将以下面的方式来实现组合逻辑f:图

26、4A,B,C,D由PLD芯片的管脚输入后进入可编程连线阵列(PIA),在内部会产生A,A反,B,B反,C,C反,D,D反8个输出。图中每一个叉表示相连(可编程熔丝导通),所以得到:f= f1 + f2 = (A*C*!D) + (B*C*!D) 。这样组合逻辑就实现了。 图3电路中D触发器的实现比较简单,直接利用宏单元中的可编程D触发器来实现。时钟信号CLK由I/O脚输入后进入芯片内部的全局时钟专用通道,直接连接到可编程触发器的时钟端。可编程触发器的输出与I/O脚相连,把结果输出到芯片管脚。这样PLD就完成了图3所示电路的功能。(以上这些步骤都是由软件自动完成的,不需要人为干预)图3的电路是一

27、个很简单的例子,只需要一个宏单元就可以完成。但对于一个复杂的电路,一个宏单元是不能实现的,这时就需要通过并联扩展项和共享扩展项将多个宏单元相连,宏单元的输出也可以连接到可编程连线阵列,再做为另一个宏单元的输入。这样PLD就可以实现更复杂逻辑。这种基于乘积项的PLD基本都是由EEPROM和Flash工艺制造的,一上电就可以工作,无需其他芯片配合。1.4 PLD/FPGA 结构与原理初步(二)一.查找表(Look-Up-Table)的原理与结构采用这种结构的PLD芯片我们也可以称之为FPGA:如altera的ACEX,APEX系列,xilinx的Spartan,Virtex系列等。查找表(Look

28、-Up-Table)简称为LUT,LUT本质上就是一个RAM。 目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的16x1的RAM。 当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。下面是一个4输入与门的例子,实际逻辑电路 LUT的实现方式 a,b,c,d 输入 逻辑输出 地址 RAM中存储的内容 0000 0 0000 0 0001 0 0001 0 . 0 . 0 1111 1 11

29、11 1 二.基于查找表(LUT)的FPGA的结构我们看一看xilinx Spartan-II的内部结构,如下图: xilinx Spartan-II 芯片内部结构 Slices结构 Spartan-II主要包括CLBs,I/O块,RAM块和可编程连线(未表示出)。在spartan-II中,一个CLB包括2个Slices,每个slices包括两个LUT,两个触发器和相关逻辑。 Slices可以看成是SpartanII实现逻辑的最基本结构 (xilinx其他系列,如SpartanXL,Virtex的结构与此稍有不同,具体请参阅数据手册)altera的FLEX/ACEX等芯片的结构如下图:alte

30、ra FLEX/ACEX 芯片的内部结构逻辑单元(LE)内部结构FLEX/ACEX的结构主要包括LAB,I/O块,RAM块(未表示出)和可编程行/列连线。在FLEX/ACEX中,一个LAB包括8个逻辑单元(LE),每个LE包括一个LUT,一个触发器和相关的相关逻辑。LE是FLEX/ACEX芯片实现逻辑的最基本结构(altera其他系列,如APEX的结构与此基本相同,具体请参阅数据手册)二.查找表结构的FPGA逻辑实现原理我们还是以这个电路的为例:A,B,C,D由FPGA芯片的管脚输入后进入可编程连线,然后作为地址线连到到LUT,LUT中已经事先写入了所有可能的逻辑结果,通过地址查找到相应的数据

31、然后输出,这样组合逻辑就实现了。 该电路中D触发器是直接利用LUT后面D触发器来实现。时钟信号CLK由I/O脚输入后进入芯片内部的时钟专用通道,直接连接到触发器的时钟端。触发器的输出与I/O脚相连,把结果输出到芯片管脚。这样PLD就完成了图3所示电路的功能。(以上这些步骤都是由软件自动完成的,不需要人为干预)这个电路是一个很简单的例子,只需要一个LUT加上一个触发器就可以完成。对于一个LUT无法完成的的电路,就需要通过进位逻辑将多个单元相连,这样FPGA就可以实现复杂的逻辑。由于LUT主要适合SRAM工艺生产,所以目前大部分FPGA都是基于SRAM工艺的,而SRAM工艺的芯片在掉电后信息就会丢

32、失,一定需要外加一片专用配置芯片,在上电的时候,由这个专用配置芯片把数据加载到FPGA中,然后FPGA就可以正常工作,由于配置时间很短,不会影响系统正常工作。 也有少数FPGA采用反熔丝或Flash工艺,对这种FPGA,就不需要外加专用的配置芯片。三.其他类型的FPGA和PLD 随着技术的发展,在2004年以后,一些厂家推出了一些新的PLD和FPGA,这些产品模糊了PLD和FPGA的区别。例如Altera最新的MAXII系列PLD,这是一种基于FPGA(LUT)结构,集成配置芯片的PLD,在本质上它就是一种在内部集成了配置芯片的FPGA,但由于配置时间极短,上电就可以工作,所以对用户来说,感觉

33、不到配置过程,可以传统的PLD一样使用,加上容量和传统PLD类似,所以altera把它归作PLD。 还有像Lattice的XP系列FPGA,也是使用了同样的原理,将外部配置芯片集成到内部,在使用方法上和PLD类似,但是因为容量大,性能和传统FPGA相同,也是LUT架构,所以Lattice仍把它归为FPGA。四.选择PLD还是FPGA?根据上一篇PLD的结构和原理可以知道,PLD分解组合逻辑的功能很强,一个宏单元就可以分解十几个甚至2030多个组合逻辑输入。而FPGA的一个LUT只能处理4输入的组合逻辑,因此,PLD适合用于设计译码等复杂组合逻辑。 但FPGA的制造工艺确定了FPGA芯片中包含的

34、LUT和触发器的数量非常多,往往都是几千上万,PLD一般只能做到512个逻辑单元,而且如果用芯片价格除以逻辑单元数量,FPGA的平均逻辑单元成本大大低于PLD。 所以如果设计中使用到大量触发器,例如设计一个复杂的时序逻辑,那么使用FPGA就是一个很好选择。 同时PLD拥有上电即可工作的特性,而大部分FPGA需要一个加载过程,所以,如果系统要可编程逻辑器件上电就要工作,那么就应该选择PLD。第二节 VHDL语言(自学)HDL概述 随着EDA技术的发展,使用硬件语言设计PLD/FPGA成为一种趋势。目前最主要的硬件描述语言是VHDL和Verilog HDL。 VHDL发展的较早,语法严格,而Ver

35、ilog HDL是在C语言的基础上发展起来的一种硬件描述语言,语法较自由。 VHDL和Verilog HDL两者相比,VHDL的书写规则比Verilog烦琐一些,但verilog自由的语法也容易让少数初学者出错。 国外电子专业很多会在本科阶段教授VHDL,在研究生阶段教授verilog。从国内来看,VHDL的参考书很多,便于查找资料,而Verilog HDL的参考书相对较少,这给学习Verilog HDL带来一些困难。 从EDA技术的发展上看,已出现用于CPLD/FPGA设计的硬件C语言编译软件,虽然还不成熟,应用极少,但它有可能会成为继VHDL和Verilog之后,设计大规模CPLD/FPG

36、A的又一种手段。选择VHDL还是verilog HDL?这是一个初学者最常见的问题。其实两种语言的差别并不大,他们的描述能力也是类似的。掌握其中一种语言以后,可以通过短期的学习,较快的学会另一种语言。 选择何种语言主要还是看周围人群的使用习惯,这样可以方便日后的学习交流。 当然,如果您是集成电路(ASIC)设计人员,则必须首先掌握verilog,因为在IC设计领域,90以上的公司都是采用verilog进行IC设计。对于PLD/FPGA设计者而言,两种语言可以自由选择。学习HDL的几点重要提示1.了解HDL的可综合性问题:HDL有两种用途:系统仿真和硬件实现。 如果程序只用于仿真,那么几乎所有的

37、语法和编程方法都可以使用。 但如果我们的程序是用于硬件实现(例如:用于FPGA设计),那么我们就必须保证程序“可综合”(程序的功能可以用硬件电路实现)。 不可综合的HDL语句在软件综合时将被忽略或者报错。 我们应当牢记一点:“所有的HDL描述都可以用于仿真,但不是所有的HDL描述都能用硬件实现。” 2. 用硬件电路设计思想来编写HDL:学好HDL的关键是充分理解HDL语句和硬件电路的关系。 编写HDL,就是在描述一个电路,我们写完一段程序以后,应当对生成的电路有一些大体上的了解, 而不能用纯软件的设计思路来编写硬件描述语言。 要做到这一点,需要我们多实践,多思考,多总结。3.语法掌握贵在精,不

38、在多30%的基本HDL语句就可以完成95%以上的电路设计,很多生僻的语句并不能被所有的综合软件所支持,在程序移植或者更换软件平台时,容易产生兼容性问题,也不利于其他人阅读和修改。建议多用心钻研常用语句,理解这些语句的硬件含义,这比多掌握几个新语法要有用的多。HDL与原理图输入法的关系 HDL和传统的原理图输入方法的关系就好比是高级语言和汇编语言的关系。HDL的可移植性好,使用方便,但效率不如原理图;原理图输入的可控性好,效率高,比较直观,但设计大规模CPLD/FPGA时显得很烦琐,移植性差。在真正的PLD/FPGA设计中,通常建议采用原理图和HDL结合的方法来设计,适合用原理图的地方就用原理图

39、,适合用HDL的地方就用HDL,并没有强制的规定。在最短的时间内,用自己最熟悉的工具设计出高效,稳定,符合设计要求的电路才是我们的最终目的。 HDL开发流程用VHDL/VerilogHD语言开发PLD/FPGA的完整流程为:1.文本编辑:用任何文本编辑器都可以进行,也可以用专用的HDL编辑环境。通常VHDL文件保存为.vhd文件,Verilog文件保存为.v文件2.功能仿真:将文件调入HDL仿真软件进行功能仿真,检查逻辑功能是否正确(也叫前仿真,对简单的设计可以跳过这一步,只在布线完成以后,进行时序仿真)3.逻辑综合:将源文件调入逻辑综合软件进行综合,即把语言综合成最简的布尔表达式和信号的连接

40、关系。逻辑综合软件会生成.edf(edif)的EDA工业标准文件。4.布局布线:将.edf文件调入PLD厂家提供的软件中进行布线,即把设计好的逻辑安放到PLD/FPGA内5.时序仿真:需要利用在布局布线中获得的精确参数,用仿真软件验证电路的时序。(也叫后仿真)6.编程下载:确认仿真无误后,将文件下载到芯片中6.在线软件:使用SignalTap等在线调试工具,实时观察芯片的运行情况通常以上过程可以都在PLD/FPGA厂家提供的开发工具(如MAXPLUSII,Foundation,ISE)中完成,但许多集成的PLD开发软件只支持VHDL/Verilog的子集,可能造成少数语法不能编译,如果采用专用

41、HDL工具分开执行,效果会更好,否则这么多出售专用HDL开发工具的公司就没有存在的理由了。VHDL的英文全名是Very-High-Speed Integrated Circuit HardwareDescription Language,诞生于1982年。1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言 。自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。1993年,IEEE对VHDL

42、进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。有专家认为,在新的世纪中,VHDL于Verilog语言将承担起大部分的数字系统设计任务。 VHDL主要用于描述数字系统的结构,行为,功能和接口。除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件

43、,一个电路模块或一个系统)分成外部(或称可是部分,及端口)和内部(或称不可视部分),既涉及实体的内部功能和算法完成部分。在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。应用VHDL进行工程设计的优点是多方面的。(1)与其他的硬件描述语言相比,VHDL具有更强的行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)VHDL丰富的仿真语句和库函数,使得在任何大系统的设计早期就能查验设计系统的功能可

44、行性,随时可对设计进行仿真模拟。(3)VHDL语句的行为描述能力和程序结构决定了他具有支持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。(5)VHDL对设计的描述具有相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。第三节 DE2-115A开发板资源介绍参见DE2_115_User_manual.pdf第四节 QUARTUSII软件设计方法QUART

45、USII的设计流程参考Quartus II_Version chinese_new.pdf文件。首先用图形方式做一个A,B两信号相与,再送给D触发器进行输出的简单设计。通过该设计,了解QUARTUSII的软件流程,特别是仿真的使用。实验一实验项目名称:QUARTUSII软件及状态机设计 实验目的:学习FPGA设计软件 教学基本要求:掌握软件流程,掌握状态机编程实验内容提要:设计一个状态机实验类型:设计型必修或选修:选修使用的主要仪器:PC实验说明:状态机设计是数字电路中使用非常广泛和方便的时序设计工具。由于硬件是并行的触发,相对软件是串行执行,那么让硬件电路按照节拍执行串行操作指令就成为一个问

46、题,这就是状态机的主要功能。相应的,软件指令中的几十条简单顺序执行代码可能需要硬件的几十上百个触发器去实现其功能。所以,软件与硬件的设计思路有相当大的区别。当然,随着FPGA规模的不断扩大,这些问题也越来越容易解决了。我们可以用软件的思路去描述自己的设计,可能最终实现的电路是几十万门级的器件,但是你只要花费几美元就能买到。状态机是数字电路的基础,因此,VHDL的学习也从这个实验开始。实验作业:1,请对照数字逻辑课件第8章的内容及附录代码,学习红绿灯控制器的VHDL语言实现。(实验前进行)2,通过仿真,这段代码实现相应功能时出了什么问题?请修正代码。3,状态机输出分成同步输出和异步输出,状态机异

47、步输出直接用状态机的某个状态进行组合逻辑运算来得到一个输出,同步输出是在该状态的时钟上跳沿控制输出变化。请问同步输出和异步输出利弊各在哪里?4,如果不使用专门的状态机,如何完成该设计?请尝试实现编写相应的代码并仿真。不用状态机利弊何在?5,(选作)可以更改设计要求,设计更复杂状态下的红绿灯控制器。实验二实验项目名称:数字钟设计 实验目的:掌握FPGA语言设计方法 教学基本要求:学习基本的VHDL语言结构和设计实验内容提要:使用VHDL设计一个数字钟实验类型:设计性必修或选修:选修使用的主要仪器:PC、DE2-115开发板实验说明:数字钟是一个实用而简单的独立设计,但是根据不同的做法,变化和功能

48、很多,数字钟设计到分频,计数,状态转换,进制转换,和特殊情况处理等。设计应该由易到难,先设计一个简单的数字钟,然后进行功能扩充。这是进行数字系统设计时必须注意的方法,应该从简单和模块开始,不然基础都错了,问题就更不好检查出来。数字钟无论如何变化,都是一个独立芯片自成系统,不需要和其他的智能芯片进行通讯,因此,还是一个非常简单的设计。该设计首先通过软件仿真,然后添加子程序,组成可下载的程序。将程序下载到开发板中,观察数字钟是否正确运行。同时需要学习按键防抖动的基本方法。实验作业:1,采用MSI器件实现一个数字钟,功能自己定义,输出为7段显示数码管。(实验前进行)2,将MSI实现的数字钟用图形输入

49、到QUARTUS软件中,通过仿真验证。(实验前进行)3,参考附录代码,比较MSI设计实现和VHDL语言功能描述实现的不同。(实验前进行)4,输出显示时,应将二进制表示的059转化为10进制表示,请做成COMPONENT调用,设计电路。(实验前进行)5,实验板的输入时钟为50M,请将分频器做成COMPONENT加入到设计中,根据附件所示绑定输入输出IO管脚,仿真验证后,下载到实验板上验证。6,(选作)该数字钟没有考虑到年月日的计算,请用VHDL语言设计能进行年月日计数和设置时间的数字钟。第五节 数字系统设计模块分割实验三实验项目名称:外接RAM接口设计 实验目的:掌握外接存储器接口技术 教学基本

50、要求:学习存储器的接口技术实验内容提要:设计一个对片外SRAM进行读写的控制接口实验类型:设计性必修或选修:选修使用的主要仪器:PC、DE2-115开发板实验说明:在数字系统中,一般存在多个芯片,利用不同的特点用于实现不同的功能,一般都包含CPU,FPGA,AD,DA,memory,ASSP(专用标准模块),ASIC等。CPU用于进行智能控制,FPGA进行硬件算法处理和多设备接口,AD进行模数转换,DA进行数模转换,memory存储临时数据。因此,FPGA如何与其他芯片进行通讯是重要的设计内容。数据输入,数据输出,双向通讯,指令传递,地址管理,不同时钟的异步通讯问题等等都需要处理。最基本的ME

51、MORY如SRAM(128KX8bbit静态存储器628128)涉及到其中的输入,输出,双向通讯,地址管理问题,具有很强的代表性。在同步数字系统中更大量用到FIFO,SDRAM等等。其中FIFO使用方便简单,用处很广。在QUARTUSII软件库中,就有各种FPGA片内MEMORY供使用。但是FPGA的片内MEMORY容量太有限,因此外部MEMORY也是经常需要的。因此,本实验让大家学习控制芯片内外的MEMORY,为与其他智能设备的通讯学习打下基础。实验步骤:1, 学习仿真主程序,修改程序至正确无误;2, 将下载程序下载到开发板中,通过PC串口输入数据,验证程序的正确性。实验作业:1,学习628

52、128的DATASHEET,了解sram的结构和存取控制方法。(实验前完成)2,仿真附录的VHDL代码,验证其正确性。请回答以下问题:双向管脚是怎样设计的,怎样仿真的?CLK最高频率与SRMA有什么关系,应该满足什么条件?如何保证MEMORY中的数据被读空后不会再读,写满后不会再写?请尝试写出其代码。3,我们的芯片工作在3.3V的IO电压下,628128工作在5V电压下,数据线,地址线,控制线直接相接会有什么不好?试解决该问题。实验四实验项目名称:IP核调用 实验目的:掌握ALTERA提供的IP核的使用方法 教学基本要求:学习软件IP核的使用方法实验内容提要:将实验三的片外SRAM改由芯片内部

53、的单口同步RAM实现实验类型:设计型必修或选修:选修使用的主要仪器:PC、DE2-115开发板实验说明:芯片内部有大量的参数化库,大量的软件IP核供用户使用。随着芯片的发展,大量的第三方IP核成为与FPGA相辅相成的寄生物。使用IP核,省去了用户进行重复开发的问题,大大缩短了用户产品的设计和推向市场的时间。实验步骤:1, 调用芯片内部的IP核,生成单口同步RAM,然后添加进主程序,并进行仿真验证。2, 将下载程序下载到开发板中,通过PC串口输入数据,验证程序的正确性。实验作业:1,在网上查找免费的IP核(实验前完成)2,片内的RAM与片外的SRAM两种存储器使用方法有何不同?3,芯片内部的三态

54、门是如何实现的?第六节 Signal TapII在线调试技术实验五实验项目名称:Signal TapII在线调试 实验目的:掌握Signal TapII在线调试方法 教学基本要求:学习Signal TapII在线调试方法实验内容提要:将实验四的设计下载到开发板中,添加Signal Tap II 组件。边运行,边观察。实验类型:验证型必修或选修:选修使用的主要仪器:PC、DE2-115开发板实验说明:在线调试技术是FPGA在ISP之后的重要发展,通过该功能,用户可以实时观察芯片的运行情况,而不是象以前一样只是在软件上进行仿真。甚至,一些简单的设计,用户不经过仿真,直接用在线调试技术进行设计的验证,大大缩短了用户解决问题的时间。但是,需要注意的是,在线调试技术,并不能反应芯片的所有工作状态,即,仅通过在线调试进行验证的设计是不可靠的。功能仿真,时序分析,是不可缺少的。实验步骤:3, 对实验四的设计,加入Signal Tap II 组件。4, 将下载程序下载到开发板中,设定触发条件,

温馨提示

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

评论

0/150

提交评论