Xilinx FPGA设计基础(VHDL版).doc

上传人:灯火****19 文档编号:136792179 上传时间:2020-07-02 格式:DOC 页数:11 大小:321.50KB
返回 下载 相关 举报
Xilinx FPGA设计基础(VHDL版).doc_第1页
第1页 / 共11页
Xilinx FPGA设计基础(VHDL版).doc_第2页
第2页 / 共11页
Xilinx FPGA设计基础(VHDL版).doc_第3页
第3页 / 共11页
Xilinx FPGA设计基础(VHDL版).doc_第4页
第4页 / 共11页
Xilinx FPGA设计基础(VHDL版).doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《Xilinx FPGA设计基础(VHDL版).doc》由会员分享,可在线阅读,更多相关《Xilinx FPGA设计基础(VHDL版).doc(11页珍藏版)》请在金锄头文库上搜索。

1、第一章 开发软件ISE与开发流程LUT主要适合SRAM工艺生产,因此FPGA都是基于SRAM工艺的,掉电就会丢失。1.1 设计输入除了常见的文本输入,还可以采用图形输入方式:单击Design Utilities-Creat Schematic Symbol,则会在工程文件夹下生成一个MY_AND2.sym文件,同时这个生成的符号被加入到符号库中。这样可以添加元件。n 用户约束文件UCF的编写:管脚约束:如NET “” LOC = ; -将信号锁定到fpga的管脚。时钟约束:如NET “” PERIOD = period HIGH/LOWhigh or low time。n 采用图形化方法输入约

2、束文件:创建ucf文件,选择ucf文件,然后点击Processes-User Constrains-Create Timing Constraints添加时序约束;点击Processes-User Constrains-I/O Pin Planning添加管脚约束。1.2 设计综合(Synthesize)综合将概念性硬件描述语言HDL的设计定义转换成针对目标器件的逻辑或者物理表示。XST(Xilinx Synthesis Tools)就是综合工具,其输出为Xilinx特有的NGC网表文件,NGC包含转化后的逻辑数据和约束信息。综合是设计流程中的基本步骤,它将概念性硬件描述语言的设计定义转换为针

3、对器件的逻辑或物理表示。在综合过程中,状态机是单独处理、独立分析的,根据综合的选项,综合器选择状态机在综合过程中选用的实现算法。综合完成后,综合器会根据综合选项和XCF(XST Constraint File, 综合约束文件),对综合结果做一些基础的优化。1.3 功能仿真(Simulation-behavioral)功能仿真可以对工程设计文件进行初步的功能验证。仿真软件将HDL语言转换为抽象的逻辑电路,忽略信号在逻辑器件和传输线上的延时,并对应各种可能的输入信号仿真得到设计工程的输出信号,检验输出信号是否满足预期的要求。功能仿真需要创建Test Bench文件。1.4 工程实现(Impleme

4、ntation)工程实现包含以下四个步骤:n Translate将综合后的网表文件NGC和约束文件UCF融合到同一个Xilinx的设计文件PCF中。n Map将设计中的功能器件映射到工程设计的目标器件资源中。n Place and Route对映射后的目标器件资源进行布局和布线,满足时序约束。n Generate Programming File生成可以下载到器件中的比特流文件,对器件进行编程配置。1.5 时序仿真(Simulation-Post Route)对经过布局布线后的仿真模型加入延时文件进行仿真的过程,他将最基本的门级延时计算在内,模拟工程设计在FPGA器件内的实现过程。经过时序仿真

5、后的设计基本上与实际电路是一致的。时序仿真的基本参数:n 时钟周期Period:最小时钟周期是指信号从一个触发器或锁存器的输入端,经过一系列的组合逻辑单元和信号线,到达下一个同步器件,所用的最长时间。n 端口到建立时间(Pad to setup time):信号从进入fpga芯片,经过一系列的逻辑元件和连线,到达一个同步器件(触发器、锁存器或存储器)的输入端所用的最长时间。n 时钟到端口时间(Clock to pad time):数据信号从触发器或锁存器的输入端口,经过逻辑单元和连线时延,到达fpga芯片的输出管脚的最长时间。这个时间在约束文件中称为OFFSET OUT AFTER约束。n 端

6、口到端口时间(Pad to pad time):数据信号从输入端口进入fpga芯片,经过一系列逻辑元件和连线延时后到达fpga的输出端口的最大时间。1.6 器件配置利用iMPACT工具将比特流文件编程到fpga中。第二章 VHDL硬件描述语言2.1 基础知识fpga电路设计的四个层次:行为层次(Behavioral)、寄存器传输层次(RTL, Register Transfer Level)、逻辑门层次(Logic)和布图层次(Layout)。行为层次主要关注模块的功能描述和仿真验证,寄存器传输层次要关注模块的可综合电路的实现,逻辑门层次考虑如何用门级电路实现给定功能,布图层次考虑如何将电路适

7、配到fpga的资源中。2.2 VHDL基本结构2.2.1 实体与构造体实体与C+中的类相似。构造体的行为描述通常采用process进程语句实现。构造体的数据流描述方式主要使用VHDL语言中的标准布尔函数,将信号之间的布尔代数关系用布尔方程式来表示。结构体的结构描述主要通过下层模块的声明和调用及端口映射将下层模块相连。n Generic参数声明类似于C+语言中的类属参数声明。library IEEE;use IEEE.STD_LOGIC_1164.all;entity COUNTER is generic( COUNT_WIDTH : INTEGER := 7 ); port( RST, SET

8、, CLR : in STD_LOGIC; SETVALUE : in STD_LOGIC_VECTOR(COUNT_WIDTH downto 0); COUNTOUT : out STD_LOGIC_VECTOR(COUNT_WIDTH downto 0) );end COUNTER;2.2.2 库用户自定义库时,先用关键字library说明要引用的库名,然后用use语句打开库中程序包。在计算机中新建一个文件夹,将文件夹名改为用户自定义“库名”,将编辑的程序包等以文件形式存在该文件下,此时该文件夹即为用户自定义库。在ise中自定义library时,首先要新建library,然后编写相应的程序

9、包,并将程序包移到(move to library)该library中,然后就可以使用use 之类的语句了。2.2.3 程序包程序包的作用是收集被多个VHDL实体共享的数据类型、子程序或数据对象,使其适用于更一般的访问和调用范围。2.2.4 配置一个实体可以声明多个构造体,但形成最终电路时,只能使用一种结构体作为功能实现的描述,这时就需要使用配置将实体与结构体连接起来。配置不是从属单元,可以独立存在。通常在使用时都会将配置单独写入一个文件中。1、默认配置语法如下。当实体选择的结构体中,不包含BLOCK语句和COMPONENT语句时,可采用默认配置为实体选择不同的结构体和对VHDL程序的性能评估

10、。configuration 配置名称 of 实体名称 is for 结构体名称 use 配置项; end forend 配置名称;2、元件配置。在层次化设计中,应用库中的元件是设计人员经常采用的一种效率比较高的工作方式。引用元件的方法有两种:使用元件例化语句;使用元件配置。元件配置语句的语法结构有两种形式,分别是低层次的配置和实体结构体对的配置。低层次的配置语法为:configuration 配置名 of 实体名 is for 选择的结构体名 for 例化标号:元件名 use configuration 库名.元件配置名; end for; . end for;end 配置名;实体结构体对的

11、配置的语法结构如下:configuration 配置名 of 实体名 is for 选择的结构体名 for 例化标号:元件名 use entity 库名.实体(结构体); end for; . end for;end 配置名;显然,实体结构体对比低层次的配置要好。3、结构体配置。虽然元件配置语句配置实体具有一定的优势,这种方法易写也易懂;但是书写过于臃肿,于是引出了第三种配置语句结构体配置语句。结构体配置语句必须放在所要配置的实体中的结构体中。其语法如下:for : use entity :;【举例】采用结构体配置实现全加器library ieee;use ieee.std_logic_116

12、4.all;entity config_example is port(A,B,Cin : in std_logic; Co, S : out std_logic);end config_example;architecture structure of config_example is component add port(a : in std_logic; b : in std_logic; y : out std_logic); end component; signal tmp1, tmp2, tmp3 : std_logic; for U1, U2 : add use entity

13、 work.add(xor_str); for U3, U4 : add use entity work.add(and_str); for U5 : add use entity work.add(or_str);begin U1 : add port map(A,B,tmp1); U2 : add port map(tmp1,Cin,S); U3 : add port map(tmp1,Cin,tmp2); U4 : add port map(A,B,tmp3); U5 : add port map(tmp2,tmp3,Co);end structure;2.3 语法要素2.3.1 对象类

14、型Port、Constant、Signal、Variable变量在综合后可以是一个连线(wire),也可以是一个寄存器(register),综合的结果取决于变量在时序电路中是否用于保存信号值。变量虽然可以赋初始值,但是在综合时,综合器会忽略掉。信号在声明结构中被赋予的初始值,与变量相同,在综合时也会被忽略。信号的赋值可以加入延时,如A = B after 5 ns;但是,延时语句只在行为建模时起作用,而在综合时也会被完全忽略。2.3.2 数据类型n 标量类型1、bit类型是二值系统中的最基本单元,分别表示低电平和高电平。2、Boolean类型没有数值的含义,也不能进行算术运算,只能作为关系运算的结果,在判断语句中判断使用。3、 Integer类型的数据在底层电路中用一系列二进制位表示。使用时要指定range范围,这样综合器才能综合。4、real类型的数据很多公司的综合工具不支持。5、物理类型用于表示一些物理量,完整的物理数据类型包含数值和单位两部分。定义物理类型时必须先给出一个基准单位。如VHDL只定义了一个物理类型:type TIME is range -2147483647 t

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号