《FPGACPLD在软件无线电中的工程应用(下)》由会员分享,可在线阅读,更多相关《FPGACPLD在软件无线电中的工程应用(下)(229页珍藏版)》请在金锄头文库上搜索。
1、从窗口的左边起第一部分为信号路径和名称;第二部分为指针所在位置信号的当前值,这个值跟随指针的变化而变化;第三部分为波形显示部分。8.源文件窗口主要用来显示和编辑HDL源文件代码。9.变量窗口其被分为两个不同的部分,左边为当前进程中用到的所有变量,右边为与变量相关的当前值。8.3 仿真环境的建立ModelSim有很多不同的版本,如ModelSim/Verilog ModelSim/VHDL,以及各个公司的OEM版本等。Xilinx公司使用的ModelSim为ModelSim XE的OEM版,这个版本只支持Xilinx公司的所有器件的时序仿真,但是不支持其他公司的FPGA/CPLD的仿真。其他公司
2、OEM版本的ModelSim也存在类似的问题,一般的FPGA/CPLD设计者都会同时使用各种不同厂家的FPGA/CPLD器件,所以通常情况下都会选择使用支持全部器件的ModelSim完全版。在完全版本发行时,不发行任何公司的FPGA/CPLD的仿真库,所以在使用之前需要建立相应的FPGA/CPLD器件的仿真库。8.4 波形比较与WLF文件在ModelSim中进行仿真时,可以在vsim命令中使用-WLF参数将仿真数据存储成一个波形日志格式的文件,仿真停止以后可以使用这个文件对原先的仿真波形进行回放或者与其他仿真的波形进行比较,得到两个波形之间的时序差。进行波形比较时,工具提供连续模式和时序模式两
3、种不同的比较模式,连续模式是每个参考信号进行跳变时都将测试信号和参考信号进行比较的一种方式;时序模式是测试信号和参考信号都使用相同的时钟进行采样,然后对两者的采样值进行比较,在这种模式下可以使用时钟的上升沿、下降沿或者双沿进行采样。8.5 小结通过本章的理论学习与实验我们应该掌握利用ModelSim进行仿真的方法和步骤,对我们以后做大规模数字逻辑电路设计会有很大的帮助。基础课题电子抢答器设计原理如下:电子抢答器可同时供7名选手或者7个代表队参加比赛,他们的编号分别是1、2、3、4、5、6、7,并各用一个抢答按钮,按钮的编号与选手的编号相对应,分别是S1、S2、S3、S4、S5、S6、S7。节目
4、主持人设置一个控制按钮K,用来控制系统的清零,使编号显示数码管显示“0”并表示抢答的开始。基础课题电子抢答器注意问题:抢答器具有数据锁存和显示功能。抢答开始后,若有选手按下抢答按钮,编号立即被锁存,并在LED数码管上显示出选手的编号。此外,还要封锁输入电路,禁止其他选手抢答。优先抢答选手的编号一直保持到主持人将系统清零为止。第9章 ISE中集成的综合工具综合是FPGA/CPLD设计流程中的重要环节,综合结果的优劣直接影响布局布线结果的最终效能。好的综合器能够使设计占用芯片的物理面积最小,工作频率最快,这也是评定综合器优劣的两个重要指标。面积和速度这两个要求贯穿FPGA/CPLD设计的始终,它们
5、是设计效果的终极评定标准。相比之下,满足时序、工作频率的要求更重要一些,当两者冲突时,一般采用速度优先的准则。ISE除了自带综合工具XST外,几乎和所有目前流行的综合工具都有接口。9.1 新兴的高效综合工具Synplify/Synplify Pro1.Synplify/Synplify Pro的功能与特点Synplify 公司出品的Synplify/Synplify Pro综合工具是目前倍受推荐的FPGA/CPLD综合工具之一。其采用了很多独特的整体性优化策略和方法,使它们对设计的综合无论在物理面积还是工作频率上都能达到较理想的效果。2. Synplify/Synplify Pro在ISE中的
6、作用Synplify/Synplify Pro综合工具在ISE中主要完成综合过程。综合过程包括两个内容,一是对HDL源代码输入进行编译与逻辑层次上的优化,9.2 Xilinx 最早的合作伙伴Synopsys综合工具SynopsysFPGA Express综合工具是Xilinx最早集成的综合工具之一。Synopsys是最早的EDA工具厂商之一,其FPGA Express是Xilinx早期产品(Foundation系列,低版本ISE)唯一集成的综合工具,熟悉Xilinx的工程师一定对它很熟悉。FPGA Express的高级版本FPGA Compiler是一个非常成熟的FPGA、 ASIC设计平台。
7、FPGA Express(以下简称FE)的主要功能是将VHDL代码、Verilog代码综合优化后生成FPGA网表文件。9.3 Xilinx内嵌的综合工具XSTXST是Xilinx ISE内嵌的综合工具。虽然XST与Synplify Pro等业界流行的综合工具相比特点并不突出,功能也不全面,但是Xilinx对自己的FPGA/CPLD内部结构最为了解,所以XST对Xilinx器件的支持也最为直接,更重要的是XST内嵌在ISE中,安装ISE后可以直接使用,不需另外付费。ISE中XST设计流程的综合阶段约束文件与实现阶段约束文件的概念并不分明,综合阶段的约束条件常常通过实现阶段的约束文件来完成。第10
8、章 约束在进行高速数字电路设计时,经常需要在综合、实现阶段附加约束,以便控制综合、实现过程,使设计满足运行速度、引脚位置等方面的要求。通常的做法是设计者编写约束文件并导入到综合、实现工具,在FPGA/CPLD综合、实现步骤时指导逻辑映射、布局布线。10.1附加约束的作用1,提高设计的工作频率因为高工作频率意味着高处理能力。通过附加约束可以控制逻辑的综合、映射、布局和布线,以减小逻辑和布线延时,从而提高工作频率。一般来说,当时钟频率低于50MHz,而且设计只有一个时钟时,不需要对设计附加约束条件,这是因为时钟频率比较低时,不加约束自动综合也能达到要求。但是当设计的时钟频率较高,或者设计中有复杂时
9、序路径(如多周期路径等)时,需要附加约束条件以确保综合、实现的结果满足用户的时序要求。2,获得正确的时序分析报告3,指定FPGA/CPLD引脚位置与电气标准FPGA/CPLD的可编程特性使电路板设计加工和FPGA/CPLD设计可以同时进行,而不必等FPGA/CPLD引脚位置完全确定,从而节省了系统开发时间。为了满足日新月异的通信发展,Xilinx新型FPGA/CPLD可以通过IO引脚约束设置支持诸如AGP、BLVDS、 CTT 、GTL 、GTLP 、HSTL、LDT、 LVCMOS、 LVDCI、 LVDS、LVPECL 、LVDEXT、 LVTTL 、PCI 、PCIX 、SSTL、 UL
10、VDS等丰富的IO接口标准。10.2 分组约束一个真正的设计往往包括大量的触发器、寄存器、和RAM等元件,为了方便附加约束需要把它们分成不同的组,然后根据需要对这些组分别附加不同的约束。10.3 引脚与区域约束编辑器它是一个具有图形化界面的约束输入工具,主要功能有:1)指定引脚分配设计者可以使用引脚分配功能指定I/O位置、 I/O组、 I/O标准和禁止I/O分配至特定引脚、使用DRC检查I/O分配是否正确。2)附加区域约束PACE能够以图形化的方式显示器件资源和引脚的分布,设计者可以编辑区域约束并观察逻辑和引脚之间的连接情况。3)浏览设计层次PACE的设计层次浏览器能显示设计的层次,以及各层次
11、的资源占用情况,这对复杂的设计有很重要的作用。第11章 辅助设计工具综合完成,接下来是实现的过程。实现过程由翻译、映射、布局和布线等环节组成。一般情况下,实现过程不需要人为干预,所有操作由工具自动完成,实现工具只是根据设计者提供的用户约束文件对设计进行翻译、映射、布局和布线等操作。为了达到更好的设计性能,需要对这些工程进行有效的控制,Xilinx公司也提供了一整套工具来帮助用户实现这些目标。本章就实现过程中用到的时序分析器、布局规划器和FPGA底层编辑器的使用方法进行说明。11.1时序分析器TimeingAnalyzer时序分析器可以帮助设计者对设计中的时序冲突以及时序约束等进行细致的检查,找
12、到设计中的时序瓶颈,然后设计者可以通过一些方法对时序进行调整。它为FPGA和CPLD的设计提供了一种高效、灵活地进行静态时序分析的方法,在时序分析器中可以通过简单的菜单方式对整个设计进行时序分析。同时还提供了一种使用目录树方式组织的时序报告,在这个报告中对各种时序问题进行了分类,有利于用户对特殊路径查找。在时序分析器中,每一个显示路径都可以和综合器或者布局规划器进行时序的交叉探查,通过这种方式可以和其他设计工具进行协同工作,极大的方便了关键路径的改进,也有助于用户理解整个设计的时序特性。在ISE开发套件中,时序分析器和布局布线工具对设计时序的计算使用了相同算法,这增强了整个设计流程的连贯性及继
13、承性。对于FPGA器件进行时序分析主要是基于现有的时序约束和用户定义的时序路径之上,而对于CPLD器件进行时序分析主要是基于系统定义的各种路径之上,两者之间略有差异。就设计流程来说,时序分析可以在FPGA器件映射以后或者布局布线以后进行,而CPLD器件进行时序分析必须在布局布线以后。时序分析器只可以用来分析由组合逻辑和触发器等构成的同步系统。时序分析器可以分析给定路径的各种延时信息,也可以用来分析用户的时序约束是否满足,可以组织和显示路径的周期数量、设计的最大延时等信息,同时也可以对同一设计在不同速度等级下的性能提供一个快速的分析对比。11.2 布局规划器-Floorplanner它是一个用来
14、查看和编辑物理位置约束的交互式图形接口程序,在这个程序中可以通过物理位置约束映射成目标器件资源的布局约束。对于选定的器件而言,可以通过人工或者自动的方式在布局规划器中进行布局。同时布局器的一个新的特性是可以与时序分析器进行时序交叉探查,这个特性允许在设计中通过时序分析软件启动布局规划器软件,从而对关键路径等信息由更详细的了解,有助于设计的优化。布局规划器的特点:1.可以提供高级设计层次与低级设计层次之间的连接,如可以确定IOB、功能发生器、三态缓存、触发器和RAM/ROM等底层基本单元的位置。2.自动对逻辑进行分配。3.允许加载NGD、 NCD、 FNF、 UCF等文件。4.通过对UCF或者M
15、FP文件的修改对设计进行约束。5.允许对RPM进行绑定或者解除绑定。6.支持时序分析器到布局规划器的交叉探查。布局规划器的作用:使用布局规划器对设计进行手动布局是提高自动布局布线性能的一种可选方法。布局规划器在结构化设计和数据路径设计上的作用非常明显,可以通过布局规划器确定在何处布置何种逻辑才能达到最优的结果,同时可以通过布局规划器将关键的数据路径布置在恰当的位置上。布局规划器可以根据用户的需要对逻辑单元进行布局,并且可以通过RPM绑定的方式将相关单元的物理相对位置固定。可以使用以前流程产生的NGD文件进行布局规划和手动指定IOB位置,布局规划器通过新建一个物理位置约束来修改UCF文件,物理位
16、置约束添加在原来的UCF文件中,或者布局规划器通过MFP文件来存储对设计的物理约束。11.3 FPGA底层编辑器FPGAEditorFPGA Editor是Xilinx公司提供的FPGA设计套件中的一个手工布局布线设计工具。通过这个工具可以编辑或者查看可配置逻辑功能块、输入输出功能块等一些FPGA内部的基本单元。对于Xilinx公司的FPGA设计来说, FPGAEditor是最底层的一种设计工具。有效的使用这个工具,可以最大程度地提高设计的密度和设计的性能。在ISE集成开发环境中,如果从【ModuleView】视图中选中一个设计模块,那么在相应的【Procedded for Current S
17、ource】窗口中实现阶段就可以直接启动FPGA底层编辑器,这个软件需要的输入文件有ISE集成环境自动产生并提供。1.FPGA底层编辑器的作用在设计中使用手动布局布线工具可以达到以下几个目的:1)在运行自动布局布线器之前对设计的关键组建和路径进行布局布线。2)如果自动布局布线器没有完成设计,可以通过手动的方法完成。3)可以在设计中添加探针,用来检测在目标器件中信号的状态,探针可以将一个内部的网线连接到一个IOB上,通过这种方式可以调试器件内部的任意信号。4)可以生成配置文件并且可以直接配置流文件到目标器件中。5)可以查看插入了ILA核之后对设计网表的影响,可以很方便地改变需要测试的信号于ILA
18、核的连接.6)可以手工创建一个完整的设计。总的来说,手动布局布线在设计中主要有以下作用:通过手动布线、关键路径预处理等方法提高设计的布通率;通过手动设计的方式提高设计的性能,减小设计的面积;通过添加探针或者对ILA的修改来方便板上调试,加快研发进度。2.FPGA底层编辑器输入输出文件1)NCD文件是在映射之后产生的,在这个文件中使用了CLB 、IOB等描述一个设计,使用FPGA Editior可以用来编辑NCD文件也可以将最后的结果存储成NCD文件。2)PCF文件是映射程序生成的包括物理约束的文本文件,它和UCF中的约束基本相同,可以在FPGA Editior中编辑PCF文件。3)NMC文件是
19、物理宏库文件,在这个文件中包含了物理宏库的定义,同时这个物理宏可以在FPGA底层编辑器中以及HDL编码中实例化。3.FPGA底层编辑器的工作流程1)将设计保存成为EDIF文件。2)运行NGDBuild程序,创建NCD文件。3)运行映射程序,创建创建NCD文件。4)使用FPGA底层编辑器加载设计,进行必要的改动,存储成NCD文件。5)对修改后的NCD文件进行布局布线。4.使用FPGA 底层编辑器的预备知识1)可配置的连接功能模块它是由逻辑单元(LC)积木式组合而成,一个LC包括一个四输入函数发生器、进位逻辑和一个存储单元。在每一个LC中,函数发生器的输出既可以作为CLB的输出也可以作为触发器的输
20、入。每一个Virtex-E的CLB在两个几乎相同的SLICE上包含4个逻辑单元。除了4个基本的逻辑单元之外,CLB还包括使函数发生器提供五或者六输入的函数逻辑。因此,在估计一个给定器件的系统门数时,每一个CLB按照4.5个逻辑单元计算。*查找表Virtex-E的函数发生器可以用来实现四输入的查找表(LUT)除了作为函数发生器,每一个LUT还可以提供161位同步RAM,一个片上的两个LUT连接可以生成162位或者321位的同步RAM或者一个161位的双端口同步RAM.同时LUT可以作为一个16位的移位寄存器,可以捕获高速或者突发模式的数据。*存储元件在Virtex-E芯片中,存储元件可以被配置成
21、边沿触发的D触发器或者电平敏感的锁存器。D触发器可以使用函数发生器的输出驱动,也可以使用SLICE以外的输入而绕过函数发生器。除了时钟和时钟使能信号以外,每一个SLICE上都由同步的置位和复位信号(SR、BY)。SR强制存储元件进入配置的初始化状态,而BY强迫存储元件进入相反的状态。这些信号也可以配置成异步操作。为了增加配置的灵活性,这些控制信号都可以翻转,并且控制信号在一个SLICE的两个寄存器的操作中共享。*附加逻辑每一个SLICE的F5多路转换器连接了两个函数发生器的输出,这个连接可以实现五输入的函数发生器或者一个4:1的多路转换器,或者可以配置成一个九输入的函数发生器。同样,在一个CL
22、B中,F6多路转换器连接了4个函数发生器的输出和一个F5多路转换器的输出,这种连接可以实现六输入的函数或者一个8:1多路转换或者高达19个输入的选择函数发生器。*算术逻辑在每一个SLICE中有专用进位逻辑为高速算术功能提供快速的算术进位能力。Virtex-ECLB支持两个独立的进位链,每一个SLICE一个,进位链的高度使每一个CLB进两位。算术逻辑包括一个XOR门,这样允许在一个LC中实现一个全加器。此外,一个专用的AND门提高了乘法器实现率。进位路径可以作为级联函数发生器以实现更宽的逻辑功能。2)输入输出块(IOB)Virtex的IOB可以支持很多类的I/O接口信号标准。在IOB中有3个存储
23、单元,可以配置为边沿触发的D触发器,或者电平敏感锁存器。每一个IOB中的3个触发器共享一个时钟信号,但是都独立使用时钟使能信号,除了CLK和CE控制信号外,这3个触发器还共享同一个置位/复位信号(RS),对于每一个触发器来说, RS信号可以被独立配置为同步置位、同步复位、异步预复位、异步清零等,输入输出缓冲器和所有的IOB控制信号都有独立的极性控制电路。所有的焊盘都做了防静电和瞬态过压保护,提供了两种方式的瞬态过压保护,即一种允许对5V兼容,而另外一种布允许。对5V兼容的过压保护来说,有一个接地的类似齐纳的结构,当输入大于6.5V时,这个结构被打开。当不兼容5V时,常规的二极管将连接到输出供电
24、电压Vcc上。每一个焊盘都可以独立地选择使用什么样的过压保护。每一个焊盘可以选择使用上拉、下拉电阻和可选的弱保持电路,在配置前,所有没有用到的IO都强制位高阻态,下拉电阻和弱保持电路是无效的,但是IO可以被配置为上拉。所有的Virtex-E支持与IEEE1149.1兼容的边界扫描测试。*输入路径在VirtexIOB中,输入路径的缓冲器将输入信号直接连接到内部逻辑中或者通过一个可选的输入触发器连接到逻辑。在这个触发器的D输入端,有一个可选的延时单元,这个延时单元可以用来与FPGA内部时钟分布延时相匹配,当应用时,可以确保PAD到PAD的保持时间为0。每一个输入缓冲器可以被配置为所支持的任何一种低
25、压信号标准。在配置后,每一个输入端都有上拉或者下拉电阻可以选用,其电阻值在50100之间。*输出路径输出路径包括一个三态缓冲器,它驱动焊盘上的输出信号,这个信号可以由内部逻辑直接送到缓冲器或者可以通过IOB直接输出到触发器。输出的三态控制器也能直接从内部逻辑或者可以从提供同步使能和禁止的触发器来布线。每一个输出驱动器能被独立编程。每一个输出缓冲器输入24mA,输出达48mA。驱动力和瞬态率的控制使得总线的瞬态最小。在大多数的信号标准中,输出的高压依赖于外部的Vcc值。其中每一个输出端都可以选择是否采用弱保持电路。当选择这种电路时,它将监视焊盘上的电压并试图进入与输入信号的电压匹配。如果引脚被连
26、接到一个多源信号,当所有的驱动都不允许时,弱保持电路将保持信号的最后一个状态,通过这种方式保持一个有效的逻辑电平从而消除总线的干扰。这种作用也决定了弱保持电路使用的范围,因为弱保持电路使用IOB的输入缓冲器来检测输入电平,如果信号标准需要参考电压,这时,必须提供一个适当的参考电压,同时这个电压必须遵循IO排列规则。*IO组以上所说的很多IO标准都需要参考电压,这些电压从外部连接到器件的引脚上,并供给IOB使用。所以,哪一个组使用什么信号标准就有了限制,因为在同一个组中只能有一个参考电压。所以在FPGA中将每一个边的引脚都分了两组,从而形成了8个不同的组。在同一个组中,当使用同一个标准电压时,输
27、入信号的标准可以兼容。如果一个输入信号需要用户提供参考电压,那么IO引脚可以被配置作为参考电压的输入。在每一个组中参考电压引脚的内部是互联的,因此在每一个组中仅需要一个参考电压。用来连接参考电压的引脚的输入缓冲器不能连接高于5v电压。在给定的封装中,参考电压的引脚数是根据器件的尺寸变化的,在大的器件中,有更多的IO可以作为参考电压引脚。11.4 小结本章主要介绍了各种实现工具的使用方法,其中包括时序分析器、布局规划器以及FPGA底层编辑器等,合理使用这些工具可以提高设计的效率。为了使用这些工具需要对FPGA综合、约束、实现等过程有很清楚的认识,理解FPGA时序约束有助于掌握时序分析器的使用方法
28、。在进行布局规划的过程中需要对FPGA的内部结构比较了解,使用FPGA底层编辑器进行设计就需要对所选用的器件的内部结构以及底层单元都十分清楚,同时需要对器件的电气特性、开关特性等有深刻认识,这些特性决定了设计所能达到的性能,有助于设计者确定可实现的设计目标。第12 章 iMPACT和ChipScope Pro配置工具iMPACT用于生成和下载配置文件。在线逻辑分析仪ChipScope Pro具有传统逻辑分析仪的功能,而且价格便宜、使用方便,具有很高的实用价值。12.1 iMPACTFPGA的配置模式有4种,分别是主串模式、从串模式、SelectMap模式和边界扫描模式。在从串模式中,FPGA接
29、受来自外部PROM或其他器件的串行配置数据,在外部时钟CCLK的作用下完成配置。在主串模式中,待配置的FPGA产生配置时钟CCLK驱动外部串行PROM,从而读入配置数据。iMPACT支持4种下载模式:边界扫描模式、从串模式、 SelectMap模式和Desktop配置模式。其中Desktop配置模式是一个高速配置模式,可以配置Xilinx FPGA/CPLD/ISPPROM/System ACE MPM,但是要用专门的硬件设备来实现。边界扫描模式标准统一、设备简单,可以通过JTAC口配置FPGA/CPLD/PROM等多种器件,因此用得最多。iMPACT主要输入文件是JEDEC文件和BIT文件。
30、 JEDEC文件由Xilinx CPLD Fitter产生,用于配置CPLD 。BIT文件由FPGA综合实现工具产生,用于配置FPGA,JTAG边界扫描链的每一个FPGA需要一个BIT文件。iMPACT的输出文件主要由MSC/EXO等格式的PROM文件、边界扫描链描述文件等。PROM文件的大小与所使用得PROM相适应,以保证文件能下载到器件中。CDF文件描述了边界扫描链结构、器件类型和配置文件路径等信息。使用并口电缆下载FPGA配置文件到PROM时,主要工作过程是启动iMPACT,在文件模式中用PROM Formatter把BIT转为MCS/EXO格式的PROM文件,然后在配置模式中初始化边界
31、扫描链,以便iMPACT读入硬件连接信息,接着就可以下载配置文件。12.2 ChipScope ProChipScope Pro(在线逻辑分析仪)具有传统逻辑分析仪的功能,而且价格便宜、不需要附加大量探头,具有很高的实用价值。在FPGA 调试阶段,传统的信号分析手段是用逻辑分析仪分析信号,设计时要求FPGA和PCB设计人员保留一定数量数量FPGA管脚作为测试管脚,编写FPGA代码时将需要观察的信号作为模块的输出信号,在综合实现时再把这些输出信号锁定到测试管脚上,然后连接逻辑分析仪的探头到这些测试脚,设定触发条件,进行观测。上述整个过程比较复杂、灵活性差,PCB布线后,测试脚的数量就固定了,不能
32、灵活增加,当测试脚不够用时影响测试,如果测试脚太多又影响PCB布局布线。另外,一台逻辑分析仪要几万到几十万元,每个公司拥有的数量有限,在研发高峰期间往往供不应求,影响进度。使用ChipScope Pro能较好解决这些问题。ChipScope Pro是针对XilinxVirtex2/Virtex 4/VirtexE/VirtexEM/Spartan2/Spartan2E/Spartan3/Spartan3E等系列FPGA的在线片内信号分析工具,它的主要功能是通过JTAG口,在线、实时地读出FPGA的内部信号。ChipScope Pro的基本原理是利用FPGA中未使用的BlockRam,根据用户设
33、定的触发条件将信号实时地保存到这些BlockRam中,然后通过JTAG口传送到计算机,最后在计算机屏幕上显示出时序波形。使用ChipScope Pro观察FPGA内部信号具有以下优点:1)成本低廉。只要用这套软件加上一根JTAG电缆就可以进行信号分析。2)灵活性大。观察信号的数量和存储深度有器件剩余的Block-Ram数量决定,剩余Block-Ram越多,可观察信号的数量和存储深度就越大。3)使用方便。4)使FPGA不再是黑匣子。ChipScope Pro可以方便地观测FPGA内部的所有信号,对FPGA内部逻辑调试非常方便。12.3 小结通过本章的学习,大家应该掌握这些工具的功能、在FPGA/
34、CPLA设计流程中的位置以及工具的基本使用方法。iMPACT是Xilinx提供的配置工具,可以配置FPGA 、CPLD和 PROM,它支持多种配置模式,其中边界扫描模式最为常用,通过JTAG口, iMPACT可以向FPGA下载BIT文件,向CPLD下载JEDEC文件,向PROM下载MCS、EXO等格式的PROM文件。ChipScope Pro用在FPGA调试阶段,它具有传统逻辑分析仪的功能,可以观察FPGA内部的任何信号,触发条件、数据宽度和深度等的设置也非常方便,而且价格便宜,所以它在实际工程中应用得很广泛。第13章 模块化设计方法随着可编程技术的发展,FPGA被广泛应用于电子设计的各个领域
35、。越来越多复杂系统核心电路利用FPGA设计完成,这些复杂系统经常需要使用百万门以上的大规模FPGA来设计。另一方面,为了对市场需求做出最迅速的反映,就要求这些电子产品的设计周期尽量缩短,只有以第一时间推出成熟稳定的产品,才能获得更大的市场份额。于是一方面需要百万门以上的大规模FPGA以满足设计需要,另一方面需要在最短时间内高质量地完成设计以满足市场需求,这两者出现了矛盾。13.1模块化设计方法的来源解决这个矛盾的唯一出路是投入更多的人力,进行并行工作、协同设计。并行工作、协同设计在一般的工业生产中比较容易实现,例如生产一部汽车,可以在不同车间并行生产出汽车的各个配件,然后统一将这些配件组装起来
36、即可。如果每个零件的制造都能满足图纸公差标准,那么每个零部件的制造关联就不是那么紧密,完全可以并行进行生产制造。使制造每个零部件之间的联系尽量小,然后运用并行、协同的工作方式相对独立地生产每个零部件,最后将这些零部件组合起来的工作方法就是一种模块化设计方法。13.2 模块化设计方法的优势模块化设计方法最显著的优势有两个:一是协同设计,即所有设计小组成员可以在最大程度上互不干扰地设计自己的子模块,从而加速了项目进度;二是在调试、更改某个有缺陷的子模块时,并不会影响到其他模块的实现结果,从而保证了设计的稳定性与可靠性。Modular Design设计方法一般在规模较大的设计中才有更好的性能表现。在
37、大规模设计中存储器、组合电路、寄存器资源的合理使用,设计的时序约束等问题都变得相对复杂起来,而且综合、实现步骤都变得相当花费时间。如果在大规模设计中应用Modular Design设计方法,更改某个子模块并不影响其他子模块,只需将该子模块重新综合、激活模式实现,然后直接继承所有其他子模块的结果,进行最后合并,就能完成整个设计的实现。这种继承以往的成果的设计方法的另一个显著好处就是不会因为当前子模块的修改而影响设计其他部分的时序,增强了设计的可靠性。13.3 模块化设计方法的设计流程将这种模块化设计思路运用于FPGA/CPLD设计,将大规模复杂系统按照一定规则划分成若干模块,然后对每个模块进行设
38、计输入、综合,并将实现结果约束在预先设置好的区域内,最后将所有模块的实现结果有机地组织起来,就能完成整个系统的设计。(1)顶层模块的设计:项目管理者需要完成顶层模块的设计输入与综合,为进行Modular Design实现阶段的第一步初始预算阶段(Initial Budgeting Phase)做准备。(2)子模块的设计:每个项目成员相对独立地并行完成各自子模块的设计输入和综合,为进行Modular Design实现阶段的第二步子模块的激活模式实现(ActiveModule Implementation)做准备。模块化设计输入与综合步骤模块化设计的实现步骤是整个模块化设计流程中最重要、最特殊的,
39、它包含:(1)初始预算 本阶段是实现步骤的第一步,对整个Modular Design起着指导性的作用。在初始预算阶段,项目管理者需要为设计的整体进行位置布局,只有布局合理,才能够在最大程度上体现Modular Design的优势;反之,如果因布局不合理而在较后的阶段需要再次进行初始预算,则需要对整个实现步骤全面返工。模块化设计的实现步骤(2)子模块的激活模式实现(Active ModuleImplementation)-在该阶段,每个项目成员并行完成各自子模块的实现。(3)模块的最后合并(Final Assembly)-在该阶段项目管理者将顶层的实现结果和所有子模块的激活模式实现结果有机地组织
40、起来,完成整个设计的实现步骤。13.4 模块化设计中模块的划分原则在进行大规模复杂系统设计时,采用模块化设计方法能在最大程度发挥项目组所有工程师的作用,提高设计效率,缩短项目开发周期。但是模块化设计方法对项目管理者提出了更高的要求:项目管理者应该合理地划分模块,对项目进度做出很好的权衡,使所有子模块的设计任务并行完成,从而不耽误模块的最后合并(FinalAssembly)阶段的工作进度。模块化设计中模块划分的基本原则为:子模块功能相对独立,模块内部联系尽量紧密,而模块间的连接尽量简单。所以对于那些难以满足模块划分准则的具有强内部关联的复杂设计,并不适合采用模块化设计方法。13.5 模块化设计方
41、法实验1输入八路十六位数据分别为a1,b1,a2,b2,a3,b3,a4,b4,将其中的a1、b1,a2、b2,a3、b3,a4、b4,分别相乘,然后将乘积相加,相加结果即为该设计的输出。13.5 模块化设计方法实验2假设该设计为某实时通信系统的一个模块,该模块有两部分组成,一部分为发端信源,发送一串码元:0011111101000111 ,发送数据的码速率为1MHz.另一部分为接收端,接收端仅需进行如下处理:实时对接收到的数据码元进行取反操作,取反后的结果即为模块的输出,显然输出码速率也为1MHz.该通信系统中,FPGA的外围晶振频率为:50MHz.13.6 小结本章在介绍模块化的设计方法概
42、念的基础上,引入Xilinx Modular Design的设计流程,重点强调了Modular Design实现步骤的3个阶段的含义和操作方法。通过学习,应领会目前大型复杂系统首推设计方式Modular Design的设计思想与操作方法,认识到使用Modular Design进行由顶向下、分工协作完成大型设计不仅仅能够缩短项目开发周期,提高设计效率,还能提高设计的可靠性与稳定性。第14章 XC3S400开发板的使用该开发板采用XILINX常用spartan3芯片进行进行设计, 板上留有JTAG下载接口。板上集成了XILINX 新一代串行配置芯片XF02S。为了方便单独使用这块下载板(也就是作为
43、背板插在自己的目标系统上使用),板上提供了一个50M有源晶振(带晶振插座) (可按照设计师要求选配不同频率有源晶振)。在开发板上通过扩展连接插座和插头将芯片所有有效I/O都已引出,也就是板上(J12,J13,J6,J7)。这样就可以方便的和自己开发的目标系统配合使用,也就是做为背板使用。这样就算是您的目标系统设计失败或损坏也可以将该板取下插到新的目标系统上面正常使用,这样就缩短了开发时间并降低了研发成本。 板上有一个JTAG插座,这是为了用户对JTAG口进行评估试验所设置。同时我们在板上设置了一个配置芯片选择跳线。如果只是做程序验证,可以将串行PROM屏蔽掉。第14章 XC3S400开发板的使
44、用14.1 XC3S400开发板原理该开发板的设计原理和详细使用说明我们结合原理图来介绍。14.2 XC3S400开发板实验实验一:按键控制LED实验该实验实现的功能如下:在开发板上按下S1时LED1点亮,按下S2时LED2点亮,按下S3时LED3点亮,按下S4时LED4点亮。14.2 XC3S400开发板实验实验二:拨码开关控制数码管实验该实验实现的功能如下:在开发板上利用SB1的K0,K1,K2,K3四个拨码开关控制LD1的两个数码管显示同样的符号,同时显示0F。第15章 运算和数据流动控制逻辑数字逻辑的门类千变万化,但就其本质而言,只有组合逻辑和时序逻辑两大类。它们在复杂数字系统的设计中
45、,各自承担自己的责任。一般情况下组合逻辑则可以用来用来完成简单的逻辑功能,如多路器、与或非逻辑运算、加法和乘法算术运算。而时序逻辑则可以用来产生与运算过程有关的多个控制信号序列。在用可综合的硬件描述语言设计的复杂运算逻辑系统中往往用同步状态机来产生与时钟节拍密切相关的多个控制信号序列,用它们来控制多路器或数据通道的开启/关闭,来使有限的组合逻辑运算器资源得到充分的运行,并寄存有意义的运算结果,或把它们传送到指定的地方,例如相关部件的输入/输出端口。15.1 数字逻辑电路的种类组合逻辑:输出只是当前输入逻辑电平的函数(有延时),与电路的原始状态无关的逻辑电路。也就是说,当输入信号中的任何一个发生
46、变化时,输出都有可能会根据其变化而变化,但与电路目前所处的状态没有任何关系。时序逻辑:输出不只是当前输入逻辑电平的函数,还与电路目前所处状态有关的逻辑电路。同步有限状态机是同步时序逻辑的基础。所谓同步有限状态机是指电路状态的变化只可能在同一时钟跳变沿时发生的逻辑电路。但状态是否发生变化还要看输入条件,如果输入条件满足,则进入下一状态,否则即使时钟不断跳变,电路系统仍停留在原来的状态。15.2 数字逻辑电路的构成组合逻辑:由与、或、非门组成的网络。常用的组合电路有:多路器、数据通路开关、加法器、乘法器等。时序逻辑:由多个触发器和多个组合逻辑块组成的网络。常用的有:计数器、复杂的数据流动控制逻辑、
47、运算控制逻辑、指令分析和操作控制逻辑。同步时序逻辑是设计复杂的数字逻辑系统的核心。时序逻辑借助于状态寄存器记住它目前所处状态。在不同的状态下,即使所有的输入都相同,其输入也不一定相同。15.3 数据流动的控制通常,诸如加、减、乘、除、比较等运算都可以用组合逻辑来实现,但运算的输入必须稳定一段时间,才可能得到稳定的输出,而输出要作为下一阶段的运算输入,也必须要稳定一段时间,因而输出结果必须保存在寄存器组中。在计算电路中设有许多寄存器组,它们用来暂存运算的中间数据。对寄存器组之间数据流动进行精确的控制,在算法实现的过程中有着极其重要的作用。15.4 为什么在Verilog HDL设计中一定要用同步
48、而不能用异步时序逻辑同步时序逻辑是指表示状态的寄存器组的值只可能在唯一确定的触发条件发生时才改变。只能由时钟的正跳沿或负跳沿触发的状态机就是一例。always(posedge clk)就是一个同步时序逻辑的触发条件,表示由该always控制的beginend块中寄存器变量重新赋值的情形只有可能在clk正跳沿发生。而异步时序逻辑是指触发条件由多个控制因素组成,任何一个因素的跳变都可以引起触发。记录状态的寄存器组其时钟输入端不是都连结在同一个时钟信号上。用Verilog HDL设计的可综合模块,必须避免使用异步时序逻辑,这不但是因为许多综合器不支持异步时序逻辑的综合。而且也因为用异步时序逻辑确实很
49、难来控制由组合逻辑和延迟所产生的冒险和竞争。当电路的复杂度增加时,异步时序逻辑将无法调试,工艺的细微变化也会造成时序逻辑电路的失效。因为异步时序逻辑中触发条件很随意,所以记录状态的寄存器组的输出在任何时刻都有可能发生变化。而同步时序逻辑中的触发输入至少可以维持一个时钟后才会发生第二次触发。这是一个非常重要的差别,因为可以利用这一个时钟的时间在下一次触发信号到来前,为电路状态的改变创造一个稳定可靠的条件。因此可以得出结论:同步时序逻辑比异步时序逻辑具有更可靠、更简单的逻辑关系。同步与异步时序逻辑的差异:在同步时序逻辑逻辑电路中,触发信号是时钟的正跳沿或负跳沿;触发器的输入与输出是经由两个时钟来完
50、成的。第一个时钟的正跳沿为输入作准备,在第一个时钟正跳沿或负跳沿到来后到第二个时钟正跳沿或负跳沿到来以前的这一段时间内,有足够的时间使输入稳定。当第二个时钟正跳沿或负跳沿到来时,由前一个时钟沿创造的条件已经稳定,所以能够使下一个状态正确地输出。若在同一时钟的正跳沿或负跳沿下对寄存器组既进行输入又进行输出,很有可能由于门的延迟使输入条件还未稳定时,就输出了下一个状态,这种情况会导致逻辑的紊乱。而利用上一个时钟为下一个时钟创造触发条件的方式是安全可靠的。但这种工作方式需要有一个前提:在各触发器时钟端的同步时钟差值可以忽略不计的条件下,确定下一个状态所使用的组合电路的延迟必须小于一个时钟周期的宽度。
51、只有满足这一前提才可以避免逻辑紊乱。在实际电路的实现中,采取了许多有效的措施来确保这一条件的成立,其中主要有以下几点:1)全局时钟网络布线时尽量使各分支的时钟一致;2)采用平衡树结构,在每一级加入缓冲器,使到达每个触发器时钟端的时钟同步。通过这些措施基本可以保证时钟的同步,在后仿真时,若逻辑与预期设计的不一样,可降低时钟频率,就有可能消除由于时钟过快引起的触发器输入端由延迟和竞争冒险造成的不稳定,从而使逻辑正确。第16章 Verliog HDL的设计要点在本章主要介绍以下几点内容:深入理解阻塞和非阻塞赋值的不同Verilog模块中的信号为什么Verilog能支持大型设计16.1 深入理解阻塞和
52、非阻塞赋值的不同阻塞和非阻塞赋值的语言结构是Verliog语言中最难理解的概念之一。甚至有些很有经验的Verliog设计工程师也不能完全正确理解:何时使用非阻塞赋值,何时使用阻塞赋值,才能设计出符合要求的电路。他们也不完全明白在电路结构的设计中,即可综合风格的Verliog模块的设计中,究竟为什么还要用非阻塞赋值,以及符号IEEE标准的Verliog仿真器究竟如何来处理非阻塞赋值的仿真。在描述组合逻辑的always块中用阻塞赋值,则综合成组合逻辑的电路结构。在描述时序逻辑的always块中用非阻塞赋值,则综合成时序逻辑的电路结构。那么为什么一定要这样做呢?这是因为要使综合前仿真和综合后仿真保持
53、一致。如果不按照上面两个要点来编写Verilog代码,也有可能综合出正确的逻辑,但前后仿真的结果就会不一致。为了更好地理解上述要点,需要对Verilog语言中的阻塞赋值和非阻塞赋值的功能和执行时间上的差别有深入的了解。为了解释问题方便下面定义两个缩写字:RHS方程式右手方向的表达式或变量可分别缩写为:RHS表达式或RHS变量。LHS方程式左手方向的表达式或变量可分别缩写为LHS表达式或LHS变量。IEEE Verliog标准定义了有些语句有确定的执行时间,有些语句没有确定的执行时间。若有两条或两条以上的语句准备在同一时刻执行,但由于语句的排列次序不同(而这种排列次序不同是IEEE Verlio
54、g标准所允许的),却产生了不同的输出结果。这就是造成Verliog模块冒险和竞争现象的原因。为了避免产生竞争,理解阻塞和非阻塞赋值在执行时间上的差别是至关重要的。阻塞赋值操作符用等号()表示。为什么称这种赋值为阻塞赋值呢?这是因为在赋值时先计算等号右手(RHS)部分的值,这时赋值语句不允许任何别的Verilog语句的干扰,直到现行的赋值完成时刻,即把RHS赋值给LHS的时刻,它才允许别的赋值语句的执行。一般可综合的阻塞赋值操作在RHS不能设定有延迟(即使是零延迟也不允许)。16.1.1 阻塞赋值从理论上讲,它与后面的赋值语句只有概念上的先后,而无实质上的延迟。若在RHS加上延迟,则在延迟期间会
55、阻止赋值语句的执行,延迟后才执行赋值,这种赋值语句是不可综合的,在需要综合的模块设计中不可使用这种风格的代码。16.1.1 阻塞赋值16.1.1 阻塞赋值阻塞赋值的执行可以认为是只有一个步骤的操作:计算RHS并更新LHS,此时不能允许有来自任何其他Verilog语句的干扰。所谓阻塞的概念是指在同一个always块中,其后面的赋值语句从概念上是前一句赋值语句结束后再开始赋值的。非阻塞赋值操作符用小于等于号(即)表示。为什么称这种赋值为非阻塞赋值?这是因为在赋值操作时刻开始时计算非阻塞赋值符的RHS表达式,赋值操作时刻结束时更新LHS。在计算非阻塞赋值的RHS表达式和更新LHS期间,其他的Veri
56、log语句,包括其他的Verilog非阻塞赋值语句都能同时计算RHS表达式和更新LHS。16.1.2 非阻塞赋值16.1.2 非阻塞赋值非阻塞赋值的操作过程包括两个步骤:1)在赋值时刻开始时,计算非阻塞赋值RHS表达式。2)在赋值时刻结束时,更新非阻塞赋值LHS表达式。非阻塞赋值操作只能用于对寄存器类型变量进行赋值,因此只能用在“initial”块和“always”块等过程块中。非阻塞赋值不允许用于连续赋值。下面还将对阻塞和非阻塞赋值做进一步解释。在此之前掌握可综合风格的Verilog模块编程的几个原则会有很大的帮助。在编写时牢记几个要点可以为绝大多数的Verilog用户解决在综合后仿真中出现
57、的90-100的冒险竞争问题。16.1.3 Verilog模块编程要点16.1.3 Verilog模块编程要点1)时序电路建模时,用非阻塞赋值。2)锁存器电路建模时,用非阻塞赋值。3)用always块建立时序和组合逻辑电路时,用非阻塞赋值。4)在同一个always块中建立时序和组合逻辑电路时,用非阻塞赋值。5)在同一个always块中不要既用非阻塞赋值又用阻塞赋值。6)不要在一个以上的always块中为同一个变量赋值。做为FPGA/CPLD设计师一定要牢记这几条要点。照着要点来编写Verilog模块程序,就可省去很多麻烦。16.1.3 Verilog模块编程要点end16.1.4 非阻塞赋值语
58、句非阻塞(non-blocking) 赋值语句:always (posedge clk)begin= a= b;endclkcDDFFQDabQDFFend16.1.5 阻塞赋值语句阻塞(blocking) 赋值语句:always (posedge clk)begin= a= b;endclkDFFcDQab赋值语句同时完成的;16.1.6 两种不同的赋值语句区别要点不阻塞( non-blocking) 赋值语句 ( b= a):- 块内的赋值语句同时赋值;- b 的值被赋成新值 a 的操作, 是与块内其他赋值语句同时完成的;- 建议在可综合风格的模块中使用不阻塞赋值。阻塞(blocking)
59、 赋值语句 ( b = a):- 完成该赋值语句后才能做下一句的操作;- b 的值立刻被赋成新值 a;- 硬件没有对应的电路,因而综合结果未知。只有两种主要的信号类型:在always 块中被赋值的信号,往往代表触发器,但不一定是触发器。用 assign 关键词指定的组合逻辑的信号或连线16.2 Verilog模块中的信号只有两种主要的信号类型:- 寄存器类型: reg在always 块中被赋值的信号,往往代表触发器,但不一定是触发器。- 连线类型: wire用 assign 关键词指定的组合逻辑的信号或连线16.2 Verilog模块中的信号需要注意的是:-寄存器 (它只是在reg )类型不一
60、定是触发器。always 块中赋值的信号。Verilog 语法支持多层次多模块设计:块;电路结构,构成多层次模块;的结构;综合模块和若干个外围接口模块构成。16.3 为什么么Verilog能支持大型设计Verilog 语法支持多层次多模块设计:-用 include宏指令可以在一个模块中包含多个模块;- 在一个模块中可以用实例调用别的模块中定义的电路结构,构成多层次模块;- 在一个模块中可以用多个任务和函数来表 达复杂的结构;- 一个设计项目往往由一个顶层测试模块和多个可综合模块和若干个外围接口模块构成。第17章 软件无线电概述FPGA怎样才能应用到无线通信系统中呢?有什么理论依据吗?软件无线电
61、的宗旨就是尽可能地简化射频模拟前端,使A/D转换尽可能地靠近天线去完成模拟信号的数字化,而且数字化后的信号要尽可能多地用软件来进行处理,实现各种功能和指标。另外,软件无线电的硬件平台应具有开发性、通用性、软件可升级、可替换等特性。软件无线电的核心技术主要有:带通采样(欠采样)数字上下变频调制解调同步技术多速率信号处理数字滤波等软件无线电最初起源于军事研究。1992年5月,MILTRE公司的Joe Mitola1在美国国家远程系统会议上首次作为军事技术提出了软件无线电(Software Radio,简记为SWR)的概念,希望用这种新技术来解决三军无线电台多工作频段、多工作方式的互通问题,从此,对
62、软件无线电的研究在国际范围内迅速展开。18.1 软件无线电的发展趋势所谓软件无线电,是指构造一个具有标准化、模块化、开放性的硬件平台,将各种功能,如工作频段、调制解调类型、数据格式、加密模式、通信协议等用软件来完成,同时使宽带A/D转换器尽可能靠近天线,以充分实现数字化,提高可编程性。软件无线电在现代通信中占有重要的地位更是未来通信乃至未来无线电技术的发展方向。17.2 FPGA/CPLD在软件无线电系统中的重要性现代通信系统的发展趋势是通信频段越来越高,那么自然对信号处理速度的要求也越来越高,这就需要一种处理速度很高处理数据量很大的处理器,而FPGA/CPLD正是一个合适的选择,所以FPGA
63、/CPLD对软件无线电系统的发展有着很重要的作用。17.3 软件无线电的三种结构形式射频全宽开低通采样软件无线电结构射频直接带通采样软件无线电结构宽带中频带通采样软件无线电结构17.3.1 Nyquist 采样定理设有一个频率带限信号x(t),其频带限制在(0,fh)内,如果以不小于fs=2fh的采样速率对x(t)进行等间隔采样,得到时间离散的采样信号x(n)=x(nTs)(其中Ts=1/fs称为采样间隔),原信号x(t)将被所得到的采样值x(n)完全确定。17.3.2 带通采样定理设有一个频率带限信号x(t),其频带限制在(fl,fh)内,如果其采样速率fs满足:fs=2(fl+fh)/(2
64、n+1)式中,n取能满足fs大于等于2(fh-fl)的最大正整数(0,1,2.),则用fs进行等间隔采样所得到的信号采样值x(nTs)能准确地确定原信号x(t)。17.3.3 射频全宽开低通采样软件无线电结构17.3.4 射频直接带通采样软件无线电结构17.3.5 宽带中频带通采样软件无线电结构17.4 软件无线电发射机中FPGA软件功能框图17.5 软件无线电接收机中FPGA软件功能框图18章 System View动态系统仿真软件System View是一个信号级的系统仿真软件,主要用于电路与通信系统的设计、仿真,是一个强有力的动态系统分析工具,能满足从数字信号处理、滤波器设计,到复杂的通
65、信系统等不同层次的设计、仿真要求。 System View借助大家熟悉的Windows窗口环境,以模块化和交互式的界面,为用户提供一个嵌入式的分析引擎。使用System View时,用户只需关心项目的设计思想和过程,用鼠标点击图标即可完成复杂系统的建模、设计和测试,而不必花费太多的时间和精力通过编程来建立系统仿真模型。System View使用了用户熟悉的Windows界面和功能键,使用户可以快速建立和修改系统,并在对话框内对系统参数进行快速访问和设置,达到实时修改、实时显示的操作效果。用户只需要简单地用鼠标点击 图符即可创建连续性系统、DSP滤波器,并输入/输出基于真实模型的仿真数据,不用写
66、一行代码即可建立用户所需的子系统库。1.能仿真大量的应用系统该系统能在DSP、通信和控制系统应用中构造出复杂的模拟、数字、混合和多速率系统。系统具有大量可选择的库,允许用户有选择地增加通信、逻辑、DSP和射频/模拟功能模块,特别适用于无线通信系统(GSM、CDMA、FDMA、TDMA)的设计;能够仿真DSP结构;可进行各种系统时域/频域分析和频谱分析;能够对射频/模拟电路进行理论分析和失真分析。18.1 System View仿真系统的特点2.快速方便的动态系统设计与仿真System View图库包括几百种信号源、接收端、操作符和功能模块,提供了从DSP、通信、信号处理、自动控制,到构造通用数
67、学模型等的应用模块。信号源和接收端图符允许在System View的内部生成和分析信号,并形成可供外部处理的各种文件格式,同时还提供了相应的输入/输出数据接口。3.在报告中方便加入System View的结论System View通过Notes(注解)很容易地在屏幕上对系统进行描述和说明,生成的System View系统和输出的波形图可以很方便地通过使用复制和粘贴命令插入到微软的Word等文字处理软件中进行编辑。4.提供基于组织结构图方式的设计通过利用图符和MetaSystem(子系统)对象的无限制分层结构功能,SystemView能够很容易地建立复杂的系统。用户首先可以定义一些简单的功能组,
68、再通过对这些简单功能组的连接进而实现一个大系统,利用系统提供的子系统结构功能可以将这个大系统形成一个对应的新子系统,这样,单一的图符就可以代表一个复杂系统。 MetaSystem的操作方法与系统提供的其他图符的使用方法类同,只要用鼠标器单击一下该子系统,就会出现一个特定的窗口来显示出复杂的结构。但是在SystemView学习版中没有MetaSystem图符功能,必须升级到专业版才有此功能。5.完备的滤波器和线性系统设计SystemView包含一个功能强大的、很容易使用的图形模板设计环境,便于模拟和数字以及离散和连续时间系统的设计,同时还包括大量的FIR/IIR滤波器类型和FFT类型,并提供了便
69、于用DSP实现滤波器或线性系统的参数。6.多速率系统和并行系统SystemView可以对具有多种数据采样率输入的系统进行合并,以简化FIR滤波器的执行,这种特性尤其适合于同时具有低频和高频部分的通信系统的设计与仿真,该特性有效地提高了整个系统的仿真速度,而在局部又不会降低仿真的精度,同时还降低了系统对计算机硬件配置的要求。7.先进的信号分析和数据块处理SystemView的分析窗口是一个能够对系统波形进行详细检查的交互式可视环境。分析窗口还提供了一个能对仿真生成的数据进行先进的块处理操作的接收计算器。接收计算器的块处理功能十分强大,内容也相当广泛,能够完全满足通常所需的分析要求。这些功能包括:
70、应用DSP窗口、自动关联、平均值、复杂的FFT、常量窗口、卷积、余弦、交叉关联、求模、相位、最大/最小值及平均值、覆盖图、覆盖统计、自相关等。SystemView还提供了一个真实而灵活的窗口,用以检查系统波形。内部数据的图形放大、缩小、滚动、谱分析、标尺以及滤波等全都是通过敲击鼠标实现的。8.完善的自我诊断功能SystemView能自动执行系统连接检查,并显示连接的出错信息和指出出错的图符,这个特点对用户系统的诊断是十分有效的。总之, SystemView的设计者希望它成为一种强有力的基于个人计算机的动态通信系统仿真工具,以达到在不具备先进仪器的条件下同样也能完成复杂的通信系统设计与仿真的目的
71、。第19章 软件无线电中的A/D技术软件无线电体系结构的一个重要特点是将A/D尽量靠近射频前端.为减少模拟环节,在较高的中频,乃至对射频信号直接进行数字化.这就要求A/D器件具有适中的采样速率和很高的工作带宽.为适应错综复杂的电磁环境,A/D器件除了要有高速度、大带宽外,同时还需要大动态范围.19.1 A/D转换器原理采样量化编码19.2 Nyquist采样Nyquist 采样定理:设有一个频率带限信号x(t),其频带限制在(0,fh)内,如果以不小于fs=2fh的采样速率对x(t)进行等间隔采样,得到时间离散的采样信号x(n)=x(nTs)(其中Ts=1/fs称为采样间隔),原信号x(t)将
72、被所得到的采样值x(n)完全确定。带通采样定理:设有一个频率带限信号x(t),其频带限制在(fl,fh)内,如果其采样速率fs满足:fs=2(fl+fh)/(2n+1)式中,n取能满足fs大于等于2(fh-fl)的最大正整数(0,1,2.),则用fs进行等间隔采样所得到的信号采样值x(nTs)能准确地确定原信号x(t)。19.3 带通采样若用带通信号的中心频率fo和频带宽度也可表示采样速率:fs=4fo/(2n+1)式中,fo=(fl+fh)/2,其中n取能满足fs2B(B为频带宽度)的最大正整数可以看到,在上式中当fo=fh/2、B=fh时,取n=0,就是Nyquist 采样定理,即满足fs
73、=2fh.当频带宽度一定时,为了能用最低采样速率即两倍频带宽度速率(fs=2B)对带通信号进行采样,带通信号的中心频率必须满足:fo=(2n+1)B)/2或fl+fh=(2n+1)B也即信号的最高(或最低)频率是带宽的整数倍,也就是说对任何一个中心频率为fon(n=0,1,2)带宽为的带通信号均可以用同样的采样频率fs=2B对信号采样,这些采样均能准确地表示位于不同频段(中心频率不同)的原信号需要注意的是,上述带通采样定理适用的前提条件是:只允许在其中一个频带上存在信号,而不允许在不同的频带上同时存在信号,否则将会引起信号混叠但在不同的频带上很可能会同时存在很多信号,那么怎么解决这个问题呢?射
74、频直接带通采样软件无线电结构宽带中频带通采样软件无线电结构从射频直接带通采样软件无线电结构和中频带通采样软件无线电结构可以看出在前加上跟踪滤波器就可以通过调节跟踪滤波器(理想的跟踪滤波器)的中心频率来实现对整个工作频带(如1MHz1GHz)内任何一个信道上的带通信号进行采样数字化,然后用软件方法进行解调分析19.4 带通采样的结果带通采样的结果是把位于(nB,(n+1)B)(n=0,1,2,)不同频带上的信号都用位于(0,B)上相同的基带信号频谱来表示,但要注意的是这种表示在n为奇数时,其频率对应关系是相对中心频率“反折”的,即奇数通带上的高频分量对应基带上的低频分量,奇数通带上的低频分量对应
75、基带上的高频分量偶数通带与采样后的数字基带谱是高、低频率分量一一对应的这种奇、偶频带有别的频率对应关系在带通信号采样定理实际工程应用时是需要特别注意的19.5 A/D转换器的选择原则1,采样速率选择:如果A/D之前的带通滤波器的矩形系数为r(其中r=B/B),为防止带外信号影响有用信号,A/D器件的采样速率应取为:fs2B=2rB例如,取带宽B=10MHz,滤波器的矩形系数r=2时,则应有采样速率fs 10MHz,在允许过渡带混叠时,采样速率为:fs(r+1)B同样,当B=10MHz,r=2时,应有采样速率:fs 60MHz2,采样分辨率较好的A/D器件:因为器件的分辨率越高,所需的输入信号的
76、幅度越小,对模拟前端的放大量的要求也越小.A/D的分辨率主要取决于器件的转换位数和器件的信号输入范围.转换位数越高,信号输入范围越小,则A/D转换器的性能越好,但这时对制作工艺要求也越高,在选择A/D器件时一定要注意信号输入范围,尽可能的选输入范围小的A/D器件,这样可以减轻前端放大器的压力,有利于提高动态范围.3,一般情况A/D转换位数越高越好:由于A/D的动态范围指标主要取决于转换位数,A/D器件的转换位数越多,其动态范围就越高.4,根据环境条件选择A/D转换芯片的环境参数:例如功耗、工作温度A/D转换器的功耗应尽可能低,因为器件的功耗太大会带来供电、散热等许多问题,根据接口特征考虑选择合
77、适的A/D转换器输出状态:例如A/D转换器是并行输出还是串行输出,输出是TTL电平、CMOS电平,还是ECL电平;输出编码是偏移码方式,还是二进制补码方式;有无内部基准源;有无结束状态等等第20章 基于FPGA/CPLD的高速数据流处理目前在很多大型的电子系统中都有FPGA的存在,比如在通信、控制、导航定位、无线局域网、搜索器等等领域都有FPGA的广泛应用。提高FPGA/CPLD处理高速数据流的能力,需要灵活的运用两种设计思想:1,串并转换的设计思想2,流水线操作设计思想20.1.1 串并转换思想串并转换很明显就是将串行数据转换为并行数据,然后对并行的几路数据同时处理,注意就提高了数据流的处理
78、速度。串并转换是FPGA设计的一个重要思想,它是数据流处理的常用手段,也是面积与速度互换思想的直接体现。串并转换的实现方法多种多样,根据数据的排序和数量的要求,可以选用寄存器、RAM等实现。下面举一个比较常用的通过DPRAM实现数据流串并转换的乒乓操作,来详细讲解串并转换的过程。20.1.2 乒乓操作“ 乒乓操作 ” 是一个常常应用于数据流控制的处理技巧,典型的乒乓操作方法如下页图所示。乒乓操作的处理流程输入数据流通过 “ 输入数据选择单元 ” 将数据流等时分配到两个数据缓冲区,数据缓冲模块可以为任何存储模块,比较常用的存储单元为双口 RAM(DPRAM) 、单口RAM(SPRAM) 、 FI
79、FO 等。在第一个缓冲周期,将输入的数据流缓存到 “ 数据缓冲模块 1” ;在第 2 个缓冲周期,通过 “ 输入数据选择单元 ” 的切换,将输入的数据流缓存到 “ 数据缓冲模块 2” ,同时将 “ 数据缓冲模块 1” 缓存的第 1 个周期数据通过“ 输入数据选择单元 ” 的选择,送到 “ 数据流运算处理模块 ” 进行运算处理;在第 3 个缓冲周期通过 “ 输入数据选择单元 ” 的再次切换,将输入的数据流缓存到 “ 数据缓冲模块 1” ,同时将 “ 数据缓冲模块 2” 缓存的第 2 个周期的数据通过 “ 输入数据选择单元 ” 切换,送到 “ 数据流运算处理模块 ” 进行运算处理。如此循环。利用乒
80、乓操作完成数据的无缝缓冲与处理乒乓操作可以通过 “ 输入数据选择单元 ”和 “ 输出数据选择单元 ” 按节拍、相互配合的切换,将经过缓冲的数据流没有停顿地送到“ 数据流运算处理模块 ” 进行运算与处理。把乒乓操作模块当做一个整体,站在这个模块的两端看数据,输入数据流和输出数据流都是连续不断的,没有任何停顿,因此非常适合对数据流进行流水线式处理。所以乒乓操作常常应用于流水线式算法,完成数据的无缝缓冲与处理。利用乒乓操作节约缓冲区空间假如在一个高速电子系统中,1 个帧是由 15个时隙组成的,有时需要将 1 整帧的数据延时一个时隙后处理,比较直接的办法是将这帧数据缓存起来,然后延时 1 个时隙进行处
81、理。这时缓冲区的长度是 1 整帧数据长,假设数据速率是 3.84Mbps , 1 帧长 10ms ,则此时需要缓冲区长度是 38400 位。如果采用乒乓操作,只需定义两个能缓冲 1 个时隙数据的 RAM( 单口RAM 即可 ) 。当向一块 RAM 写数据的时候,从另一块 RAM 读数据,然后送到处理单元处理,此时每块 RAM 的容量仅需 2560 位即可, 2 块RAM 加起来也只有 5120 位的容量。运用乒乓操作实现低速模块处理高速数据流如上页图所示,数据缓冲模块采用了双口RAM ,并在 DPRAM 后引入了一级数据预处理模块,这个数据预处理可以根据需要的各种数据运算,比如在 一个高速电子
82、系统中,对输入数据流的变频、解调、解码等。假设端口 A的输入数据流的速率为 100Mbps ,乒乓操作的缓冲周期是 10ms 。以下我们就来分析各个节点端口的数据速率。A 端口处输入数据流速率为 100Mbps ,在第 1 个缓冲周期 10ms 内,通过 “ 输入数据选择单元 ” ,从 B1 到达 DPRAM1 。 B1 的数据速率也是 100Mbps , DPRAM1 要在10ms内写入 1Mb 数据。同理,在第 2 个 10ms ,数据流被切换到 DPRAM2 ,端口 B2 的数据速率也是 100Mbps , DPRAM2 在第 2 个10ms 被写入 1Mb 数据。在第 3 个 10ms
83、 ,数据流又切换到 DPRAM1 , DPRAM1 被写入1Mb 数据。仔细分析就会发现到第 3 个缓冲周期时,留给 DPRAM1 读取数据并送到 “ 数据预处理模块 1” 的时间一共是 20ms 。有的工程师困惑于 DPRAM1 的读数时间为什么是 20ms ,这个时间是这样得来的:首先,在在第 2 个缓冲周期向 DPRAM2 写数据的 10ms 内,DPRAM1 可以进行读操作;另外,在第1个缓冲周期的第 5ms 起 ( 绝对时间为 5ms 时刻 ) , DPRAM1 就可以一边向 500K 以后的地址写数据,一边从地址 0 读数,到达 10ms时, DPRAM1 刚好写完了 1Mb 数据
84、,并且读了 500K 数据,这个缓冲时间内 DPRAM1读了 5ms 。在第 3 个缓冲周期的第 5ms 起 ( 绝对时间为 35ms 时刻 ) ,同理可以一边向 500K 以后的地址写数据一边从地址 0 读数,又读取了5 个 ms ,所以截止 DPRAM1 第一个周期存入的数据被完全覆盖以前, DPRAM1 最多可以读取 20ms时间,而所需读取的数据为1Mb ,所以端口 C1 的数据速率为:1Mb/20ms=50Mbps 。因此, “ 数据预处理模块 1” 的最低数据吞吐能力也仅仅要求为50Mbps 。同理, “ 数据预处理模块 2” 的最低数据吞吐能力也仅仅要求为 50Mbps 。换言之
85、,通过乒乓操作, “ 数据预处理模块 ” 的时序压力减轻了,所要求的数据处理速率仅仅为输入数据速率的 1/2 。通过乒乓操作实现低速模块处理高速数据的实质就是:通过 DPRAM 这种缓存单元实现了数据流的串并转换,并行用 “ 数据预处理模块 1” 和 “ 数据预处理模块 2” 处理分流的数据,是面积与速度互换原则的体现!20.2.1流水线设计流水线处理是高速设计中的一个常用设计手段。如果某个设计的处理流程分为若干步骤,而且整个数据处理是 “ 单流向 ” 的,即没有反馈或者迭代运算,前一个步骤的输出是下一个步骤的输入,则可以考虑采用流水线设计方法来提高系统的工作频率。20.2.2流水线设计的结构
86、流水线设计的结构示意图如下页图所示。其基本结构为:将适当划分的 n 个操作步骤单流向串联起来。流水线操作的最大特点和要求是,数据流在各个步骤的处理从时间上看是连续的,如果将每个操作步骤简化假设为通过一个 D 触发器 ( 就是用寄存器打一个节拍 ) ,那么流水线操作就类似一个移位寄存器组,数据流依次流经 D 触发器,完成每个步骤的操作。20.2.3流水线设计时序整个设计时序的合理安排是流水线设计的一个关键,那么如何才能对整个设计时序进行合理安排呢?下面我们就带着这个问题做个实验。流水线设计实验1实验要求:假设该设计为某实时通信系统的一个模块,该系统采样时钟为100ns,采样精度为32位,当然该模
87、块下也可以有子模块。我们需要设计的内容为:对采样数据先进行加减偏移量的运算,假设需要加十六进制数00000077h的偏移量,然后把该数据压缩为16位数据,便于采样后的信号处理运算,压缩数据时保持精度相对高些。这里我们假设信号处理运算很简单,就是将压缩后的数据先减去十六进制数00ffh,然后取差值的低八位数据值做为该设计的输出。流水线设计实验2前面的要求和流水线设计实验1相同,只是信号处理运算变为以下内容:将压缩后的数据先减去十六进制数00ffh,然后将差值与十六进制数2222h相乘得到的乘积即为设计的输出。流水线设计时序如上页图所示,时序的合理安排要求每个操作步骤的划分合理。如果前级操作时间恰
88、好等于后级的操作时间,设计最为简单,前级的输出直接汇入后级的输入即可;如果前级操作时间和后级的操作时间不等,该怎么办呢?流水线设计时序如果前级操作时间大于后级的操作时间,则需要对前级的输出数据适当缓存才能汇入到后级输入端;如果前级操作时间恰好小于后级的操作时间,则必须通过复制逻辑,将数据流分流,或者在前级对数据采用存储、后处理方式,否则会造成后级数据溢出。20.2.4流水线处理的应用在很多领域的高速电子系统中都运用了流水线处理的方法,如高速通信系统、高速采集系统、高速识别系统、高速搜索系统等等。流水线处理方式之所以能够很大程度上提高数据流的处理速度,是因为复制了处理模块,它是面积换取速度思想的
89、又一种具体体现。20.2.5 基于FPGA的实时信号处理系统与流水线设计方法实时信号处理系统首先要求该系统必须具有处理大数据量的能力,以保证系统的实时性;其次,对系统的体积,功耗,稳定性等也有严格的要求。实时信号处理算法当中涉及到的运算,有的计算方式和控制结构比较复杂,难以用纯硬件实现,但是对速度没有特殊的要求;有的运算结构本身比较简单,但是数据量大,计算速度要求高。因此,实时信号处理系统是一个运算速度要求高,运算种类多的综合性信息处理系统。20.2.5 基于FPGA的实时信号处理系统与流水线设计方法随着数字信号处理器(DSP)和现场可编程门阵列器件(FPGA)的发展,采用DSPFPGA的数字
90、硬件系统正显示出它的优越性,越来越受到人们的重视。通用DSP的优点是通过编程可以应用到广泛的产品当中去,且已经能满足算法控制结构复杂,运算速度高,寻址方式灵活和通信性能强大等需求。但是传统DSP的结构本质上是串行的,对于需要处理的数据量大,处理速度高,但是运算结构相对比较简单的信号处理算法来说,并没有优势可言,而这恰好是FPGA的强项。采用DSPFPGA的数字硬件系统正好把两者的优点结合到一起,兼顾了速度和灵活性,能够很高效的完成一个实时信号处理系统的设计。20.2.5 基于FPGA的实时信号处理系统与流水线设计方法DSPFPGA系统最大优点是结构灵活,有较强的通用性,适合模块化设计;同时开发
91、周期较短,系统易于维护和扩展,因此特别适合应用于于实时信号处理系统。那么如果硬件系统中只有FPGA或者只有DSP的话还能实现大规模的实时信号处理系统吗?20.2.5 基于FPGA的实时信号处理系统与流水线设计方法回答当然是肯定的,咱们这里就只讨论FPGA,对于FPGA虽然在做算法控制结构比较复杂的设计时没有DSP灵活,但是同样能够完成设计,并且对于数据量大,处理速度高的系统设计它还是有很大的优势。所以即使硬件系统中只有FPGA,也能实现大规模的实时信号处理系统。那么为什么说FPGA在做数据量大,处理速度高的系统设计时有很大的优势呢?20.2.5 基于FPGA的实时信号处理系统与流水线设计方法如
92、下页图所示,FPGA之所以在做数据量大,处理速度高的系统设计时有很大的优势,就是因为FPGA能够进行流水线设计,很多数据能够并行处理,而且互不影响。流水线设计实验3假设该设计为某实时通信系统的一个模块,该通信系统中FPGA外围的晶振为50MHz,假设信息源只有两个数分别为0000和0.0311,但是我们需要连续不断的,循环的,反复的无休止的发送这两个数,每次每个数占用的时间为1000ns,并且要对每次发送的数进行累加,然后将累加结果和值进行比较,若累加值小于值直接将累加结果做为该设计的输出,反之则将累加值减2后的差值做为该设计的输出,同时下次累加需在该差值的基础上进行累加。流水线设计实验4某实
93、时通信系统需要在流水线设计实验3的基础上再增加一项功能,需要对流水线设计实验3的输出数据求正余弦值,得到的正余弦值即为该设计的输出。第21章 基于FPGA/CPLD的数字滤波器的原理与工程应用在本章我们要研究的是基于FPGA/CPLD的数字滤波器,现在数字滤波器日益成为一种主要的数字信号处理运算。因为RLC元器件实现的模拟滤波器有很多的弊端,所以数字滤波器正在迅速地代替传统的模拟滤波器。21.1 数字滤波器的原理数字滤波器通常都是应用于修正或改变时域中信号的属性。最为普通的数字滤波器就是线性时间不变量(linear time-invariant,LTI)滤波器。LTI与其输入信号之间相互作用,
94、经过一个称为线性卷积的过程。表示为y=fx,其中f是滤波器的脉冲响应,x是输入信号,而y是卷积输出。线性卷积过程的正式定义如下:yn=xn f n=xkf n-k= fkxn-kLTI数字滤波器通常分成有限脉冲响应(FIR)和无限脉冲响应(IIR)两大类。顾名思义,FIR滤波器由有限个采样值组成,将上述卷积的数量降低到在每个采样时刻为有限个。而R滤波器需要执行无限数量次卷积。带有常系数的FIR滤波器是一种LTI数字滤波器。L阶或者长度为L的FIR输出对应于输入时间序列xn的关系由一种有限卷积数量形式给出,具体形式如下:yn=xn*fn=xk f n-k其中从f 0 0一直到f L-1 0均是滤
95、波器的L阶系数,同时也对应于FIR的脉冲响应。21.2常系数的FIR滤波器21.3 FPGA/CPLD实现数字滤波器利用FPGA/CPLD设计滤波器时首先应该清楚滤波器的设计要求。例如低通滤波器的设计要求就包括:通频带0wp、过渡频带wpws和截至频带ws100MHz等,其中假定采样频率为200MHz。在大多数应用场合,滤波器都是LTI的(也就是线性时间不变量),系数不随时间变化。那么确定滤波器系数就成为一个很关键的因素,我们可以利用System View或其他仿真软件来产生滤波系数。21.3 FPGA/CPLD实现数字滤波器21.3 FPGA/CPLD实现数字滤波器在FPGA/CPLD中我们
96、可以通过VerilogHDL编程或者IP核生成器来实现数字滤波器的线性卷积过程。利用Verilog HDL实现数字滤波器的线性卷积过程中我们可以用单口RAM来存储滤波器系数。利用IP核生成器来实现数字滤波器的线性卷积过程中我们可以直接将滤波器系数调入到IP核中。21.4 FIR数字滤波器算法原理及FPGA的工程实现数字滤波器正在迅速地代替传统的由R、L、C元件和运算放大器组成的模块滤波器并且日益成为数字信号处理和软件无线电等技术的一种主要处理环节。乘累加运算是实现大多数数字信号处理算法的重要途径,而分布式算法则能够大大提高乘累加运算的效能。利用FPGA实现分布式计算可以大大提高计算的速度,在高
97、速信号处理中发挥着重要作用。21.4.1传统的乘累加结构FIR数字滤波器基本理论FIR滤波器被称为有限长脉冲响应滤波器,与IIR数字滤波器相对应,它的单位脉冲响应h(n)只有有限个数据点。输入信号经过线性时不变系统输出的过程是一个输入信号与单位脉冲响应进行线性卷积的过程,即:上式中,x(n)是输入信号,y(n)是卷积输出,h(n)是系统的单位脉冲响应。可以看出,每次采样y(n)需要进行k次乘法和k-1次加法操作实现乘累加之和,其中k是滤波器单位脉冲响应h(n)的长度。可以发现,当k很大时,每计算一个点,则需要很长的延迟时间。21.4.2 乘累加运算的位宽分配数字信号处理算法最主要的就是进行乘累
98、加运算。假设采样信号的位宽用N来表示,则N位与N位的乘累加结果需要2N位的寄存器来保存;如果两个操作数都是有符号数,则乘积只有2N-1个有效位,因为产生了两个符号位。为了使累加器的结果不产生溢出,需要对累加器进行冗余设计,也就是说要在累加器2N的位宽上多设计出K位,累加器的长度M计算方式如下(L为滤波器的长度):对于无符号数:M=2N+K=2N+log2 L对于有符号数:M=2N=K=2N+log2 L-121.4.3 乘累加运算的分布式算法概述分布式算法在20多年前被首次提出,但直到Xilinx发明FPGA的查找表结构以后,分布式算法才在20世纪90年代初重新受到重视,并被有效地应用在FIR
99、滤波器的设计中。分布式算法是基于查找表的一种计算方法,在利用FPGA实现数字信号处理方面发挥着重要的作用,可以大大提高信号的处理效率。它主要应用于数字滤波、频率转换等数字信号处理的乘累加运算。21.4.4 乘累加运算的分布式算法原理分析设Ak是已知常数(滤波器系数),xk(n)是变量,可以看作是n时刻的第k个采样输入数据,y(n)代表n时刻的系统响应。那么它们的内积为下式(1) :21.4.4 乘累加运算的分布式算法原理分析在上式(1)中,xk(n)变量可以写成下式(2)的形式:(2)式中,B为数据格式的字长,xkb是变量的二进制位,只有“0”和“1”两种状态。将(2)式代入(1)式便可以推导
100、出下页公式:21.4.4 乘累加运算的分布式算法原理分析21.4.5 FPGA实现过程中查找表的构造方法上页公式中括号里的每一乘积项代表着输入变量的某一位与常量的二进制“与”操作,加号代表着算术和操作,指数因子对括号中的值加权。如果事先构造一个查找表,该表存储着括号中所有可能的组合值,就可以通过所有输入变量相对应位的组合向量(XNb,X(N-1)b,.x1b)对该表进行寻址,该查找表称为DALUT。DALUT的构造规则如下页表1所示。21.4.5 FPGA实现过程中查找表的构造方法21.4.5 FPGA实现过程中查找表的构造方法FPGA实现分布式算法的硬件结构如图1所示:第22章 软件无线电中
101、的数字上下变频技术数字上下变频器的组成与模拟上下变频器类似,包括数字混频器、数字控制振荡器(Numerically Controlled Osillator-NCO)和低通滤波器三部分组成,下面我们就以数字下变频为例来讲述其工作原理22.1 数字下变频器的组成22.2 数字下变频与模拟下变频的比较从工作原理上讲,数字下变频与模拟下变频是一样的,就是输入信号与一个本地振荡信号的乘法运算与模拟下变频相比,数字下变频的运算速度受DSP处理速度的限制,同时其运算速度决定了其输入信号数据流可达到的最高速率,相应地也限定了的最高采样速率;另外数字下变频的数据精度和运算精度也影响着接收机的性能,所以数字下变
102、频器必须进行优化设计在模拟下变频中,混频器的非线形和模拟本地振荡器的频率稳定度、边带相位噪声温度漂移转换速率等都是难以彻底解决的问题这些问题在数字下变频中是不存在的,频率步进、频率间隔等也具有理想的性能,另外数字下变频器的控制和修改较容易等特点也是模拟下变频器所无法比拟的影响数字下变频性能的主要因素有两个:,表示数字本振、输入信号及混频乘法运算的样本数值的有限字长所引起的误差也就是说数字混频器和数字本振的数据位数不够宽,存在尾数截断的情况2,数字本振相位的分辨率不够而引起数字本振样本数值的近似取值。22.3 数字控制振荡器数字控制振荡器在DDC中相对来说是比较复杂的,也是决定性能的最主要因素之
103、一NCO的目标就是产生一个理想的正弦或余弦波(下面用正弦来通称正弦或余弦),更确切地说是产生一个频率可变的正弦波样本,如下式:S(n)=cos(2*(flo/fs)*n)式中,flo为本地振荡频率;fs为DDC输入信号的采样频率查表法产生正弦波样本正弦波样本可以用实时计算的方法产生,但这只适用于信号采样频率很低的情况在软件无线电超高速信号采样频率的情况下,NCO实时计算的方法实现比较困难此时NCO产生正弦波样本最有效、最简便的方法就是查表法,即事先根据各个NCO正弦波相位计算好相位的正弦值,并按相位角度作为地址存储该相位的正弦值数据DDC工作时,每向DDC输入一个待下变频的信号采样样本,NCO
104、就增加一个(flo/fs)相位增量,然后按照(flo/fs)相位累加角度作为地址,检查该地址上的数值并输出到数字混频器,与信号样本相乘,乘积样本再经低通滤波器滤波后输出,这样就完成了数字下变频由以上分析可以看出数控本振由三部分组成:包括相位累加器、相位加法器及正弦表只读存储器相位累加器的作用就是将数字本振频率和本振偏移频率之和转换成相位,每来一个时钟脉冲,相位在原来基础上增加一个相位增量,相位加法器的功能是设置一个的初始相位以满足某些应用的需要第23章 基于FPGA/CPLD的数字调制解调原理与工程应用从原理上说,受调载波的波形可以是任意的,只要已调信号适合于信道传输就可以了。但实际上,在大多
105、数数字通信系统中,都选择正弦信号作为载波。这是因为正弦信号形式简单,便于产生及接收。和模拟调制一样,数字调制也有调幅、调频和调相三种基本形式,并可以派生出多种其他形式。数字调制与模拟调制相比,其原理并没有什么区别。不过模拟调制是对载波信号的参量进行连续调制,在接收端则对载波信号的调制参量连续地进行估值;而数字调制都是用载波信号的某些离散状态来表征所传送的信息,在接收端也只要对载波信号的离散调制参量进行检测。数字调制信号,在二进制时有振幅键控(ASK)、移频键控(FSK)和移相键控(PSK)三种基本信号形式。23.1二进制振幅键控(ASK)设信息源发出的是由二进制符号0、1组成的序列,且假定0符
106、号出现的概率为P,1符号出现的概率为1-P,它们彼此独立。二进制振幅键控信号中,若一个信号状态始终为零,相当于处在断开状态,此时常称为通断键控信号(OOK信号)。如同AM信号的解调方法一样,OOK信号也有两种基本的解调方法:非相干解调及相干解调(同步检测法)。二进制振幅键控方式是数字调制中出现最早的,也是最简单的。这种方法最初用于电报系统,但由于它在抗噪声的能力上较差,故在数字通信中用的不多。不过二进制振幅键控常常作为研究其他数字调制方式的基础,因此熟悉它是必要的。23.1二进制振幅键控(ASK)23.2 二进制移频键控2FSK2FSK信号便是0符号对应于载频w1,而1符号对应于载频w2(与w
107、1不同的另一载频)的已调波形,而且w1与w2之间的改变是瞬间完成的。容易想到,2FSK信号可利用一个矩形脉冲序列对一个载波进行调频而获得。这正是频率键控通信方式早期采用的实现方法,也是利用模拟调频法实现数字调频的方法。2FSK信号的另一产生方法便是采用键控法,即利用受矩形脉冲序列控制的开关电路对两个不同的独立频率源进行选通。二进制FSK信号的常用解调方法是采用非相干检测法和相干检测法。二进制移频键控(2FSK)信号还有其他的解调方法,比如鉴频法、过零检测法及差分检测法等。23.2 二进制移频键控2FSK23.3 二进制移相键控及二进制差分相位键控(2PSK及2DPSK)二进制移相键控(2PSK
108、)方式是受键控的载波相位按基带脉冲而改变的一种数字调制方式。2DPSK方式是利用前后相邻码元的相对载波相位值去表示数字信息的一种方式。23.4 基于FPGA/CPLD的MSK调制解调的工程应用为了便于信号发射,提高信道利用率、发射功率效率以及改善通信质量,人们研制出各种通信信号的调制样式。尽管调制样式多种多样,但实质上调制不外乎用调制信号去控制载波的某一个(或几个)参数,使这个参数按照调制信号的规律而变化。调制信号可以分别“寄生”在已调信号的振幅、频率和相位中,相应的调制就是调幅、调频和调相这三大类熟知的调制方式。23.4 基于FPGA/CPLD的MSK调制解调的工程应用MSK信号就是调频这一
109、大类中的一种相位连续的移频键控。其主要特点是包络恒定,带外辐射小,实现较简单,可用于移动通信中的数字传输。其数学表达式为:2Tt +n )S(t) = cos(ct + ann n 1 n n 23.4 基于FPGA/CPLD的MSK调制解调的工程应用在上页式中,T为码元宽度, 为第n个码元中的信息,其取值为1或1,是第n个码元的初始相位,并且有实际上,当输入符号为1时,发送的角频率为:nnnnaan 1n 1= a a时时c2 T+23.4 基于FPGA/CPLD的MSK调制解调的工程应用当输入符号为1时,发送的角频率为:根据调制指数的定义:c2 Th =2 倍 的 调 制 频 偏数据速率)
110、 (c 23.4 基于FPGA/CPLD的MSK调制解调的工程应用对于MSK就是:上式也可以写为下式形式:即为下式:2 ()0 .5h14 TT=2T2 / T(c +h =)2T = 0.52T2T(c +) (c ) =23.4 基于FPGA/CPLD的MSK调制解调的工程应用由上页的公式表明,这两个频率在一个码元T时间末,刚好相差。它们是相差半个周期的正弦波,产生的相差最大,同时码元在交替点保持相位的连续 。23.4 基于FPGA/CPLD的MSK调制解调的工程应用MSK信号具有如下特点:1)已调制信号的振幅是恒定的;2)信号的频率偏移严格地等于正负1/4Ts,相应的调制指数h(f2f1
111、)Ts=1/2;3)以载波相位为基准的信号相位在一个码元期间内准确地线性变化正负/2;4)在一个码元期间内,信号应包括四分之一载波周期的整数倍;5)在码元转换时刻信号的相位是连续的,或者说,信号的波形没有突跳。23.5高斯最小移频键控(GMSK)方式MSK调制方式的突出优点是信号具有恒定的振幅及信号的功率谱在主瓣以外衰减较快。然而,在一些通信场合,列如移动通信中,对信号带外辐射功率的限制是十分严格的,比如必须衰减70-80db以上。GMSK是在MSK调制器之前加入一高斯低通滤波器。也就是说,用高斯低通滤波器作为MSK调制的前置滤波器。如图:前置滤波器MSK调制器图中高斯低通滤波器必须满足下列要
112、求:1)带宽窄,且是锐截至的;2)具有较低的过脉冲相应;3)能保持输出脉冲的面积不变。以上要求分别是为了抑制高频成分、防止过量的瞬时频率偏移以及进行相干检测所需要的。GMSK信号的解调与MSK信号完全相同。第24章 基于FPGA/CPLD的多速率信号处理原理与工程应用对于高速无线通信系统,随着采样速率的提高带来的另外一个问题就是采样后的数据流速率很高,导致后续的信号处理速度跟不上,特别是对有些同步解调算法,其计算量大,如果数据吞吐率太高是很难满足实时性要求的,所以很有必要对A/D后的数据流进行降速处理。例如,一个实际的无线电通信信号带宽一般为几十千赫兹到几百千赫兹,实际对单信号采样时所需的采样
113、速率是不高的,所以对这种窄带信号的采样数据流进行降速处理或者叫二次采样是完全可能的。多速率信号处理技术为这种降速处理的实现提供了理论依据,其中最为重要也是最为基本的理论是抽取和内插。24.1 整数倍抽取多速率信号处理中的抽取理论是软件无线电接收机的理论基础。所谓整数倍抽取是指把原始采样序列每隔(D1)个数据取一个,以形成一个新序列,其中D为抽取倍数。需要注意的是为了防止抽取后的频谱发生混叠,在抽取前需要先用一个数字滤波器对原信号进行滤波。经过抽取大大提高了信号的频域分辩率。24.2 整数倍内插多速率信号处理中的内插理论是软件无线电发射机的理论基础。所谓整数倍内插就是指在两个原始抽样点之间插入(
114、I-1)个零值,而只有将内插零点后的频谱,进行低通滤波才能将插入的零值点变为准确内插值,经过内插将大大提高信号的时域分辩率。24.3 具有上变频作用的内插器利用内插(插入零点)不仅可以提高时域分辨率,而且也可以用来提高输出信号的频率。内插后我们得到的信号频谱其实是原始基带谱的各次倍频分量的叠加,所以内插后再加一个带通滤波器即可取出原始基带谱的某一倍频分量。显然这时的内插器实际上起到了上变频作用,使输出频率最大可以提高(I-1)倍,而其信号的频谱结构不变。24.4 取样率的分数倍变换之前我们讨论的整数倍抽取和内插实际上是取样率变换的一种特殊情况即整数倍变换的情况,然而在实际中往往会碰到非整数倍即
115、分数倍变换的情况。那么分数倍变换的情况怎么来实现呢?24.4 取样率的分数倍变换假设分数倍变换的变换比为:R=D/I那么取样率的分数倍变换可以通过先进行I倍内插再进行D倍抽取来实现。需要注意的是必须内插在前,抽取在后,以确保其中间序列的基带谱宽度不小于原始输入序列谱或输出序列谱的基带频谱宽度,否则将会引起信号失真。第25章 基于FPGA/CPLD的同步技术原理与工程应用在软件无线电系统中,在接收端要正确地接收对方的信息,接收方必须从接收信号中恢复出载波信号,使双方载波的频率、相位一致,这就是载波同步。在数字通信时,除了载波同步外,还需要位同步,帧同步。因为消息是一串连续的码元序列,解调时必须知
116、道码元的起止时刻,即码同步。在数字通信时,往往是一定数量的码元表示某种信息,这些码元就构成了一帧,接收时也需要知道帧的开始与结束,即帧同步。在本章我们主要讲述位同步。位同步可分为自同步和外同步两种。自同步是直接从接收的信号中提取位同步信息,而外同步是在发射端专门发射导频信号。例如,在基带信号频谱的零点插入所需的导频信号,在接收端利用窄带滤波器就可以从解调后的基带信号中提取所需的同步信息。插入导频也可以使数字信号的包络随同步信号的某种波形变化。在相移或频移键控时,在接收端只要进行包络检波就可得到同步信号。25.1 位同步在某些通信设备中,还通常让发射方在发射信息之前,先发射一串特定的码(同步码)
117、来进行位同步。例如常用的一串0,1交替序列。接收方接收到同步码字后与本地产生的定时脉冲作互相关运算。根据相关的结果,不断调整时钟脉冲的位置,当相关值最大时认为同步信号对准了。自同步法是数字通信中常用的方法,它可以通过滤波法、延迟相干法、锁相方法等实现。对于不归零的二进制随机序列,不能直接从中滤出位同步信号,但可以通过波形变换,变成归零信号,然后进行滤波,就可以滤出同步信号了。迟延相干法与相干解调类似,不过其迟延时间j要小于码长T。接收信号与迟延信号相乘后,就可以得到一组码冲宽度为j的矩形归零码,这样就可以得到位同步信号的频率分量。位同步信号的大小与移相数值有关,当移相后的信号与原信号同相或反相时输出的位同步信号最大。