前语
FPGA在杂乱逻辑电路以及数字信号处理范畴中扮演者越来越重要的人物,SOC(片上体系)以其低功耗,高性能,低本钱,高可靠性等利益成为嵌入式体系的开展趋势。作为一个简明的教程,首要主旨是让初学者快速地了解FPGA/SOPC(可编程片上体系)开发的流程。现在IT技能的开展能够说是日新月异,以自己的观念来讲,假如期望在电子规划范畴有所作为,则有必要具有快速把握新技能的才干。电子规划最重要的是实践的堆集,咱们只需具有了必定的根底,应当立刻投入实践,不然许多概念都无法真实了解。有不少人包括我,当下决心要成为一个合格的电子规划工程师的时分,总是想假如把有关电路方面的理论都把握了才干所向无敌,有底气参与实践项目规划。当然假如能做到“把有关理论都把握了”这样的境地,我想应该是很抱负的,但经历发现这并不实践。据我所知,我所知道的不少电子规划牛人,他们的理论常识或许都比不上咱们的本科生,但许多不错的产品都是从他们的手中开发出来的,有了实践的经历后,他们把握新技能的速度适当惊人。有人跟我说:“新技能是拿来用的,不是拿来学的。”他们以为把握新的规划技能应当赶快把握它的规划流程。因而,我参阅朋友给我的定见,写了这个简易的教程,以十分详细的实例来让初学者了解依据QuartusII和NiosII IDE的FPGA/SOPC开发的根本流程,意图是为了让初学者赶快上手FPGA/SOPC的开发流程,赶快投入到实践中。为了易于阐明问题,本教程中的一些概念并不是很谨慎,假如读者对某些提法有贰言,请参阅相关材料和教材,并以相关材料和教材为准。经过该简明教程,初学者能快速了解FPGA/SOPC的根本开发流程,许多技巧和深化了解都靠长时刻的经历堆集,因而初学者应该在了解了根本流程今后,思想不能约束于此,应在实践中进步水平,并参阅更全面和威望的材料。
本教程配套CT-SOPCx系列FPGA/SOPC开发学习板套件(关于该套件的相关内容请参阅附录。)以实践为根底,适宜具有根本的数字电路规划根底的初学者。第一章是CPLD/FPGA的根本常识,这部分内容摘自互联网并稍加修改,关于CPLD/FPGA常识为零的初学者应先了解这部分内容;关于现已有了必定根底的同学能够越过这部分内容。第二章以两个比方来让初学者了解FPGA的根本开发流程,并了解QuartusII软件的运用。第三章以一个比方来让初学者了解依据NiosII软CPU核的SOPC规划流程,并熟识SOPC Builder和NiosII IDE的根本运用。附录是本文所触及的比方的学习板相关的内容。
因为自己水平有限,讹夺和不谨慎之处在所难免,欢迎咱们批评指正。
嵌入式操控研究室
http://www.21control.com
2006年4月20日
目 录
第一章PLD/FPGA的根本常识 ………………………………………………………………………
第二章 FPGA根本教程 ……………………………………………………………………………………
第一节 FPGA的根本开发流程 ………………………………………………………………………………
第二节 依据QuartusII的实例…………………………………………………………………………………
试验一 试验板上的KEY1按钮操控FPGA中心板上的第一个LED灯介绍 ………………………………
试验二 7段数码管试验 …………………………………………………………………………………
试验三 用FPGA规划串口数据收发 …………………………………………………………………………
第三章 SOPC的根本开发流程 …………………………………………………………………………………
第一节 SOPC vs MCU、DSP和FPGA ………………………………………………………………………
第二节 依据QuantusII和NiosII的SOPC根本开发流程 ……………………………………………………
第三节 依据QuantusII和NiosII的SOPC实例 ……………………………………………………………
试验一 中心板上的两个LED替换闪耀 …………………………………………………………………
试验二 4位7段数码管IP core规划以及flash的烧写教程 …………………………………
试验三 LCD设备驱动开发 ………………………………………………………………………
试验四 ALL_TEST归纳规划 ……………………………………………………………………………
第四章 FPGA开发板V3.0中嵌入Uclinux的过程和办法……………………………………………………
第一章 CPLD/FPGA的根本常识
(一)可编程逻辑器材的前史和概述
跟着数字电路运用越来越广泛,传统通用的数字集成芯片现已难以满意体系的功用要求,并且跟着体系杂乱程度的进步,所需通用集成电路的数量呈爆炸性增值,使得电路的体积膨大,可靠性难以确保。此外,现代产品的生命周期都很短,一个电路或许需求在很短的周期内作改动以满意新的功用需求,关于选用通用的数字集成电路规划的电路体系来说即意味着从头规划和从头布线。因而,体系规划师们期望自己规划专用集成电路(ASIC)芯片,并且期望ASIC的规划周期尽或许短,最好是在试验室里就能规划出适宜的ASIC芯片,并且当即投入实践运用之中,因而呈现了现场可编程逻辑器材(FPLD),其间运用最广泛的当属现场可编程门阵列(FPGA)和杂乱可编程逻辑器材(CPLD)。
前期的可编程逻辑器材只要可编程只读存贮器(PROM)、紫外线可按除只读存贮器(EPROM)和电可擦除只读存贮器(EEPROM)三种。因为结构的约束,它们只能完结简略的数字逻辑功用。
这今后,呈现了一类结构上稍杂乱的可编程芯片,即可编程逻辑器材(PLD),它能够完结各种数字逻辑功用。典型的PLD由一个“与”门和一个“或”门阵列组成,而恣意一个组合逻辑都能够用“与一或”表达式来描绘,所以, PLD能以乘积和的方法完结很多的组合逻辑功用。
这一阶段的产品首要有PAL(可编程阵列逻辑)和GAL(通用阵列逻辑)。PAL由一个可编程的“与”平面和一个固定的“或”平面构成,或门的输出能够经过触发器有挑选地被置为存放状况。 PAL器材是现场可编程的,它的完结工艺有反熔丝技能、EPROM技能和EEPROM技能。还有一类结构更为灵敏的逻辑器材是可编程逻辑阵列(PLA),它也由一个“与”平面和一个“或”平面构成,可是这两个平面的衔接联系是可编程的。 PLA器材既有现场可编程的,也有掩膜可编程的。 在PAL的根底上,又开展了一种通用阵列逻辑GAL (Generic Array Logic),如GAL16V8,GAL22V10 等。它选用了EEPROM工艺,完结了电可按除、电可改写,其输出结构是可编程的逻辑宏单元,因而它的规划具有很强的灵敏性,至今仍有许多人运用。 这些前期的PLD器材的一个一同特色是能够完结速度特性较好的逻辑功用,但其过于简略的结构也使它们只能完结规划较小的电路。
为了补偿这一缺点,20世纪80年代中期。 Altera和Xilinx别离推出了类似于PAL结构的扩展型 CPLD(Complex Programmab1e Logic Dvice)和与规范门阵列类似的FPGA(Field Programmable Gate Array),它们都具有体系结构和逻辑单元灵敏、集成度高以及适用范围宽等特色。这两种器材兼容了PLD和通用门阵列的利益,可完结较大规划的电路,编程也很灵敏。与门阵列等其它ASIC(Application Specific IC)比较,它们又具有规划开发周期短、规划制作本钱低、开发东西先进、规范产品无需测验、质量安稳以及可实时在线查验等利益,因而被广泛运用于产品的原型规划和小批量产品出产(一般在10,000件以下)之中。简直一切运用门阵列、PLD和中小规划通用数字集成电路的场合均可运用FPGA和CPLD器材。
(二)FPGA、CPLD 概述
FPGA(现场可编程门阵列)与 CPLD(杂乱可编程逻辑器材)都是可编程逻辑器材,它们是在PAL,GAL等逻辑器材的根底之上开展起来的。同以往的PAL,GAL等比较较,FPGA/CPLD的规划比较大,它能够代替几十乃至几千块通用IC芯片。这样的FPGA/CPLD实践上便是一个子体系部件。这种芯片遭到国际范围内电子工程规划人员的广泛重视和遍及欢迎。经过了十几年的开展,许多公司都开发出了多种可编程逻辑器材。比较典型的便是Altera公司和Xilinx公司的CPLD器材系列和FPGA器材系列,它们开发较早,占用了较大的PLD商场。一般来说,在欧洲用Xilinx的人多,在日本和亚太地区用ALTERA的人多,在美国则是不相上下。全球PLD/FPGA产品60%以上是由Altera和Xilinx供给的。能够讲Altera和Xilinx一同决议了PLD技能的开展方向。当然还有许多其它类型器材,如:Lattice,Vantis,Actel,Quicklogic,Lucent等。 (99年Lattice收买了Vantis,成为第三大PLD供货商。
表1.2.1 1998年国际十大PLD公司
尽管FPGA,CPLD和其它类型PLD的结构各有其特色和利益,但归纳起来,它们是由三大部分组成的:(1)一个二维的逻辑块阵列,构成了PLD器材的逻辑组成中心;(2)输入/输出块;(3)衔接逻辑块的互连资源,由各种长度的连线线段组成,其间也有一些可编程的衔接开关,它们用于逻辑块之间、逻辑块与输入/输出块之间的衔接。
对用户而言,尽管CPLD与FPGA的内部结构稍有不同,但其用法都相同,所以大都情况下,不加以区别。FPGA/CPLD芯片都是特别的ASIC芯片,它们除了具有ASIC的特色之外,还具有以下几个利益:
(1) 跟着VlSI(Very Large Scale IC,超大规划集成电路)工艺的不断进步单一芯片内部能够包容上百万个晶体管, FPGA/CPLD芯片的规划也越来越大,其单片逻辑门数已达到上百万门,它所能完结的功用也越来越强,一同也能够完结体系集成,即片上体系SOC。
(2) FPGA/CPLD芯片在出厂之前都做过百分之百的测验,不需求规划人员承当投片危险和费用,规划人员只需在自己的试验室里就能够经过相关的软硬件环境来完结芯片的终究功用规划。所以, FPGA/CPLD的资金投入小,节省了许多潜在的花费。
(3) 用户能够重复地编程、擦除、运用或许在外围电路不动的情况下用不同软件就可完结不同的功用。所以,用FPGA/PLD 试制样片,能以最快的速度占领商场。 FPGA/CPLD软件包中有各种输入东西和仿真东西,及地图规划东西和编程器等全线产品,电路规划人员在很短的时刻内就可完结电路的输入、编译、优化、仿真,直至最终芯片的制作。当电路有少量改动时,更能显示出FPGA/CPLD的优势。电路规划人员运用FPGA/CPLD进行电路规划时,不需求具有专门的%&&&&&%(%&&&&&%)深层次的常识, FPGA/CPLD软件易学易用,能够使规划人员更能集中精力进行电路规划,快速将产品推向商场。
(4) 在线可编程技能(ISP)使得运用CPLD/FPGA的产品能够做到长途晋级。
(以上内容参照西电《CPLD技能及其运用》,有改动)
(三)PLD/FPGA 结构与原理开始
一. 依据乘积项(Product-Term)的PLD结构
选用这种结构的PLD芯片有:Altera的MAX7000,MAX3000系列(EEPROM工艺),Xilinx的XC9500系列(Flash工艺)和Lattice,Cypress的大部分产品(EEPROM工艺)。咱们先看一下这种PLD的整体结构(以MAX7000为例,其他类型的结构与此都十分类似):
这种PLD可分为三块结构:宏单元(Marocell),可编程连线(PIA)和I/O操控块。 宏单元是PLD的根本结构,由它来完结根本的逻辑功用。图1.3.1中暗影部分是多个宏单元的调集(因为宏单元较多,没有逐个画出)。可编程连线担任信号传递,衔接一切的宏单元。I/O操控块担任输入输出的电气特性操控,比方能够设定集电极开路输出,摆率操控,三态输出等。图1.3.1 左上的INPUT/GCLK1,INPUT/GCLRn,INPUT/OE1,INPUT/OE2 是大局时钟,清零和输出使能信号,这几个信号有专用连线与PLD中每个宏单元相连,信号到每个宏单元的延时相同并且延时最短。宏单元的详细结构见下图:
左边是乘积项阵列,实践便是一个与或阵列,每一个交叉点都是一个可编程熔丝,假如导通便是完结“与”逻辑。后边的乘积项挑选矩阵是一个“或”阵列。两者一同完结组合逻辑。图右侧是一个可编程D触发器,它的时钟,清零输入都能够编程挑选,能够运用专用的大局清零和大局时钟,也能够运用内部逻辑(乘积项阵列)发生的时钟和清零。假如不需求触发器,也能够将此触发器旁路,信号直接输给PIA或输出到I/O脚。
二. 乘积项结构PLD的逻辑完结原理
下面咱们以一个简略的电路为例,详细阐明PLD是怎么运用以上结构完结逻辑的,电路如下图:
假定组合逻辑的输出(AND3的输出)为f,则f=(A+B)*C*(!D)=A*C*!D + B*C*!D ( 咱们以!D表明D的“非”)
PLD将以下面的方法来完结组合逻辑f:
A,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就完结了图1.3.3所示电路的功用。(以上这些过程都是由软件主动完结的,不需求人为干涉)。
图1.3.3的电路是一个很简略的比方,只需求一个宏单元就能够完结。但关于一个杂乱的电路,一个宏单元是不能完结的,这时就需求经过并联扩展项和同享扩展项将多个宏单元相连,宏单元的输出也能够衔接到可编程连线阵列,再做为另一个宏单元的输入。这样PLD就能够完结更杂乱逻辑。
这种依据乘积项的PLD根本都是由EEPROM和Flash工艺制作的,一上电就能够作业,无需其他芯片合作。
三. 表(Look-Up-Table)的原理与结构
选用这种结构的PLD芯片咱们也能够称之为FPGA:如altera的ACEX,APEX系列,xilinx的Spartan,Virtex系列等。
查找表(Look-Up-Table)简称为LUT,LUT本质上便是一个RAM。 现在FPGA中多运用4输入的LUT,所以每一个LUT能够当作一个有4位地址线的16×1的RAM。当用户经过原理图或HDL言语描绘了一个逻辑电路今后,PLD/FPGA开发软件会主动核算逻辑电路的一切或许的成果,并把成果事前写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。
下面是一个4输入与门的比方:
四. 依据查找表(LUT)的FPGA的结构
altera的FLEX/ACEX等芯片的结构如下图:
逻辑单元(LE)内部结构
FLEX/ACEX的结构首要包括LAB,I/O块,RAM块(未表明出)和可编程行/列连线。在FLEX/ACEX中,一个LAB包括8个逻辑单元(LE),每个LE包括一个LUT,一个触发器和相关的相关逻辑。LE是FLEX/ACEX芯片完结逻辑的最根本结构(altera其他系列,如APEX、CYCLONE等的结构与此根本相同,详细请参阅数据手册)。
五.查找表结构的FPGA逻辑完结原理
咱们仍是以这个电路的为例:
A,B,C,D由FPGA芯片的管脚输入后进入可编程连线,然后作为地址线连到到LUT,LUT中现已事前写入了一切或许的逻辑成果,经过地址查找到相应的数据然后输出,这样组合逻辑就完结了。该电路中D触发器是直接运用LUT后边D触发器来完结。时钟信号CLK由I/O脚输入后进入芯片内部的时钟专用通道,直接衔接到触发器的时钟端。触发器的输出与I/O脚相连,把成果输出到芯片管脚。这样PLD就完结了图1.3.3所示电路的功用。(以上这些过程都是由软件主动完结的,不需求人为干涉)。
这个电路是一个很简略的比方,只需求一个LUT加上一个触发器就能够完结。关于一个LUT无法完结的的电路,就需求经过进位逻辑将多个单元相连,这样FPGA就能够完结杂乱的逻辑。
因为LUT首要适宜SRAM工艺出产,所以现在大部分FPGA都是依据SRAM工艺的,而SRAM工艺的芯片在掉电后信息就会丢掉,必定需求外加一片专用装备芯片,在上电的时分,由这个专用装备芯片把数据加载到FPGA中,然后FPGA就能够正常作业,因为装备时刻很短,不会影响体系正常作业。也有少量FPGA选用反熔丝或Flash工艺,对这种FPGA,就不需求外加专用的装备芯片。
六.挑选PLD仍是FPGA?
依据上述PLD的结构和原理能够知道,PLD分化组合逻辑的功用很强,一个宏单元就能够分化十几个乃至20-30多个组合逻辑输入。而FPGA的一个LUT只能处理4输入的组合逻辑,因而,PLD适宜用于规划译码等杂乱组合逻辑。但FPGA的制作工艺确认了FPGA芯片中包括的LUT和触发器的数量十分多,往往都是几千上万,PLD一般只能做到512个逻辑单元,并且假如用芯片价格除以逻辑单元数量,FPGA的均匀逻辑单元本钱大大低于PLD。所以假如规划中运用到很多触发器,例如规划一个杂乱的时序逻辑,那么运用FPGA便是一个很好挑选。