




已阅读5页,还剩52页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目 录1前言12总体方案设计22.1方案比较22.2方案论证32.3方案选择43单元模块设计63.1各单元模块功能介绍及电路设计63.2电路参数的计算及元器件的选择153.3特殊器件的介绍153.4各单元模块的联接174软件设计184.1软件设计原理及设计所用工具184.2 dsp程序设计及功能说明204.3 fpga程序设计及功能说明235系统调试286系统功能、指标参数306.1系统能实现的功能306.2系统指标参数测试306.3系统功能及指标参数分析337结论358总结与体会369谢辞(致谢)3710参考文献38附录一 调制系统电路图39附录二 dsp程序代码44附录三 外文翻译47 第 56 页1前言随着世界经济的发展,科技的进步,信息化已经成为社会发展的必要趋势,无线通信在人们的生活生产中发挥着越来越重要的作用。近几十年无线通信更是得到飞速发展,主流通信方式也从模拟无线通信转化到了数字无线通信,使得通信质量在很大程度上得到了提高。而随着微电子技术和数字信号处理技术的飞速发展,使得数字信号处理器在无线通信中的广泛运用成为可能和必要,这就诞生了软件无线电这一新的无线通信技术,它以一个通用、标准、模块化的硬件平台为依托,通过软件编程来实现无线电台的各种功能,从基于硬件、面向用途的电台设计方法中解放出来,并以功能的软件化减少功能单一、灵活性差的硬件电路,实现更加强大的功能。软件无线电这一概念于1992年5月美国电信系统会议上被jeo mitola首次提出,之后就得到了全世界无线电领域的广泛关注,民用研究已经成为软件无线电研究的主要战场尤其是在移动通信领域具有更广阔的空间,并被比喻为第三代、第四代全球通信的基石,东芝、诺基亚、摩托罗拉等各大通信公司都宣布要从数字无线电向软件无线电转变。然而、如今应用非常广泛的移动通信已经发展成为了多制式、多标准化的通信系统。第二代移动通信中有gsm和窄带cdma等标准,如今世界广泛推广的第三代移动通信中就有美国的cdma2000,欧洲的wcdma,中国的td-scdma。这样多种标准并存的局面就要求了我们的新旧标准要相互兼容,而在数字信号调制方式上也要求更加灵活,使得软件无线电在该领域的应用越来越紧迫。除了在民用移动通信系统中,软件无线电技术在军事通信、卫星通信和数字电视等方面都有广泛应用,它在当今和以后的无线电通信领域必将撑起一片新的天空,研究与掌握软件无线电技术对当今无线通信的发展日益重要。1数字调制是软件无线电技术中的基本技术之一,本文将设计一种基于软件无线电平台的多信号调制器,主要实现fsk、qpsk两种调制方式,并在硬件平台上得到实现。fsk和qpsk都是目前应用非常广泛的两种数字调制方式,其中fsk是利用基带数字信号离散取值特点去键控载波频率以传递信息的一种数值调制技术,它具有实现容易、抗噪声与抗衰减的性能较好等特点,在低速数据传输中得到广泛应用。而qpsk调制四相移键控是目前常用的一种卫星数字调制方式,它具有较高的频率利用率、较强的抗干扰性以及实现容易等特点。fsk、qpsk等常用数字调制方式的软件无线电的实现,可更好的推广软件无线电技术在生活生产中的引用,对无线通信的发展有着重要意义。2总体方案设计本次设计要求设计出一种能实现fsk和qpsk调制的多信号调制器。其中fsk调制的中心频率为20mhz,调制带宽为5mhz,即调制输出17.5mhz和22.5mhz两种频率的波形。而qpsk调制频率为20mhz,码元转换时调制信号的频率不发生变化,而只有其相位发生与码元相关跳变。2.1方案比较方案一该方案采用dsp芯片直接驱动高速数模转换芯片的方法,如图2.1所示,dsp首先根据需求计算出fsk调制波形数据和qpsk调制波形数据存放到几个不同的数组中。在进行fsk调制时,从基带信号中取一位二进制码元,根据该码元值查询与之对应的一个频率的波形数据表并通过外部存储器接口输出给数模转换电路,最终经过该电路把数字信号转化为模拟的fsk调制信号。在qpsk调制时,取基带信号中的两位二进制代码,根据码元值查询与之对应的某一个相位的波形数据并输出给数模转换电路,得到模拟的qpsk调制信号。图2.1 方案一系统框图方案二如图2.2,该方案采用fpga驱动高速数模转换芯片实现fsk和qpsk调制。fsk调制时,将事先计算好的两种频率的波形数据保存在fpga内设计的两个rom中,在调制器工作时,根据二进制码元值来分别读取两个rom中的波形数据,然后发送给数模转换芯片,从在而输出端得到含有两种载波频率的fsk调制信号。qpsk调制实现和fsk调制类似,首先在四个rom中保存上四种不同相位频率相同但的波形数据,工作时根据所取得的不同码元查询不同的rom,将该波形数据传送给数模转换芯片,最终输出不同相位的qpsk调制信号。图2.2 方案二系统框图方案三方案三采用dsp+fpga+da的硬件结构如图2.3所示,dsp首先根据调制的要求和指标计算出fsk调制两种频率的波形数据和qpsk调制四种相位的波形数据,再根据码元取值把计算出的波形数据送到fpga的ram中。如果是fsk调制则将取调制数字信号中的一位数并据根据其值“1”和“0”两种状态,将相应的频率波形数据送到fpga内部ram中。如果是qpsk调制,则取数字调制信号中的两位二进制码,根据其值“00”、“01”、“10”和“11”四种状态查询四种相位波形数据,并将相应的相位波形数据送到fpga内部的ram中。由fpga控制da反复输出ram中的波形数据,从而得到调制信号。fpga内部设计有两个ram交替读写数据,当da反复输出一个ram中数据时,dsp向另一个ram中写数据,从而缓解dsp和da速度的不匹配。图2.3 方案三系统框图2.2方案论证题目要求的调制信号中心频率为20mhz,其中fsk调制波形的带宽为5mhz。即在qpsk调制时输出波形的频率为20mhz,频率不发生变化而只有相位根据码元取值发生变化。在fsk调制时根据基带信号的码元值输出17.5mhz和22.5mhz的波形。当输出信号频率为20mhz时,根据奈奎斯特采样定理,采样率至少要大于40msps。然而为了得到更好的波形,则需要将采样率设置得更高,若一个信号周期内采样10次,则采样率应为200msps,这就要求数模转换器的采样率以及其控制芯片的速率要足够高。考虑到实际工程的需求,为了保证输出的调制波形效果较好,需要一个周一内的采样点较多,假设我们输出20mhz波形时每个周期10个采样点,那么采样率为200msps。但是在进行fsk调制时,需要输出17.5mhz和22.5mhz两种频率的信号,但是如果通过改变da芯片的采样率来改变输出频率可能会导致输出波形数据发生错误,比较难以实现。因此只有保持200msps的采样率不变,通过改变一个信号周期内的采样点的个数来改变输出信号的频率。但是17.5mhz和22.5mhz的波形在200msps的采样率下,每个周期的采样点不为整数,这样会导致每个周期的波形与前一个周期存在一定的相位差,信号频率不准确,波形质量很差,是不允许出现的情况。针对上述这种情况,在输出17.5mhz和22.5mhz的波形时,用几个周期的波形凑成整数个采样点,避免输出波形出现相位差。通过计算在输出17.5mhz信号时,7个信号周期内采样点恰好为80个,而在输出22.5mhz信号时,9个信号周期内采样点个数也恰好为80个。而对于上述系统要求的分析和论证,只有方案二和方案三能实现,方案一直接用dsp驱动da,要求dsp输出数据速度要达到200mhz,这几乎是不可能的。方案二和方案三中都用到了fpga,用它来驱动da芯片和传送数据,在采样速率上得到保证,下面我将通过详细比较选取最佳方案。2.3方案选择方案一以dsp芯片直接驱动da芯片,这对dsp处理速度有很高的要求,在方案选择中,我们着重讨论方案二和方案三两种可行的方案。方案二用fpga直接驱动da,理论上可以完成任何调制,包括am、fm、ask、fsk、psk等多种数字调制,并且由于fpga输出波形是靠查表实现,理论上可以根据设计者定义好的数据输出任意波形,输出波形效果好而且可以达到很高的输出频率,这样也能够满足系统对数据传输速率和波形效果的要求。但采用这种方案设计者必须事先在fpga内部预先设计好波形数据表,并存储在rom中,在调制时,根据码元取值查询rom中数据并输出给da ,最后输出调制信号。采用这种方法,电路设计完成后,rom中的波形数据表就不变了,调制时很难灵活改变。方案三中,我们在方案二的基础上多加了一块dsp芯片。在fpga内部设计两个双口ram,调制过程中dsp根据给出的调制条件计算出调制信号的波形数据,并把数据交替传送到fpga内部的ram内,实现数据的缓冲。最后再由fpga内部的读写控制模块从两个ram中交替循环读取波形数据输出给da最终输出调制信号。而本方案中采用dsp的主要作用在于通过dsp强大的计算功能,实现对调制的软件化,以更灵活的实现各种调制,改变信号处理的参数比方案二更容易实现,因此它在应用中具有更好的兼容性,更符合目前多种通信方式并存的局面。但受dsp运算速度的影响,调制的码率会比方案二中更低,但由于采用了两个ram交替取数的方法,因此速度也比方案一要快的多。而本次设计所要求的码率不是很高,综合考虑系统的要求决定采用方案三完成设计。3单元模块设计本次设计的多信号调制器主要由电源模块、系统时钟模块、dsp模块、fpga模块以及数模转换模块构成。dsp主要是调制算法的实现,根据需要被调制的数字信号和载波计算出调制后的波形数据。fpga主要完成波形数据的缓冲,实现dsp与da数据传输速率的匹配,并且控制数据的输出和驱动da正常工作。模数转换电路主要实现数字信号到模拟信号的转换,并用驱动电路驱动输出最终的调制信号。下面将逐一介绍各个模块的电路设计以及电流内部参数和元器件的选择。3.1各单元模块功能介绍及电路设计3.1.1电源模块考虑到整个系统的工作速度比较高,dsp最内核时钟达300mhz,同时dsp和fpga之间,fpga和高速da之间都需要进行高速通信。为了保证系统内各个模块工作的稳定性,系统供电的要求就相对较高,数字供电和模拟供电以及晶体振荡器供电都需要分开。图3.1系统数字电源图图3.2系统模拟电源和晶振电源图数字系统供电中如图3.1,主要有3.3v和1.2v两种电压,其中3.3v供dsp、fpga以及一些外围电路的芯片,而1.2v则供给dsp和fpga的内核。首先系统的电源输入为+5v,经过保护电路后输给各电源芯片。3.3v和1.2v的数字电源都是通过max1951通过外部调节电阻的不同而分别输出3.3v和1.2v电压,其中3.3v电压需要满足r18/r21=3.125,输出1.2v电压时满足r10/r12=0.5。另外为了确保系统时钟的稳定,时钟电源osc3.3v也需要与其他模块电源隔离,设计中输入5v电压经过电感隔离和电泳滤波得到模拟的5v电压,此电压再次经电感滤波和mic5245稳压芯片稳压后得到稳定的3.3v电压,此电源电路只供给系统时钟。在信号回放时,为了保证系统最终输出的调制信号波形效果好,模数转换电路也采用与数字电压隔离的模拟电源。如图3.2所示,在模拟电源中主要有3.3v和5v,其中3.3v电压主要供高速da芯片ad9744,而5v电压则供给信号驱动芯片ad8041。模拟3.3v电压和时钟电源一样,5v电压经过mic5245稳压芯片得到,而模拟5v电压则经过max682稳压得到。3.1.2系统时钟模块在整个电路系统中dsp和fpga需要外部输入时钟作为其内部电路的工作时钟,图3.3为系统时钟电路图。外部晶体振荡器选用10mhz的有源晶体振荡器,用以产生标准的10mhz时钟。电路中用电流反馈放大器ad8012将10mhz的时钟信号放大和增强,输出的时钟信号再经过高精度锁相环芯片ics525的得到dsp需要的39mhz时钟和fpga所需的10mhz时钟信号,其中39mhz时钟也输给fpag的另一路时钟输入管脚。3.3 系统时钟电路3.1.3 dsp模块dsp模块电路图如图3.4所示,本次设计选用的dsp芯片是德州仪器公司生产地高性能32位浮点型数字信号处理器tms320c6713b,他具有强大的数字信号处理功能和计算能力。该芯片最小系统共电路主要由通用输入输出端口(gpio)模块、多通道缓冲串口(mcbps)模块、芯片供电模块、外部存储器接口(emif)模块、片外flash芯片电路以及(host)模块构成。如图3.4所示:复位电路由按键电路及复位芯片max823构成,用于对dsp进行硬件复位。外部中断4到外部中断7的输入口分别为通用输入输出口4到7端口,用于dsp接收外部中断信号。jtag接口是在dsp程序调试过程中用于对dsp程序进行在线仿真和调试,也可通过它在线向flash存储器中配置用户程序。锁相环电源电压经acf451832-153和滤波电容滤波得到稳定的3.3v电压输给pllhv以减少时钟输出的相位噪声。图3.4 gpio接口图mcbps即多通道缓冲串口,用于dsp和外部设备之间进行串行数据通信。tms320c6713 有两个多通道缓冲串口,mcbps0和mcbps1,如图3.5所示:其中dx引脚用来控制数据的发送,dr引脚控制数据的接收,另外几个引脚提供了控制信号如时钟同步信号和帧同步信号。数据信道完成数据的发送和接收,控制信道的任务包括内部时钟产生、帧同步信号产生、对这些信号的控制以及多信道的选择等。tms320c6713的主机口hpi是一个16位宽度的并行端口,主机掌管该接口的控制权,通过它可以直接访问cpu的存储空间。另外,主机还可以直接访问片内地址映像的外围设备。hpi模块主要是dsp主机接口,hd15:0实际上可以看作是一个数据和地址的公用总线,通过hd15:0传送的数据包括控制寄存器的设置值、初始化、访问地址以及真正的数据,其他的控制信号则在与数据地址总线相互配合中完成各种功能。本设计的电路中没有将dsp于主机相连,只是用dsp的主机接口通过r20至r24五个电阻完成对dsp工作模式的设置。图3.5 串口和主机口电路图图3.6中emif是tms320c6713b上的外部存储器接口,用于向外部存储器写入数据或从其内部读出数据。该存储器接口除了有20位的地址总线以及32位的数据总线外,还有外部存储器片选信号,外部存储器使能等许多控制引脚,用于在对外部存储器访问过程中提供相应的控制信号保证数据的准确写入和读出。而实际电路中emif的地址总线和数据总线与片外的flash芯片以及fpga分别相连,只有片选信号连接到不同的外部存储器和fpga上,当要操作某个外部存储器时,dsp通过操作片选信号选中欲要访问的外部存储器,再通过地址总线和数据总线访问该存储器,而其他的存储器由于没有被片选信号选通,即使数据总线和地址中线数据有变化,也不会改变存储器内部数据。片外flash存储器主要用来存储dsp程序,这需要在调试好程序后并加载bootloader程序和中断向量表,并把程序代码的数据文件通过dsp写进flash中。当系统复位后dsp首先执行复位中断,中断向量表指向bootloader程序,该程序把flash存储器中的程序代码搬移到dsp内部程序存储器中,然后从c程序入口函数开始执行该主程序,从而完成程序的配置。由于一般的dsp应用程序都大于1kb,因此电路中的flash芯片是一般dsp系统中不可缺少的用于存放dsp程序代码的硬件设施,也是该dsp芯片最小系统中重要组成部分。图3.6 外部存储器接口与片外flashtms320c6713的电源管脚连接如图附录一中dsp电源模块电路所示,dsp电源接口主要由3.3v、1.2v电源以及接地等管脚构成。其中1.2v电压主要给dsp内核供电,而3.3v则给dsp内部其他各个模块如存储器、定时器、多通道缓冲串口等供电。由于该信号dsp工作速率高达300mhz,dsp内核和其他资源模块都以非常高的速度运行,因此为了保证dsp内核以及各个模块能够稳定正常的工作,在电源输入管脚都加上了一系列电容滤波,保证电源输入的质量和稳定性稳定性。3.1.4 fpga模块本设计的硬件平台的fpga选用的是altera公司的ep2c70f672c8n的时钟模块如图3.7所示:该fpga有clk0至clk15一共16个时钟输入管脚。而在实际电路中,整个fpga系统只有3个时钟输入,分别为39mhz时钟、10mhz时钟以及tms320c6713的外部存储器读写时钟。同时为了保证fpga内部锁相环工作稳定减小时钟输出的相位噪声,1.2v电压经过磁珠隔离、电容滤波之后输给锁相环模块的电压输入管脚。图3.7 时钟模块电路图altera公司的fpga一般有三种方式:jtag方式、主动方式(as)和被动方式(ps)。本设计中只涉及到主动配置方式和jtag配置方式,如图3.8。altera fpga基本都支持由jtag命令来配置fpga的方式,而且jtag的配置方式更灵活方便,在工程的调制过程中应用得非常广泛。主动配置方式(as),用户首先用电脑通过as接口将程序加载到altera专用的配置芯片epcs16中。系统重新上电或复位后,fpga主动输出控制信号和同步信号给epcs16,配置芯片在接收到命令后将程序数据发送到fpga内完成配置过程。图3.8 fpga配置电路图3.9是fpga的输入输出端口与dsp数据传输和控制信号连接示意图,相关管脚连接的电路图见附录一,其中tea21:220位地址总线和ted31:032位数据总线以及一些相关控制信号与dsp外部存储器接口模块相连接,主要用于dsp向fpga内部的两个ram实现交替写入调制波形数据,同时也可以实现从fpga内读取数据。而dsp的两个多通道缓冲串口mcbps0和mcbps1也连接到下图中pfga的一些管脚上用于dsp和fpga做一些简单的串行数据通信。除此之外dsp的四个外部中断extint0到extint4也和fpga相连,fpga可通过该四个管脚向dsp发出中断信号,dsp则执行相应的中断服务程序。图3.9 fpga、dsp连接图fpga与数模转换芯片ad9744连接示意图如图3.10,详细管脚连接见附录一。ad9744为14位模数转换器,其操作比较简单,fpga与其相连的只有15个,包括一个数模转换芯片的时钟管脚和14位数据总线。fpga内部的数据输出模块向数模转换芯片输出14位数据和200mhz的工作时钟,以驱动ad9744以200msps的采样率回放波形。图3.10 fpga与ad9744连接图ep2c70f672c8n芯片的电源模块管脚如附录一中fpga电源管脚连接图所示,fpga需要3.3v供电和1.2v供电。3.3v电压供给fpga的输入输出管脚以及内部相关电路,1.2v电压供给fpga的内核。与dsp相同,由于fpga工作时的速率比较高,为了保证其内部逻辑电路工作的准确性与稳定性,在电源输入管脚附近加了很多滤波电容,以保证输入电压维持在一个稳定状态。3.1.5 数模转换模块系统的数模转换电路如图3.11,主要由模数转换芯片ad9744和驱动芯片ad8041以及其他简单电路组成。ad9744的时钟管脚与fpga输出的200mhz时钟输出管脚相连,它的14位并行数据总线也与fpga程序配置的波形数据输出总线相连,用于调制波形数据的传输。在所有时钟和数据连接线上串联33欧姆电阻做限流和隔离,整个ad9744芯片完全由fpga驱动控制。另外ad9744的供电电压为3.3v,但是为了防止数字电路中的高频脉冲对模拟信号的影响,该数模转换芯片供电也有数字电源和模拟电源之分,例如3脚和11脚需要输入数字3.3v电压,而第17和18脚则需要另外输入模拟3.3v电压,同理芯片接地管脚也需要数字和模拟分别接地。在驱动电路部分,ad9744将数字信号转换成模拟电流信号之后经20和21管脚互补输出,该电流输入给过由运算放大器ad8041组成的电压并联负反馈放大电路将数模转换芯片ad9744输出的电流信号转换成电压信号并最输出最终的模拟的调制信号。图3.11 数模转换电路3.2电路参数的计算及元器件的选择设计中要求输出22.5mhz、20mhz、17.5mhz三种频率的调制信号,而为了得到更好的输出波形我们希望在一个信号周期内的采样点尽可能多,这就对系统整体的处理速度有一定要求。系统末端的数模转换电路以adi公司的ad9744,它具有高达210msps的采样率,而设计中为了计算方便,只使用200msps的采样率,这样17.5mhz、20mhz、22.5mhz的信号每个周期采样点分别约为11.43个、10个和8.89个,具备了输出较好波形的条件。显然,当输出20mhz频率信号时,每个周期内的采样点个数为整数,但当输出17.5mhz和22.5mhz信号时,一个信号周期内的采样点个数都不为整数,如果我们只存储一个周期的波形数据则输出波形的相位会发上紊乱,因此我采用的方法是由几个周期信号共同构成整数个采样点,这样输出的波形相位会更稳定。经计算,输出17.5mhz信号时7个信号周期内采样点恰好为80个,当输出22.5mhz信号时9个信号周期内采样点恰好为80个。同时da通道采用差分驱动输出,驱动芯片采用ad8041,对应满幅度信号回放时,其模拟输出端口可以获得2vp-p模拟输出。考虑到本设计的实现需求以及以后功能扩展,系统升级,fpga芯片我选用了altra公司cycloneii系列的ep2c70f672,其内部资源非常丰富,能满足一般系统设计需求。它不仅本身能以很高是频率工作,而且与其他处理器相比它内部各个模块之前可以实现并行工作,在很大程度上可以提高系统数据输出速率,完成数据缓冲功能。系统核心处理器是德州仪器生产的32位浮点型数字信号处理器tms320c6713b,其最高工作频率高达300mhz。在系统中该dsp主要完成fsk调制和qpsk调制,调制时dsp首先要产生调制信号所需要的载波。本设计中需要产生17.5mhz、20mhz、22.5mhz三种频率的载波,而且在进行qpsk调制时还需要产生频率为20mhz四种不同相位的载波。按照计算,当进行fsk调制时,17.5mhz的载波信号由80个14位数据组成,包含了7个完整的信号周期,而22.5mhz的载波信号同样由80个数据组成但它包含了9个完整的周期。当进行qpsk调制时,为了与fsk一致因此也产生80个点的波形数据,但这包含的8个信号周期数据完全是重复的,但理论上只需要一个周期即10个点就能完成功能。3.3特殊器件的介绍3.3.1 tms320c6713b2tms320c6713是美国德州仪器公司于1997年推出的c6000系列dsp芯片中的一款,是继定点dsp芯片tms320c62x系列后开发的32位高速浮点型dsp,时钟最高频率为300mhz。tms320c6713主要特点有以下几点:(1)它是性能最高的浮点数字信号处理器,其体系结构采用超长指令字(vliw)结构单指令字长为32位,指令包里有8个指令,总字长达到256位。执行指令的功能单元已经在编译时分配好,程序运行时通过专门的指令分配模块,可以将每个256位的指令包同时分配到8个处理单元,并由8个单元同时运行。并且支持300mhz、225mhz、150mhz的时钟速率以及3.3ns、4.4ns和6.7ns指令周期其最大处理能力可以达到2400mips。(2)采用l1/l2双存储器记忆结构,4k字节直接匹配的程序缓冲l1p,4k字节可匹配的数据缓冲l1d,256k字节l2额外匹配内存并具有64k字节的l2高速缓存映射以及192k字节的额外l2内存映射。另外该dsp芯片还具有32位外部存储器接口(emif),可无缝连接sram、eprom、flash、sbsram和sdram等。(3)具有丰富的外设,包括32位外部存储器接口(emif)、增强型直接内存访问控制器(edma)、16位主机接口(hpi)、两个多通道音频串口(mcaps)、两个多通道缓冲串口(mcbps)、两个内部集成电路总线(iic)、两个32位定时器、一个专用的通用输入输出模块和锁相环模块,由于该dsp芯片具有丰富的外设资源、出色的运算能力高效的指令集、智能外设、大容量的片内存储器和大范围的寻址能力,因此tms320c6713适用于对运算能力和存储量有高要求的应用场合,能够满足大多数工程设计的需要。3.3.2 ep2c70f672c8fpga即现场可编程门阵列,它是可编程逻辑器件的第四代产品,是专用集成电路(asic)中集成度最高的一种。它采用了逻辑单元阵列的新的设计方式,其内部含有丰富的逻辑单元、相互独立的输入输出端口以及内部连线。使用灵活、实用性强,能满足工程中复杂的逻辑设计需求,用户可对fpga内部资源和输入输出端口进行重新配置,以实现功能强大的逻辑设计。fpga能进行现场设计、现成编程、现场验证和分析等,在数字系统设计和片上系统(sopc)等设计中有着重要应用。同时,相比于arm和dsp,fpga可以很容易实现并行处理和流水线操作,达到比cpu和dsp更高的处理速度,而cpu和dsp模块可以通过一定的方法嵌入到fpga内部,可以轻松实现片上系统的设计。采用fpga开发数字系统可以在很大程度上缩短设计时间,减少印制电路板面积以及有效提供数字系统的可靠性和准确性。5ep2c70f672c8是altera公司cycloneii系列中资源丰富功能强大的可编程逻辑器件。cycloneii系列器件是alrera公司的低成本fpga,采用全铜、k值电介质、1.2v、90nm的sram工艺制作,使得其芯片的成本更低、容量更高、处理速度更快。其芯片的结构设计合理,尺寸被尽可能小的优化。ep2c70f672c8采用300mm晶圆,以tsmc成功的90nm工艺技术为基础,它具有68416个逻辑单元,1152000比特ram,150个18比特x18比特乘法器,四个锁相环以及通用输入输出端口422个。并且具有一整套最佳的功能,包括嵌入式18比特x18比特乘法器、专用外部存储器接口、锁相环和高速输入输出能力。3.3.2 ad9744ad9744是adi公司生产的一种14位分辨力、并行、宽带、低功耗、高性能的数模转换芯片,支持最高210msps采样率。它具有tssop、soic和lfcsp三中封装形式,而本设计中选用的是lfcsp的封装形式,具有32个管脚。相比于其他模数转换器,ad9744有许多优点:低功耗是该芯片的一大特点,可以通过降低其满刻度输出电流将芯片的功率降低到60mw以下,而断电模式下其功率更是可以降低到大约15mw,该模数转换芯片较低的功率消耗使其适合应用于便携和低功耗系统中。ad9744除了功率消耗低外,还有较好的频率响应,具有较好的无杂散动态范围(sfdr),保证了信号输出的准确性,使得输出波形较为理想,杂散小。另外芯片的数据输入支持补码或直接二进制译码,用户可以通过硬件电路对该模式进行设置,在软件操作时就可以直接送有符号数据,为设计是减少译码的麻烦。3.4 各单元模块的联接在3.1介绍的各模块中,电源模块始终贯穿整个系统,整个硬件平台统一由电源插口输入5v直流电压供电。但是由于系统各个模块对电源的稳定性有较高的要求,因此许多模块的供电都独自采用一个电源芯片单独供电或者为了防止相互之间的干扰也采用了一些隔离手段将各个部分供电隔离开来。整个系统的时钟都由3.1.2中提到的时钟模块电路提供,时钟源为一个10mhz的有源晶体整荡器,经过驱动电路后10mhz时钟送到锁相环芯片ics525得到10mhz和39mhz的时钟信号输给系统的dsp和fpga。数模转换电路中ad9744数模转换芯片也需要时钟驱动才能正常功能,但它的时钟不是由时钟模块电路直接提供,而是在fpga内部经过倍频为200mhz并与数据传输同步后输出给ad9744作为时钟信号。以上介绍的电源模块和时钟模块都不是系统设计中直接的功能模块,而在以下要介绍的几个重要功能模块相互连接较简单。首先从数据的流向来分析系统各个模块之间的关系:dsp模块在其内部自动产生基带信号和载波信号,通过一定算法得到调制波形数据后传送给fpga。fpga接收到信号后完成缓冲和简单控制把数据输出给数模转换电路最终得到模拟信号。dsp向fpga发送波形数据是通过dsp的外部存储器接口发送,主要包括地址总线、数据总线和一些控制信号线。另外dsp的多通道缓冲串口和四个外部中断也与fpga相连接,方便两者之间进行串行的数据通信和同步。fpga和ad9744数模转换芯片相连接的主要有14位的数据总线和一根时钟信号线。4软件设计4.1软件设计原理及设计所用工具硬件电路确定之后,软件则成了整个设计的灵魂。系统需要完成fsk和qpsk调制等功能,这不再单纯依靠灵活性较差的硬件电路而是将更多的功能靠软件来实现,让系统设计更加灵活,修改和升级更加方便。而这个调制系统中,需要进行软件设计的模块有dsp以及fpga,其中dsp的软件设计更为核心,是fsk调制和qpsk调制算法实现的主要模块,以及其dsp也与fpga配合工作完成数据的传输。同时fpga在系统中也是不可缺少,作为dsp和数模转换芯片ad9744的衔接模块,起着数据输出控制及数据缓冲的作用。下面将对软件实现系统功能的原理作简要介绍。如图4.1所示,首先dsp在内部产生fsk调制和qpsk调制所需要载波的波形数据。如果是fsk调制则产生的17.5mhz波形数据和22.5mhz波形数据分别放到数组buf1和buf2中,如果是qpsk调制则产生的0、90、180和270四种不同相位的载波数据存放进buf1、buf2、buf3和buf4四个数组中。其中buf1和buf2在fsk调制和qpsk调制中分时复用,即无论是fsk调制还是qpsk调制buf1和buf2两个数组都将被使用。fsk调制过程中,dsp先从调制数据中取出一位二进制码元,根据该码元值从buf1和buf2查询两种频率波形数据并通过dsp的外部存储器接口输出给fpga。当进行qpsk调制时,则从调制数据中取出两位二进制码元,根据其值从buf1至buf4四个数组中查询对应相位波形数据并输出给fpga。dsp向fpga传送数据通过外部存储器接口实现,对fpga内部的两个ram实现交替写入数据。而在fpga内部设计了两个的14位的双口ram除了受dsp外部存储器接口控制信号的控制,也受fpga内部读写控制器的控制。当控制器开始读取ram1时,同时通知dsp向ram2写数据,ram1读取完毕之后马上再读取ram2中的数据,同时向dsp发出信号通知dsp向ram1中写数据,完成数据缓冲功能,最终将调制波形数据连续输出给模拟转换电路输出模拟的调制信号。图4.1 软件功能结构设计中dsp软件设计采用ti公司开发的code composer studio v3.1(ccs3.1), 它是用于 ti dsp、微处理器和应用处理器的集成开发环境。code composer studio 包含一整套用于开发和调试嵌入式应用的工具,以及适用于每个 ti 器件系列的编译器、源码编辑器、项目构建环境、调试器、描述器、仿真器以及多种其它功能。它的结构是开放式的插件结构,在其内部集成了代码生成工具、软件模拟器、主机与目标机之间的实时数据交换软件以及实时分析和数据可视化软件。其中代码生成工具具有一些列的调试和分析能力,而实时分析和数据可视化功能使开发者可以在不停止目标应用程序的情况下实现主机与目标板的通信,直接观察目标板中应用程序数据并对其进行修改。code composer studio ide 提供了单个用户界面,可帮助用户完成应用开发流程的每个步骤。借助于精密的高效工具,用户能够利用熟悉的工具和界面快速上手并将功能添加至他们的应用。ccs所集成的代码调试工具具有各种调试功能,能对tms320系列dsp进行指令级的仿真和可视化的实时数据分析。此外,还提供丰富的输入输出库函数和信号处理库函数,极大地方便了tms320系列dsp软件开发过程。另外,ccs具有两种工作模式,即软件仿真模式和硬件在线编程模式。软件仿真可以脱离dsp芯片,在pc机上模拟dsp的指令集和工作机制,主要用于前期算法实现和调试。硬件在线编程模式,可以实时运行在dsp芯片上,与硬件开发板相结合在线编程和调试应用程序。ccs提供了强大的功能可以显著提高基于dsp产品的开发效率,缩短dsp产品的开发周期,降低成本,增强了dsp芯片开发者的市场竞争力,还可以使dsp开发者把主要精力放到个性化开发和添加增值服务上,是一种非常有效的开发工具。3fpga软件设计采用quartusii集成开发环境,它是altera公司的cpld/fpga集成开发软件具有完善的可视化设计环境,并具有标准的eda工具接口。该集成开发环境支持直观便捷操作灵活方便的原理图设计功能、vhdl、veriloghdl以及ahdl(altera hardware description language)等多种设计输入形式,同时还提供了丰富的适用于各种需要的元件库,其中包含了基本的逻辑器件库、宏功能元件以及类似于ip核的参数化宏功能模块lpm库,内嵌有综合器以及仿真器,可以完成从设计输入到硬件配置的完整pld设计流程。另外,quartus ii支持altera的ip核,包含了lpm/megafunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。对第三方eda工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方eda工具。此外,quartus ii 通过和dsp builder工具与matlab/simulink相结合,可以方便地实现各种dsp应用系统;支持altera的片上可编程系统(sopc)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。由于quartusii具有以上强大的功能,受到越来越多数字系统设计者的青睐。44.2 dsp程序设计及功能说明dsp在整个系统中主要是实现fsk和qpsk调制算法,它主要负责两种调制几种不同载波信号的产生、基带码元值的读取和判断以及把数字基带信号调制到具有一定频率的载波上去,并通过与fpga的配合,将调制后的波形数据经外部存储器接口准确地写入到fpga内的两个ram内,并如此反复进行多个码元信号的调制。下面将程序流程作简要介绍。进入主程序后,系统首先进行初始化,包括芯片支持库(csl)的初始化,锁相环初始化,外部存储器接口初始化,中断初始化等。芯片支持库的初始化是将ccs开发环境自带的系统芯片支持库加载到本次设计的dsp工程中中来。用户在编写程序时可以直接调用芯片支持库里的各种现成函数,进行其内部各种资源的操作,避免了用户直接对作dsp内部寄存器的操作,提高了程序开发的效率。而锁相环的初始化,主要完成dsp内部各模块工作时钟的配置。dsp外部输入时钟为39mhz,在锁相环电路中先将时钟3分频为13mhz,再进行23倍频得到299mhz系统时钟,该时钟是dsp内核以及相关内部资源的工作时钟。外部存储器接口初始化将存储器接口时钟配置为系统sysclk3,并设置片选信号tce2n选中fpga内部的ram。中断初始化将全局中断打开,并使能外部中断4,通过该中断信号fpga可以向dsp发送读取完成的信号,通知dsp开始向fpga写入下一个码元调制波形数据,以此完成码元交替的同步工作,避免波形数据传送错误。系统初始化后则进入到调制程序中,并分为fsk调制和qpsk调制两个支路。在fsk调制中,如图4.2中程序流程图所示:首先用三角函数计算出17.5mhz和22.5mhz两种频率的载波信号波形数据。其中17.5mhz的波形数据含有7个完整信号周期,在这7个周期中采样点恰好为80个,在程序中用“buf1j=8191.0*sin(2.0*pi*j/(80.0/7.0)”并通过j循环80次来实现7个周期数据的产生,最后将该80个数据存放在数组buf1中。而22.5mhz的波形数据含有9个完整的信号周期及80个采样点,程序用“buf2j=8191.0*sin(2.0*pi*j/(80.0/9.0)”实现该波形数据的产生,并通过循环将该80个波形数据存放在数组buf2中。载波数据产生完之后,进行读写判断等待fpga中断信号到来,决定是否开始向fpga内ram写数据。当fpga内某一个ram内数据读取完毕,开始读取另一个ram中的波形数据时,fpga就向dsp发出中断信号,通知dsp可以开始向已经读取完毕的ram写入下一个码元调制后的波形数据。之后程序开始从需要调制的数字信号中取出该数据最低位完成取码,然后判断该对fpga中哪一个ram进行写数据,并开始判断码值。如果码值为“1”,则dsp对数组buf1进行查表操作,采用循环的方式将17.5mhz的波形数据通过外部存储器接口写入到fpga的一个ram内,每次写数据地址加4,循环80次之后完成一个码元的波形数据输出。如果码值为“0”,则dsp对数组buf2进行查表操作,将22.5mhz的波形数据写入fpga内部的ram。dsp向fpga内两个ram写数据采用交替的方式,即第一个码元的波形数据写入一个ram中,下一个码元的波形数据就写入另一个ram内,如此交替循环完成fsk调制功能。图4.2 fsk调制程序流程图当进行qpsk调制时如图4.3程序流程图所示,首先也进行载波信号的产生。qpsk调制载波信号频率为20mhz,为了和fsk调制以及fpga内部电路设计相匹配其载波数据也含80个采样点,共8个完整信号周期,每个周期10个采样点。载波产生通过三角函数实现,并根据码值不同具有四种不同相位的波形,其初始相位分别为0、90、180和270。在dsp内部的程序代码中用“buf1j=8191*sin(2*pi*j/10)”以及“buf2j=8191*cos(2*pi*j/10)”实现0和90初相位载波信号的产生,用“buf3j=-8191*sin(2*pi*j/10)”和“buf4j=-8191*cos(2*pi*j/10)”实现180和270初相位载波信号的产生。通过代码中j循环80次产生8个信号周期的波形数据,并分别将产生的四种相位波形数据存放分别存放在buf1、buf2、buf3和buf4四个数组中。和fsk调制相同,当dsp接收到fpga发送的中断信号时就开始进行调制波形数据的输出,并从需要调制的数据中取出低2位数据判断其值。如果该值为“00”则将数组buf1中0相位的波形数据采用循环查表的方式并通过外部存储器接口写入fpga内的某个ram中。以此类推,当取值为“01”、“10”、“11”则分别将数组buf2、buf3和buf4中存放的波形数据输出到fpga内对应的ram中。传送完80个波形数据之后则继续取出下一个二进制码,进行调制,并向fpga输出调制波形数据,如此反复循环,最终完成qpsk调制5以上介绍了完成fsk和qpsk调制的主要过程,dsp要实现与fpga的配合并完成系统的各种功能,除了要实现以上数字调制的各种算法外,还需要dsp进行与fpga传送数据过程中的同步等控制。例如,为了方便观察结果在程序中直接将fsk调制码元设置为“1”和“0”交替出现的形式,而qpsk调制则将调制码元设置为“00”、“01”“10”和“11”四种码元交替出现的形式,这样方便在调制过程中观察输出调制波形的频率变化或者数字变化是否正确。而dsp要实现对fpga内两个ram实现交替写入数据,首先在dsp内部要设置一个变量“codecet”对ram的操作进行计数,如果该变量为“1”则向fpga内ram1写数据,如果该变量为“0”则向ram2写数据,当完成对某个ram写入80位波形数据后对该变量自动取反,下次操作就对另外一个ram写入数据。另外由于dsp的地址总线为20位,而80个数据空间只需要7根数据线,所以fpga程序设计中,用空余地址线和dsp的片选信号tce2n共同作用于两个ram的使能管脚。当需要向ram1中写数据时,使dsp中总线中tea12为高,则使fpga中ram1使能有效实现对ram1写操作,当需要ram2写数据时,使dsp地址总线tea13为高使能ram2,实现对ram2写操作。另外,由于dsp必须等一个ram中的数据读取完成后才能再次对该ram进行写操作,否则会造成波形数据的错乱,这用到了dsp的外部中断4。当fpga内一个ram读取数据完成后,发出中断信号,dsp接收到该中断信号后执行中断服务程序,写使能“wre”有效,然后dsp开始向fpga写入80个波形数据,写入完成后将变量“wre”置低,等待下一次中断信号到来才开始写入下一个码元的波形数据。图4.3 qpsk调制程序流程图4.3 fpga程序设计及功能说明由于ad9744工作时钟为200mhz,它一直以200msps的采样率进行数字量到模拟量的转换,即每隔5ns的时间就得有一个波形数据由fpga送给ad9744,其工作速率很高,数据吞吐量大。而尽管dsp内核工作时钟高达300mhz,但考虑到dsp除了要向fpga写入数据外还要执行其他的操作,不可能实现以200mhz的速率稳定的输出波形数据,两者之间的数据传输速率存着巨大差距。这就需要fpga在两者之间完成数据缓冲作用,解决两者工作速率不匹配的问题。 而fpga内部主要由5个模块构成,包括锁相环模块、两个14位128字的双口ram,数据输出控制模块以及中断信号产生模块,如图4.4所示。两个ram和读写控制模块是fpga实现数据缓冲的核心,控制并完成两个ram的交替写入和读取调制波形数据。ram的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 律师合作咨询协议书范本
- 县城门面转让协议书范本
- 车辆质押贷款合同模板(含车辆评估条款)
- 节日促销活动员工激励合同
- 事业单位停薪留职人员原单位业绩考核及奖励协议
- 餐饮企业股东合作协议与供应链优化
- 彩钢板房建筑项目施工安全与环境保护合同
- 离婚彩礼退还争议调解及仲裁协议
- 员工感恩培训
- 冬季检修安全培训
- JJF 1139-2005计量器具检定周期确定原则和方法
- GB/T 27922-2011商品售后服务评价体系
- 生物科技有限公司外勤出差申请表
- GA/T 1567-2019城市道路交通隔离栏设置指南
- LX电动单梁悬挂说明书介绍
- 消防水池检查记录
- 工程竣工图章样式
- 航天器用j30jh系列微型矩形电连接器
- 拆除新建桥梁钻孔桩专项施工方案
- 技工序列考评、评聘管理办法
- 2022年哈尔滨建设发展集团有限责任公司招聘笔试题库及答案解析
评论
0/150
提交评论