欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    FPGA实验指导书.docx

    • 资源ID:30410019       资源大小:3.95MB        全文页数:143页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    FPGA实验指导书.docx

    1、FPGA实验指导书FPGA实验指导书刘敬猛 编北京航空航天大学电工电子中心2009年10月前言现场可编程门门阵列(FPGA,Field Programmable Gate Array)的出现是超大规模集成电路(VLSI)技术和计算机辅助设计(CAD)技术发展的结果。FPGA器件集成度高、体积小,具有通过用户编程实现专门应用的功能。它也许电路设计者利用基于计算机的开发平台,经过设计输入、仿真、测试和校验,直到达到预期的结果。使用FPGA器件可以将原来的电路板级产品集成为芯片级产品,从而降低了功耗,提高了可靠性,同时还可以很方便地对设计进行在线修改。FPGA器件成为研制开发的理想器件,特别适合于产

    2、品的样机开发和小批量生产,因此有时人们也把FPGA称为可编程的ASIC。本书的作者在工程实践和科学研究中深切感受到FPGA技术是数字电路设计的利器,从中受益颇深。Cyclone FPGA是目前ASIC应用的低成本替代方案。作为系统设计人员,您面临很多挑战,包括越来越大的成本压力和越来越复杂的设计,新出现的标准,以及越来越短的设计周期等。 ASIC 开发涉及到大量的工程资源,设计仿真和验证,需要进行多次重制。利用其系统级集成功能,Cyclone FPGA系列避免了ASIC昂贵的NRE负担,降低了订购量和产品推迟带来的风险。采用Cyclone FPGA系列,您的大批量应用现在可以采用价格相当的可编

    3、程解决方案(与ASIC相比)。新的市场发展趋势,例如世界标准、平台融合、交互性以及技术改进等,不断推动了对高性价比方案的需求。Cyclone系列FPGA的价格和功能满足了市场对创新的需求,通过产品迅速面市来确定领先优势。消费类、通信、计算机外设、工业和汽车等低成本大批量应用市场都可以使用Cyclone FPGA。Cyclone器件的性能足以和业界最快的FPGA进行竞争。Cyclone FPGA综合考虑了逻辑、存储器、锁相环(PLL)和高级I/O接口,是价格敏感应用的最佳选择。Cyclone FPGA具有:新的可编程体系结构,实现低成本设计。 嵌入式存储器资源支持多种存储器应用和数字信号处理(D

    4、SP)实现 。专用外部存储器接口电路,支持与DDR FCRAM和SDRAM器件以及SDR SDRAM存储器的连接。支持串行总线和网络接口以及多种通信协议。片内和片外系统时序管理使用嵌入式PLL 。支持单端I/O标准和差分I/O技术,LVDS信号数据速率高达640Mbps。处理功耗支持Nios II 系列嵌入式处理器。采用新的串行配置器件的低成本配置方案。VHDL作为IEEE标准的硬件描述语言和EDA的重要组成部分,经过二十多年的发展、应用和完善,以其强大的系统描述能力、规范的程序设计结构、灵活的语句表达风格和多层次的仿真测试手段,受到业界的普遍认可同和广泛的接受,成为现代EDA领域的首选硬件设

    5、计计算机语言,目前流行的EDA工具软件全部支持VHDL除了作为电子系统设计的主选硬件描述语言外,VHDL在EDA领域的仿真测试、学术交流、电子设计的存档、程序模块的移植、ASIC设计源程序的交付、IP核(Intelligence Property Core)的应用等方面承担着不可或缺的角色,因此不可避免地将成为了我国高等教育中电子信息类专业知识结构的重要组成部分。本书的前两部分介绍了Cyclone FPGA的硬件体系结构。第三到第五部分介绍了九个实验,其中第一个实验详细介绍了软件开发的详细过程。本书的第六部分介绍了北京掌宇公司的KH31001实验箱。附件包括Quartus的安装和Cyclone

    6、 1C6Q240的管脚图。教材在编写的过程中得到胡晓光教授、吴星明副教授和徐东博士的大力支持,电工电子中心的很多老师在使用本教材的第一版时提出了很多诚恳的建议,在此一并表示感谢。由于作者水平有限,书中难免有不妥甚至错误之处,欢迎各位读者和同行批评指正。 作者 2009年10月9日于北航电工电子中心 VHDL 编程注意事项1 在VHDL中,共有3种常用对象类型:常量、变量和信号。2 应注意端口信号的方向。Out方向只能被赋值;in方向可以赋值:buffer可以赋值和被赋值;由于inout就是输入/输出端口,因此可以赋值和被赋值。特别需要注意的是,当输出信号要反馈回去时,必须定义为inout。3

    7、信号使用信号赋值符“=”。4 变量使用变量赋值符“:=”。5 std_logic和std_logic_vector是可综合VHDL描述中常见的数据类型6 在ieee.std_logic_unsigned.all包的支持下,可进行std_logic和std_logic_vector的加减运算。7 在同一个进程中,信号可以被多次赋值,但是只有最后一个赋值有效。在进程中,因为语句的执行是顺序的,虽然对一个信号有多次赋值,但是仍然认为该信号具有具有一次驱动。在进程中,可以对一个信号进行多次赋值。 但是,变量确不然,在一个进程内,对变量的多次赋值完全可以按照设计的逻辑进行。8 在结构体中,不能对一个信号

    8、赋值多次,因为各个信号赋值语句之间是并发关系。9 被赋值信号的位数与赋予它的数值位数必须相等,否则出错。例如,将2位八进制赋予4位逻辑矢量是错误的。解决这一问题的办法是:把位数凑齐。例如3 bit 的std_logic_vector和1位的std_logic可以通过以下的方法链接addtemp:=0&A1&A0+0&B1&B0+”00”&CYI;10 为使赋值和被赋值情况下不出现错误,可以在结构体内声明与输入、输出端口相同数据类型的信号。在结构体中,先将输入端口赋予信号,然后在对信号进行逻辑处理后,在用赋值语句将信号赋予输出端口。11 定义整形数范围的时候,计数器计数的范围实际上是2的n次幂减

    9、1。例如integer rang 0128,实际上会计数到255,因为128需要8位二进制表示。12 Case语句需要时钟触发的。13 信号量不可以在进程内定义。14 VHDL文件不可以放在根目录下。15 工程包括多个文件时顶层实体是总文件。16 器件例化语句不能放在进程内17 有“”编译不能通过的原因是缺少库文件ieee_logic_unsigned.all。18 时钟触发不同于 clkEVENT and clk=1。第一部分 Cyclone FPGA介绍一、器件概述Cyclone FPGA基于1.5V 、0.13um、全铜SRAM处理,逻辑容量LEs最多可达20060,RAM最大可达288

    10、Kbits,其内部用锁相环,内含DDR接口可以和DDR SDRAM和FCRAM存储器相连。Cyclone是一款低成本的FPGA,它支持多种标准的IO,包括311Mbps的LVDs和66MHZ 32位的外部器件接口,为了和ASSP及ASIC器件连接,Altera 提供了一种低成本的串行配置方案。 Cyclone FPGA的应用主要是定位在终端市场,如消费电子、计算机、工业和汽车等领域。器件特点 5980个LEs 20个 M4K RAM块(12836bits) 支持低成本的串口配置 支持LVTTL、LVCMOS、SSTL-2、SSTL-3标准 支持66-MHZ 32位PCI标准 支持311Mbps

    11、 LVDs IO接口 两个锁相环提供时钟的倍频和相移 每个LAB最多可有6个时钟源和8根时钟线。 支持外扩存储器,包括 DDR SDRAM 支持多种知识产权( IP )核心,包括Altera的megacore和Altera megafunctions合作伙伴程序megafunctions。表1.8Cyclone系列FPGA特性见参表 。表1.9 不同封装的Cyclone FPGA的I/O管脚数图1.21 编译综合结果 让我们先来看看Quartus的编译综合的结果,第一是Total logic elements, 第二是Total pins,第三是Total memory bits,第四是Tot

    12、al PLLs. 他们和器件到底是什么关系呢?二、平面布局和基本功能块 Cyclone 器件的平面布局如图1.21 所示。 Cyclone 器件包括逻辑阵列块LABs、嵌入式存储器块M4k、锁相环PPL、输入输出单元IOEs。LABs和M4k通过内部的行线和列线相连,不同的连接方式具有不同的速度。Logic Array由LABs组成,每个LABs由10个LEs组成。LEs是逻辑单元的最小单位,Cyclone 1C6具有5960个LEs。LABs在整个器件内按行列排放。Cyclone 1C6含有20个M4K RAM块,每个RAM块有4608位,提供专用双端口,简单双端口、单端口三种模式,最大宽度

    13、是32位,最高速度是200MHZ。IO管脚在IOE内,它们分布在FPGA的四周,连接在LABs的行和列的末端。IO管脚支持变化的单端和差分IO标准,例如66MHZ 32位PCI标准和311Mbps的LVDS IO标准。每个IOE包含一个双向的IO buffer和三个寄存器用于寄存器的输入、输出和使能信号。兼用的DQS、DQ和DM带有延时链提供外部存储器DDR SDRAM和FCRAM的接口。Cyclone 有两个锁相环提供全局时钟网络。全局时钟网络包含8条可以驱动整个芯片的全局时钟线。全局时钟线也可以被用于控制信号。锁相环具有倍频和移相功能同时也可以为外部的高速差分信号提供时钟。三、 逻辑阵列块

    14、LABs 每个LABs包含10个LEs、LE进位链、LAB控制信号、局部互连线、LUT链和寄存器链连接线。局部互连线在同一个LAB内的LEs间传输信息;LUT链在同一个LAB内将信号由一个LUT传送到另一个LUT;寄存器链将信息由一个LE寄存器传送到邻近的寄存器。Quartus编译器自动对布线资源进行调整。LAB的互连 LAB的局部互连线能够驱动块内的LEs,它是由LAB块内的LE输出、行线和列线所驱动。邻近的LABs、PLLs和M4K RAM块可以通过直接连接驱动局部互连线。直接驱动高速灵活,每个LE具有驱动30个负载的能力。图.1.22四、逻辑单元LEs LEs是Cyclone器件的最小逻

    15、辑单元。每个LE包含一个4输入LUT,它是四变量输入的多用功能发生器,可以产生所需的任意逻辑。而且,每一个LE包含了一个可编程寄存器和进位选择功能的进位链。LE支持动态的加或者减模式,模式的选择由LAB宽度控制信号决定。每个LE可以驱动局部互连、行、列、LUT链、寄存器链、直接驱动。 每个LE可编程寄存器可以配置成D触发器、JK触发器、T触发器和SR锁存器。每个寄存器包含数据、异步装载数据、时钟、时钟使能和清零等输入。无论是IO引脚还是内部的逻辑都能驱动时钟使能、异步装载和异步数据。异步装载的数据来自LE输入管脚的data3。当然LUT的输出可以不经过寄存器直接输出。每个LE有三个输出用以驱动

    16、局部互连、行和列的布线资源。LUT和寄存器的输出可以独立驱动它们。LE有两个输出驱动行、列和直接连接,一个驱动局部互连。LUT链和寄存器链 同一个LAB内的LE有LUT链和寄存器链,用于LE间的级联。这样无论是LUT的输入还是寄存器的输出都可以得到扩展。 图1.23五、IO结构 差分和单端的IO标准 3.3V,32位,64MHz PCI兼容 支持JTAG的边界扫描 弱上拉电阻(配置期间) 压摆率控制 三态缓冲器 总线保持电路 用户模式下的可编程上拉电阻 可编程的输入输出延时 开漏输出 DS和DQS的IO管脚 Cyclone IOEs 包含了一个双向的buffer 和三个寄存器以完成一位数据的双

    17、向传输,如图 所示。这三个寄存器是输入寄存器、输出寄存器和输出使能寄存器。设计者可以使用输入寄存器完成快速建立时间,使用输出寄存器得到快速的时钟到输出的时间。而且,设计者可以利用输出使能寄存器的到快速的时钟到输出使能定时。Quartus编译器根据输出使能的时间自动控制多路输出和双向管脚。IOEs可以被用于输入、输出和双向的引脚。它不仅能和输入输出信号相连接,而且可以作为总线使用,以方便、灵活地传送数据。IOEs在IO块内,IO块位于Cyclone芯片的四周。图1.24六、双向IO配置Cyclone IOE 双向IO配置如图 所示。IOE在双相模式下,设计者使用输入寄存器,根据输入信号的特点设定

    18、数据建立时间。输入寄存器有它自己的时钟输入和时钟使能;输出寄存器根据负载的特点可以设定时钟到输出的时序;输出使能可以设定使能信号的时间。输出寄存器和输出使能寄存器的时钟信号和时钟使能信号来自LAB、专用IO、行、列的局部互连。图1.25Cyclone IOE由可编程延时模块实现(1)0保持时间,(2)最小建立时间,(3)时钟到输出可编程。管脚直接驱动寄存器可能需要一个0保持时间的延时,而管脚驱动寄存器通过组合逻辑电路不一定能够满足需要。可编程延时减少了输入管脚到到逻辑阵列和IOE的输入寄存器延时。Quartus编译器在0保持时间的模式下能够自动地最大限度减小保持时间,可编程延时模块能够增加输出

    19、寄存器的寄存器到管脚的延时。图 表明了这种关系。可编程的驱动能力 Cyclone的输出管脚缓冲器有驱动能力可编程选择项。设计者可选择多种LVTTL和LVCMOS标准,SSTL-2 class I and II和SSTL-3 class I and II也是不错的选择,对压摆率的控制可以减少噪声和过冲。图 是可编程驱动能力和相关的指标参数。开漏输出 开漏输出提高了IOE的驱动能力。表1.10I/O StandardIOHIOL Current Strength Setting(mA)LVTTL(3.3V)48121624LVCMOS(3.3V)24812LVTTL(2.5V)281216LVTT

    20、L(1.8V)2812LVCMOS(1.5V)248压摆率控制Cyclone 器件的 I/O 口有一可编程的输出缓冲器可以配置成低噪声和高速模式。快的转换率为高速系统平台提供高速转换,然而,这些快速转变可能会引入噪声的瞬态到系统中。一个缓慢转换率降低了系统噪音,但增加了一个象征性的延误上升和下降的优势。每个I / O引脚有一个单独的转换率控制,让设计师指定转换率对a pin-by-pin进行设置。压摆率可以对上沿和下沿进行控制。总线保持每个Cyclone I/O 管脚提供一个可选的总线保持功能。总线保持电路可以保持I/O管脚的最后驱动状态。由于总线保持电路保持I/O管脚的状态到新的信号出现,在

    21、总线处于三态的情况下,上拉和下拉电阻不必再保持信号了。总线保持电路只有在配置之后才能有效。进入用户模式,在配置结束后,总线保持电路捕获管脚的值。可编程上拉电阻每个Cyclone I/O 在用户模式下提供一个可选的上拉电阻(25K)。当设计者使能改功能时,上拉电阻被连接到VCCIO。Cyclone device IOEs 支持如下标准接口: 3.3-V LVTTL/LVCMOS 2.5-V LVTTL/LVCMOS 1.8-V LVTTL/LVCMOS 1.5-V LVCMOS 3.3-V PCI LVDS SSTL-2 class I and II SSTL-3 class I and II

    22、Differential SSTL-2 class II (on output clocks only)表1.11 描述了Cyclone 对接口的支持情况七、IO Bank图1.26Cyclone IO Bank Cyclone 1C6包括4个IO Bank,如图 所示。IO Bank1和Bank3 支持所有的IO接口,而Bank2和Bank4不支持3.3V PCI标准,Bank2和Bank4带有DQS、DS和DM,可以和DDR SDRAM及FCRAM接口,请注意IO Bank3的JTAG管脚必须接2.5V。 每个IO Bank有它自己的VCCIO。非差分信号支持1.5V、1.8V、2.5V和

    23、3.3V接口,每个单个的Bank使用差分电压支持差分接口。VREF用于电压参考标准,如果某一IO Bank不使用电压参考标准,这一管脚可以用作一般的IO口。 使用同一个VCCIO,每个Bank可以支持多种标准。例如,当VCCIO为3.3V是时,FPGA可以和LVTTL、LVCMOS、3.3VPCI和SSTL3的所有输入信号、输出信号接口。第二部分 VHDL编程概述一、软件设计基础1 VHDL工程设计流程系统功能分析代码编写(coding)功能仿真(function simulation)综合(synthesis)综合后仿真(post- synthesis simulation )映射和布线(m

    24、ap&route)后仿真(timing simulation )下载验证(verification)电路设计与输入: 设计输入方法由硬件描述语言和原理图设计输入方法。原理图设计输入缺点是,当所用芯片升级换代后,改动量过大。应此推荐使用硬件描述语言。功能仿真: 功能仿真也被称为前仿真。通过仿真可以发现设计中的错误,加快设计的进度,提高设计的可靠性。综合: 将设计输入翻译成门、触发器等基本逻辑单元组成的网表,供布局布线器使用。综合后仿真:综合完成后要检查综合结果是否与原设计一致。可估计门级延时带来的影响,不能估计线延时。映射和布线:映射和布线是将综合的结果适配到PLD内部固有的硬件结构上。一般采用

    25、时序驱动引擎进行布局布线,考虑面积和速度两个因素。时序仿真和验证 将布局和布线的时延信息反表注入到设计网表中,所进行的仿真叫时序仿真或后仿真。总结,功能仿真的目的在于验证语言设计的电路结构和功能是否与设计意图相符;综合后仿真主要目的在于验证综合后的电路结构是否与设计意图相符。时序仿真的目的在于验证是否存在时序违规。下载验证: 使用专用电缆,将目标代码下载到配置芯片或者PLD内部的存储器,验证设计是否正确。2 程序设计基本结构3 VHDL软件的一个简单的例子4 实体1)实体的功能是对与外部电路进行接口描述。2)实体类似于原理图中的一个部件符号。3)实体是VHDL的基本设计单元,它可以对一个门电路

    26、、一个芯片、一 块电路板乃至整个系统进行接口描述。实体语句结构 ENTITY 实体名 IS GENIRIC; PORT; END ENTITY 实体名 GENIRIC 为所说明的环境提供了一种静态信息通道,可以由设计实体外部提供。 PORT 类似于原理图部件符号上的管脚。实体与外部信息的交流必须通过端口流入和流出。 实体的例子 ENTITY mux21 IS PORT (a,b:IN STD_LOGIC; s:IN STD_LOGIC; y:IN STD_LOGIC); END ENTITY mux215 结构体1)结构体的一般语言格式 ARCHTECTURE 结构体名 OF 实体名 IS 说

    27、明语句 BEGIN 功能描述语句 END ARCHTECTURE 结构体名; 结构体说明语句是对结构体功能描述语句中将要用到的信号、数据类型、常数、元件、函数和过程等加以说明。 功能描述语句包括元件例化语句、子程序调用语句、进程语句、信号赋值语句和块语句。 ARCHITECTURE one OF mux21 IS BEGIN y a when s0ELSE b when s1; END ARCHITECTURE one;6 进程进程语句结构 进程标号: PROCESS (敏感信号参数表) 实体名 IS 进程说明部分 BEGIN 顺序描述语句 END PROCESS进程标号; 进程的例子 ARC

    28、HITECURE s_mode OF start IS BEGIN p1: PROCESS BEGIN WAIT UNTIL clock ;-等待clock 激活进程 IF(driver1)THEN CASE output IS WHEN s1 output s2 WHEN s2 output s3 WHEN s3 output s4 WHEN s4 output s1 END CASE END IF; END PROCESS p1; END ARCHITECURE s_mode;7 库1)库的语句格式 LIBRARY 库名; 例如语句“LIBRARY IEEE;”表示打开IEEE库,设计实体

    29、可以利用其中的软件包。2)库的种类 IEEE库 VHDL设计中最为常见的库。 STD库 直接使用,无需调用。 WORK库 现行工作库,需要为此设置目录。 VITAL库 仿真器使用,用以VHDL门级时序模拟精度。3)库的调用 看下面的代码 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED;8 配置配置把指定的结构体关联到一个确定的实体配置语句的一般格式如下: CONFIGURATION 配置名 OF 实体名 IS 配置说明; END 配置名;9 常用的开发软件代码编写ActiveHDL、UEdit等文本编

    30、辑器功能仿真ActiveHDL、ModelSim综合Synplisity门级仿真 ModalSim映射和布线Quartus、ISE、ispLever后仿真 ModelSim下载验证Quartus、ISE 、ispLever二、VHDL顺序语句1、赋值语句赋值语句的功能是将一个值或者一个表达式的结果传送给某一数据对象,如信号或变量,或由此组成的数组。VHDL设计实体内的数据传递以及端口界面外部数据的读写都必须通过赋值语句的运行来实现。(1)信号和变量赋值 变量赋值语句和信号赋值语句的语法格式如下: 变量赋值目标: 赋值源; 信号赋值目标 赋值源;(2)赋值目标赋值语句中赋值目标有4种类型。a 标识符赋值目标 以简单的标识符作为信号和变量名,这类名字可以作为标识符赋值目标例如 VARIBLE a,b:STD_LOGIC; SIGNAL c1:STD_LOGIC_VECTOR(1 TO 4);a :1;b :0;c1=“1100”;b 数组单元素赋值目标例如SIGNAL a,b:STD_LOGIC_VECTOR(1 TO 3);SIGNAL i:INTEGER RANGE 0 TO 3;SIGNAL y,z:STD_LOGIC;。 a=“1010”;b=“1000”;a(I)=y;b(3)=z;c 段下标元素赋值目标


    注意事项

    本文(FPGA实验指导书.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

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

    收起
    展开