第四章 VHDL语言与FPGA设计_第1页
第四章 VHDL语言与FPGA设计_第2页
第四章 VHDL语言与FPGA设计_第3页
第四章 VHDL语言与FPGA设计_第4页
第四章 VHDL语言与FPGA设计_第5页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、电子系统电子系统EDAEDA技术技术2022-4-12Page 2 FPGA FPGA设计初步设计初步4.1对对VHDLVHDL和原理图的混合设计与仿真和原理图的混合设计与仿真4.2Protel DXPProtel DXP和和Altera FPGAAltera FPGA接口接口4.3实例讲解实例讲解4.4本章小结本章小结4.52022-4-12Page 3 FPGA FPGA设计初步设计初步4.1对对VHDLVHDL和原理图的混合设计与仿真和原理图的混合设计与仿真4.2Protel DXPProtel DXP和和Altera FPGAAltera FPGA接口接口4.3实例讲解实例讲解4.4本

2、章小结本章小结4.5v FPGA是现场可编程门阵列(Field Programmable Gate Array)的简称,它具有体系结构和逻辑单元灵活、集成度高及适用范围宽的特点,兼容了PLD和通用门阵列的特点,同一片FPGA通过不同的编程数据可以产生不同的电路功能,因此可以实现大规模的集成电路设计。在进行FPGA项目设计之前,首先要了解FPGA设计的相关基础知识,包括基本概念、设计流程等。v 4.1.1 FPGA的基本概念v 4.1.2 FPGA设计流程v 4.1.3 VHDL语言简介2022-4-12Page 4v FPGA是现场可编程门阵列(Field Programmable Gate

3、Array)的简称,通常包含三类可编程资源:可编程逻辑功能块、可编程I/O块和可编程内部互连。v 可编程逻辑功能块:可编程逻辑功能块:它是实现用户功能的基本单元,它们通常排列成一个阵列,散布于整个芯片;v 可编程可编程I/O块:块:用于完成芯片上逻辑与外部封装脚的接口,常围绕着阵列排列于芯片四周;v 可编程内部互连:可编程内部互连:它包括各种长度的连线线段和一些可编程连接开关,它们将各个可编程逻辑块或I/O块连接起来,构成特定功能的电路。2022-4-12Page 5v FPGA内部多采用查找表的结构。v 查找表简称为LUT (Look-Up-Table),LUT本质上就是一个RAM。目前FP

4、GA中多使用4输入的LUT,所以每一个LUT都可以看成一个具有4位地址线的161的RAM。v 基于查找表(LUT)的FPGA的结构v 采用这种查找表结构的FPGA有Altera的ACEX和APEX系列及Xilinx的Spartan和Virtex系列等。v 查找表结构的FPGA逻辑实现原理2022-4-12Page 6v 1创建FPGA项目v 2设置FPGA项目的属性v 创建好FPGA项目之后,还需要对相关属性,如错误报告、比较器、综合和仿真等进行设置,以帮助项目的设计和优化。v 3VHDL编译环境v 在已创建的FPGA项目中,执行菜单命令【文件】【创建】【VHDL文件】,在项目文件夹中将自动生

5、成一个VHDLl.Vhd文件VHDLl.Vhd文件。同时,此文件在主窗口中被打开,处于文本编辑器状态。2022-4-12Page 7v 目前最主要的硬件描述语言是VHDL和Verilog HDL。v VHDL是超高速集成电路硬件描述语言(Very High Speed Integrated Circuit Hardware Description Language)的简称,它发展得较早,语法严格;v Verilog HDL是在C语言的基础上发展起来的一种硬件描述语言,语法较自由。v 一个完整的VHDL程序包括实体(entity)、结构体(architecture)、配置(configurati

6、on)、包 ( package)、库(library)5个部分。其中,前4个部分是可分别编译的源设计单元。VHDL程序结构可以用图11-10表示。2022-4-12Page 82022-4-12Page 9图4-1 VHDL程序结构v 1.实体说明v 实体说明是一个器件的外观视图,即从外部看到的器件外貌,包括端口等。实体说明也可以定义参数,并把参数从外部传入模块内部。任何一个基本设计单元的实体说明都具有如下结构: ENTITY实体名IS GENERIC(类属表); PORT(端口表); 实体说明部分; BEGIN 实体语句部分; END ENTITY实体名; 中的内容是可选的,即可以没有这部分

7、内容。2022-4-12Page 1011设计实体设计实体 提供设计模块的公共信息,是提供设计模块的公共信息,是VHDL设计电设计电 路的最基本部分。路的最基本部分。一个模块中仅有一个设计实体一个模块中仅有一个设计实体ENTITY mux21a IS PORT( a, b : IN BIT; s : IN BIT; y : OUT BIT ) ;END ENTITY mux21a ;实体名实体名端口名端口名端口模式端口模式端口数据类型端口数据类型实体名实体名: :不应用数字或中文定义实体名不应用数字或中文定义实体名, ,也不能用元件也不能用元件 名命名名命名, ,且不能用数字起头且不能用数字起

8、头. .v 2端口说明v 端口说明是对设计实体与外部接口的描述,也可以说是对外部引脚信号的名称、数据类型和输入输出方向的描述。端口为设计实体和其外部环境通信的动态信息提供通道,其功能对应于电路图符号的一个引脚。实体说明中的每一个I/O信号被称为一个端口,一个端口就是一个数据对象。每个端口必须有一个名字、一个通信模式和一个数据类型。是实体的重要组成部分。端口说明的一般格式为:Port(端口名:模式 数据类型名; 端口名:模式 数据类型名);2022-4-12Page 12端口模式端口模式INOUTINOUTBUFFER数据类型数据类型VHDL语言的IEEE1076/93标准规定,EDA综合工具提

9、供的数据类型为布尔型(Boolean)、位型(Bit)、位矢量型(Bit-Vector)和整数型(Interger)。v 3结构体v 结构体是次级设计单元,具体指明了该设计实体的结构或行为,定义了该设计实体的功能,规定了该设计实体的数据流程,指定了该实体中内部元器件的连接关系,把一个设计的输入和输出之间的关系建立起来。由于结构体是对实体功能的具体描述,因此一定要跟在实体的后面。v 一个结构体的一般书写格式为:ARCHITECTURE 结构体名 OR 实体名 IS定义语句BEGIN并行处理语句进程语句 -器件的功能实现部分END结构体名; 2022-4-12Page 142022-4-12Pag

10、e 14VHDL结构中用于描述逻辑功能和电路结结构中用于描述逻辑功能和电路结构的语句:顺序语句和并行语句。构的语句:顺序语句和并行语句。2022-4-12Page 15v 4.描述风格v 描述风格也就是建模方法。v 用VHDL语言描述结构体有4种方法。v (1)行为描述法:采用进程语句,顺序描述被称为设计实体的行为。v (2)数据流描述法:采用类似于布尔方程的并行信号赋值语句进行描述。v (3)结构描述法:采用元件例化语句描述设计实体内的结构组织和元件互连关系。v (4)混合描述法:采用多个进程(process)、多个模块(blocks)、多个子程序(subprograms)的子结构方式,是将

11、前三种基本的描述方法组合起来。2022-4-12Page 16三种描述方式的比较三种描述方式的比较描述方式描述方式优点优点缺点缺点适用场合适用场合结构化描结构化描述述连接关系清连接关系清晰,电路模晰,电路模块化清晰块化清晰繁琐、复杂繁琐、复杂层次化设计层次化设计数据流描数据流描述述布尔函数定布尔函数定义明白义明白逻辑方程逻辑方程难以获得难以获得小门数设计小门数设计行为描述行为描述逻辑关系描逻辑关系描述清晰述清晰不一定能综合不一定能综合系统建模、复系统建模、复杂的电路杂的电路2022-4-12Page 17功能描述语句结构功能描述语句结构进程语句进程语句信号赋值语句信号赋值语句子程序调用语句子程

12、序调用语句元件例化语句元件例化语句2022-4-12Page 18例:用条件信号赋值语句设计四选一电路模块Library ieee;Use ieee.std_logic_1164.all;Entitu mux4 isPort(d0,d1,d2,d3,a,b : in std_logic; q: out std_logic);End mux4;Architecture arch of mux4 is signal sel: std_logic_vector(1 downto 0);Begin sel=b&a; qzzzznull; end case; end process; end b

13、ehav;library ieee;use ieee.std_logic_1164.all;entity mux4 isport(s1,s2: in std_logic; a,b,c,d : in std_logic; z : out std_logic);end entity mux4;architecture behav of mux4 is signal s : std_logic_vector(1 downto 0);begin s=s1&s2;CASE语句描述的语句描述的4选一数据选择器选一数据选择器21或门或门库文件库文件实实体体元件定元件定义义元件元件例化例化连接连接说明

14、说明v Protel DXP不仅支持原理图的输入方法和VHDL输入方法,还支持VHDL和原理图混合输入方法,该方法在适合用VHDL的地方用VHDL,适合用原理图的地方用原理图,既增强了电路的可移植性,又减轻了设计者的设计压力,提高了设计效率。2022-4-12Page 22图4-2 采用VHDL和原理图相结合的输入方法设计流程v Protel DXP支持几乎所有的Altera的元件集成库,如表4-1所示。2022-4-12Page 23型号FPGA库StratixAltera FPGAApex 20k/20kE/20KC/IIAltera FPGAFlex 10K/A/B/EAltera FP

15、GAFlex 6000/8000Altera FPGAAcex 1kAltera FPGAMax3000A/5000A/9000AAltera FPGAMax7000/A/E/S/AEAltera FPGAClassicAltera FPGAMercuryAltera FPGA表4-1Protel DXP支持的Altera库2022-4-12Page 24【实例实例11-111-1】 VHDL VHDL与原理图的混合设计与原理图的混合设计本实例中,要求利用VHDL和原理图的混合输入方法,设计一个2位的十进制计数器。计数器的VHDL和原理图的混合设计原理图如图4-3所示。图4-3 连接好的顶层原

16、理图的设计v - BCD.VHDv - Binary Coded Decimal Counter (0-9) with RCOv library IEEE;v use IEEE.STD_LOGIC_1164.all;v use ieee.std_logic_unsigned.all;v -BCD-v entity BCD isv port(CLEAR,CLOCK,ENABLE: in std_logic;v RCO: out std_logic;v OCD: out std_logic_vector(3 downto 0);v end;十进制计数器十进制计数器VHDL语言语言2022-4-12

17、Page 25v architecture RTL of BCD isv signal CURRENT_COUNT,NEXT_COUNT: std_logic_vector(3 downto 0);v beginv REGISTER_BLOCK: process (CLEAR,CLOCK,NEXT_COUNT)v beginv if (CLEAR=1) thenv CURRENT_COUNT=x0;v elsif (CLOCK=1 and CLOCKevent) thenv CURRENT_COUNT=NEXT_COUNT;v end if;v end process;2022-4-12Pag

18、e 26v - Binary Coded Decimal generator combinational logic blockv BCD_GENERATOR: process (CURRENT_COUNT,ENABLE)v beginv if (CURRENT_COUNT=x9) and (ENABLE=1) thenv NEXT_COUNT=x0;v RCO = 1;v elsev if (ENABLE=1) thenv NEXT_COUNT = CURRENT_COUNT + 1;v elsev NEXT_COUNT = CURRENT_COUNT;v end if;v RCO = 0;

19、v end if;v end process;v OCD = CURRENT_COUNT;v end;v -锁存器锁存器VHDL语言语言v library IEEE;v use IEEE.std_logic_1164.all;v entity BUFGS isv port(I : in std_logic;v O : out std_logic);v end BUFGS;v architecture RTL of BUFGS isv beginv O = I;v end;2022-4-12Page 29奇偶校验器奇偶校验器VHDL语言语言v -v library IEEE;v use IEEE

20、.STD_LOGIC_1164.all;v package UTILITY ISv function fparity (vtctp : std_logic_vector) return std_logic;v end Utility;2022-4-12Page 30v -v library IEEE;v use IEEE.STD_LOGIC_1164.all;v package body UTILITY isv function fparity (vtctp : std_logic_vector) return std_logic isv variable respar : std_logic

21、;v beginv respar := 0;v for i in 0 to vtctplength - 1 loopv if vtctp(i) = 1 thenv respar := not respar;v end if;v end loop;v return respar;v end function fparity;v end package body UTILITY;v -v Library IEEE;v Use IEEE.std_logic_1164.all;v Use WORK.utility.all;v entity PARITYC isv portv (v L : in STD

22、_LOGIC_VECTOR(3 downto 0);v U : in STD_LOGIC_VECTOR(3 downto 0);v P : out STD_LOGICv );v end PARITYC;v architecture PARITY_Arch of PARITYC isv signal VTC : STD_LOGIC_VECTOR(7 downto 0);v beginv VTC(7 downto 4) = U;v VTC(3 downto 0) = L;v P Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q = XFF; End Case; End Process

23、;End RTL; 44 结果如图7所示图7 VHDL输入45v 8.在原理图编辑界面下,选择菜单DesignCreate Sheet Symbol From Sheet,然后在弹出的窗口中选择Tset1.VHDL,然后点击OK。见图见图8图8 将VHDL产生图表符46v 生成如图9所示的图表符,图9 将VHDL产生图表符47v 9.按图10将图表符连接好图10 连接图表符48v 10.给各元件加上标注,选择菜单ToolsAnnotate quiet,在弹出的对话框中选择ok,原理图中的元件就自动排列完成了。图11 自动标注元件49v 11.添加配置文件,选择ProjectConfigurat

24、ion Manager,在弹出的窗口(图14)的左下角Configurations选项点击ADD,在新弹出的窗口中输入新的配置名Test,点击ok,然后在Constraints Files选项点击ADD,弹出对话框如图图12所示,选择该软件安装目录下Altium Designer Winter 09LibraryFpga,选择NB1_6_EP1C12Q240(取决于设计中用到的子板或FPGA器件),点击打开,打开,结果见图13,选中Test下的复选框。最后点击Ok。配置文件便添加到了设计中,见图15。图12 添加约束文件50图13 添加配置51图14 配置窗口52图15 配置文件53v 12.

25、保存项目文件,原理图文件及VHDL文件,选择ProjectRecompile FPGA Project Test.PRJFPG,在原理图编辑环境下点击窗口底部的System选项,选择Messages如图16所示,查看是否有错误发生,检查修改完毕后,可以开始进行嵌入式软件设计了。图16 检查错误信息54基于FPGA的嵌入式软件设计55v 1.选择菜单FileNewEmbedded Project , 在工程栏中将会显示新建的Embedded 工程名,选择菜单FileSave Project ,在对话框中修改工程名称为Test,然后Save。在工程栏中选择File View 选项,在工程中将会列出

26、所有属于当前工程的文件。 图17 新建嵌入式工程56v 2.右键点击嵌入式工程,在弹出窗口中选择Add New To ProjectC File,如图如图18所示所示图18 新建嵌入式文件编辑57基于基于FPGA的嵌入式软件设计的嵌入式软件设计v 将文件以Test文件名保存,然后在编辑界面下输入C语言代码,如图19图19 C语言输入58v 代码如下:v void main(void)v unsigned char x=0;v unsigned short i;v for(;)v P1=x+;v for(i=0;i0 xFFff;i+)v v _asm(nop);v v v 59v 3.保存Te

27、st.C文件,在C语言编辑界面下选择菜单ProjectProject Options,在弹出的窗口中选择Configuration项,在下拉菜单中选择Tasking 8051,其余选项按默认处理,完成后,点击Ok。图20 编译器选项60v 4.右键点击Test.PRJEMB工程,在弹出窗口中选择Recompile Embedded Project Test.PRJEMB,编译无误后即可进行系统级设置。图21 编译结果61系统级设置及下载系统级设置及下载62v 以上介绍了基于FPGA的硬件设计和嵌入式软件设计步骤,下面来介绍系统级的设计和调试。v 1.在原理图编辑界面下,双击元件TSK51A_D ,在弹出的器件属性窗口中,在右侧的Parameters for U1-TSK51A_D一栏,将ChildCore1的Value值设置为设计中用到的RAMS_8x1K的标注U4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论