基于FPGA的数字通信实现多路数据时分复用和解复用系统系统.doc_第1页
基于FPGA的数字通信实现多路数据时分复用和解复用系统系统.doc_第2页
基于FPGA的数字通信实现多路数据时分复用和解复用系统系统.doc_第3页
基于FPGA的数字通信实现多路数据时分复用和解复用系统系统.doc_第4页
基于FPGA的数字通信实现多路数据时分复用和解复用系统系统.doc_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

第 63 页 共 63 页摘 要本设计实现多路数据时分复用和解复用系统。设计分为发端和收端,以FPGA作为主控核心。发端系统有三路并行数据输入:A/D转换数据,拨码开关1路和拨码开关2路。这三路数据在FPGA的控制下作为串行码分时输出。发端FPGA包括分频模块、复用模块和电压显示模块。在收端,串行数据进入FPGA,并由FPGA提取位时钟,识别帧同步并解复用发端打包的三路码。收端的FPGA包括数字锁相环模块、解复用模块和电压显示模块。发端FPGA输入有三路8-bit数据:第一路为A/D数据、第二路和第三路是拨码开关产生的数据,另外插入一路巴克码。这四路码组成一帧,由FPGA对其时分复用。A/D输入端的模拟信号的电压值通过FPGA处理,显示在数码管上。在收端,FPGA首先提取位同步,然后识别帧同步,一旦识别出帧同步,FPGA分别解复用三路数据。本文详细阐述了此系统的设计方法,制作过程以及制作过程中的问题。设计者的工作包括:系统各部分电路元件的确定、确定系统框图、画出系统原理图、根据原理图设计FPGA的RTL代码、综合、仿真RTL代码、设计PCB板和在线调试FPGA功能。关键字:数字锁相环;帧同步;时分复用;Verilog HDL语言;串行A/D变换;AbstractThe system is designed for data multiplexed and de-multiplexed. It is based on TDM. The system includes the transmitter and the receiver. They are implemented mainly by FPGA. There are three inputs in the transmission system: data from A/D converter, DIP1 and DIP2. The three channels are out serially and time-divisional under the FPGAs control. The FPGA in the transmitter is divided into four modules which are frequency divider, Barker generator, data multiplexer and voltage display. Voltage display is used for processing the data converted by ADC and sending it to the LED. The serial data are serial shifted into the FPGA in the receiver. Bit-synchronize and frame-synchronize are both picked up, and then de-multiplex. The FPGA in the receiver is divided into three modules which are digital PLL, data de-multiplexer and voltage display. The transmitter will multiplex four ways of 8-bit parallel data. The first way is ADC data, the second and the third way is generated by dip-key. The other is Barker code used for frame synchronizing. The receiver will maintain the bit synchronizing, recognize one frame and de-multiplex three ways data. The essay will discuss the design progress, the programming idea and some problems. Works have to be done by the designer are: Specify all system components, Make system specification, Draw system schematics, Write RTL code according the schematics, Synthesis and simulate the RTL code, Design the PCBs, Validate the functions of the FPGA on-line.Keywords: DPLL; Frame-synchronize; TDM; Verilog HDL; Serial A/D convert;目 录引言11 数字复接系统简介12 数字复接方法及方式22.1 数字复接的方法22.2 数字复接的方式23 系统原理和各模块设计23.1 系统原理及框图23.2 发端系统设计33.3 收端系统设计53.4 FPGA的设计流程73.4.1 设计输入73.4.2 设计综合83.4.3 仿真验证83.4.4 设计实现83.4.5 时序分析83.5 发端FPGA设计93.5.1 分频模块103.5.2 复接模块113.5.3 显示模块123.5.4 编译与仿真143.6 收端FPGA设计153.6.1 数字锁相模块163.6.2 解复用模块173.6.3 显示模块183.6.4 编译与仿真183.7 数字锁相环原理及设计193.8 串行A/D工作原理213.9 并行D/A的工作原理223.10 Altera Flex10K10介绍234 系统调试285 QuartusII软件及Verilog语言简介285.1 QuartusII软件简介285.2 Verilog语言简介306 结论31谢辞32参考文献33附录34引言数字复接、分接技术发展到80年代已经趋于成熟,形成了完善的EI、TI系列。它使得多路低速信号可以在高速信道中传输,同时提高信道的利用率。PLD/FPGA是电子设计领域中最具活力和发展前途的一项技术,它的影响丝毫不亚于70年代单片机的发明和使用。可以毫不夸张的讲,PLD/FPGA能完成任何数字器件的功能,上至高性能CPU,下至简单的74电路,都可以用PLD/FPGA来实现。PLD/FPGA如同一张白纸或是一堆积木,工程师可以通过传统的原理图输入法,或是硬件描述语言自由的设计一个数字系统。通过软件仿真,我们可以事先验证设计的正确性。在PCB完成以后,还可以利用PLD/FPGA的在线修改能力,随时修改设计而不必改动硬件电路。使用PLD/FPGA来开发数字电路,可以大大缩短设计时间,减少PCB面积,提高系统的可靠性。PLD/FPGA的这些优点使得PLD/FPGA技术在90年代以后得到飞速的发展,同时也大大推动了EDA软件和硬件描述语言的进步。本设计主要利用了FPGA及Verilog HDL语言来设计数字复、接分接系统。1 数字复接系统简介在数字通信网中,为了扩大传输容量和提高传输效率常常需要把若干个低速数字信号合并成为一个高速数字信号,然后再通过高速信道传输,这就是所谓的数字复接技术。数字复接是一种已经非常成熟的技术,广泛地应用于无线通信、光通信和微波接力通信。图1-1 数字复接系统方框图如图1-1所示,数字复接系统包括数字复接器(digital multiplexer)和数字分接器(digital de-multiplexer)两部分。数字复接器是把两个或多个低速的支路数字信号按照时分复用方式合并成为一路高速的合路数字信号的设备;数字分接器是把合路数字信号分解为原来的支路数字信号的设备。数字复接器是由定时、调整和复接单元所组成;数字分接器是由同步、定时、分接和恢复单元所组成。定时单元给设备提供统一的基准时间信号,同步单元给分接器提供与复接器基准时间同步的时间信号,调整单元负责同步输入的各支路信号。恢复单元与调整单元相对,负责把分接出来的各支路信号复原。2 数字复接方法及方式2.1 数字复接的方法数字复接的方法主要有按位复接、按字复接和按帧复接三种。(1)按位复接按位复接的方法是每次只复接每一个支路的一位码。复接后,码序列中的第一位表示第一路中的第一位码;第二位表示第二路的第一位码;以此类推,第N位表示第N路的第一位码。这N位码形成第一时隙。同样,第二时隙是有每路的第二位码复接而成。这种复接方法的特点是设备简单、只需小容量存储,易于实现。(2)按字复接按字复接就是每次复接支路的一个字或字节。复接后的码顺序是每个时隙为一路n位码。它的特点是利于多路合成和处理,但要求有较大的存储容量,使得电路较为复杂。(3)按帧复接这种方法是每次复接一个之路的一帧数码,它的特点是复接时不破坏原来的帧结构,有利于交换,但要求有更大的存储容量。2.2 数字复接的方式按照复接时各低速信号的情况,复接方式可分为同步复接、异步复接与准同步复接。(1)同步复接同步复接被复接的各个支路信号在时间上是完全同步的。在实际应用中,由于各个支路信号到达的时间不一样,造成支路间的码位相位不同,使得信息不能被正确复接。因此需要对支路进行相位调整。在复接时,要插入帧同步码及其它的业务码。(2)异步复接将没有统一标称频率的不同支路数字信号进行复接的方式成为异步复接。在数字通信中广泛采用这种复接方式。(3)准同步复接准同步复接是指参与复接的各个低速信号使用各自的时钟,但各支路的时钟需要在一定的容差范围内。准同步复接实际上是在同步复接的基础上增加了码速调整功能。3 系统原理和各模块设计3.1 系统原理及框图首先介绍系统的工作过程。此数字通信系统分为发端和收端两部分。在发端,FPGA对A/D变换数据、DIP1数据和DIP2数据插入帧同步码,形成一帧,对此帧按位时分复用并串行发送出去。同时,A/D输入端的模拟电压值将通过FPGA的处理,显示在七段数码管上。在收端,FPGA首先从串行码中提取位时钟,然后识别帧同步。当识别出帧同步后,FPGA解复用三路并行码,分别将这三路并行码送到后面的D/A变换器、LED1和LED2。同时,第一路并行码通过FPGA的处理,显示到七段数码管上。传输帧结构如图3-1所示:图3-1 传输帧结构总系统框图如图3-2所示:图3-2 总系统框图3.2 发端系统设计图3-3是发端系统方框图图3-3 发端系统方框图如图3-3所示,发端有三路信号:A/D变换信号、拨码开关1和拨码开关2产生的8位信码。A/D变换的信码经过FPGA处理显示到七段译码管上,它代表变换前模拟信号的电压值。由于三路信号都是静态信号,因此输入不用进行码速变换和码速调整。输出信号的码速率为256Kbps。发端电路在做PCB时需要单层布线,因此将发端系统板做成三块小板,分为三个图,分别是发端主图、A/D变换图和LED显示图。发端主图如3-4所示,以发端FPGA为核心,其它功能块逐一实现。为了FPGA运行的稳定,要在其周围加入6个滤波电容,电容值为0.1uF。拨码开关与排阻共同构成八位信码,分别接到FPGA的8个I/O端口。复位电路是系统正常运行的必要部分,它由按键开关,电解电容和电阻构成。主图板与AD变换板、LED显示板之间用插针和电线连接。这些插针和电线将为A/D变换板和LED显示板提供电源和通信路径。此外,FPGA还需要配置电路。配置电路在开机时将配置文件载入到FPGA中,FPGA才可以工作。配置电路由上拉电阻和插座组成,其中,五个端口接到FPGA五个配置引脚,他们是:DATA0、nSTATUS、nCONFIG、CONF_DONE与DCLK。图3-4发端主图原理图A/D变换图如图3-5所示,要说明的是,这里没有采用并行A/D,而是采用了串行A/D,这样可以节省FPGA的管脚。我使用的ADC型号是TLC549。TLC549转换输入端模拟量为数字量,为FPGA提供串行数据。这块板的电源由主图板提供,电源端接到主图板的电源端。TLC549需要一片0.1uF的陶瓷电容为芯片的电源端滤波。在做PCB时,这片电容应靠近芯片的VCC与GND。TLC549的模拟输入量有电位器分压和外部输入,通过单刀双掷开关选择。外部输入的模拟量可以是信号源输出,音频输入等。图3-5 A/D变换图LED显示图如图3-6所示,我用五位LED显示模拟电压值。它可以提供0.0001的显示精度。这五位LED由一位独立LED和一个四LED组组成。这五个LED采用扫描方式显示。扫描显示是LED显示的常用方法。通过五个PNP管控制五个LED分时发光,时隙为32ms。在此时隙下,人眼不会察觉到LED分别点亮,而是同时在亮。此法不仅节省七段译码驱动芯片和FPGA的管脚,而且节约电能。小数点的位置固定不变,因此只需将独立LED的小数点设计为常亮。LED数码管采用共阳极,公共端接PNP发射极,PNP集电极接电源,PNP的导通由FPGA控制。七段译码芯片采用DM74LS47,它是一片驱动共阳极LED数码管的芯片。同样,在这片芯片的VCC与GND之间加入0.1uF陶瓷滤波电容。图3-6 LED显示图3.3 收端系统设计收端系统框图如图3-7所示:图3-7 收端系统框图收端系统分为两部分:收端主图和D/A变换图。收端主图如图3-8所示,与发端主图有相似之处。收端FPGA同样需要加入滤波电容,复位电路和配置电路。解复用后的第二路与第三路数据通过两组8个LED灯反映出来。另外,为周边板提供电源和数据接口的插针也要设计出来。如果将各模块直接用线连起来会很复杂,因此采用网标的连接方式。图3-8 收端主图D/A变换图如图3-9所示,采用的D/A芯片是DAC0830。它受控于FPGA的DAC_STROBE端口,负责将第一路码转换为模拟信号并输出到外部接口。0.1uF的滤波电容也是必要的。图3-9 D/A变换图3.4 FPGA的设计流程电路的原理图画好后,便可以根据各模块的特点,性能和限制条件来设计FPGA了。FPGA设计分为设计输入、综合、功能仿真(前仿真)、实现、时序仿真(后仿真)、配置下载等六个步骤,设计流程如图3-10所示。图3-10 FPGA设计流程下面分别介绍各个设计步骤。3.4.1 设计输入设计输入包括使用硬件描述语言HDL、状态图与原理图输入三种方式。HDL设计方式是现今设计大规模数字集成电路的良好形式,除IEEE标准中VHDL与Verilog HDL两种形式外,尚有各自FPGA厂家推出的专用语言,如Quartus下的AHDL。HDL语言描述在状态机、控制逻辑、总线功能方面较强,使其描述的电路能特定综合器(如Synopsys公司的FPGA Compiler II或FPGA Express)作用下以具体硬件单元较好地实现;而原理图输入在顶层设计、数据通路逻辑、手工最优化电路等方面具有图形化强、单元节俭、功能明确等特点,另外,在Altera公司Quartus软件环境下,可以使用Momory Editor对内部memory进行直接编辑置入数据。常用方式是以HDL语言为主,原理图为辅,进行混合设计以发挥二者各自特色。通常,FPGA厂商软件与第三方软件设有接口,可以把第三方设计文件导入进行处理。如Quartus与Foundation都可以把EDIF网表作为输入网表而直接进行布局布线,布局布线后,可再将生成的相应文件交给第三方进行后续处理。3.4.2 设计综合综合,就是针对给定的电路实现功能和实现此电路的约束条件,如速度、功耗、成本及电路类型等,通过计算机进行优化处理,获得一个能满足上述要求的电路设计方案。也就是是说,被综合的文件是HDL文件(或相应文件等),综合的依据是逻辑设计的描述和各种约束条件,综合的结果则是一个硬件电路的实现方案,该方案必须同时满足预期的功能和约束条件。对于综合来说,满足要求的方案可能有多个,综合器将产生一个最优的或接近最优的结果。因此,综合的过程也就是设计目标的优化过程,最后获得的结构与综合器的工作性能有关。3.4.3 仿真验证从广义上讲,设计验证包括功能与时序仿真和电路验证。仿真是指使用设计软件包对已实现的设计进行完整测试,模拟实际物理环境下的工作情况。前仿真是指仅对逻辑功能进行测试模拟,以了解其实现的功能否满足原设计的要求,仿真过程没有加入时序信息,不涉及具体器件的硬件特性,如延时特性;而在布局布线后,提取有关的器件延迟、连线延时等时序参数,并在此基础上进行的仿真称为后仿真,它是接近真实器件运行的仿真。3.4.4 设计实现实现可理解为利用实现工具把逻辑映射到目标器件结构的资源中,决定逻辑的最佳布局,选择逻辑与输入输出功能连接的布线通道进行连线,并产生相应文件(如配置文件与相关报告)。通常可分为如下五个步骤:(1)转换:将多个设计文件进行转换并合并到一个设计库文件中。(2)映射:将网表中逻辑门映射成物理元素,即把逻辑设计分割到构成可编程逻辑阵列内的可配置逻辑块与输入输出块及其它资源中的过程。 (3)布局与布线:布局是指从映射取出定义的逻辑和输入输出块,并把它们分配到FPGA内部的物理位置,通常基于某种先进的算法,如最小分割、模拟退火和一般的受力方向张弛等来完成;布线是指利用自动布线软件使用布线资源选择路径试着完成所有的逻辑连接。因最新的设计实现工具是时序驱动的,即在器件的布局布线期间对整个信号通道执行时序分析,因此可以使用约束条件操作布线软件,完成设计规定的性能要求。在布局布线过程中,可同时提取时序信息形成报靠。(4)时序提取:产生一反标文件,供给后续的时序仿真使用。(5)配置:产生FPGA配置时的需要的位流文件。在实现过程中可以进行选项设置。因其支持增量设计,可以使其重复多次布线,且每次布线利用上一次布线信息以使布线更优或达到设计目标。在实现过程中应设置默认配置的下载形式,以使后续位流下载正常。3.4.5 时序分析在设计实现过程中,在映射后需要对一个设计的实际功能块的延时和估计的布线延时进行时序分析;而在布局布线后,也要对实际布局布线的功能块延时和实际布线延时进行静态时序分析。从某种程序来讲,静态时序分析可以说是整个FPGA设计中最重要的步骤,它允许设计者详尽地分析所有关键路径并得出一个有次序的报告,而且报告中含有其它调试信息,比如每个网络节点的扇出或容性负载等。静态时序分析器可以用来检查设计的逻辑和时序,以便计算各通中性能,识别可靠的踪迹,检测建立和保持时间的配合,时序分析器不要求用户产生输入激励或测试矢量。虽然Xilinx与Altera在FPGA开发套件上拥有时序分析工具,但在拥有第三方专门时序分析工具的情况下,仅利用FPGA厂家设计工具进行布局布线,而使用第三方的专门时序分析工具进行时序分析,一般FPGA厂商在其设计环境下皆有与第三方时序分析工具的接口。Synopsys公司的PrimeTime是一个很好的时序分析工具,利用它可以达到更好的效果。将综合后的网表文件保存为db格式,可在PrimeTime环境下打开。利用此软件查看关键路径或设计者感兴趣的通路的时序,并对其进行分析,再次对原来的设计进行时序结束,可以提高工作主频或减少关键路径的延时。与综合过程相似,静态时序分析也是一个重复的过程,它与布局布线步骤紧密相连,这个操作通常要进行多次直到时序约束得到很好的满足。在综合与时序仿真过程中交互使用PrimeTime进行时序分析,满足设计要求后即可进行FPGA芯片投片前的最终物理验证。3.4.6 下载验证下载是在功能仿真与时序仿真正确的前提下,将综合后形成的位流下载到具体的FPGA芯片中,也叫芯片配置。FPGA设计有两种配置形式:直接由计算机经过专用下载电缆进行配置;由外围配置芯片进行上电时自动配置。因FPGA具有掉电信息丢失的性质,因此可在验证初期使用电缆直接下载位流,如有必要再将烧录配置芯片中(如Xilinx的XC18V系列,Altera的EPC2系列)。使用电缆下载时有多种直载方式,如对Xilinx公司的FPGA下载可以使用JTAG Programmer、Hardware Programmer、PROM Programmer三种方式,而对Altera公司的FPGA可以选择JTAG方式或Passive Serial方式。因FPGA大多支持IEEE的JTAG标准,所以使用芯片上的JTAG口是常用下载方式。将位流文件下载到FPGA器件内部后进行实际器件的物理测试即为电路验证,当得到正确的验证结果后就证明了设计的正确性。电路验证对FPGA投片生产具有较大意义。下面将根据FPGA的设计流程来进行本设计。3.5 发端FPGA设计在原理图做好之后。就可以设计FPGA了。我所使用的设计软件是Altera 的QuartusII,所使用的FPGA是Altera的FLEX10K10。首先,根据发端FPGA所要完成的功能将设计分为三个子模块。它们是系统分频模块、复接模块和显示模块。设计细分如图3-11:如图3-11 发端FPGA设计细分发端采用同步设计,所有触发器均使用系统时钟,分频模块输出全部接到触发器的使能端。这样的设计可以避免使用行波时钟。行波时钟不能被时序分析器分析,将被排除出时序逻辑。行波时钟还会使后续电路产生亚稳态。因此应尽量避免使用行波时钟。发端顶层如图3-12所示,图3-12 发端FPGA顶层下面将介绍各模块的作用。3.5.1 分频模块分频模块的作用是将系统时钟2.048MHz进行分频,生成其它模块所需要的时钟,并将这些时钟接到系统触发器的使能端。在设计中,分频模块输出有“CLK_DIV_50P”、“EN”和“EN_SCAN” 。其中,“CLK_DIV_50P”用来作为串行A/D的控制信号,“EN”是时钟频率为256KHz的窄脉冲时钟信号,它用来作复接时钟。“EN_SCAN”是用来做LED扫描控制的方波时钟,频率是32Hz。图3-13是分频器的寄存器传输级电路图,图3-13 分频器传输级电路图分频模块的设计思想实现计数器。计数器实现循环计数,当达到某个计数值时,相应输出寄存器改变逻辑状态。模块中的计数器有counter_q和counter1_q。当counter_q计满时自动归零,EN输出变为“1”,否则,EN为“0”。当counter1_q计满数时,自动归零,EN_SCAN变为“1”,否则EN_SCAN为“0”。CLK_DIV_50P的频率与EN相同,不同的是CLK_DIV_50P是方波,而EN是窄脉冲。3.5.2 复接模块复接模块的作用是时分复用三路数据码、插入帧同步码。此模块还有一个作用是控制串行A/D工作。复接模块的寄存器传输级电路图如图3-14,图3-14 复接模块寄存器传输级电路图复接模块的核心也是自归零计数器。每一个输出都是在相对应的计数值下完成的,每一次串行A/D的控制是在计数器达到某些计数值时完成。因此,可以将计数器看成是复接模块的控制中心。复用过程由模32定时计数器控制。当计数值在07时,串行输出帧同步码;计数值在815时,给A/D送CS控制信号和位时钟信号,将串行A/D的数据锁存并输出,同时给显示模块送控制信号和锁存后的A/D数据;计数值在1623时,串行输出第二路码;计数值在2431时,串行输出第三路码。帧同步码是11110010,它作为帧头,其后跟着三路数据码。3.5.3 显示模块显示模块用来将模拟信号的电压显示出来。它由分频模块和复接模块共同控制。显示模块又分为三个子模块:乘法模块、二进制到BCD转换模块和显示扫描模块。显示模块顶层如图3-15图3-15 显示模块顶层乘法模块作用是根据8位A/D转换标度,一共256个量化值,值与值之间的步长是5/2560.0195,A/D所能显示的最小电压值是0.0195伏的将其扩大10000倍并与A/D数据相乘得到16位的数据。乘法模块的电路图如图3-16,图3-16 乘法模块电路图二进制到BCD转换模块对乘法模块产生的16位数据进行减法运算,对相应的寄存器进行累加运算,加法的最终结果就是BCD码。此BCD码的表示范围是099999。因此A/D显示精度可达0.0001。相比之下,另一种转换方法是查表法。查表法是将范围内的所有二进制数的BCD码一一列举出来,二进制数相当于地址,而BCD数就是地址中的内容。这两种方法各有千秋。查表法速度快,只需要一个时钟周期时间,但是程序冗长,编写工作量大,同时占用大量的FPGA资源,是典型的面积换速度;计算法速度慢,数值越大,转换时间越长。但程序简洁易懂,不占用太多资源。对于此设计系统,系统时钟为2.048MHz,计算速度已经不是问题了,而电路面积是要考虑的。因此,我选择应用计算法。二进制转换为BCD码的算法图见图3-17,图3-17 二进制转换为BCD码的算法图见输入的二进制数不会超过万位。先将它与10000比较。如果大于或等于10000,则将其减去10000并对寄存器组BCD_OUT19:16加一。每做一次这样的运算需要一个时钟周期。如此循环直到二进制数字小于一万。之后,将二进制数与1000比较,过程与前面相同,累加的寄存器组为BCD_OUT15:12。依此类推,直到二进制数减为零。这时的寄存器组BCD_OUT19:0的数值就是转换后的BCD值。此值被输出到显示扫描模块。显示扫描模块用来按时隙依次输出四位BCD码。由于设计一共用到5个LED七段译码管,因此控制字为5位,用来分时控制五个PNP三极管导通。在每个三极管导通时,将对应的四位BCD码送出到74LS47译码。控制字采用低电平有效,通过一个5位的循环移位寄存器来控制。显示扫描模块的电路图如图3-18,图3-18 显示扫描模块的电路图3.5.4 编译与仿真整个发端的FPGA就是由这些模块组成的。设计结束后将代码进行编译。Quartus II中的编译是整合式的,它将代码编译、芯片适配、布局布线和时间分析在一个工具中一并完成了,相当于完成了一次设计迭代。这使得功能仿真和时序仿真可以出现在综合和实现之后,有时功能仿真就变得不是那么重要了,而是直接进行时序仿真。这样可以节省很多时间。发端FPGA的实现结果如下:+-+; Fitter Summary ;+-+-+; Fitter Status ; Successful - Tue May 17 12:55:07 2005 ; Quartus II Version ; 4.2 Build 157 12/07/2004 SJ Full Version ; Revision Name ; trans_top ; Top-level Entity Name ; trans_top ; Family ; FLEX10K ; Device ; EPF10K10LC84-4 ; Timing Models ; Final ; Total logic elements ; 404 / 576 ( 70 % ) ; Total pins ; 31 / 59 ( 52 % ) ; Total memory bits ; 0 / 6,144 ( 0 % ) ;+-+-+一旦编译成功,就可以进入仿真阶段了。由于设计的层次不复杂,模块不多。因此直接在顶层进行时序仿真。仿真时序图如图3-19图3-19 仿真时序图这个时序图描述了发端FPGA的工作情况。EN是256KHz的窄脉冲信号,它的每一个脉冲代表复接计数器计数一次。图中前八个脉冲所对应的输出正好是帧同步码,接下去SERIAL_A/D_IO输出控制脉冲,每一个控制脉冲控制串行A/D输出一个数据到输出端。之后的八个脉冲控制第二路信号输出,再后面的八个控制第三路。软件仿真的缺点是仿真时间不能设置太长,否则会占用巨额的内存,计算机性能急剧下降。用软件仿真一些可测的功能后,应该用硬件进行全面的验证。3.6 收端FPGA设计收端分为三个子模块:数字锁相模块,解复用模块和显示模块。其设计细分如图3-20。在数字码输入FPGA后,首先通过数字锁相模块提取位时钟,在位时钟控制下,数码被输送到解复用模块提取出帧同步并解复用出三路信码。解复用模块将第一路A/D数据送到显示模块并控制外部DAC工作。图3-20 收端FPGA设计细分收端FPGA顶层如图3-21图3-21 收端FPGA顶层下面对各模块作出详细介绍。3.6.1 数字锁相模块数字锁相模块是根据图3-1全数字锁相环结构图设计的,分为三个模块:K模增减计数器、加减脉冲控制器和N分频计数器。这个数字锁相模块是基于加减脉冲方法的,输入信码与锁相输出信码进行异或,异或的结果作为相位误差。如果异或结果为“1”,K模计数器减计数,否则加计数。加计数或减计数会产生进位或借位,相应控制加减脉冲控制器加脉冲或减脉冲。脉冲又通过后面的N分频计数器进行分频,分频输出就是锁相输出结果,它是提取出来的位时钟。N分频计数器的分频值是可以设置的,它与系统时钟和信码位时钟有关。一般,系统时钟=2N*fc,fc是输入信码的中心频率。我在接收端设计中用一片2.048MHz的有源晶振作系统时钟,fc为256KHz,那么,N应该设置为4。K模可逆计数器的模值K应大于M/4。因为M=2N,K应大于2。K值越大,捕捉带越小,锁定时间越长。值得指出的是,在环路锁定状态下,由于可逆计数器的连续计数,或在噪声的干扰下,会产生进位和借位脉冲。如果K值取得太小,则可逆计数器因频繁地循环计数而产生进位或借位脉冲,这就导致了在环路的输出端出现相位抖动。为了减少这种相位抖动,K值必须取大于M/4。由以上分析可知,模K的取值要适当。K取得大,对抑制噪声、减少相位抖动有利,但同时又加大了环路进入锁定状态的时间。反之,K取得小,可以加速环路的锁定,而对噪声的抑制能力却随之降低。在此设计中,K取7。图3-22描述了锁相模块的仿真结果。图3-22 锁相模块的仿真结果3.6.2 解复用模块此模块为同步设计,时钟端接系统时钟,使能端接锁相模块的位时钟输出。解复用模块的作用是从信码中提取帧同步,对三路码解复用并控制D/A转换器工作。模块使能信号要求是系统时钟宽度的脉冲,而锁相模块提供的是方波。此方波信号进入模块后立即被微分,然后,接到后续触发器。模块中有一个8位的全局移位寄存器。它受控于系统时钟和使能信号,工作于256KHz。它作为帧同步识别和解复用的缓存。模块中另外两个核心是解复用允许寄存器和解复用计数器。解复用允许寄存器受控于使能信号、巴克码识别信号和复用结束信号。当解复用寄存器为“1”时,解复用计数器开始计数,在某个特定的计数值到来时,将全局移位寄存器中的8位码送到相应的输出端口或发D/A控制信号。计数器计到最后一个值时,即代表解复用结束,解复用允许寄存器清零,计数器归零。解复用模块的电路图如图3-23图3-23 解复用模块电路图3.6.3 显示模块显示模块与发端的相同,在这里略去。3.6.4 编译与仿真收端FPGA的实现结果如下:+-+; Fitter Summary ;+-+-+; Fitter Status ; Successful - Fri May 20 14:58:27 2005 ; Quartus II Version ; 4.2 Build 157 12/07/2004 SJ Full Version ; Revision Name ; rcv_top ; Top-level Entity Name ; rcv_top ; Family ; FLEX10K ; Device ; EPF10K10LC84-4 ; Timing Models ; Final ; Total logic elements ; 464 / 576 ( 80 % ) ; Total pins ; 37 / 59 ( 62 % ) ; Total memory bits ; 0 / 6,144 ( 0 % ) ;+-+-+仿真图如图3-24,我们可以看出,三路数据被正确的解复用了。图3-24 收端FPGA仿真图3.7 数字锁相环原理及设计本设计在接收端要实现位同步,我选用了数字锁相环来实现这一功能。考虑到这是一个全数字部件,因此将它以RTL代码的形式描述出来并整合到FPGA中。下面先介绍数字锁相环的原理。全数字锁相环路的结构框图如图3-25所示 图3-25 全数字锁相环结构图其中数字鉴相器由异或门构成,数字环路滤波器由变模可逆计数器构成,数控振荡器由加/减脉冲控制器和除计数器组成。可逆计数器和加/减脉冲控制器的时钟频率分别为Mf0和2Nf0。这里f0是环路的中心频率,一般情况下M和N为2的整数次幂。相应波形如图3-26所示。图3-26 异或门检相器工作波形当环路琐定时,u1和u2正交,鉴相器的输出信号ud为50%占空比的方波,此时定义相位误差为零。在这种情况下,可逆计数器加与减的周期相同,只要可逆计数器的k值足够大(kM/4),其输出端就不会产生进位或借位脉冲。这时,加/减脉冲控制器只对其时钟2Nf0进行二分频,使u1和u2的相位保持正交。在环路未锁定的情况下,若ud0时,它使可逆计数器向上加计数,并导致进位脉冲产生,进位脉冲作用到加/减脉冲控制器的加控制端i,该控制器便在二分频过程中加入半个时钟周期。反之,若ud1,可逆计数器减计数,并将发出借位脉冲到加/减脉冲控制器的减输入端d,于是,该控制器便在二分频的过程中减去半个周期。这个过程是连续发生的。加/减脉冲控制器的输出经过除计数器后,使得本地估算信号u2的相位受到调整控制,最终达到锁定状态。3.8 串行A/D工作原理发端系统的第一路信码是串行A/D输出的信号,这片8位串行A/D是Ti公司的TLC549。如图图3-27 TLC549串行A/D它基于CMOS工艺,最大转换时间17us,每秒的访问次数可达40000次,输入电压的范围36V,功耗低于15mW。仅有两个控制端,I/O CLOCK与CS同时控制数据的输入,I/O CLOCK的最大输入时钟为1.1MHz。在TLC549内部有一个4MHz的时钟,这个片上时钟使得片内电路的工作独立于外部数据时钟的时序,而且片内时钟与I/O CLOCK时钟不要求有任何的相位同步。片内时钟与I/O CLOCK配合工作实现数据的高速传输与转换。它的工作时序图如图3-28。首先,CS端口出现低电平并持续tsu时间,这时数据的最高位A7出现在数据端口,接着I/O CLOCK端输入7个脉冲,将数据的A6到A0位串行输出。tsu最小值等于ten为1.4us。CS高电平将启动转换,这时CS要保持17us确保转换完成。这样,一次转换到全部数据输出所用的时间为25us。需要注意的是,A7是在CS变低电平时输出的,A6、A5、A4和A3在前四个I/O CLOCK的下降沿输出,这是A/D的访问周期,A2、A1和A0在后三个I/O CLOCK的下降沿输出,最后一个I/O CLOCK下降沿使A/D进入保持运行阶段。保持阶段将持续4个内部时钟,然后CS必须变高电平或者I/O CLOCK必须在之后的36个内部时钟(17us)时间内保持低电平,否则A/D将与微控器失步。如果在转换期间CS变低电平,这将取消本次转换。图3-28 TLC549的工作时序图3.9 并行D/A的工作原理发端D/A的型号是DAC0830,它是一片8位并行D/A。它基于CMOS电流开关电路和控制逻辑,耗能极低,只有20mW,输出兼容TTL电路。它内部有双缓冲器结构,可以转换一路信号的同时,锁存另一路信号。这使得多个DAC0830可以时分复用。图3-29 DAC0830DAC0830的双缓冲工作原理很简单,ILE保持高电平,XFER与CS同时变为低电平,接着WR1与WR2同时变为低电平,将数据写入双缓冲器并转换。如图3-30 DAC电路图,3-31时序图。图3-30 DAC电路图图3-31 DAC工作时序3.10 Altera Flex10K10介绍经过十几年的发展,许多公司都开发出了多种类型的可编程逻辑器件。所谓的复杂可编程逻辑器件(CPLD,即Complex Programmable Logic Device)是在PAL,GAL等逻辑器件的基础之上发展起来的。同以往的PAL、GAL等相比较,CPLD的规模比较大,适合于时序、组合逻辑电路应用场合,它可以替代几十甚至上百块通用IC芯片。这样的CPLD实际上就是一个子系统部件。这种芯片具有可编程性和实现方案容易改动的特点。由于芯片内部硬件连接关系的描述可以存在磁盘、ROM、EPROM、PROM中,因而在可编程门阵列芯片及外围电路保持不动的情况下,换一块EPROM芯片,就能实现一种新的功能。当今比较典型的有Xilinx公司的FPGA和Altera公司的CPLD期间系列。本设计所采用的就是Altera公司的EPF10K10LC84-4芯片。FLEX 10K是工业界第一个嵌入式的PLD,由于其具有高密度、低成本、的功率等特点,所以脱颖而出成为当今Altera CPLD中应用前景最后的器件系列。到目前为止,FLEX 10K系列以推出了FLEX 10K、FLEX 10KA、FLEX 10KB、FLEX 10KV、FLEX 10KE等5中分支系列,其集成度也以达到了前所未有的250000门。FLEX 10K系列采用重复可找的CMOS SRAM工艺,把连续的快速通道互连与独特的嵌入式阵列结构相结合,同时也结合了众多可编程器件的优点来完成普通门阵列的宏功能。每个FLEX 10K器件还包括一个嵌入式阵列合一个逻辑阵列,它能让设计人员情势地开发出集存储器、数字信号处理器及特殊强大功能与一身地芯片。出外,FLEX 10K所具有的多电压(Multivolt)功能可以全面支持以不同电压工作的产品,同时它还备有多款封装供设计者选择,其中包括纤薄四方扁平封装合球体栅格封装等。该系列采用0.5mCMOSSRAM或0.25mCMOSSRAM(10K10E系列)集成电路制造工艺制造。 (1)特点: 具有700031000个可用门、6144位RAM、720个触发器和最大I/O数150 在线可重配置 可预测在线时间延迟的布线结构 实现加法器和计数器的专用进位通道 3.3V和5V电源 MAX+PLUS软件支持自动布线和布局 84到562个引脚的各种封装(2)常用型号:EPF10K10,EPF10K20,EPF10K30,EPF10K40,EPF10K50,EPF10K70,EPF10K100表3-1 FLEX10K10管脚采用ALTERA公司10K10PLCC84 脚器件。使用有源晶振增强线路板抗干扰性。一般称呼上还是有讲究的: 有源的那种应该称为“晶振”,一般有4个管脚。 无源的那种应该称为“晶体”,一般有2个管脚。使用有源和无源形成震荡电路各有优缺点:有源晶振容易起振,接上电源和地就可以使用,但是体积一般较小。无源晶体震荡电路中的辅助电容、

温馨提示

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

评论

0/150

提交评论