FPGA参考的论文.docx
《FPGA参考的论文.docx》由会员分享,可在线阅读,更多相关《FPGA参考的论文.docx(36页珍藏版)》请在冰豆网上搜索。
FPGA参考的论文
1绪论
1.1选题背景及意义
在石油勘探过程中为了解井下的情况我们要通过测井仪器把井下信息传送的地面,在实际的测井中我们一般采用放射性测井。
来自测井仪器的信号有三种:
模拟,脉冲和编码数字信号。
而许多测井仪器,如:
自然伽马,补偿中子,流体密度,流量,含水,温度,压力,以及数字CCL仪器输出的都是脉冲信号。
由于输出的脉冲信号和辐射粒子的能量成正比例关系,测量这些脉冲的幅度,就可以知道辐射粒子的能谱,井下不同深度的放射形辐射强度,因此脉冲幅度的测量技术在核辐射勘探中是一个重要问题。
在测量过程中,地面系统需要挂接一些测井仪器,这就涉及到对脉冲信号的采集与处理问题。
如果对这些脉冲信号采集不稳定,就会影响测井资料的取得和石油开采的质量。
因此,对脉冲信号的采集与处理是很常见的,也是很重要的。
由于被采集信号频率的范围不同,要求精度也不同。
采用通常的采集方法都无法同时满足低频率和高频率的测量精度要求,而且需要大量的硬件电路的搭配。
随着EDA技术的高速发展,电子系统的设计技术和工具发生了深刻的变化,大规模可编程逻辑器件FPGA的出现,给设计人员带来了诸多方便,利用其开发产品,成本低,周期短,可靠性高。
FPGA是一种新兴的高密度大规模可编程逻辑器件,它具有门阵列的高密度和PLD器件的灵活性和易用性,目前已成为一类主要的可编程器件。
可编程器件的最大特点是可通过软件编程对其器件的结构和工作方式进行重构,能随时进行设计调整而满足产品升级。
使得硬件的设计可以如软件设计一样方便快捷,从而改变了传统数字系统及用单片机构成的数字系统的设计方法、设计过程及设计观念,使电子设计的技术操作和系统构成在整体上发生了质的飞跃。
采用FPGA可编程器件,可利用计算机软件的方式对目标器件进行设计,而以硬件的形式实现。
既定的系统功能,在设计过程中,可根据需要随时改变器件的内部逻辑功能和管脚的信号方式,借助于大规模集成的FPGA和高效的设计软件,用户不仅可通过直接对芯片结构的设计实行多种数字逻辑系统功能,而且由于管脚定义的灵活性,大大减轻了电路图设计和电路板设计的工作量及难度。
同时,这种基于可编程芯片的设计大大减少了系统芯片的数量,缩小了系统的体积,提高了系统的可靠性。
基于EDA技术的设计方法为“自顶向下”设计,其步骤是采用可完全独立于目标器件芯片物理结构的硬件描述语言,在系统的基本功能或行为层次的仿真技术,在确保设计的可行性与正确性的前提下,完成功能确认。
然后利用EDA工具的逻辑综合功能,把功能描述转换为某一具体目标芯片的网表文件,经编程器下载到可编程目标芯片中(如FPGA芯片)本设计选择DE2开发测试板,使该芯片能够实现设计要求的功能。
这样,一块芯片就是一个数字电路系统。
使电路系统体积大大减小,可靠性得到提高。
基于DE2板的脉冲信号采集电路利用可编程芯片(CYCLONEⅡ2C35)的可编程系统,通过采集四路脉冲信号可以避免由于实际的硬件设计用到的器件较多,连线复杂,而且产生比较大的延时,造成测量误差,可靠性差等弊端。
本文主要介绍了基于DE2板的脉冲信号采集电路的组成及工作原理,简述了在EDA平台上用FPGA器件构成该数字系统的设计思想。
详细论述了用VHDL语言设计脉冲采集电路的分频模块,计数模块,测频控制信号发生器模块,锁存模块,译码显示模块,完成了对该新型脉冲采集电路的设计。
1.2设计目标
由上所述中我们知道许多测井仪器,如:
自然伽马测井仪采集的信号大都是脉冲信号,这些脉冲信号的频率一般在50HZ左右,这样我们每路采集电路只要设计,两个十进制计数器,一个锁存器,两位数码管显示即可满足设计要求。
在本设计中我们用VHDL语言分别编写采集电路每一路的分频模块,计数模块,测频控制信号发生模块,锁存模块,译码显示模块的程序,并能在软件MAX+PLUSⅡ下仿真结果正确。
该采集电路能实现的功能具体要求:
1)能采集四路频率为40HZ的脉冲信号。
2)用VHDL语言编写程序并进行仿真。
3)利用DEII板的硬件资源采集即用DEII板上的按键和数码管模拟和显示四路脉冲频率值。
2FPGA及DE2板介绍
2.1FPGA简介
2.2.1概述
当今社会是数字化的社会,是数字集成电路广泛应用的社会。
数字集成电路本身在不断地进行更新换代。
它由早期的电子管、晶体管、小中规模集成电路、发展到超大规模集成电路(VLSIC,几万门以上)以及许多具有特定功能的专用集成电路。
但是,随着微电子技术的发展,设计与制造集成电路的任务已不完全由半导体厂商来独立承担。
系统设计师们更愿意自己设计专用集成电路(ASIC)芯片,而且希望ASIC的设计周期尽可能短,最好是在实验室里就能设计出合适的ASIC芯片,并且立即投入实际应用之中,因而出现了现场可编程逻辑器件(FPLD),其中应用最广泛的当属现场可编程门阵列(FPGA)和复杂可编程逻辑器件(CPLD)。
FPGA是一种可以由用户自定义并进行配置的高密度专用集成电路。
FPGA具有阵列型PLD器件的优点,同时其结构又类似掩模门阵列,因此更高的集成度和更强大的逻辑实现能力,使得设计更加灵活和容易实现。
事实上FPGA已成为一类标准器件。
世界知名的可编程逻辑供应商(如Xilinx、Altera和Actel)可以为客户提供各具特色的FPGA产品。
因此对FPGA而言有着不同的分类方法,一般可以根据互连结构和编程特性对FPGA进行分类。
目前主流的FPGA产品内部连线一般采用分段互连结构,并且可重复编程。
2.1.2FPGA基本结构
FPGA的内部结构主要可分为三个部分:
可配置逻辑块CLB(configurablelogicblock)、输入输出功能块IOB(I/Oblock)和可编程连线资源IR(interconnectresource)。
1.可配置逻辑块CLB:
此处为构成逻辑功能的主要区块,其中是由函数式产生区(functiongenerationsection)与反相器所组成.
2.输入/输出功能块IOB:
IOB是作为CLB对外界的界面(如图2.3所示),每个IOB可规划成输入、输出,或双向。
3.可编程连线资源IR(interconnectresource)
可编程连线资源IR是使IOB与CLB或CLB与CLB之间能互相连接在一起的媒介,在没有规划前都是不相连的,只有在布线时才会依需求连接,其中主要种类可分为:
切换矩阵(switchmatrix),交连缓冲器(interconnectbuffer)及金属连线(metalresource)。
其个别说明如下:
切换矩阵:
一次可使多条线搭接在一起。
2.2DE2板介绍
2.2.1DEⅡ开发板简介
DEⅡ开发板是ALTERA公司开发的基于FPGA测试开发板,DEⅡ开发板使用了与大批量生产的高端产品(如最高QC标准的高密度PC主板和汽车infotainment系统)相一致的严格设计与布线准则。
主要的设计和布线思路如下:
仔细安排器件及连接走线。
这种良好的排版可增加制造产量,并简化主板调试流程。
无跳线设计提高鲁帮性。
跳线易出错而且为不随时携带手册的用户带来不便。
部件的选择取决于片上容量。
我们选择了在PC和DVD播放器中最常用的配置确保这些部件将来能够得到持续供应。
电源和IO口保护设计考虑到了大部分的现场以外情况。
2.2.2DEⅡ开发板特性
DEⅡ开发板为用户提供了用于多媒体开发的多种特性。
器件按照当前最流行的多媒体产品设计来选择。
DEⅡ开发板平台能使拥护迅速理解实时多媒体工业产品的所有内在技巧。
DEⅡ区块描述:
(1)CYCLONEⅡ2C35FPGA
有35000个逻辑单元,FinelineBGA672管脚封装,475用户自定义IO口,有105M4KRAM块和483KbitSRAM,有35个嵌入式乘法器和四个锁相环等
(2)Altera系列配置器件(EPCS16)和USBBlaster电路
用户编程和用户API控制的板上USBBlaster,支持JTAG模式和AS模式,提供EPCS16系列配置器件。
(3)8MbyteSDRAM
单数据速率同步动态RAM存储芯,1M*4*16位,支持NIOSⅡ和Terasic高速多端RAM控制器。
(4)1Mbyte闪存(可升级至4Mbyte)
带有1MbyteNAND闪存,可支持4MbyteSDRAM的布线。
支持NIOS和Terasic高速多端闪存控制器。
(5)按键
带有4个按键,施密特触发器实现防抖动,常态是高电平,按下按键时产生一个有效低点平脉冲。
(6)时钟输入
带有一个50Mhz晶振,一个27Mhz晶振,带有一个SMA外部时钟输入。
(7)串口
提供2个串行端口:
一个RS—232口,1个PS/2口,提供RS—232断口的DB9连接器,提供连接DE2PS2鼠标或键盘的PS/2连接器。
(8)音频CODEC
使用WolfsonWM873124位sigma_delta最优品质音频CODEC,包括line_in,line_out和micropone;8KHz_96KHz采样频率可应用于MP3播放器录音器PDA和智能手机。
(9)XSGADAC输出
使用ADI7123240MHzTriple10位高速视频DAC,带有15个管脚的高密度D_sub连接器,最佳性能和品质时支持100Hz刷新速率下1600*1200分辨率,能有CycloneⅡFPGA实现高性能TV编码器。
(10)NTSC/PAL电视编码电路
使用ADI718B多格式SDTV视频编码器
支持NTSC——(M,J,4,43),PAL——(B/D/G/H/I/M/N),SECAM
集成了3个54MHz,9位AD,由单个27MHz晶振输入提供时钟。
多种可编程模拟输入格式:
Comositevideo(CVBS),S_Video(Y/C)和YPrPb组件。
应用范围:
DVD接收器,液晶电视,置顶盒,数字电视和便携式视频设备。
(11)10/100以太网控制器
集成了带有通用处理器接口的MAC和PHY,支持100Base_T和100Mb/s的全双工操作
完全兼容IEEE802.3uspec,支持IP/TCP/UDP求和校验,支持用于半双工模式数据流控制的背压。
USB主从控制器完全兼容USBSpec2.0版本,支持全速和低速数据传输,支持USB主从模式,支持2个USB端口(一个是A类用于主设备,一个是B类用于DE2上的设备)。
提供大多数CPU的高速并行接口,支持带驱动的NIOSⅡ,支持可编程I/O和DMA。
(12)2个带二极管保护的40脚扩展接口
CycloneⅡ引出72个I/O管脚到2个40脚扩展接口,40脚扩展接口兼容标准IDE硬件驱动的排线电缆。
(13)USBBlaster电路和设置设备
板上内置USBBlaster电路,带有供DE2控制面板API连接的增强特性,提供JTAG和AS编程模式,包括16Mbit(EPCS16)串行设置设备。
(14)DEⅡ主板有一个预加载数据流来显示这块主板的一些特性。
这个数据流也允许用户检查这块主板是否工作在合适的状态。
按如下步骤运行:
1.PC机和DE2板间连接USB线
2.连接9V适配器到DE2板
3.连接LCD到DE2
4.连接耳机到DE2
5.按下DE2板上的开关键
6.确保[RUN〈-〉PROG]键是设定在RUN位置(注意PROG位置只是用于AS模式编程)
3VHDL语言及MAX+PLUSⅡ软件介绍
3.1VHDL语言简介
传统的硬件电路设计方法是采用自下而上的设计方法,即根据系统对硬件的要求,详细编制技术规格书,并画出系统控制流图;然后根据技术规格书和系统控制流图,对系统的功能进行细化,合理地划分功能模块,并画出系统的功能框图;接着就进行各功能模块的细化和电路设计;各功能模块电路设计、调试完成后,将各功能模块的硬件电路连接起来再进行系统的调试,最后完成整个系统的硬件设计。
采用传统方法设计数字系统,特别是当电路系统非常庞大时,设计者必须具备较好的设计经验,而且繁杂多样的原理图的阅读和修改也给设计者带来诸多的不便。
为了提高开发的效率,增加已有开发成果的可继承性以及缩短开发周期,各ASIC研制和生产厂家相继开发了具有自己特色的电路硬件描述语言(HardwareDescriptionLanguage,简称HDL)。
但这些硬件描述语言差异很大,各自只能在自己的特定设计环境中使用,这给设计者之间的相互交流带来了极大的困难。
因此,开发一种强大的、标准化的硬件描述语言作为可相互交流的设计环境已势在必行。
于是,美国于1981年提出了一种新的、标准化的HDL,称之为VHSIC(VeryHighSpeedIntegratedCircuit)Hardware
DescriptionLanguage简称VHDL。
3.2VHDL的基本结构
VHDL语言通常包含实体(Entity),构造体(Architecture),配置(Configuration),包集合(Package),和库(Library)五部分.其中实体用于描述所设计的系统的外部接口信号;构造体用于描述系统内部的结构和行为;建立输入和输出之间的关系;配置语句安装具体元件到实体—结构体对,可以被看作是设计的零件清单;包集合存放各个设计模块共享的数据类型、常数和子程序等;库是专门存放预编译程序包的地方。
如下只对基本设计单元做了详细介绍。
(1)实体
实体说明有如下结构:
ENTITY实体名IS
[端口说明]
END实体名;
(VHDL语言中不分大小写字母)
其中:
端口说明是对设计实体中输入和输出借口进行描述,格式如下:
PORT(端口名(,端口名):
方向数据类型名;
:
:
端口名(,端口名):
方向数据类型名);
端口名是赋予每个系统引脚的名称,一般用几个英文字母组成。
端口方向是定义引脚是输入还是输出,见下表:
方向
说明
IN
输入到实体
OUT
从实体输出输出
INOUT
双向
BUFFER
输出(但可以反馈到实体内部)
LINKAGE
不指定方向
常用的端口数据类型有两种:
BIT和BIT_VECTOR,当端口被说明为BIT时,只能取值“1”或“0”,当端口被说明为BIT_VECTOR时,它可能是一组二进制数。
(2)构造体
构造体是实体的一个重要部分,每一个实体都有一个或一个以上的构造体。
构造体格式如下:
ARCHITECTURE构造体名OF实体名IS
[定义语句]内部信号,常数,数据类型,函数等的定义
BEGIN
[并行处理语句]
END构造体名;
(3)库
库是经编译后的数据的集合,它存放包定义、实体定义、构造定义和配置定义。
在设计单元内的语句可以使用库中的结果,所以,库的好处就是设计者可以共享已经编译的设计结果,在VHDL中有很多库,但他们相互独立。
库的使用:
在使用库之前,一定要进行库说明和包说明,库和包的说明总是放在设计单元的前面:
LIBRARY库名;
USELIBRARYname.package.name.ITEM.name
库的作用范围:
库的作用范围从一个实体说明开始到它所属的结构体、配置为止,当有两个实体时,第二个实体前要另加库和包的说明。
(4)包
通常在一个实体中对数据类型、常量等进行的说明只可以在一个实体中使用,为使这些说明可以在其它实体中使用,VHDL提供了程序包结构,包中罗列VHDL中用到的信号定义、常数定义、数据类型、元件语句、函数定义和过程定义,它是一个可编译的设计单元,也是库结构中的一个层次,使用包时可以用USE语句说明,例如:
USEIEEE.STD_LOGIC_1164.ALL
(5)配置
用于在多构造体中的实体中选择构造体,例如,在做RS触发器的实体中使用了两个构造体,目的是研究各个构造体描述的RS触发器的行为性能如何,但是究竟在仿真中使用哪一个构造体的问题就是配置问题。
配置语句格式:
CONFIGURATION配置名OF实体名IS
[说明语句]
END 配置名;
例:
最简单的配置
CONFIGURATION配置名OF实体名IS
FOR被选构造体名
ENDFOR;
END 配置名;
3.3VHDL语言的数据类型和构造体的描述方式
3.3.1VHDL语言的数据类型
(1)整数(INTEGER)
范围:
-2147483547---2147483646
(2)实数(REAL)
范围:
-1.0E38---1.0E38,书写时一定要有小数。
(3)位(BIT)
在数字系统中,信号经常用位的值表示,位的值用带单引号的‘1’和‘0’来表示,明确说明位数值时:
BIT‘(‘1’)
(4)位矢量(BIT_VECTOR)
位矢量是用双引号括起来的一组位数据,“010101”
(5)布尔量(BOOLEAN)
只有“真”和“假”两个状态,可以进行关系运算
(6)字符(CHARACTER)
字符量通常用单引号括起来,对大小写敏感
(7)字符串(STRING)
字符串是双引号括起来的一串字符:
“laksdklakld”
(8)时间(TIME)
时间的单位:
fs,ps,ns,ms,sec,min,hr。
例:
10ns。
整数数值和单位之间应有空格
(9)错误等级(SEVERITYLEVEL)
用来表示系统的状态,它共有4种:
NOTE(注意)
WARNING(警告)
ERROR(错误)
FAILURE(失败)
(10)大于等于零的整数(NATURAL)、正整数(POSITIVE)
(11)用户定义的数据类型
用户定义的数据类型的一般格式:
TYPE数据类型名{,数据类型名}数据类型定义
不完整的数据类型格式:
TYPE数据类型名{,数据类型名};
3.3.2VHDL语言构造体的描述方式
有三种描述方式:
行为描述,RTL描述和ASIC描述,采用后两种描述方式可以进行逻辑综合。
(1)行为描述
描述数字系统的行为,主要用于仿真和系统工作原理的研究。
(2)数据流描述方式
数据流描述方式是一种可以进行逻辑综合的描述方式,由于要进行逻辑综合所以对使用的语句有一定的限制,VHDL中的每一个命令和语句都对逻辑综合能力进行了定义,要进行逻辑综合的设计实体就要使用有逻辑综合能力的命令和语句。
(3)结构描述方式
注重调用已有的元件、元件或门级电路之间的连线是结构描述的特点,结构描述可以提高设计效率.
1)元件声明语句:
元件声明语句用于调用已生成的元件,这些元件可能在库中,也可能是预先编写的元件实体描述。
元件语句的格式:
COMPONENT元件名
PORT说明;端口说明
ENDCOMPONENT;
元件语句可以在ARCHITECTURE,PACKAGE和BLOCK的说明部分.
2)元件调用:
格式:
标号名:
元件名PORTMAP(信号,…);
两层信号之间的关系为映射关系,该映射有两种:
位置映射例:
有一元件的端口说明为:
port(a,b:
inbit;
c:
outbit);
调用该元件时:
u2:
元件名portmap(n1,n2,m);
这里n1对应a,n2对应b,m对应c.
名称映射例:
该映射就是将库中已有模块的端口名称,赋予设计中的信号名.
U2:
元件名portmap(a=>n1.b=>n2,c=>m);
3.4VHDL语言的优点
传统的硬件电路设计方法是采用自下而上的设计方法,即根据系统对硬件的要求,详细编制技术规格书,并画出系统控制流图;然后根据技术规格书和系统控制流图,对系统的功能进行细化,合理地划分功能模块,并画出系统的功能框图;接着就进行各功能模块的细化和电路设计;各功能模块电路设计、调试完成后,将各功能模块的硬件电路连接起来再进行系统的调试,最后完成整个系统的硬件设计。
采用传统方法设计数字系统,特别是当电路系统非常庞大时,设计者必须具备较好的设计经验,而且繁杂多样的原理图的阅读和修改也给设计者带来诸多的不便。
为了提高开发的效率,增加已有开发成果的可继承性以及缩短开发周期,各ASIC研制和生产厂家相继开发了具有自己特色的电路硬件描述语言(HardwareDescriptionLanguage,简称HDL)。
但这些硬件描述语言差异很大,各自只能在自己的特定设计环境中使用,这给设计者之间的相互交流带来了极大的困难。
因此,开发一种强大的、标准化的硬件描述语言作为可相互交流的设计环境已势在必行。
于是,美国于1981年提出了一种新的、标准化的HDL,称之为VHSIC(VeryHighSpeedIntegratedCircuit)HardwareDescriptionLanguage,简称VHDL。
这是一种用形式化方法来描述数字电路和设计数字逻辑系统的语言。
设计者可以利用这种语言来描述自己的设计思想,然后利用电子设计自动化工具进行仿真,再自动综合到门级电路,最后用PLD实现其功能。
综合起来讲,VHDL语言具有如下优点:
1.覆盖面广,描述能力强,是一个多层次的硬件描述语言。
在VHDL语言中,设计的原始描述可以非常简练,经过层层加强后,最终可成为直接付诸生产的电路或版图参数描述。
2.具有良好的可读性,即容易被计算机接受,也容易被读者理解。
3.使用期长,不会因工艺变化而使描述过时。
因为VHDL的硬件描述与工艺无关,当工艺改变时,只需修改相应程序中的属性参数即可。
4.支持大规模设计的分解和已有设计的再利用。
一个大规模的设计不可能由一个人独立完成,必须由多人共同承担,VHDL为设计的分解和设计的再利用提供了有力的支持。
3.5MAX+PLUSⅡ软件介绍
3.5.1MAX+PLUSⅡ的概述
美国Altera公司的MAX+PLUSⅡ开发工具是一种CAE软件工具,全称是全集成化可编程逻辑设计环境(MultipleArrayMatrixandProgrammableLogicUserSystems).该工具配备有编辑、编译、仿真、中和、芯片编程等功能,具有两种输入手段:
文本输入(使用一种描述语言,如VHDL语言)和原理图输入。
在使用中,可以把电路描述程序和设计电路图变成基本的逻辑单元写入到可编程的芯片中(如FPGA,CPLD芯片等),最终成为ASIC芯片。
也可以不用搭建硬件电路,把MAX+PLUSⅡ作为逻辑仿真工具,即可对设计进行调试、验证。
MAX+PLUSⅡ开发工具目前在国内使用很普遍,拥有完备的在线帮助,初学者可以很快学习掌握该工具的使用,完成高性能的设计。
3.5.2MAX+PLUSⅡ的功能简介
它是EDA设计中不可缺少的一种工具。
它的主要功能如下:
(1)MAX+PLUSⅡ的设计输入、处理与效验功能集合在一起提供了全集成化的一套可编辑开发工具,加快动态调试,缩短开发周期;
(2)MAX+PLUSⅡ支持各种硬件描述语言的设计输入,包括VHDL、VerilogHDL和Altera的AHDL;
(3)MAX+PLUSⅡ的编译核心支持Altera的FLEX10K、FLEX8K、FLEX6000/A系列,MAX5000系列MAX9000、MAX7000、FLASHlogic、MAX5000、Classic以及EPF10K10、EPF10K10A、EPF10K20、EPF10K30、EPM9320、EPM9320A、EPF8452A、EPF8282A等系列可编程逻辑器件;辑器,创建电路图像设计(—gdf);通过MAX+PLUSⅡ的文本编辑器,使用V