毕业设计(论文)基于FPGA的遥测系统设计.doc
1 绪论1.1 引言随着数字通信的广泛应用,可编程逻辑器件容量、功能的不断扩大,集成电路的设计已经进入片上系统(SOC)和专用集成电路(ASIC)的时代。由于硬件描述语言VHDL可读性、可移植性、支持对大规模设计的分解和对已有设计的再利用等强大功能,迅速出现在各种电子设计自动化(EDA)系统中,先进的开发工具使整个系统设计调试周期大大地缩短。设计者的主要工作是利用硬件描述语言(如VHDL)来完成对系统硬件功能的描述,在EDA工具的帮助下通过波形仿真得到时序波形,这样就使得对硬件的设计和修改过程软件化,提高了大规模系统设计的自动化程度1。本文针对传统的PCM编码方案,提出一种基于FPGA的PCM编码新方案。该方案相对于传统的设计方法更适合于现代数字通信系统,不但大大减少了周边的设备,也使系统设计更加灵活,稳定性更好,性价比更高,可以满足多种环境下的遥测系统的要求。1.2遥测技术1.2.1遥测技术发展概况 遥测技术起源于19世纪初叶,航空、航天遥测技术则分别开始于20世纪30年代和40年代。此后,遥测广泛用于飞机、火箭、导弹和航天器的试验,也极大地促进了遥测技术的发展。5060年代,随着通信理论、通信技术和半导体技术的发展,遥测技术在调制体制、传输距离、数据容量、测量精度以及设备小型化等方面都取得了很大的进展。60年代以来,遥测技术发展的显著特点是:遥测设备的集成化、固态化、模块化和计算机化,出现了可编程序遥测和自适应遥测2。1.2.2遥测技术的组成遥测是通过遥测系统进行的。遥测系统由三部分组成:) 输入设备,包括传感器和变换器。传感器把被测参数变成电信号,变换器把电信号变换成适合于多路传输设备输入端要求的信号3。)传输设备,是一种多路通信设备。它可以是有线通信或无线电通信,既可传输模拟信号也可传输数字信号。目的是把输入设备输入的信号不失真地传到终端。)终端设备,它的功能是接收信号,对信号进行记录,显示和处理,以获得测量结果。1.2.3遥测技术基本原理 航空航天遥测系统可分为飞行器遥测设备(系统)和地面遥测设备(系统),前者主要由传感器、多路组合调制器、发射机和天线组成,后者主要由接收机和天线、分路解调器等组成。传感器的功能是感受被测参量并转换成电信号。各传感器的输出信号(及其他需经遥测系统传送的信号)同时送入多路组合调制器,各路信号按一定体制组合起来,互不干扰地通过同一个无线电信道传送出去。多路组合调制器输出的信号调制发射机的载波,通过天线发射出去。接收端天线接收信号后送入接收机。接收机把组合信号解调出来,再经分路解调器恢复各路原始信息,加以记录、处理和显示。现代广泛应用的信号组合体制有时分制和频分制两种。 时分制按时间顺序来区分通道。采样开关按顺序对各路信号巡回采样,形成一个综合脉冲序列。接收端的分路解调器的分路开关与发送端的采样开关同步工作,把各路信号分开。如果脉冲序列中脉冲幅度反映被测参数,则称脉冲幅度调制 (PAM)。如果采样脉冲的宽度或位置反映被测参数,则称为脉冲宽度调制或脉冲位置调制(PDM、PPM)。如用一组编码来反映被测参数,则称脉冲编码调制 (PCM)。这种脉冲序列调制到发射载波上的方式可以是频率调制(FM)、相位调制(PM)和幅度调制(AM)中的任何一种。时分制遥测系统常用的方式是PAM-FM和PCM-FM。时分制多用于被测信号较多而变化缓慢的缓变参数的测量。其中PCM体制的应用更为广泛。 频分制按不同的频率来区分通道。各路被测信号对各自的副载波调制,将这些调制后的信号相加得到图3b所示的频谱。这一组合信号再去调制载波,经天线发出,在接收端经载波解调后,用一组滤波器滤出各路副载波,再各自解调出信号。同样,组合信号对发射载波的调制也可以采用上述三种方式中的任何一种。频分制遥测系统中常用的是FMFM体制。频分制多用于被测信号较少且变化较快的速变参数的测量。1.2.4遥测技术的目的遥测不仅为了获得数据,而是要为遥控目标物体提供实时数据,常和遥控结合在一起。遥测作为一门综合技术,随着电子技术的发展而迅速发展,应用十分广泛。1.2.5遥测的应用 在宇宙探索中,遥测技术帮助了解太阳系遥远天体上的气温、大气构成和表面情况;投放在敌方的遥测仪器能传回许多情报;取得导弹和飞机的飞行数据;收集核试验情况也要靠遥测技术。在工业上遥测技术使许多庞大的系统高效安全运行,如电力、输油、输气系统、城市自来水、煤气和供暖系统等。在研究动物的生活习性中,遥测技术也是有力的手段,动物带上有传感器的发报机后,在实验室就可研究野外动物的动态。遥测技术也用在医学上,如测定宇航员和登山队员身体情况。医术高明的大夫利用遥测技术能为偏僻地区的病人服务。1.3 设计目标及方案由于遥测系统任务的多变性,所以要求PCM遥测设备具有可编程的特性。通常需要改变的参数(多变的原因)主要是:1)码率即串行数据的速率;2)字长,帧长和同步码。本次目标为设计一个码率为500kb/s,字长为8bit,帧长为128字,帧同步码为E848h的PCM采编器,且可根据实际情况进行更改(如需改变码率,则只需通过编程改变电路内部时钟频率即可;更改字长比如16bit,则需要将输入的D7D0改为D15D0,24选8多路选择器改为48选16,8选1数据选择器改为16选1数据选择器即可;帧长可通修改字计数器的位数进行修改;帧同步码可直接修改)。它能实现如下功能:1)控制数据采集的时序;2)加帧同步码,按一定格式组织数据包;3)并/串转换。遥测系统设计方案:1)利用VHDL硬件描述语言实现对可编程门阵列和复杂可编程逻辑器(FPGA:Field Programmable Gate Array)的控制来实现。 2)过程中使用QUARTUS II进行仿真.2 设计基础2.1 FPGA概述2.1.1 FPGA技术概述FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个概念,内部包括可配置逻辑模块CLB( Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconn)三个部分。 现场可编程门阵列(FPGA)是可编程器件。与传统逻辑电路和门阵列(如PAL,GAL及CPLD器件)相比,FPGA具有不同的结构,FPGA利用小型查找表(16×1RAM)来实现组合逻辑,每个查找表连接到一个D触发器的输入端,触发器再来驱动其他逻辑电路或驱动I/O,由此构成了即可实现组合逻辑功能又可实现时序逻辑功能的基本逻辑单元模块,这些模块间利用金属连线互相连接或连接到I/O模块。FPGA的逻辑是通过向内部静态存储单元加载编程数据来实现的,存储在存储器单元中的值决定了逻辑单元的逻辑功能以及个模块之间或模块与I/O间的连接方式,并最终决定了逻辑单元的逻辑功能以及各模块之间或模块与I/O间的联接方式,并最终决定了FPGA所能实现的功能, FPGA允许无限次的编程4.目前以硬件描述语言(Verilog 或 VHDL)所完成的电路设计,可以经过简单的综合与布局,快速的烧录至 FPGA 上进行测试,是现代 IC 设计验证的技术主流。这些可编辑元件可以被用来实现一些基本的逻辑门电路(比如AND、OR、XOR、NOT)或者更复杂一些的组合功能比如解码器或数学方程式。在大多数的FPGA里面,这些可编辑的元件里也包含记忆元件例如触发器(Flipflop)或者其他更加完整的记忆块5。 系统设计师可以根据需要通过可编辑的连接把FPGA内部的逻辑块连接起来,就好像一个电路试验板被放在了一个芯片里。一个出厂后的成品FPGA的逻辑块和连接可以按照设计者而改变,所以FPGA可以完成所需要的逻辑功能。FPGA一般来说比ASIC(专用集成芯片)的速度要慢,无法完成复杂的设计,而且消耗更多的电能6。但是他们也有很多的优点比如可以快速成品,可以被修改来改正程序中的错误和更便宜的造价。厂商也可能会提供便宜的但是编辑能力差的FPGA。因为这些芯片有比较差的可编辑能力,所以这些设计的开发是在普通的FPGA上完成的,然后将设计转移到一个类似于ASIC的芯片上7。另外一种方法是用CPLD(复杂可编程逻辑器件备)。2.1.2 FPGA芯片目前主流的FPGA仍是基于查找表技术的,已经远远超出了先前版本的基本性能,并且整合了常用功能(如RAM、时钟管理和DSP)的硬核(ASIC型)模块。FPGA芯片主 要由7部分完成,分别为:可编程输入输出单元、基本可编程逻辑单元、完整的时钟管理、嵌入块式RAM、丰富的布线资源、内嵌的底层功能单元和内嵌专用硬件模块8。每个模块的功能如下: 1)可编程输入输出单元(IOB) 可编程输入/输出单元简称I/O单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求,其示意结构 FPGA内的I/O按组分类,每组都能够独立地支持不同的I/O标准。通过软件的灵活配置,可适配不同的电气标准与I/O物理特性,可以调整驱动电流的大小,可以改变上、下拉电阻。目前,I/O口的频率也越来越高,一些高端的FPGA过DDR寄存器技术可以支持高达2Gbps的数据速率。外部输入信号可以通过IOB模块的存储单元输入到FPGA的内部,也可以直接输入FPGA 内部。当外部输入信号经过IOB模块的存储单元输入到FPGA内部时,其保持时间(Hold Time)的要求可以降低,通常默认为0。 为了便于管理和适应多种电器标准,FPGA的IOB被划分为若干个组(bank),每个bank的接口标准由其接口电压VCCO决定,一个bank只能有 一种VCCO,但不同bank的VCCO可以不同。只有相同电气标准的端口才能连接在一起,VCCO电压相同是接口标准的基本条件。 2) 可配置逻辑块(CLB) CLB是FPGA内的基本逻辑单元。CLB的实际数量和特性会依器件的不同而不同,但是每个CLB都包含一个可配置开关矩阵,此矩阵由4或6个输入、一些 选型电路(多路复用器等)和触发器组成。 开关矩阵是高度灵活的,可以对其进行配置以便处理组合逻辑、移位寄存器或RAM。在Xilinx公司的FPGA器件中,CLB由多个(一般为4个或2个)相同的Slice和附加逻辑构成。每个CLB模块不仅可以用于实现组合逻辑、时序逻辑,还可以配置为分布式RAM和分布式ROM9。 Slice是Xilinx公司定义的基本逻辑单位,一个Slice由两个4输入的函数、进位逻辑、算术逻辑、存储逻辑和函数复用器组成。算术逻辑包括一个异或门(XORG)和一个专用与门(MULTAND),一个异或门可以使一个Slice实现 2bit全加操作,专用与门用于提高乘法器的效率;进位逻辑由专用进位信号和函数复用器(MUXC)组成,用于实现快速的算术加减法操作;4输入函数发生 器用于实现4输入LUT、分布式RAM或16比特移位寄存器(Virtex-5系列芯片的Slice中的两个输入函数为6输入,可以实现6输入LUT或 64比特移位寄存器);进位逻辑包括两条快速进位链,用于提高CLB模块的处理速度。 3) 数字时钟管理模块(DCM) 业内大多数FPGA均提供数字时钟管理(Xilinx的全部FPGA均具有这种特性)。Xilinx推出最先进的FPGA提供数字时钟管理和相位环路锁定。相位环路锁定能够提供精确的时钟综合,且能够降低抖动,并实现过滤功能。 4) 嵌入式块RAM(BRAM) 大多数FPGA都具有内嵌的块RAM,这大大拓展了FPGA的应用范围和灵活性。块RAM可被配置为单端口RAM、双端口RAM、内容地址存储器 (CAM)以及FIFO等常用存储结构。RAM、FIFO是比较普及的概念,在此就不冗述。CAM存储器在其内部的每个存储单元中都有一个比较逻辑,写入 CAM中的数据会和内部的每一个数据进行比较,并返回与端口数据相同的所有数据的地址,因而在路由的地址交换器中有广泛的应用。除了块RAM,还可以将 FPGA中的LUT灵活地配置成RAM、ROM和FIFO等结构。在实际应用中,芯片内部块RAM的数量也是选择芯片的一个重要因素10。 单片块RAM的容量为18k比特,即位宽为18比特、深度为1024,可以根据需要改变其位宽和深度,但要满足两个原则:首先,修改后的容量(位宽 深度)不能大于18k比特;其次,位宽最大不能超过36比特。当然,可以将多片块RAM级联起来形成更大的RAM,此时只受限于芯片内块RAM的数量,而 不再受上面两条原则约束。 5) 丰富的布线资源 布线资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位置的不同而划分为4类不同的类别。第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;第二类是长线资源,用以完成芯片 Bank间的高速信号和第二全局时钟信号的布线;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。 在实际中设计者不需要直接选择布线资源,布局布线器可自动地根据输入逻辑网表的拓扑结构和约束条件选择布线资源来连通各个模块单元。从本质上讲,布线资源的使用方法和设计的结果有密切、直接的关系11。 6) 底层内嵌功能单元 内嵌功能模块主要指DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP和CPU等软处理核(SoftCore)。现在越来越丰富的内嵌功能单元,使得单片FPGA成为了系统级的设计工具,使其具备了软硬件联合设计的能力,逐步向SOC平台过渡12。 DLL和PLL具有类似的功能,可以完成时钟高精度、低抖动的倍频和分频,以及占空比调整和移相等功能。Xilinx公司生产的芯片上集成了 DLL,Altera公司的芯片集成了PLL,Lattice公司的新型芯片上同时集成了PLL和DLL。PLL 和DLL可以通过IP核生成的工具方便地进行管理和配置。7) 内嵌专用硬核 内嵌专用硬核是相对底层嵌入的软核而言的,指FPGA处理能力强大的硬核(Hard Core),等效于ASIC电路。为了提高FPGA性能,芯片生产商在芯片内部集成了一些专用的硬核。例如:为了提高FPGA的乘法速度,主流的FPGA 中都集成了专用乘法器;为了适用通信总线与接口标准,很多高端的FPGA内部都集成了串并收发器(SERDES),可以达到数十Gbps的收发速度。 2.1.3 FPGA的基本特点1)采用FPGA设计ASIC电路(专用集成电路),用户不需要投片生产,就能得到合用的芯片。 2)FPGA可做其它全定制或半定制ASIC电路的中试样片。 3)FPGA内部有丰富的触发器和I/O引脚。 4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。 5) FPGA采用高速CMOS工艺,功耗低,可以与CMOS、TTL电平兼容。可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。 FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。由于可以利用EDA工具对FPGA内部逻辑电路的连接进行编程改动,因此,FPGA与传统的的ASIC(Application Specific Integrated Circuit)不同,在完成设计后,不需要投片生产,就能得到符合使用需要的芯片;FPGA可以完成全定制或者半定制ASIC电路的中试样片;FPGA内部具有丰富的触发器和IO引脚。2.1.4 FPGA的应用1)电路设计中FPGA的应用连接逻辑,控制逻辑是FPGA早期发挥作用比较大的领域也是FPGA应用的基石事实上在电路设计中应用FPGA的难度还是比较大的这要求开发者要具备相应的硬件知识(电路知识)和软件应用能力(开发工具)这方面的人才总是紧缺的,往往都从事新技术,新产品的开发成功的产品将变成市场主流基础产品供产品设计者应用在不远的将来,通用和专用IP的设计将成为一个热门行业!搞电路设计的前提是必须要具备一定的硬件知识13。 2)产品设计把相对成熟的技术应用到某些特定领域如通讯,视频,信息处理等等开发出满足行业需要并能被行业客户接受的产品这方面主要是FPGA技术和专业技术的结合问题,另外还有就是与专业客户的界面问题产品设计还包括专业工具类产品及民用产品,前者重点在性能,后者对价格敏感产品设计以实现产品功能为主要目的,FPGA技术是一个实现手段在这个领域,FPGA因为具备接口,控制,功能IP,内嵌CPU等特点有条件实现一个构造简单,固化程度高,功能全面的系统产品设计将是FPGA技术应用最广大的市场14 。3)系统级应用系统级的应用是FPGA与传统的计算机技术结合,实现一种FPGA版的计算机系统如用XilinxV-4, V-5系列的FPGA,实现内嵌POWERPCCPU, 然后再配合各种外围功能,实现一个基本环境,在这个平台上跑LINUX等系统这个系统也就支持各种标准外设和功能接口(如图象接口)了这对于快速构成FPGA大型系统来讲是很有帮助的。这种"山寨"味很浓的系统早期优势不一定很明显,类似ARM系统的境况但若能慢慢发挥出FPGA的优势,逐渐实现一些特色系统也是一种发展方向。若在系统级应用中,开发人员不具备系统的扩充开发能力,只是搞搞编程是没什么意义的,当然设备驱动程序的开发是另一种情况,搞系统级应用看似起点高,但不具备深层开发能力,很可能会变成爱好者,就如很多人会做网页但不能称做会编程类似以上是几点个人开发。2.1.5 FPGA发展趋势以FPGA为核心的PLD产品是近几年集成电路中发展最快的产品。随着FPGA性能的高速发展和设计人员自身能力的提高,FPGA将进一步扩大可编程芯片的领地,将复杂的芯片挤向高端和超复杂的应用。FPGA发展趋势体现在以下几个方面:1)向高密度、更大容量的千万门系统级方向迈进;2.向低成本、低电压、微功耗、微封装和环保型发展;3)IP资源复用理念将得到普遍认同并成为主要设计方式;4)MCU、DSP、MPU等嵌入式处理器将成为FPGA应用的核心。2.2 硬件描述语言(HDL)硬件描述语言是一种用文本形式来描述和设计电路的语言。设计者可利用HDL7语言来描述自己的设计,然后利用EDA8工具进行综合和仿真,最后变成某种目标文件,再用ASIC或FPGA具体实现。据统计,目前美国硅谷约有80的ASIC和FPGA是采用HDL方法设计的方法。HDL语言有如下特点:(1)HDL以行为描述见长,它能从比较抽象的角度描述硬件的行为。(2)HDL是结构化语言,可以从比较具体的角度描述硬件结构。(3)HDL具备了从比较抽象到比较具体的多个层面上对电子实体进行描述的能力。(4)HDL的生命力在于用它描述实体的程序,既能被模拟(simulation),又能被综合(synthesis)。通过模拟,可验证设计的正确性;通过综合,抽象的设计描述将自动地自上而下地转化为实在的物理设计逻辑图、电路图,直至版图。HDL和传统的原理图输入方法的关系就好比是高级语言和汇编语言的关系。HDL的可移植性好,使用方便,但效率不如原理图;原理图输入的可控性好,效率高,比较直观,但设计大规模FPGA/CPLD时显得比较烦琐。在真正的FPGA/CPLD设计中,通常采用原理图和HDL结合的方法来设计,适合用原理图的地方就用原理图,适合用HDL的地方就用HDL,并没有强制的规定。我们的最终目的是在最短的时间内,用自己最熟悉的工具设计出高效,稳定,符合设计要求的电路。 2.2.1 VeriIog HDL任何新生事物的产生都有它的历史沿革,早期的硬件描述语言是以一种高级语言为基础,加上一些特殊的约定而产生的,目的是为了实现RTL级仿真,用以验证设计的正确性,而不必像在传统的手工设计过程中那样,必须等到完成样机后才能进行实测和调试。Verilog HDL9就是在使用最广泛的C语言的基础上发展起来的一种软件描述语言,它是由GDA(Gateway Design Automation)公司的PHIIMOORBY在1983年末首创的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。1985年MOORBY推出它的第三个商用仿真器Verilog-XL,获得了巨大的成功,从而使得VerilogHDL迅速得到推广应用。1989年CADENCE公司收购了GDA公司,使得VerilogHDL成为了该公司的独家专利。1990年CADENCE公司公开发表了VerilogHDL,并成立LVI组织以促进VerilogHDL成为IEEE标准,即IEEE Standard l3641995。Verilog HDL是目前应用最广泛的一种硬件描述语言,它的最大特点就是易学易用,如果有C语言的编程经验,可以在一个较短的时间内很快的学习和掌握。VerilogHDL可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合、仿真验证和时序分析等14。Verilog HDL适合算法级(Algorithm)、寄存器传输级(RTL)、逻辑级(Logic)、门级(Gate)和板图级(Layout)等各个层次的设计和描述。具体如表2.1所示。设计层次 行为描述 结构描述系 统 级 系统算法 系统逻辑图寄 存 器 数据流程图、真值表 寄存器ALUROL等 输 出 级 状态机 分模块描述 门 布尔方程 逻辑门触发器锁存器 级 真 值 表 构成的逻辑图版 图 级 几何图形 图形连接关系表2.1 不同层级的描述方式2.2.2 VHDL语言VHDL是超高速集成电路硬件描述语言的简称,它是目前标准化程度最高的一种硬件描述语言。VHDL最初由美国提出,并把这个任务交给了TLIBM和INTERMETRICS公司。1987年12月,IEEE接受VHDL为标准的HDL,这就是IEEESTDl076-1987LRM87。后来做了些修改,增加了些功能,形成新的版本TEEESTDl076-1993LRM931。VHDL87和VHDL93不完全兼容,但可对VHDL87的源代码进行少量简单修改转变成合法的VHDL93代码。VHDL是一种全方位的硬件描述语言,包括从系统到电路的所有设计层次。在描述风格上,VHDL支持结构、数据流和行为三种描述形式的混合描述。行为描述以过程语句来表达,数据流描述实际上是RTL级语言的扩展,因此VHDL几乎覆盖了以往各种语句描述语言的功能,整个自顶向下或由底向上的电路设计过程都可以用VHDL完成15。VHDL除具备一般的HDL优点外,其特殊的优点是:(1)通用性好,支持面广。由于它是工业标准,凡大型CAD软件都推出支持VHDL的设计环境。因此用VHDL描述的设计文件,可用不同的设计工具。(2)复用性好。在用VHDL语言设计系统硬件时,没有嵌入与工艺有关的信息。当门级或门级以上的层次通过仿真验证后,再用相应的工具将设计映射成不同的工艺(如MOSCMOS等)。这样,在工艺更新时,就无须修改原程序,只要改变相应的映射工具就行了。因此VHDL设计模块便于在不同的设计场合重复使用。(3)可靠性好。VHDL文件兼技术文档与实体设计于一身,可读性好,既是技术说明,又是设计实现,从而保证了二者的一致性。2.2.3 veriIog HDL和VHDL的比较目前最主要的硬件描述语言是VHDL和Verilog HDL。VHDL发展的较早,语法严格,而Verilog HDL是在C语言的基础上发展起来的一种硬件描述语言、语法较自由(目前ASIC设计多采用Verilog语言)。VHDL和VerilogHDL两者相比,VHDL是一种高级的描述语言,通常更适合行为级和RTL级的描述,可以用于高级建模,而VerilogHDL则是一种比较低级的描述语言,更适合于RTL级,尤其是门级电路的描述,易于控制电路的资源。另外,从两种语言推进的过程来看,VHDL语言偏重标准化考虑,而Verilog语言由于是在Cadence扶植下针对EDA工具开发的硬件描述语言,因此,跟EDA工具的结合更为密切。学习VHDL比学习Verilog难一些,但Verilog自由的语法也使得的初学者容易上手但也容易出错。国外电子专业很多在本科阶段教授VHDL,在研究生阶段教Verilog。从国内来看,VHDL的参考书很多,便于查找资料,而VerilogHDL的参考书则很少,这给学习Verilog HDL带来不少困难。结合两者的优点,经常采用VHDL和VerilogHDL两种混合语言进行电子线路描述,使得利用语言描述硬件的效果更佳。2.3开发软件QUARTUS II2.3.1 QUARTUS II简介Quartus II是Altera公司提供的FPGA/CPLD开发集成环境,Altera是世界上最大的可编程逻辑器件供应商之一。Quartus II在21世纪初推出,是Altera前一代Altera的FPGA/CPLD集成开发环境MAX+plus II25的更新换代产品,其界面友好,使用便捷。在Quartus II上可以完成整个设计流程,它提供了一种与结构无关的设计环境,使设计者能方便的进行设计输入、快速处理和器件编程。2.3.2 QUARTUS II的设计过程1)设计的输入QUARTUS II 软件的设计输入方法有多种,主要包括原理图输入方式;文本输入方式。另外,还可以利用工业标准的EDA设计工具生成设计文件。该软件还可以把这些设计输入方式综合为一个设计体系,并允许信息在各应用程序间自由转换。(1)设计的原理图输入用 Altera 应用软件 QUARTUS II 提供的各种原理图库进行设计输入是一种最为直接的输入方式。用这种方式输入时,为提高效率,应采用自顶向下逻辑分块,把大规模的电路划分成若干小块的方法。一般而言,如果对系统很了解,并且系统速率较高,或在大系统中对时间特性要求较高的部分,可以采用这种方法。原理图输入效率较低,但容易实现仿真,便于信号的观察以及电路的调整16。(2)设计的硬件描述语言输入QUARTUS II 软件包含一个集成的Text Editor(文本编辑程序),适合于输入和编辑用VHDL、Verilog HDL或AHDL26(Altera硬件描述语言)编写的HDL(硬件描述语言)设计文件。QUARTUS II Compiler可以对这些语言表达的逻辑进行综合,并将其映射到Altera的任何器件中。采用语言描述的优点是效率较高,结果也较容易仿真,信号观察也较方便,在不同的设计输入库之间转换非常方便。但语言输入必须依赖综合器,只有好的综合器才能把语言综合成优化的电路。对于大量规范的、易于语言描述的、易于综合的、速率较低的电路,可以采用这种输入方法。2)设计的综合QUARTUS II 处理一个设计时,综合(Compiler)在设计文件中读取信息并产生编程文件和仿真文件,定时分析程序(Timing Analyzer)可分析设计的定时,信息处理程序(MessageProcessor)可自动定位错误。(1)自动错误定位QUARTUS II 的 Message Processor 与 QUARTUS II 的所有应用程序通信,可以给出信息(错误、警告等)。设计者可以利用它自动打开有错误源的文件,并以高亮度方式显示错误位置。(2)逻辑综合与试配QUARTUS II Compiler 的 Logic Synthesize(逻辑综合)模块对设计方案进行逻辑综合并能看到设计实现的真正结果,该模块选择合适的逻辑化简算法,去除冗余逻辑,确保对某种特定的器件结构尽可能有效地使用器件的逻辑资源,还可以去除设计方案中没用的逻辑。Altera 提供三种“现成的”综合方式,可以为多种逻辑综合选择指定设置,可选择 CHENG 缺省方式,以设置缺省的综合选择;可以建立定制方式;还可以在被选择的逻辑功能中指定一些单独的综合选择。综合选择是面向特定器件系列专门设置的,这样可以发挥器件结构的优势。Compiler的Fitter(试配)模块可以经过综合的设计恰当地用一个或多个器件实现,这种自动试配功能使设计者得以从冗余的布局与布线工作中解脱出来。Fitter生成报告文件(.Rp),可以展示设计的具体实现以及器件中未使用的资源。3) 设计的仿真电路设计输入完以后,首先需要检验输入是否正确,这是一项简单的逻辑检查, QUARTUS II 提供功能编译的选项。此时,只运行仿真网络表的提取,而不作布局布线,所以,此时的仿真没有延时信息,所有的延时均为零延时,而且可以预测所有的信号,对于初步的功能检测非常方便。在仿真时需加入激励信号,该激励信号可以用 QUARTUS II 软件中的波形编译器直接编译成波形文件,还可以先用文本编辑器按软件给定的语法规则编译成文本文件,再转换成波形文件,也可以二者结合进行。常用的方法是对于时钟或简单的波形信号用波形编辑器输入,而较复杂的信号则用文本编译器生成。仿真时需事先在波形文件中加入想要观测的信号名,信号名可通过菜单中的节点列表选择,此时,所有的节点的信号都是可以观测的。如果检查到错误,则需要重新输入,重复这个过程。功能检查完成后,首先需要进行编译,这时应选择带延时的完全的编译过程。对每一个设计项目,都有一个配置文件ACF,所有的配置参数都存在这个文件里。如果需要修改配置,既可在菜单上作选择,也可以直接修改次文件。主要的配置参数包括器件类型、管脚的设置、速率及面积的比重、时间参数的要求、布线时的设置等。编译完成以后,可得到报告文件、延时文件、可仿真网络表文件及配置文件,利用功能仿真时生成的激励波形可进行仿真。如果要想下次的布线结果在本次基础上进行,则可以利用反主标的方法,把配置结果写入ACF文件中,下次编译只需用此AFC文件即可。编译完成以后,还可以利用布局软件FloorPlan直接调整内部布局,这种方法对于时间关系的调整非常有用。QUARTUS II 的仿真器具有很强的灵活性,可以控制对单器件或多器件设计的仿真。仿真器使用编译期间生成的二进制仿真网络表进行功能、定时的仿真,或把组合连接起来的多个器件作为一个设计进行仿真。可以使用简明的向量输入语言定义输入激励,也可以使用 QUARTUS II 的波形编辑程序直接画出波形。仿真结果可以在波形编辑器或文件编辑器中看到,也可以作为波形文件或文本文件打印出来。为便于比较设计者可以使用波形编辑器把两次仿真的结果重叠起来。3 基于FPGA的PCM采编器系统设计3.1 PCM采编器系统分析及设计PCM遥测系统是一种常用的遥测设备。它可以采集多路数据并进行通信传输和数据处理,它的多路数据采集设备是PCM采编器。 PCM采编器控制采集各个数据通道数据的时序,并加上帧同步码形成一定格式的数据,再进行并/串转换,形成串行数据流送到调制设备上传送17。归纳起来:PCM采编器有如下功能:1)控制数据采集的时序;2)加帧同步码,按一定格式组织数据包;3)并/串转换。 帧同步字数据通道1数据通道2数据通道N帧同步字 图3.1 PCM帧格式图图3.1是一个典型的PCM帧格式图。帧同步字数据通道1数据通道N。格式中,数据位长度称为字长,全部数据通道数加帧同步码称为帧长。由于遥测系统任务的多变性,所以要求PCM遥测设备具有可编程的特性。通常需要改变的参数主要是:1)码率,串行数据的速率;2)字长,帧长和同步码。本文设计一个码率为500kb/s,字长为8bit,帧长为128字,帧同步码为E848h的PCM采编器,其结构如图3.2所示。图3.2采编器结构图采编器内部进行并/串转换时,由一个8选1数据选择器和一个D触发器完成.由位计数器和8选1数据选择器选通当前数据位,并通过触发器采样消除毛刺。采编器可以接受两类数据源:一类是需经A/D变换的模拟信号数据;一类是数字通信数据,如指令和状态等.数据源的选择由A/D片选信号和数字通道片选信号控制18。帧同步码预先放在芯片内。数据的帧格式由字计数器、地址译码器和数据选择器控制.当字计数器值为1时,译码器选通帧同步码高位,经过24选8数据选择器后进行并/串转换,并经D触发器采样后输出;当字计数器值为2时,选通帧同步码低位;当字计数器值大于2时,选择外部数据输入。在数据字中,具体通道上的数据对应于哪一路信号,由地址输出和具体的格式要求决定.码率可以通过码率分频器改变频值。3.2用VHDL实现系统设计VHDL采用自上至下的设计方法,就是从系统总体要求出发,自上至下地逐步将涉及内容细化,最后完成系统硬件的整体设计。根据图3.2,首先进行原理图设计,即为顶层文件设计;接着细化原理图中的各个功能模块,编程并仿真其功能,即为底层文件设计;最后进行整个系统的仿真,实现总体要求。3.2.1 顶层文件设计PCM采编器顶层原理图如图3.3所示.原理图中包括24选8数据选择器模块(MUX24_8)、8选1数据选择器模块(MUX8_1)、位计数器模块(RPLCONT1)、字计数器模块(RPLCONT2)、译码器模块(DECODER)、分频器模块(freqdiv)和D触发器模块(DFF)。设计要求:地址分配为:帧同步码(1、2路)、模拟通道(3101路)、数字通道(102128路)。码率500kb/s,字长为8 bit,帧长为128字,帧同步码为E848h。时钟CLK经freqdiv二分频,得到串行数据经D触发器发送的频率,即确定了码率。帧同步码高位FRHB7.0、帧同步码低位FRLB7.0和数据DA TA7.0经MUX24_8输出,A、B为数据选择位,“01”选择FRHB7.0;“10”选择FRLB7.0,其他情况选择DATA7.0。8位并行数据经MUX8_1实现串行化;A、B、C为数据选择位,从“000”到“111”选择,确定串行数据的输出顺序为先高位后低位.RPLCONT1为串行数据数,每来一个脉冲,D触发器输出一位,同时该计数器计数一次,Y1、Y2、Y3位与MUX8_1的A、B、C位对应相连,最高位Y3由高电平变为低电平时触发RPLCONT2.RPLCONT2的位并行数据经MUX8_1实现串行化;A、B、C为数据选择位,从“000”到“111”选择,确定串行数据的输出顺序为先高位后低位.RPLCONT1为串行数据数,每来一个脉冲,D触发器输出一位,同时该计数器计数一次,Y1、Y2、Y3位与MUX8_1的A、B、C位对应相连,最高位Y3由高电平变为低电平时触发RPLCONT2.RPLCONT2的输出为7位地址ADDRESS6.0;由此地址