FPGA实验指导书.docx

上传人:b****8 文档编号:30410019 上传时间:2023-08-14 格式:DOCX 页数:143 大小:3.95MB
下载 相关 举报
FPGA实验指导书.docx_第1页
第1页 / 共143页
FPGA实验指导书.docx_第2页
第2页 / 共143页
FPGA实验指导书.docx_第3页
第3页 / 共143页
FPGA实验指导书.docx_第4页
第4页 / 共143页
FPGA实验指导书.docx_第5页
第5页 / 共143页
点击查看更多>>
下载资源
资源描述

FPGA实验指导书.docx

《FPGA实验指导书.docx》由会员分享,可在线阅读,更多相关《FPGA实验指导书.docx(143页珍藏版)》请在冰豆网上搜索。

FPGA实验指导书.docx

FPGA实验指导书

FPGA实验指导书

刘敬猛编

北京航空航天大学电工电子中心

2009年10月

前言

现场可编程门门阵列(FPGA,FieldProgrammableGateArray)的出现是超大规模集成电路(VLSI)技术和计算机辅助设计(CAD)技术发展的结果。

FPGA器件集成度高、体积小,具有通过用户编程实现专门应用的功能。

它也许电路设计者利用基于计算机的开发平台,经过设计输入、仿真、测试和校验,直到达到预期的结果。

使用FPGA器件可以将原来的电路板级产品集成为芯片级产品,从而降低了功耗,提高了可靠性,同时还可以很方便地对设计进行在线修改。

FPGA器件成为研制开发的理想器件,特别适合于产品的样机开发和小批量生产,因此有时人们也把FPGA称为可编程的ASIC。

本书的作者在工程实践和科学研究中深切感受到FPGA技术是数字电路设计的利器,从中受益颇深。

CycloneFPGA是目前ASIC应用的低成本替代方案。

作为系统设计人员,您面临很多挑战,包括越来越大的成本压力和越来越复杂的设计,新出现的标准,以及越来越短的设计周期等。

ASIC开发涉及到大量的工程资源,设计仿真和验证,需要进行多次重制。

利用其系统级集成功能,CycloneFPGA系列避免了ASIC昂贵的NRE负担,降低了订购量和产品推迟带来的风险。

采用CycloneFPGA系列,您的大批量应用现在可以采用价格相当的可编程解决方案(与ASIC相比)。

新的市场发展趋势,例如世界标准、平台融合、交互性以及技术改进等,不断推动了对高性价比方案的需求。

Cyclone系列FPGA的价格和功能满足了市场对创新的需求,通过产品迅速面市来确定领先优势。

消费类、通信、计算机外设、工业和汽车等低成本大批量应用市场都可以使用CycloneFPGA。

Cyclone器件的性能足以和业界最快的FPGA进行竞争。

CycloneFPGA综合考虑了逻辑、存储器、锁相环(PLL)和高级I/O接口,是价格敏感应用的最佳选择。

CycloneFPGA具有:

新的可编程体系结构,实现低成本设计。

嵌入式存储器资源支持多种存储器应用和数字信号处理(DSP)实现。

专用外部存储器接口电路,支持与DDRFCRAM和SDRAM器件以及SDRSDRAM存储器的连接。

支持串行总线和网络接口以及多种通信协议。

片内和片外系统时序管理使用嵌入式PLL。

支持单端I/O标准和差分I/O技术,LVDS信号数据速率高达640Mbps。

处理功耗支持NiosII系列嵌入式处理器。

采用新的串行配置器件的低成本配置方案。

VHDL作为IEEE标准的硬件描述语言和EDA的重要组成部分,经过二十多年的发展、应用和完善,以其强大的系统描述能力、规范的程序设计结构、灵活的语句表达风格和多层次的仿真测试手段,受到业界的普遍认可同和广泛的接受,成为现代EDA领域的首选硬件设计计算机语言,目前流行的EDA工具软件全部支持VHDL除了作为电子系统设计的主选硬件描述语言外,VHDL在EDA领域的仿真测试、学术交流、电子设计的存档、程序模块的移植、ASIC设计源程序的交付、IP核(IntelligencePropertyCore)的应用等方面承担着不可或缺的角色,因此不可避免地将成为了我国高等教育中电子信息类专业知识结构的重要组成部分。

本书的前两部分介绍了CycloneFPGA的硬件体系结构。

第三到第五部分介绍了九个实验,其中第一个实验详细介绍了软件开发的详细过程。

本书的第六部分介绍了北京掌宇公司的KH-31001实验箱。

附件包括Quartus

的安装和Cyclone1C6Q240的管脚图。

教材在编写的过程中得到胡晓光教授、吴星明副教授和徐东博士的大力支持,电工电子中心的很多老师在使用本教材的第一版时提出了很多诚恳的建议,在此一并表示感谢。

由于作者水平有限,书中难免有不妥甚至错误之处,欢迎各位读者和同行批评指正。

作者

2009年10月9日于北航电工电子中心

VHDL编程注意事项

1在VHDL中,共有3种常用对象类型:

常量、变量和信号。

2应注意端口信号的方向。

Out方向只能被赋值;in方向可以赋值:

buffer可以赋值和被赋值;由于inout就是输入/输出端口,因此可以赋值和被赋值。

特别需要注意的是,当输出信号要反馈回去时,必须定义为inout。

3信号使用信号赋值符“<=”。

4变量使用变量赋值符“:

=”。

5std_logic和std_logic_vector是可综合VHDL描述中常见的数据类型

6在ieee.std_logic_unsigned.all包的支持下,可进行std_logic和std_logic_vector的加减运算。

7在同一个进程中,信号可以被多次赋值,但是只有最后一个赋值有效。

在进程中,因为语句的执行是顺序的,虽然对一个信号有多次赋值,但是仍然认为该信号具有具有一次驱动。

在进程中,可以对一个信号进行多次赋值。

但是,变量确不然,在一个进程内,对变量的多次赋值完全可以按照设计的逻辑进行。

8在结构体中,不能对一个信号赋值多次,因为各个信号赋值语句之间是并发关系。

9被赋值信号的位数与赋予它的数值位数必须相等,否则出错。

例如,将2位八进制赋予4位逻辑矢量是错误的。

解决这一问题的办法是:

把位数凑齐。

例如3bit的std_logic_vector和1位的std_logic可以通过以下的方法链接addtemp:

=’0’&A1&A0+’0’&B1&B0+”00”&CYI;

10为使赋值和被赋值情况下不出现错误,可以在结构体内声明与输入、输出端口相同数据类型的信号。

在结构体中,先将输入端口赋予信号,然后在对信号进行逻辑处理后,在用赋值语句将信号赋予输出端口。

11定义整形数范围的时候,计数器计数的范围实际上是2的n次幂减1。

例如integerrang0~128,实际上会计数到255,因为128需要8位二进制表示。

12Case语句需要时钟触发的。

13信号量不可以在进程内定义。

14VHDL文件不可以放在根目录下。

15工程包括多个文件时顶层实体是总文件。

16器件例化语句不能放在进程内

17有“+”编译不能通过的原因是缺少库文件ieee_logic_unsigned.all。

18时钟触发不同于clk’EVENTandclk=’1’。

 

第一部分CycloneFPGA介绍

一、器件概述

CycloneFPGA基于1.5V、0.13um、全铜SRAM处理,逻辑容量LEs最多可达20060,RAM最大可达288Kbits,其内部用锁相环,内含DDR接口可以和DDRSDRAM和FCRAM存储器相连。

Cyclone是一款低成本的FPGA,它支持多种标准的IO,包括311Mbps的LVDs和66MHZ32位的外部器件接口,为了和ASSP及ASIC器件连接,Altera提供了一种低成本的串行配置方案。

CycloneFPGA的应用主要是定位在终端市场,如消费电子、计算机、工业和汽车等领域。

器件特点

■5980个LEs

■20个M4KRAM块(128×36bits)

■支持低成本的串口配置

■支持LVTTL、LVCMOS、SSTL-2、SSTL-3标准

■支持66-MHZ32位PCI标准

■支持311MbpsLVDsIO接口

■两个锁相环提供时钟的倍频和相移

■每个LAB最多可有6个时钟源和8根时钟线。

■支持外扩存储器,包括DDRSDRAM

■支持多种知识产权(IP)核心,包括Altera的megacore和Alteramegafunctions合作伙伴程序megafunctions。

表1.8Cyclone系列FPGA特性见参表。

表1.9不同封装的CycloneFPGA的I/O管脚数

图1.21编译综合结果

让我们先来看看Quartus

的编译综合的结果,第一是Totallogicelements,第二是Totalpins,第三是Totalmemorybits,第四是TotalPLLs.他们和器件到底是什么关系呢?

二、平面布局和基本功能块

Cyclone器件的平面布局如图1.21所示。

Cyclone器件包括逻辑阵列块LABs、嵌入式存储器块M4k、锁相环PPL、输入输出单元IOEs。

LABs和M4k通过内部的行线和列线相连,不同的连接方式具有不同的速度。

LogicArray由LABs组成,每个LABs由10个LEs组成。

LEs是逻辑单元的最小单位,Cyclone1C6具有5960个LEs。

LABs在整个器件内按行列排放。

Cyclone1C6含有20个M4KRAM块,每个RAM块有4608位,提供专用双端口,简单双端口、单端口三种模式,最大宽度是32位,最高速度是200MHZ。

IO管脚在IOE内,它们分布在FPGA的四周,连接在LABs的行和列的末端。

IO管脚支持变化的单端和差分IO标准,例如66MHZ32位PCI标准和311Mbps的LVDSIO标准。

每个IOE包含一个双向的IObuffer和三个寄存器用于寄存器的输入、输出和使能信号。

兼用的DQS、DQ和DM带有延时链提供外部存储器DDRSDRAM和FCRAM的接口。

Cyclone有两个锁相环提供全局时钟网络。

全局时钟网络包含8条可以驱动整个芯片的全局时钟线。

全局时钟线也可以被用于控制信号。

锁相环具有倍频和移相功能同时也可以为外部的高速差分信号提供时钟。

三、逻辑阵列块LABs

每个LABs包含10个LEs、LE进位链、LAB控制信号、局部互连线、LUT链和寄存器链连接线。

局部互连线在同一个LAB内的LEs间传输信息;LUT链在同一个LAB内将信号由一个LUT传送到另一个LUT;寄存器链将信息由一个LE寄存器传送到邻近的寄存器。

Quartus

编译器自动对布线资源进行调整。

LAB的互连

LAB的局部互连线能够驱动块内的LEs,它是由LAB块内的LE输出、行线和列线所驱动。

邻近的LABs、PLLs和M4KRAM块可以通过直接连接驱动局部互连线。

直接驱动高速灵活,每个LE具有驱动30个负载的能力。

图.1.22

四、逻辑单元LEs

LEs是Cyclone器件的最小逻辑单元。

每个LE包含一个4输入LUT,它是四变量输入的多用功能发生器,可以产生所需的任意逻辑。

而且,每一个LE包含了一个可编程寄存器和进位选择功能的进位链。

LE支持动态的加或者减模式,模式的选择由LAB宽度控制信号决定。

每个LE可以驱动局部互连、行、列、LUT链、寄存器链、直接驱动。

每个LE可编程寄存器可以配置成D触发器、JK触发器、T触发器和SR锁存器。

每个寄存器包含数据、异步装载数据、时钟、时钟使能和清零等输入。

无论是IO引脚还是内部的逻辑都能驱动时钟使能、异步装载和异步数据。

异步装载的数据来自LE输入管脚的data3。

当然LUT的输出可以不经过寄存器直接输出。

每个LE有三个输出用以驱动局部互连、行和列的布线资源。

LUT和寄存器的输出可以独立驱动它们。

LE有两个输出驱动行、列和直接连接,一个驱动局部互连。

LUT链和寄存器链

同一个LAB内的LE有LUT链和寄存器链,用于LE间的级联。

这样无论是LUT的输入还是寄存器的输出都可以得到扩展。

图1.23

五、IO结构

■差分和单端的IO标准

■3.3V,32位,64MHzPCI兼容

■支持JTAG的边界扫描

■弱上拉电阻(配置期间)

■压摆率控制

■三态缓冲器

■总线保持电路

■用户模式下的可编程上拉电阻

■可编程的输入输出延时

■开漏输出

■DS和DQS的IO管脚

CycloneIOEs包含了一个双向的buffer和三个寄存器以完成一位数据的双向传输,如图所示。

这三个寄存器是输入寄存器、输出寄存器和输出使能寄存器。

设计者可以使用输入寄存器完成快速建立时间,使用输出寄存器得到快速的时钟到输出的时间。

而且,设计者可以利用输出使能寄存器的到快速的时钟到输出使能定时。

Quartus

编译器根据输出使能的时间自动控制多路输出和双向管脚。

IOEs可以被用于输入、输出和双向的引脚。

它不仅能和输入输出信号相连接,而且可以作为总线使用,以方便、灵活地传送数据。

IOEs在IO块内,IO块位于Cyclone芯片的四周。

图1.24

六、双向IO配置

CycloneIOE双向IO配置如图所示。

IOE在双相模式下,设计者使用输入寄存器,根据输入信号的特点设定数据建立时间。

输入寄存器有它自己的时钟输入和时钟使能;输出寄存器根据负载的特点可以设定时钟到输出的时序;输出使能可以设定使能信号的时间。

输出寄存器和输出使能寄存器的时钟信号和时钟使能信号来自LAB、专用IO、行、列的局部互连。

 

图1.25

CycloneIOE由可编程延时模块实现

(1)0保持时间,

(2)最小建立时间,(3)时钟到输出可编程。

管脚直接驱动寄存器可能需要一个0保持时间的延时,而管脚驱动寄存器通过组合逻辑电路不一定能够满足需要。

可编程延时减少了输入管脚到到逻辑阵列和IOE的输入寄存器延时。

Quartus

编译器在0保持时间的模式下能够自动地最大限度减小保持时间,可编程延时模块能够增加输出寄存器的寄存器到管脚的延时。

图表明了这种关系。

可编程的驱动能力

Cyclone的输出管脚缓冲器有驱动能力可编程选择项。

设计者可选择多种LVTTL和LVCMOS标准,SSTL-2classIandII和SSTL-3classIandII也是不错的选择,对压摆率的控制可以减少噪声和过冲。

图是可编程驱动能力和相关的指标参数。

开漏输出

开漏输出提高了IOE的驱动能力。

 

表1.10

I/OStandard

IOHIOLCurrentStrengthSetting(mA)

 

LVTTL(3.3V)

4

8

12

16

24

LVCMOS(3.3V)

2

4

8

12

LVTTL(2.5V)

2

8

12

16

LVTTL(1.8V)

2

8

12

LVCMOS(1.5V)

2

4

8

 

压摆率控制

Cyclone器件的I/O口有一可编程的输出缓冲器可以配置成低噪声和高速模式。

快的转换率为高速系统平台提供高速转换,然而,这些快速转变可能会引入噪声的瞬态到系统中。

一个缓慢转换率降低了系统噪音,但增加了一个象征性的延误上升和下降的优势。

每个I/O引脚有一个单独的转换率控制,让设计师指定转换率对apin-by-pin进行设置。

压摆率可以对上沿和下沿进行控制。

总线保持

每个CycloneI/O管脚提供一个可选的总线保持功能。

总线保持电路可以保持I/O管脚的最后驱动状态。

由于总线保持电路保持I/O管脚的状态到新的信号出现,在总线处于三态的情况下,上拉和下拉电阻不必再保持信号了。

总线保持电路只有在配置之后才能有效。

进入用户模式,在配置结束后,总线保持电路捕获管脚的值。

可编程上拉电阻

每个CycloneI/O在用户模式下提供一个可选的上拉电阻(25K)。

当设计者使能改功能时,上拉电阻被连接到VCCIO。

CyclonedeviceIOEs支持如下标准接口:

■3.3-VLVTTL/LVCMOS

■2.5-VLVTTL/LVCMOS

■1.8-VLVTTL/LVCMOS

■1.5-VLVCMOS

■3.3-VPCI

■LVDS

■SSTL-2classIandII

■SSTL-3classIandII

■DifferentialSSTL-2classII(onoutputclocksonly)

表1.11描述了Cyclone对接口的支持情况

七、IOBank

图1.26CycloneIOBank

Cyclone1C6包括4个IOBank,如图所示。

IOBank1和Bank3支持所有的IO接口,而Bank2和Bank4不支持3.3VPCI标准,Bank2和Bank4带有DQS、DS和DM,可以和DDRSDRAM及FCRAM接口,请注意IOBank3的JTAG管脚必须接2.5V。

每个IOBank有它自己的VCCIO。

非差分信号支持1.5V、1.8V、2.5V和3.3V接口,每个单个的Bank使用差分电压支持差分接口。

VREF用于电压参考标准,如果某一IOBank不使用电压参考标准,这一管脚可以用作一般的IO口。

使用同一个VCCIO,每个Bank可以支持多种标准。

例如,当VCCIO为3.3V是时,FPGA可以和LVTTL、LVCMOS、3.3VPCI和SSTL-3的所有输入信号、输出信号接口。

第二部分VHDL编程概述

一、软件设计基础

1VHDL工程设计流程

 

 

系统功能分析

代码编写(coding)

功能仿真(functionsimulation)

综合(synthesis)

综合后仿真(post-synthesissimulation)

映射和布线(map&route)

后仿真(timingsimulation)

下载验证(verification)

电路设计与输入:

设计输入方法由硬件描述语言和原理图设计输入方法。

原理图设计输入缺点是,当所用芯片升级换代后,改动量过大。

应此推荐使用硬件描述语言。

功能仿真:

功能仿真也被称为前仿真。

通过仿真可以发现设计中的错误,加快设计的进度,提高设计的可靠性。

综合:

将设计输入翻译成门、触发器等基本逻辑单元组成的网表,供布局布线器使用。

综合后仿真:

综合完成后要检查综合结果是否与原设计一致。

可估计门级延时带来的影响,不能估计线延时。

映射和布线:

映射和布线是将综合的结果适配到PLD内部固有的硬件结构上。

一般采用时序驱动引擎进行布局布线,考虑面积和速度两个因素。

时序仿真和验证将布局和布线的时延信息反表注入到设计网表中,所进行的仿真叫时序仿真或后仿真。

总结,功能仿真的目的在于验证语言设计的电路结构和功能是否与设计意图相符;综合后仿真主要目的在于验证综合后的电路结构是否与设计意图相符。

时序仿真的目的在于验证是否存在时序违规。

下载验证:

使用专用电缆,将目标代码下载到配置芯片或者PLD内部的存储器,验证设计是否正确。

2程序设计基本结构

3VHDL软件的一个简单的例子

4实体

1)实体的功能是对与外部电路进行接口描述。

2)实体类似于原理图中的一个部件符号。

3)实体是VHDL的基本设计单元,它可以对一个门电路、一个芯片、一

块电路板乃至整个系统进行接口描述。

实体语句结构

ENTITY实体名IS

[GENIRIC;]

[PORT;]

ENDENTITY实体名

GENIRIC为所说明的环境提供了一种静态信息通道,可以由设计实体外部提供。

PORT类似于原理图部件符号上的管脚。

实体与外部信息的交流必须通过端口流入和流出。

实体的例子

ENTITYmux21IS

PORT(a,b:

INSTD_LOGIC;

s:

INSTD_LOGIC;

y:

INSTD_LOGIC);

ENDENTITYmux21

5结构体

1)结构体的一般语言格式

ARCHTECTURE结构体名OF实体名IS

[说明语句]

BEGIN

[功能描述语句]

ENDARCHTECTURE结构体名;

结构体说明语句是对结构体功能描述语句中将要用到的信号、数据类型、常数、元件、函数和过程等加以说明。

功能描述语句包括元件例化语句、子程序调用语句、进程语句、信号赋值语句和块语句。

ARCHITECTUREoneOFmux21IS

BEGIN

y==awhens=‘0’ELSE

bwhens=‘1’;

ENDARCHITECTUREone;

6进程

进程语句结构

[进程标号:

]PROCESS[(敏感信号参数表)]实体名IS

[进程说明部分]

BEGIN

顺序描述语句

ENDPROCESS[进程标号];

进程的例子

ARCHITECUREs_modeOFstartIS

BEGIN

p1:

PROCESS

BEGIN

WAITUNTILclock;--等待clock激活进程

IF(driver=‘1’)THEN

CASEoutputIS

WHENs1→output←s2

WHENs2→output←s3

WHENs3→output←s4

WHENs4→output←s1

ENDCASE

ENDIF;

ENDPROCESSp1;

ENDARCHITECUREs_mode;

7库

1)库的语句格式

LIBRARY库名;

例如语句“LIBRARYIEEE;”表示打开IEEE库,设计实体可以利用其中的软件包。

2)库的种类

IEEE库VHDL设计中最为常见的库。

STD库直接使用,无需调用。

WORK库现行工作库,需要为此设置目录。

VITAL库仿真器使用,用以VHDL门级时序模拟精度。

3)库的调用

看下面的代码

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

USEIEEE.STD_LOGIC_UNSIGNED;

8配置

配置把指定的结构体关联到一个确定的实体

配置语句的一般格式如下:

CONFIGURATION配置名OF实体名IS

配置说明;

END配置名;

9常用的开发软件

代码编写-ActiveHDL、UEdit等文本编辑器

功能仿真-ActiveHDL、ModelSim

综合-Synplisity

门级仿真-ModalSim

映射和布线-Quartus、ISE、ispLever

后仿真-ModelSim

下载验证-Quartus、ISE、ispLever

二、VHDL顺序语句

1、赋值语句

赋值语句的功能是将一个值或者一个表达式的结果传送给某一数据对象,如信号或变量,或由此组成的数组。

VHDL设计实体内的数据传递以及端口界面外部数据的读写都必须通过赋值语句的运行来实现。

(1)信号和变量赋值

变量赋值语句和信号赋值语句的语法格式如下:

变量赋值目标:

=赋值源;

信号赋值目标<=赋值源;

(2)赋值目标

赋值语句中赋值目标有4种类型。

a标识符赋值目标

以简单的标识符作为信号和变量名,这类名字可以作为标识符赋值目标

例如

VARIBLEa,b:

STD_LOGIC;

SIGNALc1:

STD_LOGIC_VECTOR(1TO4);

a:

=‘1’;

b:

=‘0’;

c1<=“1100”;

b数组单元素赋值目标

例如

SIGNALa,b:

STD_LOGIC_VECTOR(1TO3);

SIGNALi:

INTEGERRANGE0TO3;

SIGNALy,z:

STD_LOGIC;

a<=“1010”;

b<=“1000”;

a(I)<=y;

b(3)<=z;

c段下标元素赋值目标

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1