2.2 现场可编程门阵列(FPGA)
现场可编程门阵列(FPGA)是除CPLD外的使用另一种可编程逻辑形成的另一类大规模可编程逻辑器件,也就是可编程的查找表(Look Up Table,LUT)结构,LUT是可编程的最小逻辑构成单元。大部分FPGA采用了基于SRAM(静态随机存储器)的查找表逻辑来形成结构,就是逻辑函数发生器是用SRAM来构成。一个N输入LUT可以实现N个输入变量的任何逻辑功能,4输入LUT如图2所示。
图2 FPGA查找表单元
3. 系统设计
制定的整体设计方案以FPGA为核心,16位拨码开关送来的频率控制字和相位控制字将存在ROM的波形数据相应输出给D/A转换器THS5651完成数模转换,继而经过低通滤波器进行滤波得到两路波形。设计分为FPGA信号发生模块、D/A转换模块、滤波模块等,此外在后面加幅度控制模块就可以实现对幅度的控制功能。系统总体框图如图3所示。
图3 系统总体框图
3.1 系统硬件设计
根据DDS原理,合成信号的频率是由频率控制字来控制的[2,3],模拟信号经A/D器转换后,变成数字信号D。转换速度和数字信号D的字长(转换位数)由A/D转换器决定的。当模拟信号经过A/D转换后,输出与信号幅度相对应的数字信号,该数字信号与载波控制字相加,就会获得一个与A/D转换值相对应的频率控制字,从而获得一个变化的频率,该频率受模拟信号控制,即完成调频的过程[2,3]。
在相位中可以进行无相位和有相位控制。此设计是进行有相位的图形仿真,利用EDA技术和FPGA实现移相信号发生器的设计。相位累加器是DDS直接频率合成器的核心,累加器在工程实践中一般采用数字全加器和数字寄存器的组合来完成相位的累加过程。在基本DDS基础上加以修改就可以实现移相信号发生器的设计,它是基于DDS模型的设计。它在DDS设计的基础上又增加了相位控制字的输入,多了一个波形数据ROM,它的地址线没有经过移相用的10位加法器,而直接来自相位累加器,所以用于基准信号输出。所以该移相信号发生器的设计原理图如图3所示。
本设计使用了Quartus II中的LPM(Library of Parameterized Modules,参数可设置模块库)宏功能模块,选择LPM库中的适当模块,并为其设定适当的参数,方便地调用了已有的设计成果,当然也可以通过VHDL例化生成。
其中图4中相位累加器和移相加法器的数据位宽N、L分别取32位和10位,频率控制字位宽M取8位(与相位累加器另一输入端的位27~位20对应),相位控制字位宽K取8位(与移相加法器另一输入端的位9~位2对应)[2,3]。
图4 移相信号发生器原理图
相位累加器是整个DDS的核心,是由加法器和寄存器通过级联来构成的。加法器在上一个时钟作用时产生的相位数据通过累加器送至加法器的输入端,使得加法器在下一个时钟作用时能够继续与频率控制字(K)相加,以实现相位的累加,在相位累加器的累加结果等于或大于2的n位时就会产生一次溢出,回到初始状态,完成一个周期性的波形输出[2,4-6]。该设计中先建立底层模块中的32位加法模块adder32b.vhd、32位寄存器模块reg32b.vhd,10位加法模块adder10b.vhd,10位寄存器模块reg10b.vhd,然后利用Quartus II菜单命令“File”再点击“Create/Update”命令,分别将其转换为模块符号文件(.bsf)。在建立的顶层文件 dds.bdf中,分别调用上述模块符号和LPM_ROM以及锁相环模块,手动连接[2-6]。该设计中有7个主要器件:32位加法器addeer32b、32位寄存器reg32b、10位加法器adder10b,10位寄存器reg10b,波形数据rom、锁相环pll20。其中在波形数据rom中放置了一个周期为1024个点的正弦信号波形数据,精度10位,输出10位 pout[9..0]和fout[9..0]分别与高速D/A转换器THS5651相接。锁相环pll20的输入是20MHz,输出是75MHz,fword是频率控制字输入,为了实验方便,选择输入8位,加法器的32位的其他位挂接在固定电平上。fword是8位频率控制字,控制输出信号的频率;pword是8位相移控制字,控制输出信号的相移量;adder32b和adder10b分别是为32位和10位加法器;rom是存放正弦波数据的ROM,10位数据线,10位地址线,其中的数据文件是sinn.mif,可以用是VC++生成;reg32b和reg10b分别是32和10位寄存器;pout和fout分别为10位输出,可以分别与高速D/A相连接,它们分别输出参考信号和相移正弦信号。 VHDL基于FPGA的移相信号发生器设计+Quartus仿真+源程序(4):http://www.youerw.com/zidonghua/lunwen_808.html