基于FPGA的拔河游戏机设计Word文档下载推荐.docx
《基于FPGA的拔河游戏机设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于FPGA的拔河游戏机设计Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
![基于FPGA的拔河游戏机设计Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2023-1/29/85d3b8f5-174f-4eed-a566-87853c8f1a20/85d3b8f5-174f-4eed-a566-87853c8f1a201.gif)
EDA技术是现代电子信息工程领域的一门新技术,同时也是现代电子设计技术和电子制造技术的核心。
EDA技术是依赖功能强大的计算机,在EDA工具软件平台上开发出来的一整套电子系统设计的软硬件工具,并提供了先进的电子系统设计方法。
近三十年来,EDA技术的发展大致经历了三个阶段:
CAD阶段(20世纪70年代~80年代中期)
这一阶段分别研制了一些单独的软件工具,人们开始利用计算机取代手工劳动,辅助进行集成电路版图编辑,PCB布局布线等工作。
CAE阶段(20世纪80年代中期~90年代初)
这一阶段在集成电路与电子系统设计方法学以及设计工具集成化方面取得了很多成果。
CPLD的推广与FPGA的出现,特别是各种硬件描述语言的出现、应用和标准化方面的重大进步为EDA的发展奠定了基础。
EDA阶段(20世纪90年代至今)
这一阶段硬件描述语言的标准化得到进一步确立,从而出现了以高级语言描述、系统仿真和综合技术为特征的第三代EDA技术。
它大大提高了设计效率,使设计者从摆脱了大量的辅助性工作,将精力集中于创造性的方案与概念的理解上。
未来EDA技术将向深度和广度两个方面发展,有专家认为,21世纪将是EDA技术快速发展的时期,并且EDA技术将是对21世纪产生重大影响的十大技术之一。
一般情况下,利用EDA技术进行电子系统设计,最终目标是完成专用集成电路ASIC的设计和实现。
基于可编程器件EDA技术主要包括如下四个要素:
(一)大规模可编程器件
可编程逻辑器件(PLD,ProgrammableLogicDevice)即部分功能可由软件程序更改的器件。
它是当前数字系统设计的主要硬件基础,是硬件编程语言VHDL的物理实现工具。
可编程逻辑器件使用计算机,利用软件,硬件对器件进行系列编程,然后通过程序指挥芯片配置连线和编程器件,把应连接的元件,单元连接起来。
根据用户编写的不同程序就可以制造出有不同电路功能的器件。
并在设计阶段进行仿真(Emulation)使得微电子设计实现了早期集成和软硬件联合验证。
CPLD实际是一个子系统部件,具有可编程性和实现方案容易改动的特点。
它具有更高的集成度,它允许更多的输入信号,乘积和宏单元。
CPLD内含多个I/O块和逻辑块。
这些逻辑块可以使用可编程内连线的布线来实现相互间联系。
每一个逻辑块就相当于一片220V10和236V18的PLD。
有乘积阵列,乘积项分配机构和宏单元。
I/O块通常具有逻辑功能和较强的I/O控制功能。
目前大部分CPLD器件还具有兼容于IEEE1149.1(JTAG)标准测试激励端和边界扫描能力,以及兼容于PCI接口协议的输入输出缓冲器。
(二)硬件描述语言
硬件描述语言(HDL)是一种用文本形式来描述和设计电路的语言,它可以使电子系统设计者利用这种语言来描述自己的设计思想和电子系统的行为并建立模型,然后利用EDA工具进行仿真,自动综合到门级电路,可用ASIC或CPLD/FPGA实现其功能。
目前其中最有代表性的是美国国防部开发VHDL(Very-High-SpeedIntegratedCircuitHDL),Verilog公司开发的VerilogHDL。
HDL(IEEE1164)和VerilogHDL(IEEE1364)被IEEE列为工业标准,被众多EDA工具所支持,在电子工程领域,已成为事实上通用的HDL。
将担负几乎全部的数字系统设计任务。
VHDL主要用于描述数字系统的结构,行为,功能和接口。
VHDL语言形式及描述风格与句法类似于一般的计算机高级语言。
VHDL的程序结构特点是,将一项工程设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(即端口)或内部。
在对一个设计实体定义了外部界面后,一旦其内部开发完成,其它设计就可以直接调用这个实体。
这种设计实体分成内外部分的概念就是VHDL系统设计的基本点。
(三)软件开发工具
MAX+PLUSII是Altera公司的第三代CPLD开发工具软件,它集成了可编程逻辑器件的设计环境。
它可以在多种平台上运行提供了灵活和高效的界面。
设计者无需精通器件内部的复杂结构,只需用自己熟悉的设计输入工具(原理图,波形图或硬件描述语言等)进行设计输入。
MAX+PLUSII将这些设计软件换成目标结构所要求的格式,从而使设计者能够轻松的掌握和使用MAX+PLUSII软件。
MAX+PLUSII具有以下特点:
①开放的接口。
②与结构无关(指VHDL描述逻辑综合前与结构无关)。
③多平台。
④完全集成化。
⑤多种设计库。
⑥模块化工具。
⑦硬件描述语言(HDL)。
⑧开放核的特点。
⑨Megacore功能。
(四)实验开发工具
利用EDA技术进行电子系统设计的下载与硬件验证工具,主要包括:
①实验或开发所需的各类信号模块,包括时钟、脉冲、高低电平等;
②通用数字式和扫描驱动类接口,包括各类输入显示或指示模块;
③模拟器件及接口,包括模拟信号的放大,比较及A/D转换模块;
④监控程序模块;
⑤目标芯片适配座以及FPGA/CPLD目标芯片和编程下载电路。
当前,EDA的主要应用方向为微控制器,ASIC和DSP等方面。
(五)EDA的发展前景
二十世纪后半期,随着集成电路和计算机技术的飞速发展,数字系统也得到了飞速发展,其实现方法经历了由分立元件,SSI,MSI到LSI,VLSI以及UVLSI的过程。
同时,为了提高系统的可靠性与通用性,微处理器和专用集成电路(ASIC)逐渐取代了通用全硬件LSI电路,而在这二者中,ASIC以其体积小,重量轻,功耗低,速度快,成本低,保密性好而脱颖而出,总的说来,ASIC的制作可粗略地分为掩膜方法和现场可编程方法两大类。
目前,业界大量可编程逻辑器件(PLD),尤其是现场可编程器件(FPLD)被大量的应用在ASIC的制作中。
在可编程集成电路的开发过程中,电子设计自动化(EDA)技术应运而生。
EDA技术的出现,不仅为了电子系统的设计带来了一场革命性的变化,从某种角度来说,也成为其发展的必然。
EDA代表了当今电子设计技术的最新发展方向,它的基本特征是:
设计人员按照“自顶向下”的设计方法,对整个系统进行方案设计和功能划分,系统的关键电路用一片或几片专用集成电路(ASIC)实现,然后采用硬件描述语言(HDL)完成系统行为级设计,最后通过综合器和适配器生成最终的目标器件,这样的设计方法被称为高层次设计(High-Lever-Design)方法[1]。
10多年前,电子设计的基本思路还是选用标准集成电路“自底向上”地构造出一个新的系统,这样的设计方法就如同一砖一瓦建造金字塔,不仅效率低、成本高而且容易出错。
自顶向下法是一种从系统抽象定义到具体电路实现,从高层到低层直至具体逻辑电路,逐步由粗到细的分层次、分模块的设计方法。
当今,自顶向下的设计方法已经是EDA技术的首选设计方法。
应用VHDL进行自顶向下的设计方法,利用功能分割手段将设计由上到下进行层次化和模块化分割,也就是使用VHDL模型在所有综合级别上对硬件设计进行说明、建模和仿真测试。
其分割过程为:
系统功能→功能块→逻辑块→具体电路。
这种设计方法是逐步逼近具体电路。
采用这种设计方法将系统分割为不同的功能模块后,每个模块可以用不同的工作小组来完成,这样就提高了产品开发的效率。
自顶向下的设计流程如图1.1所示:
图1.1自顶向下的设计流程图
未来EDA技术将向深度和广度两个方面发展,有专家认为,21世纪将是EDA技术快速发展的时期,并且EDA技术将是对21世纪产生重大影响的十大技术之一[2-3]。
二、VHDL的简介
在传统的硬件电路设计中,主要的设计文件是电路原理图,而采用硬件描述语言(HardwareDescribeLanguage,HDL)设计系统硬件电路时主要使HDL编写源程序。
所谓硬件描述语言,是一种用形式化方法来描述数字电路和设计数字逻辑系统的计算机语言。
它可以使数字逻辑电路设计者用软件编程的方式来描述电子系统的逻辑功能、电路结构和连接形式,利用这种语言来描述自己的设计思想,然后利用EDA工具进行仿真,自动综合到门级电路,再用ASIC或CPLD/FPGA实现其功能。
目前这种称之为高层设计的方法已被广泛采用。
据统计,在美国硅谷目前约有80%的ASIC和FPGA/CPLD使采用HDL方法设计的。
硬件描述语言的发展至今已有二十多年的历史,并成功地应用于设计的各个阶段:
建模、仿真、验证和综合等。
到20世纪80年代时,已出现了上百种硬件描述语言,如ABEL、HDL、AHDL,它们对设计自动化曾起到了极大的促进和推动作用,与传统的门级描述方式相比,它更适合大规模系统的设计。
但是,这些语言由不同的EDA厂商开发,互不兼容,一般各自面向特定的设计领域与层次,不支持多层次设计,层次间翻译工作要由人工完成,而且众多的语言使用户无所适从。
因此急需一种面向设计的多领域、多层次、并得到普遍认同的标准硬件描述语言。
进入80年代后期,硬件描述语言向着标准化的方向发展。
1985年美国国防部正式推出了高速集成电路硬件描述语言VHDL(Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage),VHDL和VerilogHDL语言适应了这种趋势的要求,先后成为IEEE标准[4-5]。
VHDL诞生于1982年。
1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。
自IEEE公布了VHDL的标准版本,IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以和VHDL接口。
此后VHDL在电子设计领域得到了广泛的接受,并逐步取代了原有的非标准的硬件描述语言。
1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,公布了新版本的VHDL,即IEEE标准的1076-1993版本,(简称93版)。
现在,VHDL和Verilog作为IEEE的工业标准硬件描述语言,又得到众多EDA公司的支持,在电子工程领域,已成为事实上的通用硬件描述语言。
有专家认为,在新的世纪中,VHDL与Verilog语言将承担起大部分的数字系统设计任务[6]。
VHDL语言可读性强,易于修改和发现错误,覆盖面广,描述能力强,能支持硬件的设计,验证,综合和测试,包括系统行为级、寄存器传输级和逻辑门级多个设计层次,支持结构、数据流和行为三种描述形式的混合描述,因此VHDL几乎覆盖了以往各种硬件描述语言的功能,整个自顶向下或自底向上的电路设计过程都可以用VHDL来完成[7]。
VHDL还具有以下优点:
(1)VHDL的宽范围描述能力使它成为高层次设计的核心,将设计人员的工作重心提高到了系统功能的实现与调试,而花较少的精力于物理实现。
(2)VHDL可以用简洁明确的代码描述来进行复杂控制逻辑的设计,灵活且方便,而且也便于设计结果的交流、保存和重用。
(3)VHDL的设计不依赖于特定的器件,方便了工艺的转换。
(4)VHDL是一个标准语言,为众多的EDA厂商支持,因此移植性好[8-10]。
三、Max+PlusII的简介
MAX+PLUSII是Altera公司在Windows环境下开发的可编程逻辑设计软件平台。
它可以在多种平台上运行,提供了灵活和高效的界面。
MAX+PLUSII将这些设计软件换成目标结构所要求的格式,从而使设计者能够轻松的掌握和使用MAX+PLUSII软件。
MAX+PLUSII具有以下特点:
②与结构无关(指VHDL描述逻辑综合前与结构无关)③多平台④完全集成化⑤多种设计库⑥模块化工具⑦硬件描述语言(HDL)⑧开放核的特点,允许设计人员添加自己的宏函数⑨Megacore功能(Megacore是为复杂的系统及功能提供的、经过校验的HDL网表文件,能使器件实现最优化设计。
MAX+plusⅡ软件的设计流程如图1.2所示。
设计输入有四种方式:
原理图输入、文本输入、EDIF网表输入及波形输入方式。
文本输入是采用硬件描述语言程序作为输入,建立VHDL行为模型。
编译是主要完成器件的选择及适配、逻辑的综合及器件的装入、延时信息的提取。
设计仿真指只需通过计算机就能对所设计的数字系统从各种不同层次的系统性能特点完成一系列准确的测试与仿真操作。
器件编程是对设计进行下载即将编程数据放到具体的可编程器件中,以便进行硬件调试和验证。
图1.2软件的设计流程图
第二章设计原理
一、组合逻辑电路的设计方法
所谓组合逻辑电路就是在任何时刻,输出状态只决定于同一时刻各输入状态的组合,而与先前的状态无关的逻辑电路。
在VHDL设计中,组合逻辑电路通常写成逻辑图(卡诺图),然后转化成真值表。
通过真值表来控制输入输出状态。
(一)组合逻辑电路的分类
根据数字电路中输入输出的函数关系,组合逻辑电路可以由逻辑代数和卡诺图(如图2.1)来分析和设计。
组合逻辑电路有以下特点:
(1)输入,输出之间没有反馈延迟通路。
(2)电路中不含记忆单元。
图2.1卡诺图
(二)组合逻辑电路的设计方法与缺点
组合逻辑电路的设计,通常以电路简单,所用器件最少为目标。
在前面所介绍的用代数法和卡诺图法来化简逻辑函数,就是为了获得最简的形式,以便能用最少的门电路来组成逻辑电路。
但是,由于在设计中普遍采用中,小规模集成电路产品,因此应根据具体情况,尽可能减少所用的器件数目和种类,这样可以组装好的电路结构紧凑,达到工作可靠而且经济的目的。
组合逻辑电路的设计步骤是:
(1)根据对电路逻辑功能的要求,列出真值表;
(2)由真值表写出逻辑表达式;
(3)简化和变换逻辑表达式,从而画出逻辑图;
(4)编写组合逻辑电路设计程序。
这种设计方法的缺点是:
实际上,从信号输入到稳定输出需要一定的时间。
由于从输入到输出的过程中,不同通路上门的级数不同或者门电路平均延迟时间的差异,使信号从输入经不同通路传输到输入级的时间不同。
由于这个原因,可能会使逻辑电路产生错误的输出。
通常把这种现象称为竞争冒险。
而我们在这个设计中利用VHDL来编程,就可以惊醒系统行为描述,可以从逻辑行为上对模块进行描述和设计,大大降低了设计难度;
描述的设计思想,电路结构和逻辑关系清晰明了,便于存档,查看,维护和修改,支持大规模设计的分解和已有设计的再利用。
这也是VHDL之所以流行和我们选择它来进行设计的原因。
(三)组合逻辑电路的VHDL设计方法
现代数字系统的设计采用基于EDA(ElectronicDesignAutomation)技术的自顶向下(TopToDown)的设计方法,即从整个系统的功能出发,自顶向下将系统划分成若干功能模块或子系统。
一般的数字系统(或子系统)可以划分为受控器(又称数据子系统)和控制器(又称控制子系统)。
受控器主要完成数据的采集、存储、运算处理和传输,在控制器发出的控制信号下进行,同时又反馈信号给控制器。
控制器是执行算法的核心,是我们设计工作的首要任务,其控制功能可以用逻辑电路来实现,在EDA技术平台上,用VHDL设计,经过寄存器传输级(RTL)模拟验证后综合形成门级网表后,再进行门级仿真。
用VHDL描述真值表一般需要两个进程:
一个是时钟进程,控制状态机在时钟有效沿根据条件得到下一个状态并进行状态迁移;
另一个进程是组合进程,不受时钟控制,由输出相关的信号触发,该进程根据触发信号决定组合逻辑电路的输出状态值。
有时也采用三个进程模型来描述真值表,把时钟进程中形成下一个状态的功能分离出来,单独作为一个组合进程。
该模型中,状态的迁移比2个进程的模型延迟一个节拍,而且最后综合出来的电路也稍大,但其优点是在描述复杂真值表时,3个进程模型的可读性好,修改比较方便。
在VHDL设计中,可以不需要进行繁琐的时钟脉冲产生等步骤,可以简便地定义状态变量,将状态描述成进程,这个进程可以传出信号来控制其他进程,从而实现各种功能。
应用VHDL进行逻辑电路设计的具体步骤如下:
(1)根据系统要求确定状态数量输入件和各状态输出信号的,并画出画出卡诺图;
(2)化简卡诺图化简成为最简单的逻辑关系
(3)按照逻辑关系编写真值表的VHDL设计程序;
(4)利用EDA工具对组合逻辑电路的功能进行仿真验证。
在VHDL语言中,组合逻辑电路的真值表通常用枚举型数据进行定义,每个状态均可表达为CASE_WHEN语句结构中的一条CASE语句,其输出组合逻辑可以用并行信号赋值语句或独立的进程描述,生成的硬件电路较简单,也就是节省硬件资源。
无论与基于VHDL的其他设计方案相比,还是与可完成相同功能的CPU相比,组合逻辑电路都有难以超越的优越性,主要表现在以下几个方面:
(1)控制灵活方便;
(2)结构模式相对简单,设计方案相对固定,以及可定义符号化枚举类型的状态,对发挥VHDL综合器强大的优化功能提供了有利条件;
(3)组合逻辑电路容易构成性能良好的逻辑模块,不受前一状态的影响
(4)组合逻辑电路系统由纯硬件电路构成,它的运行不依赖软件指令的逐条执行,而且在它的设计中可使用完整的容错技术,所以组合逻辑电路具有极高的可靠性。
编程完成后将程序下载到CPLD芯片上,就完成了数字系统的设计[14-15]。
二、FPGA的介紹
目前以硬件描述语言(Verilog或VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至FPGA上进行测试,是现代IC设计验证的技术主流。
这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。
在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flip-flop)或者其他更加完整的记忆块。
系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。
一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。
FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能。
但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。
厂商也可能会提供便宜的但是编辑能力差的FPGA。
因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上。
另外一种方法是用CPLD(复杂可编程逻辑器件备)。
(一)产品设计
把相对成熟的技术应用到某些特定领域如通讯,视频,信息处理等等开发出满足行业需要并能被行业客户接受的产品这方面主要是FPGA技术和专业技术的结合问题,另外还有就是与专业客户的界面问题产品设计还包括专业工具类产品及民用产品,前者重点在性能,后者对价格敏感产品设计以实现产品功能为主要目的,FPGA技术是一个实现手段在这个领域,FPGA因为具备接口,控制,功能IP,内嵌CPU等特点有条件实现一个构造简单,固化程度高,功能全面的系统产品设计将是FPGA技术应用最广大的市场,具有极大的爆发性的需求空间产品设计对技术人员的要求比较高,路途也比较漫长不过现在整个行业正处在组建"首发团队"的状态,只要加入,前途光明产品设计是一种职业发展方向定位,不是简单的爱好就能做到的!
产品设计领域会造就大量的企业和企业家,是一个近期的发展热点和机遇。
(二)FPGA在电路设计中的应用
连接逻辑,控制逻辑是FPGA早期发挥作用比较大的领域也是FPGA应用的基石.事实上在电路设计中应用FPGA的难度还是比较大的这要求开发者要具备相应的硬件知识(电路知识)和软件应用能力(开发工具)这方面的人才总是紧缺的,往往都从事新技术,新产品的开发成功的产品将变成市场主流基础产品供产品设计者应用在不远的将来,通用和专用IP的设计将成为一个热门行业!
搞电路设计的前提是必须要具备一定的硬件知识.在这个层面,干重于学,当然,快速入门是很重要的,越好的位子越不等人电路开发是黄金饭碗.
(三)系统级应用
系统级的应用是FPGA与传统的计算机技术结合,实现一种FPGA版的计算机系统如用Xilinx V-4,V-5系列的FPGA,实现内嵌POWER PC CPU,然后再配合各种外围功能,实现一个基本环境,在这个平台上跑LINUX等系统这个系统也就支持各种标准外设和功能接口(如图象接口)了这对于快速构成FPGA大型系统来讲是很有帮助的。
这种"山寨"味很浓的系统早期优势不一定很明显,类似ARM系统的境况但若能慢慢发挥出FPGA的优势,逐渐实现一些特色系统也是一种发展方向。
若在系统级应用中,开发人员不具备系统的扩充开发能力,只是搞搞编程是没什么意义的,当然设备驱动程序的开发是另一种情况,搞系统级应用看似起点高,但不具备深层开发能力,很可能会变成爱好者,就如很多人会做网页但不能称做会编程类似以上是几点个人开发,希望能帮助想学FPGA但很茫然无措的人理一理思路。
这是一个不错的行业,有很好的个人成功机会。
但也肯定是一个竞争很激烈的行业,关键看的就是速度和深度当然还有市场适应能力。
三、CPLD的介绍
可编程逻辑器件(ProgrammableLogicDevice,PLD)是当前数字系统设计的主要硬件基础,是硬件编程语言VHDL的物理实现工具。
可编程逻辑器件对数字系统设计自动化起着推波助澜的作用,可以说,没有可编程逻辑器件就没有当前的数字电路自动化。
所谓可编程逻辑器件(ProgrammableLogicDevice,PLD)即部分功能可