CPLD/FPGA技术应用项目教程(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-24 20:13:04

点击下载

作者:陈明芳

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

CPLD/FPGA技术应用项目教程

CPLD/FPGA技术应用项目教程试读:

前言

本书是根据国家高职骨干校重点建设专业的课程标准及模式,结合应用CPLD/FPGA技术开发电子产品的工作内容,并针对学生的实践能力和再学习能力的培养而编写的基于工作过程的项目教材。

CPLD/FPGA技术包含了硬件描述语言、EDA工具软件、PLD器件及数字系统设计方法等多方面知识,对高职高专学生来说,要掌握这些知识和技能有较大的难度。因此,本书打破传统的学科式教材的模式,针对学生循序渐进地掌握知识的认知规律,使项目的设计由浅入深地将EDA工具的使用,Verilog HDL语法规则、基本数字逻辑电路和复杂电子系统设计的方法和步骤逐渐融入到各个项目中,每个项目的设计都是按照工作过程进行和实施的,每个项目都以“项目要求—

项目相关知识

项目实施

拓展练习

”结构形式组织,“每个项目重复的只是过程”,每个项目都在已具备的知识基础上增加了新知识、新内容,通过不断地温故知新的方式,让学生能够较容易地完成新任务的学习。

本书由广东科学技术职业学院的陈明芳教师担任主编,负责编制提纲和统稿工作,并编写了模块二的项目1~项目16、模块三的项目1和项目2;广东科学技术职业学院的樊秋月教师编写了模块一的项目1~项目6;广东科学技术职业学院的黄进财教师编写了模块一的项目11~项目14;广东科学技术职业学院的尹海昌教师编写了模块二的项目7~项目11;广东科学技术职业学院的王志辉教师编写了模块一的项目7~项目10;北京凌阳爱普科技有限公司王超工程师编写了模块三的项目3和项目4。

本书在编写过程中参阅了大量同类教材,在此对这些教材的作者表示衷心的感谢!

本书在编写过程中得到了北京凌阳爱普科技有限公司大力支持和帮助,该公司的王超工程师和李哲哲工程师均为本书的撰写提出了宝贵的建议,表示诚挚的谢意。

另外,广东科学技术职业学院应用电子技术专业陈伟传、刘远辉、林景超、郭远强、吴集明和林晓明等同学完成了本书的文字和格式校对工作,在此一并表示感谢。

限于编者的水平,书中难免有不妥之处,恳请读者批评指正。

编者

2014年8月于珠海

模块一 EDA基础设计项目

本模块选取14个常见组合逻辑电路和时序逻辑电路的设计作为项目载体,希望通过这些项目的训练,使学生能够了解EDA技术和硬件描述语言的相关知识,掌握Quartus II软件和ModelSim软件的使用,能够运用Verilog HDL设计简单数字电路或系统。

项目1 3-8译码器设计

项目要求

一、项目任务

◆ 用Quartus II软件和Verilog HDL设计3-8线译码器电路。

◆ 用ModelSim软件对3-8线译码器电路进行调试并仿真。二、实训设备

◆ 装有Windows系统和Quartus II软件的计算机一台。三、学习目标

◆ 了解EDA技术发展历史和发展趋势。

◆ 理解3-8译码器原理。

◆ 初步了解硬件描述语言。

◆ 会用Verilog HDL设计译码器电路。

◆ 掌握Verilog HDL模块结构。

◆ 学会Quartus、ModelSim软件的使用。项目相关知识一、EDA技术与硬件描述语言

1.EDA技术

EDA是电子设计自动化(Electronic Design Automation)的缩写,在20世纪60年代中期从计算机辅助设计(CAD)、计算机辅助制造(CAM)、计算机辅助测试(CAT)和计算机辅助工程(CAE)的概念发展而来的。EDA技术是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。

利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程的计算机上自动处理完成。

从EDA设计技术的发展历史来看,它大致经历了3个重要阶段,即第一代EDA工具的产生和发展、第二代EDA工具的产生和发展及第三代EDA工具的产生和发展。每一代EDA工具都具有其优缺点,后一代EDA工具都是对前一代EDA工具的不断改进和功能扩展,从而不断满足各个历史时期设计人员的开发需要。(1)第一代EDA 工具。随着中小规模集成电路的开发应用,传统的手工制图设计印制电路板和集成电路的方法已经无法满足设计精度和效率的要求,因此工程师们就开始进行二维平面图形的计算机辅助设计,以摆脱复杂机械的版图设计工作。

20世纪70年代,第一代EDA工具产生了,它的典型代表是风靡一时的TANGO软件。在当时的情况下,EDA工具供应商只有很少的几家,开发技术十分不成熟,EDA工具的功能和自动化程度较低,而且产品也几乎全部面向LSI或PCB的设计,应用领域比较单一。一般来说,第一代EDA工具也称为CAD(Computer Aided Design,计算机辅助设计)。(2)第二代EDA工具。随着科学技术的不断进步和发展,许多公司(如Mentor公司、Daisy System公司、Logic System公司)进入了EDA工具的市场,它们开始为设计开发人员提供电路图逻辑工具和逻辑模拟工具的EDA软件,这个时期的EDA工具以数字电路分析工具为代表,主要功能是用来解决电路设计没有完成之前的功能检验问题。

20世纪80年代,第二代EDA工具产生了,它主要以计算机仿真和自动布局布线技术为核心,同时产生了CAM(Computer Aided Manufacturing,计算机辅助制造)、CAT(Computer Aided Test,计算机辅助测试)、CAE(Computer Aided Engineering,计算机辅助工程)等新概念。第二代EDA工具的应用软件主要有数字电路分析、模拟电路分析、印制电路板、现场可编程门阵列的布局布线等,它们以软件工具为核心,即针对产品开发分为设计分析、生产测试等多个独立的软件包,每个软件只能完成其中的一项工作,通过顺序循环完成设计的全过程。

第二代EDA工具的最大缺点是不能进行系统级的仿真和综合,如果在产品发展的后期才发现设计错误,进行修改无疑是十分困难且浪费大量的人力。另外,由于软件开发商的不统一,一个工具的输出作为另外几个工具的输入需要进行界面处理,影响了EDA工具的设计速度。(3)第三代EDA工具。20世纪90年代后期,各大EDA厂商开始推出以高级语言描述、系统级仿真和综合技术为核心技术的第三代EDA工具,目前设计人员使用的EDA工具都属于第三代EDA工具的范畴之内。第三代EDA工具以逻辑综合、硬件行为仿真、参数分析和测试为重点,提供了门类齐全和满足系统设计需要的全部开发工具。例如,描述设计意图的设计输入工具、具有逻辑综合和设计优化能力的设计工具以及验证设计和评估性能的仿真工具。

第三代EDA工具的主要特征是自动化程度大大提高,设计人员只需要在前期进行较少的设置便可以由计算机完成整个设计,人工干预大大减少,设计效率大大提高。第三代EDA系统主要以并行设计工程的方式和系统目标设计方法为支持。系统设计的核心是可编程逻辑器件的设计。由于可编程逻辑器件自身的可重复编写的特性,使电子设计的灵活性和工作效率大大提高。

随着科学技术的不断发展,EDA设计技术的发展趋势主要体现在以下几个方面。(1)EDA工具的PC平台化。目前,可编程逻辑器件和EDA技术的结合为电子系统的设计带来了极大的方便,它们已经成为设计人员进行系统设计的主要工具。在过去相当长的一段时间内,EDA工具软件价格十分昂贵,它的操作平台是工作站和UNIX操作系统,硬件环境要求高,因此大大阻碍了EDA工具的迅速普及。

最近十年内,经过EDA厂商和科技研发人员的共同努力和推广,EDA工具的PC平台化进展速度十分显著,如Xilinx公司的Foundation和ISE、Altera公司的MAX+PlusⅡ和QuartusⅡ都是可以在Windows或者Windows NT操作系统中运行的EDA工具。这些基于PC平台的EDA工具包含有逻辑设计、仿真、综合、优化等工具,而且价格比较便宜,目前已经得到了十分广泛的应用。

可以看出,随着PC性能的不断提高,基于PC平台的EDA工具的软件功能将会更加完善和齐全。因此,EDA工具的PC平台化是EDA工具迅速普及的重要前提,同样它也是EDA设计技术发展的必然趋势。(2)EDA设计技术朝着ESDA和CE方向发展。对于现有的各种EDA工具来说,各种EDA工具通常是用来进行某一方面的系统设计,如Protel工具主要是用来进行印制电路板的设计操作。随着科学技术的发展以及缩短电子系统设计周期的要求,设计人员往往希望各种不同功能的EDA工具能够在统一的数据库或者管理框架下进行工作,因此提出了ESDA和CE的概念。

ESDA(Electronic System Design Automation)即电子系统设计自动化,它强调建立从系统到电路的统一描述语言,同时考虑仿真、综合与测试,把定时、驱动能力、电磁兼容特性、机械特性、热特性等约束条件加入到设计综合中,然后进行统一的设计描述和优化操作,从而提高系统设计的一次成功率。ESDA要求系统级设计人员改变优先考虑具体实现的传统思路,而是集中精力进行系统的总体设计、综合方案比较和优化设计。可见,这将会是一种全新的设计思路。

CE(Concurrent Engineering)即并行设计工程,它要求EDA工具从管理层次上把与系统设计有关的工具、任务、时间、工艺等进行合理安排,设计人员使用统一的集成化设计环境,各个设计小组能够共享与设计相关的数据库和其他资源,这样可以同步地进行系统的设计工作。可以看出,CE改变了在系统设计中过分依赖专业分工和设计人员专业知识的传统设计方法。(3)EDA工具应该具有编译选择能力。对于EDA工具开发厂商来说,除了简单加快软件的编译速度外,EDA设计工具还应该能够减少编译时间,而不需要考虑其编译处理的能力如何。在一个具体的设计过程中,最耗费时间的应该是布局和布线过程,如果能够减少布局和布线过程的时间,那么将会大大提高系统设计的效率。随着技术的不断发展,设计人员希望能够实现一种编译选择的方案,即EDA工具应该具有只对上次编译后发生变化的那部分设计进行布局和布线操作的能力,即增量编译能力。可以看出,具有增量编译能力的EDA工具将是未来EDA设计技术的一个发展方向,它将会大大提高设计效率,从而缩短产品开发周期,进而提高产品的市场竞争力。

2.硬件描述语言

硬件描述语言HDL(Hardware Description Language)是一种用形式化方法来描述数字电路和设计数字逻辑系统的语言。它可以使数字逻辑电路设计者利用这种语言来描述自己的设计思想,然后利用电子设计自动化(在下面简称为EDA)工具进行仿真,再自动综合到门级电路,再用ASIC或FPGA实现其功能。目前,这种称为高层次设计(High-Level-Design)的方法已被广泛采用。据统计,在美国硅谷目前约有90%以上的ASIC和FPGA已釆用硬件描述语言方法进行设计。

硬件描述语言的发展至今已有二十多年的历史,并成功地应用于设计的各个阶段:仿真、验证、综合等。到20世纪80年代时,已出现了上百种硬件描述语言,它们对设计自动化起到了极大的促进和推动作用。但是,这些语言一般各自面向特定的设计领域与层次,而且众多的语言使用户无所适从,因此急需一种面向设计的多领域、多层次、并得到普遍认同的标准硬件描述语言。进入20世纪80年代后期,硬件描述语言向着标准化的方向发展。最终,VHDL和Verilog HDL语言适应了这种趋势的要求,先后成为IEEE标准。把硬件描述语言用于自动综合还只有短短的六七年历史。最近三四年来,用综合工具把可综合风格的HDL模块自动转换为电路发展非常迅速,在美国已成为设计数字电路的主流。本书主要介绍如何来编写可综合风格的 Verilog HDL模块,如何借助于Verilog语言对所设计的复杂电路进行全面可靠的测试。

Verilog是由Gateway设计自动化公司的工程师于1983年末创立的。当时Gateway设计自动化公司还叫做自动集成设计系统(Automated Integrated Design Systems),1985年公司将名字改成了前者。该公司的菲尔·莫比(Phil Moorby)完成了Verilog的主要设计工作。1990年,Gateway设计自动化被Cadence公司收购。

1990年初,开放Verilog国际(Open Verilog International,OVI)组织(即现在的Accellera)成立,Verilog面向公有领域开放。1992年,该组织寻求将Verilog纳入电气电子工程师学会标准。最终,Verilog成为了电气电子工程师学会1364—1995标准,即通常所说的Verilog-95。

设计人员在使用这个版本的Verilog的过程中发现了一些可改进之处。为了解决用户在使用此版本Verilog过程中反映的问题,Verilog进行了修正和扩展,这部分内容后来再次被提交给电气电子工程师学会。这个扩展后的版本后来成为了电气电子工程师学会1364—2001标准,即通常所说的Verilog-2001。Verilog-2001是对Verilog-95的一个重大改进版本,它具备一些新的实用功能,如敏感列表、多维数组、生成语句块、命名端口连接等。目前,Verilog-2001是Verilog的最主流版本,被大多数商业电子设计自动化软件包支持。

2005年,Verilog再次进行了更新,即电气电子工程师学会1364—2005标准。该版本只是对上一版本的细微修正。这个版本还包括了一个相对独立的新部分,即Verilog-AMS。这个扩展使得传统的Verilog可以对集成的模拟和混合信号系统进行建模。容易与电气电子工程师学会1364—2005标准混淆的是加强硬件验证语言特性的SystemVerilog(电气电子工程师学会1800—2005标准),它是Verilog-2005的一个超集,它是硬件描述语言、硬件验证语言(针对验证的需求,特别加强了面向对象特性)的一个集成。

2009年,IEEE 1364—2005和IEEE 1800—2005两个部分合并为IEEE1800—2009,成为了一个新的、统一的SystemVerilog硬件描述验证语言(Hardware Description and Verification Language,HDVL)。二、Verilog HDL模块结构

使用Verilog描述硬件的基本设计单元是模块(Module)。构建复杂的电子电路,主要是通过模块的相互连接调用来实现的。模块被包含在关键字module、endmodule之内。Verilog中的模块类似C语言中的函数,它能够提供输入、输出端口,可以调用其他模块,也可以被其他模块调用。模块中可以包括组合逻辑部分、过程时序部分。Verilog HDL对模块的端口和内容有如下格式要求:(1)端口定义。

格式:

例如:

decode为模块名,后面括号内为输入和输出端。(2)I/O说明。

格式

例如:

必须具体说明所有端口的输入和输出类型。(3)内部信号说明。在模块内用到的和与端口有关的wire和reg变量的声明。

例如:

reg定义寄存器型变量,一般输出端口都要重复此定义。(4)功能定义。模块中最重要的部分是逻辑功能定义部分。有三种方法可在模块中产生逻辑,下面的实例采用“always”块的方式进行功能定义。

例如:

always@(incode)表示只要incode变化就执行下面的语句,注意always块以begin开始,end结束。三、译码器原理

1.译码器简介

译码电路有二进制译码器、二—十进制译码器和显示译码器三类。3-8译码器就属于二进制译码器,其输入的3位二进制代码共有8种状态,这8种状态分别输出线上的高低电平表示。二进制译码器一般具有n个输入端、2的n次幂个输出端。在使能输入端为有效电平时,对应每一组输入代码仅一个输出端为有效电平,其余输出端为无效电平(与有效电平相反)。有效电平可以是高电平(称为高电平译码),也可以是低电平(称为低电平译码)。

2.3-8译码器真值表

3-8译码器真值表如表1.1所示。表1.1 3-8译码器真值表四、源码

decode_1模块实现3-8线译码器功能。上面为本实验的Verilog HDL代码,Verilog的基本设计单元是模块。一个模块是由两部分组成的,一部分用于描述接口,另一部分用于描述逻辑功能。

模块的端口声明了模块的输入/输出口,module和endmodule间就是模块的内容,包括I/O说明,内部信号声明和功能定义,decode为模块名,后面括号内为输入/输出端,下面要具体说明哪个为输入,哪个为输出,reg定义寄存器型变量,一般输出端口都要重复此定义,always@(incode)表示只要incode变化就执行下面的语句,注意always块以begin开始,end结束。

其间用到case语句,用来处理多分支选择。case括号内的表达式为控制表达式,分支项的表达式为分支表达式。当控制表达式的值与分支表达式的值相等时,就执行分支语句后面的语句。项目实施一、编辑调试模块代码

1.启动QuartusII开发环境

双击桌面“Quartus II”软件图标,启动Quartus II开发环境,进入如图1.1所示的Quartus II软件界面。图1.1 Quartus II软件界面

2.新建工程

Quartus II软件以工程方式管理用户设计和系统生成的所有文件,因此每个项目都需要新建一个独立的工程,在这个工程里,包含此设计过程中生成的所有文件。新建工程需要设置的信息主要指定工程目录和工程名、顶层实体名、目标芯片名、第三方EDA工具等。方法如下:(1)打开“New Project Wizard”对话框。在Quartus II软件主界面执行“File”→“New Project Wizard”命令,弹出如图1.2所示的“New Project Wizard”对话框。(2)指定工程目录、工程名和顶层实体名。在图1.2中单击“Next”按钮,弹出如图1.3所示的“指定工程目录、工程名和顶层实体名”对话框,在该对话框中设置工程文件保存的文件夹,工程名和顶层实体名。图1.2 新建工程向导图1.3“指定工程目录、工程名和顶层实体名”对话框

①第一栏为工程目录,想把自己的工程放在哪,就选择相应目录。

②第二栏为工程名,记住工程名,后面程序中会用到。

③第三栏默认实体名与工程名一样。

注意:每个工程都要新建一个文件夹作为工程目录,以避免与其他工程的文件混淆;工程目录路径避免出现中文和空格。(3)添加已有设计文件。在图1.3中单击“Next”按钮,弹出如图1.4所示的“添加设计文件”对话框。如果要添加已有的设计文件,可以通过单击“Add”或“Add all”按钮加入到工程里面。(4)选定目标芯片。在图1.4中单击“Next”按钮,弹出如图1.5所示的“指定目标芯片”对话框。图1.4“添加设计文件”对话框图1.5 指定目标芯片

在图1.5中“Family:”栏的下拉菜单中选择“Cyclone II”选项,在“Pin count:”栏的下拉菜单中选择“672”选项,在“Available devices:”栏中单击“EP2C35F672C8”选项,使该项处于蓝色选中状态,完成指定目标芯片。

模块一的项目不需要指定目标芯片,可直接单击“Next”按钮进入下一步设置。(5)设置EDA 工具。在图1.5中单击“Next”按钮,弹出如图1.6所示的“EDA工具设置”对话框。本书所有项目采用ModelSim软件作为调试和仿真工具,这里不做设置,单击“Finish”按钮完成工程建立。图1.6“EDA工具设置”对话框

3.编辑、编译和调试代码(1)新建Verilog HDL文件。执行“File”→“New”命令,弹出如图1.7所示的“New”对话框。

在如图1.7所示的对话框中选择“Design Files”→“Verilog HDL File”,然后单击“OK”按钮完成新建Verilog HDL文件,进入如图1.8所示的“代码编辑”窗口。图1.7“New”对话框图1.8“代码编辑”窗口(2)输入代码。在如图1.8所示的空白区域输入3-8译码器电路源代码,如图1.9所示。(3)保存文件。执行“File”→“Save”命令,弹出如图1.10所示的“保存文件”对话框,在该对话框中设置好文件名(建议与模块名一致并保存在工程文件夹根目录下面)后,单击“Save”按钮完成文件保存。图1.9 输入代码图1.10 保存文件(4)编译。执行“Processing”→“Start Compilation”命令或单击图标开始编译。如果编译报错,可根据错误提示重新检查并修改程序。例如,如图1.11所示的“顶层实体未定义”编译错误是因为模块名“decode_3”与顶层实体名“decode_3_8”不一致,只需把模块名改为“decode_3_8”重新编译即可。

编译成功后弹出如图1.12所示的提示信息,单击“OK”按钮完成编译。图1.11“顶层实体未定义”类型错误图1.12 编译成功二、创建和导入原理图

含有一个或多个Verilog HDL模块的“.v”文件或者是“.bdf”文件可以创建为一个具有相同逻辑功能的原理图模块,同时系统自动生成一个后缀名是“.bsf”原理图模块文件,便于其他原理图文件引用这些定义好的模块电路。在平常的学习或设计中,把一些常见逻辑电路,如分频器、消抖电路和显示电路等,创建成原理图模块,就可以把这些模块相对应“.v”和“.bsf”文件添加到新建工程项目中,新的工程设计中就可以引用这些模块电路了。这种设计方法在模块三会详细说明,这里只介绍创建和导入原理图的方法。

这一步对于每个项目设计来说并不是必须的,这里主要目的是把代码以原理图的形式直观地表现出来,后续的每个项目设计都附有原理图。

1.创建原理图

如图1.13所示,在“Project Navigator”面板的“Files”目录下,选中“decode_3_8.v”文件,单击鼠标右键,在弹出的快捷菜单中选择“Creat Symbol Files for Current File”项,完成原理图的创建。创建成功后弹出如图1.14所示的提示信息。图1.13 创建原理图图1.14 原理图创建成功提示信息

2.导入原理图文件

原理图已经创建成功,现在需要新建一个文件承载原理图,即需要新建一个原理图文件。执行“File”→“New”命令,弹出如图1.15所示的“New”对话框。

在如图1.15所示的对话框中选择“Design Files”→“Block Diagram/Schematic File”,然后单击“OK”按钮完成新建原理图文件,进入如图1.16所示的“原理图编辑”窗口。图1.15“New”对话框图1.16“原理图编辑”窗口

在图1.16所示的原理图编辑区空白处双击,弹出如图1.17所示的“调入原理图”对话框,在“Libraries”栏选中“Project”→“decode_3_8”,单击“OK”按钮,将“decode_3_8”原理图导入原理图文件。

导入原理图后的效果如图1.18所示。该原理图可以比较直观地模拟电路的输入/输出特性。图1.17“调入原理图”对话框图1.18 导入原理图文件三、仿真

ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,编译仿真速度快,编译的代码与平台无关,为用户加快调错提供强有力的手段。本教材首选ModelSim为仿真软件,下面介绍应用ModelSim软件调试和仿真3-8线译码器电路的方法。

1.启动ModelSim软件

双击桌面上的“ModelSim”软件图标,启动ModelSim仿真软件,软件主界面如图1.19所示。图1.19 ModelSim软件界面

2.建立工程

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载