admin管理员组

文章数量:1530885

2023年12月30日发(作者:)

FPGA开发板快速教程(一)---基础知识

FPGA开发板

作者:古 文章来源:本站原创 点击数: 2284 更新时间:2007-5-24

前言

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的基本使用。附录是本文所涉及的例子的学习板相关的内容。

由于本人水平有限,错漏和不严谨之处在所难免,欢迎大家批评指正。

嵌入式控制研究室

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开发板中嵌入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供应商。

表 1998年世界十大PLD公司

排名

1

2

公司

Altera

Xilinx

销售额(亿美金)

市场占有率

3

4

5

6

7

8

9

10

Vantis

Lattice

Actel

Luccent

Cypress

Atmel

Philips

Quicklogic

资料来源:99年4月《电子产品世界》

尽管FPGA,CPLD和其它类型PLD的结构各有其特点和长处,但概括起来,它们是由三大部分组成的:(1)一个二维的逻辑块阵列,构成了PLD器件的逻辑组成核心;(2)输入/输出块;(3)连接逻辑块的互连资源,由各种长度的连线线段组成,其中也有一些可编程的连接开关,它们用于逻辑块之间、逻辑块与输入/输出块之间的连接。

图1.2.1 PLD的结构

对用户而言,虽然CPLD与FPGA的内部结构稍有不同,但其用法都一样,所以多数情况下,不加以区分。FPGA/CPLD芯片都是特殊的ASIC芯片,它们除了具有ASIC的特点之外,还具有以下几个优点:

(1) (1)

随着VlSI(Very Large Scale IC,超大规模集成电路)工艺的不断提高单一芯片内部可以容纳上百万个晶体管, FPGA/CPLD芯片的规模也越来越大,其单片逻辑门数已达到上百万门,它所能实现的功能也越来越强,同时也可以实现系统集成,即片上系统SOC。

(2) (2)

FPGA/CPLD芯片在出厂之前都做过百分之百的测试,不需要设计人员承

担投片风险和费用,设计人员只需在自己的实验室里就可以通过相关的软硬件环境来完成芯片的最终功能设计。所以, FPGA/CPLD的资金投入小,节省了许多潜在的花费。

(3) (3)

用户可以反复地编程、擦除、使用或者在外围电路不动的情况下用不同软件就可实现不同的功能。所以,用FPGA/PLD 试制样片,能以最快的速度占领市场。 FPGA/CPLD软件包中有各种输入工具和仿真工具,及版图设计工具和编程器等全线产品,电路设计人员在很短的时间内就可完成电路的输入、编译、优化、仿真,直至最后芯片的制作。当电路有少量改动时,更能显示出FPGA/CPLD的优势。电路设计人员使用FPGA/CPLD进行电路设计时,不需要具备专门的IC(集成电路)深层次的知识, FPGA/CPLD软件易学易用,可以使设计人员更能集中精力进行电路设计,快速将产品推向市场。

(4) (4)

在线可编程技术(ISP)使得使用CPLD/FPGA的产品可以做到远程升级。

(以上内容参照西电《CPLD技术及其应用》,有改动)

(三)PLD/FPGA 结构与原理初步

一.

一.

基于乘积项(Product-Term)的PLD结构

采用这种结构的PLD芯片有:Altera的MAX7000,MAX3000系列(EEPROM工艺),Xilinx的XC9500系列(Flash工艺)和Lattice,Cypress的大部分产品(EEPROM工艺)。我们先看一下这种PLD的总体

结构(以MAX7000为例,其他型号的结构与此都非常相似):

图 基于乘积项的PLD内部结构

这种PLD可分为三块结构:宏单元(Marocell),可编程连线(PIA)和I/O控制块。 宏单元是PLD的基本结构,由它来实现基本的逻辑功能。图中阴影部分是多个宏单元的集合(因为宏单元较多,没有一一画出)。可编程连线负责信号传递,连接所有的宏单元。I/O控制块负责输入输出的电气特性控

制,比如可以设定集电极开路输出,摆率控制,三态输出等。图 左上的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就完成了图所示电路的功能。(以上这些步骤都是由软件自动完成的,不需要人为干预)。

图的电路是一个很简单的例子,只需要一个宏单元就可以完成。但对于一个复杂的电路,一个宏单元是不能实现的,这时就需要通过并联扩展项和共享扩展项将多个宏单元相连,宏单元的输出也可以连接到可编程连线阵列,再做为另一个宏单元的输入。这样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位地址线的16x1的RAM。当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM,这样,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。

下面是一个4输入与门的例子:

实际逻辑电路 LUT的实现方式

a,b,c,d 输入

0000

0001

....

1111

逻辑输出

0

0

0

1

地址

0000

0001

...

1111

RAM中存储的内容

0

0

0

1

四. 四.

基于查找表(LUT)的FPGA的结构

altera的FLEX/ACEX等芯片的结构如下图:

图1.3.5 altera FLEX/ACEX 芯片的内部结构

逻辑单元(LE)内部结构

FLEX/ACEX的结构主要包括LAB,I/O块,RAM块(未表示出)和可编程行/列连线。在FLEX/ACEX中,一个LAB包括8个逻辑单元(LE),每个LE包括一个LUT,一个触发器和相关的相关逻辑。LE是FLEX/ACEX芯片实现逻辑的最基本结构(altera其他系列,如APEX、CYCLONE等的结构与此基本相同,具体请参阅数据手册)。

我们还是以这个电路的为例:

A,B,C,D由FPGA芯片的管脚输入后进入可编程连线,然后作为地址线连到到LUT,LUT中已经事先写入了所有可能的逻辑结果,通过地址查找到相应的数据然后输出,这样组合逻辑就实现了。该电路中D触发器是直接利用LUT后面D触发器来实现。时钟信号CLK由I/O脚输入后进入芯片内部的时钟专用通道,直接连接到触发器的时钟端。触发器的输出与I/O脚相连,把结果输出到芯片管脚。这样PLD就完成了图所示电路的功能。(以上这些步骤都是由软件自动完成的,不需要人为干预)。

这个电路是一个很简单的例子,只需要一个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就是一个很好选择。

第二章 FPGA大体教程

第一节 FPGA的大体开发流程

PLD是可编程逻辑器件(Programable Logic Device)的简称,FPGA是现场可编程门阵列(Field Programable Gate Array)的简称,二者的功能大体相同,只是实现原理略有不同,因此咱们有时能够忽略这二者的区别,统称为可编程逻辑器件或PLD/FPGA。

PLD是电子设计领域中最具活力和进展前途的一项技术,它的阻碍丝毫不亚于70年代单片机的发明和利用。

PLD能做什么呢?能够毫不夸张的讲,PLD能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路,都能够用PLD来实现。PLD犹如一张白纸或是一堆积木,工程师能够通过传统的原理图输入法,或是硬件描述语言自由的设计一个数字系统。通过软件仿真,咱们能够事前验证设计的正确性。在PCB完成以后,还能够利用PLD的在线修改能力,随时修改设计而没必要改动硬件电路。利用PLD来开发数字电路,能够大大缩短设计时刻,减少PCB面积,提高系统的靠得住性。 PLD的这些优势使得PLD技术在90年代以后取得飞速的进展,同时也大大推动了EDA软件和硬件描述语言(HDL)的进步。

如何利用PLD呢?其实PLD的利用很简单,学习PLD比学习单片机要简单的多,有数字电路基础,会利用运算机,就能够够进行PLD的开发。

开发PLD需要了解两个部份:开发软件 本身

由于PLD软件已经进展的相当完善,用户乃至能够不用详细了解PLD的内部结构,也能够用自己熟悉的方式:如原理图输入或HDL语言来完成相当优秀的PLD设计。因此对初学者,第一应了解PLD开发软件和开发流程。了解PLD的内部结构,将有助于提高咱们设计的效率和靠得住性。

下面咱们以基于Altera公司的QuantusII软件来简单说明一下FPGA的开发流程。

以下图是一个典型的基于QuantusII的FPGA开发流程。

基于QuartusII的典型FPGA设计流程建立工程尽量采用ALTERA提供的LPM功能模块用户自己建立功能模块,并建立Symbol建立顶层图将顶层图的各个功能模块连起来选择FPGA型号、分配管脚、配置编译选项编译下载到目标器件

(1)成立工程是每一个开发进程的开始,QuantusII(以下简称Q2)以工程为单元对设计进程进行治理。

(2)成立顶层图。能够如此明白得,顶层图是一个容器,将整个工程的各个模块包容在里面,编译的时候就将这些模块整合在一路。也能够明白得为它是一个大元件,包括各个模块,编译的时候确实是生成一个如此的大元件。

(3)采纳ALTERA公司提供的LPM功能模块。Q2软件环境里包括了大量的经常使用功能模块,例如计数器、累加器、比较器、译码器等等;若是不知道在工程中采纳这些现有的功能模块真是太浪费了。以本人的体会,一个设计中一样只有极少部份的模块需要自己从零设计。

(4)自己成建功能模块。固然,有些设计中现有的模块功能不能知足具体设计的要求,那就只能自己设计啦。能够用硬件描述语言也能够用原理图的输入方式。能够把它们独立地看成一个工程来设计,并生成模块符号(Symbol),然后在顶层图中利用那个模块的符号,并将源文件(实现该模块的原理图或HDL文件)拷到顶层图所在的工程目录下。那个进程比如你要做一个电路,此刻市面上没有你想要的某个芯片,你就只能自己做一块如此的一块芯片,然后添加到你的电路板上。

(5)将顶层图的各个功能模块用连线连起来。那个进程类似电路图设计,把各个芯片连接起来,组成电路系统。

(6)系统的功能原理图至此已经大体出炉了,下一步要为该设计选择芯片载体,才能真正在物理上实现系统的功能。这一步的要紧工作是:(1)选择芯片型号;(2)为顶层图的各个输入输出信号分派芯片的管脚;(3)设置编译选项,目的是让编译器明白更多的信息。

(7)编译。那个进程类似软件开发里的编译,但事实上那个进程比软件的编译要复杂得多,因为它毕竟最终要实现硬件里的物理结构,包括了优化逻辑的组合、综合逻辑和布线等步骤。在类似Q2如此的集成环境里面,这些进程都能够一气呵成,集成环境帮你自动完成了几个步骤的工作。固然,你也能够用其它工具来实现各个步骤的工作,这些内容超出了本教程陈述的范围。

(8)编译后会生成*.sof或*.pof文件,前者能够通过JTAG下载到FPGA内部,设计无误的话即能实现预期的功能,但断电后FPGA里的这些信息会丢失;后者能够下载到FPGA的配置芯片(EEPROM或FLASH芯片),掉电后这些配置信息可不能丢失,从头上电以后通过该配置芯片对FPGA的内部RAM进行配置。

(9)关于复杂的设计,工程编译了以后能够采纳Q2的仿真功能或其它仿真软件(如ModelSim)对设计反复进行仿真和验证,直到知足要求。

第二节

基于QuartusII的实例

实验一 实验板上的KEY1按钮操纵FPGA核心板上的第一个LED灯。

本实验比较简单,利用本站FPGA开发板或CPLD开发板和其它FPGA开发板都可进行实验。

目的:通过该实例学习,能够了解FPGA的大体开发流程,熟识quartusII软件大体功能的利用。

原理:利用一个常开按钮(实验板上的KEY1)作为输入(常开时输入1,闭合时输入0),通过一个反相器后输出到核心板的第一个LED。KEY1常开时,LED亮,按下(闭合)实验板上的KEY1,该LED熄灭。

1.

成立工程

运行QuatrusII软件(以下简称Q2),成立工程,FileNew Project Wizad如

点击New Project Wizard 后弹出指定工程名的对话框,在Diectory, Name, Top-Level Entity中如以下图填写:

按Next按钮,显现添加工程文件的对话框:

在那个地址咱们先不用管它,直接按Next进行下一步,选择FPGA器件的型号:

在Family下拉筐中,咱们选择Cyclone系列FPGA,然后在“Available devices:”中依照核心板的FPGA型号选择FPGA型号,注意在Filters一栏选上“Show Advanced Devices”以显示所有的器件型号。执行下一步显现对话框:

那个地址是选择其它EDA工具的对话框,咱们用Q2的集成环境进行开发,因此那个地址不作任何改动。按Next进入工程的信息总概对话框:

按Finish按钮即成立一个空项目。

2.

成立顶层图

执行FileNew,弹出新建文件对话框:

选择“Block Diagram Schematic File”按OK即成立一个空的顶层图,缺省名为“”,咱们把它另存为(FileSave as),同意默许的文件名,并将“Add file to current project”选项选上,以使该文件添加到工程中去。如下图:

3.

添加逻辑元件(Symbol)

双击顶层图图纸的空白处,弹出添加元件的对话筐:

在Libraries里寻觅所需要的逻辑元件,若是明白逻辑元件的名称的话,也能够直接在Name一栏敲入名字,右边的预览图即可显示元件的外观,按OK后鼠标隔壁即拖着一个元件符号,在图纸上点击左键,元件即安放在图纸上。

在图纸上别离添加非门(not)、输入(input)、输出(output)三个symbol,如下图:

连线,将鼠标移到symbol连线端口的那里,鼠标变成图示样子:bol的连线端。本例中,这三个symbol的连线如以下图所示:

,按下左键拖动鼠标到另一个sym

别离双击input和output symbol的名字“pin_name”、“pin_name1”,将它们的名字改成Key1,LED1:

4.

分派管脚

为芯片分派管脚能够用QuartusII软件里的“AssignmentsPins”菜单,也能够用tcl脚本文件。用Tcl文件进行配置可重用性好,易于治理,因此本文介绍用tcl的方式。关于另一种方式,能够参考忙文档。

在工程目录下成立一个name为的file。FileNew,选择other files页面:QuartusII软件的帮

有关tcl文件的更详尽内容可参考QuartusII的帮忙文档,关于咱们所选用的FPGA开发板SOPC开发板来讲,由于不同型号的FPGA核心板的管脚与实验板上的引脚也不同,因此不同的核心板对应的.tcl文件也不同(关于核心板引脚与实验板引脚对应的详细情形请参照“CT-SOPCx学习套件用户手册”或相关电路原理图)。在实际项目中,

该文件也能够依照具体管脚分派要求来改写。

对应于EP1C6 FPGA开发板,EP1C12 FPGA开发板:

#

# Setup pin setting

set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED"

set_global_assignment -name ENABLE_INIT_DONE_OUTPUT OFF

set_location_assignment PIN_1 -to led1

set_location_assignment PIN_122 -to key1

保留到工程目录下,并注意在保留对话框选上“Add file to current project”选项。然后打开Tools ->

Tcl Scripts,选中适才编辑的Script文件:Setup,并点击Run,如以下图:

注意:成立工程时若是途径名有中文字符或途径名有空格字符,那么tcl Script文件将运行不了。比如,本例成立的工程“FPGA_led_test”目录是: C:alteraquartus51myq2projectsFPGA_led_test

若是是:

C:alteraquartus51my q2projectsFPGA_led_test

在该目录下运行工程里的就会犯错。

若是利用Tools -> Tcl Scripts 后没有弹出“tcl Script”对话框能够试一下关了QII,再从头打开。利用TCL文件分派管脚是很方便的,用户能够直接从相关例子工程中复制需要管脚分派表到自己的工程中,省时又方便。

5.

设置。在成立工程的时候咱们选定了芯片型号,其实也能够在这一步设定芯片型号,在菜单AssignmentsDevice:

弹出设置对话框:

依照核心板的FPGA选择芯片型号,如上图所示选择EP1C3T144C8。点击设置对话框的“Device & Pin Options”按钮弹出Device & Pin Options对话框,并选择该对话框的Configuration选项卡,如以下图所示:

在Configuration选项卡中,选择如上图所示内容(注意:那个地址必然要依照开发板的具体EPCS芯片情形进行选择。如本站EP1C6型FPGA开发板和EP2C5是型是EPCS1配制芯片;EP2C8、EP1C12和EP2C20型FPGA开发板利用EPCS4配制芯片,QII软件默许是AUTO)。在Unused Pins标签当选择reserve all unused pins : as input

tri-stated。其余留缺省设置即可。按确信退出该对话筐,关于cycloneII系列的芯片,如EP2C5型 FPGA开发板、EP2C8

型FPGA开发板或EP2C20型FPGA开发板,还需在

Dual-Purpose Pins选项卡中把nCEO 设置为: Use as regular I/O。

nCEO管脚作用是当FPGA芯片配制完成后输出一个低电平,经常使用在多FPGA系统,单FPGA系统能够把此管脚设置为IO利用。

按OK退出设置对话框,返回到顶层图界面。

6.

编译。按主工具栏上的编译按钮即开始编译:

QuartusII下面的Message 窗口会显示一些编译信息,最后编译成功弹出提示:

7.

下载。

(1)

下载设置:若是第一次利用下载线下载配置文件到FPGA,那么需要在Q2软件

设置下载线的型号等信息。先将ByteBlasterII下载线的一头接到PC的并口,执行菜单ToolsProgrammer(如以下图)

打开下载界面,可看到No Hardware,表示尚未设置下载线,如以下图:

点击Hardware Setup,弹出“Hardware Setup”对话框:

点击“Add Hardware”,弹出“Add Hardware”对话筐:

在Hardware type下拉列表选择“ByteBlasterMV or ByteBlasterII”,点OK返回“Hardware Setup”对话框,从“Currently selected hardware:”下拉列表选择ByteBlasterII[LPT1],点击“Close”返回下载界面,可看到下载线已经被添加:

注:在Hardware type下拉列表选择中“ByteBlasterMV or ByteBlasterII”回到hardware setup对话框显示的却是ByteBlaster下载线而不是ByteBlasterII下载线的话是不正确的。这说明运算机没有识别出下载线,这有可能是运算机并口损坏或下载线损坏。

(2)

将ByteBlasterII下载线一头与PC连接,另一头插入到JTAG口或EPCS1的

下载口。

(3)

FPGA核心板接上5V电源。

(4)

若是只是调试一下设计是不是成功,可通过JTAG口把芯片的配置信息下载到FPGA芯片内,掉电后配置信息丢失。现在,下载界面的“Mode:”下拉列表应选择“JTAG”,并选择工程中.sof后缀的文件进行下载。(注意记得在“Program/Configure”那个方框那里打上“√”,其它“Verify”、“Blank Check”等可依照需要选择。)

(5)

若是要下载到非易失Flash配置芯片(掉电后配置信息不丢失)里去,那么将ByteBlasterII插到EPCS1芯片的下载口。并在下载界面的“Mode:”下拉列表应选择“Active Serial Programming”,并选择工程中.pof后缀的文件进行下载。一样情形下利用JTAG下载即可,等整个设计都完成了不需要再修改后才把最后的POF下载到EPCS芯片中。

(6)

下载完后能够发觉核心板上只有第一个LED(D1)点亮,缘故是咱们在文件中指定没用的管脚为输入&三态(set_global_assignment -name RESERVE_ALL_UNUSED_PINS "AS INPUT TRI-STATED"),(注意,若是是EP1C6核心板,请务必将未用管脚概念为“As inputs, tri-stated”,因为必需确保该核

心板被骗前没用到的Flash芯片与FPGA之间以高阻态相隔,不然会发生损坏芯片的危险!)核心板上的LED是低电平点亮,第二个发光二极管(D2)对应的FPGA管脚因为没有效而设为输入&三态,因此不亮;而由于D1的是由内部非门操纵,因此按钮1(KEY1)没按下时是亮的。

没用到的管脚概念也能够在设置项设置,菜单“Assignments->Settings”:

打开“Setting”对话框:

再点击“Device & Pin Options”,弹出“Device & Pin Options”对话框:

在“Unused Pins”标签页,有未用到管脚的设置选项(“Reserve all unsued pins”),用户能够依照需要选择。“Device & Pin Options”对话框还有其它设置的标签页,大伙儿能够看看其它的吧,多熟识一下QuartusII的界面。

8.

结果。在本例的设计中,咱们利用一个常开按钮(实验板上的KEY1)作为输入(常开时输入1,闭合时输入0),通过一个反向器后输出到核心板的第一个LED;因此按下(闭合)实验板上的KEY1(KEY2),该LED灭。该设计超级简单,并无实际的用途,但是咱们确实是需要简单,目的确实是为了更易明白得FPGA的设计流程和QuartusII软件的大体用法。尽管简单,也用去了很多篇幅啊,可能有人会略嫌罗嗦啦,呵呵,耐心点,我相信仍是有很多刚接触那个软件或刚接触FPGA设计的吧,看到自己竟然能用按钮操纵那个LED的亮和灭了,说不定

会兴奋良久呢!

另外注意:插拔下载线要先断电,在插下载线的时候注意需要用手托着PCB板底部,以避免会因为插入的时候过于使劲致使PCB板变形从而使FPGA脱焊的危险。咱们明白EPCS芯片的擦写次数是有限度的,一样咱们不需要常常性下载POF到EPCS芯片中,在验证,调试,烧写flash的时候一直利用JTAG即可,只有当调试都OK了到的确需要保留配制信息的时候才利用EPCS。于此下载线就能够够一直插在JTAG口,如此就不需要频繁地插拔电源,和插拔下载线,以最大可能地降低损坏板子的风险,延长开发板的利用寿命。

本文标签: 设计逻辑芯片能够下载