矢量信号源在通信领域占据越来越重要的地位,它能够产生任意波形信号、IQ基带信号、丰富的调制信号以及第三、第四代移动通信标准信号。目前市场上的矢量信号源输出频率高,调制带宽宽,产生信号多样化,但价格也十分昂贵。
摘 要: 实现了一种应用于矢量信号源中的新型IQ调制器。其中,硬件电路包括FPGA电路,滤波、放大、输出电路以及控制器电路,软件设计主要有基带信号发生器和基于改进型CORDIC算法的IQ调制。该调制器不但可以直接实现MASK,MFSK,MPSK,QPSK,MSK以及QAM等调制,还可以产生正交载波信号。仿真与实际测试结果证明了该设计的正确性和优越性。
关键词: 低价sci论文,矢量信号源,IQ调制器,FPGA,CORDIC算法
Design and implementation of IQ modulator in vector signal generator
RAO Jin?ling, NIE Wei
(Computer System and Communication Laboratory, Beijing University of Chemical Technology, Beijing 100029, China)
Abstract: A novel IQ modulator used in vector signal generator was implemented, whose hardware circuit includes FPGA circuit, filtering circuit, amplification circuit, output circuit and controller circuit, and software design mainly includes baseband signal generator and IQ modulator based on modified?CORDIC algorithm. The IQ modulator can not only implement the modulation of MASK, MFSK, MPSK, QPAK, MSK and QAM directly, but also generate orthogonal carrier signal. Simulation and practical testing results demonstrate the correctness and superiority of the design.
Keywords: vector signal generator; IQ modulator; FPGA; CORDIC algorithm
0 引 言
国内研究专用矢量信号源较多,如文献[1]实现了专用TDD?LTE矢量信号源的研制。在矢量信号源中,关键技术之一是IQ调制技术。IQ调制器可采用专用调制芯片或专用DDS芯片实现,也可以采用可编程逻辑器件编程实现。文献[2]采用FPGA和DDS技术实现MQAM调制器,系统集成度高,芯片占用面积小,产生的信号也具有抗干扰性强的特点。但是该方法需DDS模块产生载波信号,还需要调用乘法器模块,且易产生IQ幅度不平衡,相位不正交等误差。文献[3]采用CORDIC算法完成数字调制,有效节省硬件资源和功能损耗,且能够达到载波高精度的要求。
本文采用文献[4]中的改进型CORDIC(Coordinated Rotation Digital Computer,坐标旋转数字计算)算法实现IQ调制器,同步完成载波发生器与信号调制,可直接得到调制信号,无需ROM存储波表,无需调用内置乘法器,且能够实现多种调制。改进型CORDIC算法采用改进算法结构的方式提高并行计算速度,采用并行流水线的方式降低算法运行时间,进一步节约了硬件资源,而且提高程序运行速度。
1 硬件电路设计
IQ调制器由数字和模拟两部分电路组成。数字电路包括FPGA模块和控制器模块;模拟电路由滤波器、放大器、输出阻抗匹配以及输出保护电路构成。其结构如图1所示。
图1 硬件结构图
由图1可以看到,FPGA模块的设计包括D/A电路扩展、JTAG接口以及时钟。该模块主要完成IQ调制功能,产生各种调制信号;滤波电路是滤除D/A 转换带来的高频成分,滤波后的信号经过电压和功率放大提高带负载能力,匹配与保护电路完成输出阻抗匹配及防电压过载保护;控制器模块的设计包括键盘和显示,与FPGA模块接口以及与RS 232接口。MCU完成用户接口,接收用户输入的命令和参数,使FPGA模块完成相应的功能和指标。
1.1 FPGA模块设计
FPGA模块的设计包括芯片的选择,外围电路设计(电源、JTAG及时钟),以及D/A扩展电路设计。
根据程序仿真结果,程序需求1 200左右逻辑单元,考虑将来改进和扩展需要,这里选择EP1C6Q240C8N;时钟选择20 MHz有源晶振,由FPGA芯片内部锁相环倍频到100 MHz,作为系统时钟;芯片供电采用2个LM317将5 V电源电压变换到3.3 V和1.5 V;JTAG和AS接口共享一个10针下载口(通过跳线转换);存储芯片采用EPCS1SI8N。
由于D/A转换存在量化误差以及在转换过程中的非线性误差,为了减少此类误差,一般选取位数尽量宽的D/A,考虑到性价比,这里选取12位D/A。本模块输出最高频率为25 MHz,选择TI公司的THS5661。它是12位D/A,数据转换速率为125 MSPS,SFDR(无杂散动态范围)在40 MHz 时是60 dBc。由于该D/A芯片是电流输出,所以要经过运算放大器实现电流到电压的转换,其电路如图2所示。
图2 D/A转换输出电路图
图中:[Cfb]电容可以滤除输出电流的台阶;[Rfb]为反馈电阻。该电路输出电压最高为1.25 V。参考THS5661芯片手册完成与FPGA芯片管脚互连,其中模式选择管脚(MODE)接高电平,即采用二进制补码的形式输入。
1.2 滤波器、功率放大器和输出电路设计
(1) 滤波器设计
因为D/A转换之后的信号含有大量高频成分,需要滤波电路对信号进行滤波,以得到较好的频谱特性。由于信号输出的最高频率为25 MHz,取截止频率为35 MHz,阻带截止频率为75 MHz,通带内衰减不高于1 dB,阻带内衰减不低于40 dB。根据这些要求,选择通带内幅度特性起伏最小的巴特沃斯滤波器。通过查表确定采用8阶巴特沃斯低通滤波器,同时得到电路的各元件值。
(2) 功率放大器设计
根据设计要求,信号源输出最大功率为11.5 dBm(6 Vpp)。D/A转换后输出信号电平为1.25 Vpp,再经过滤波器(衰减1 dB,约1.1 V),所以需要对电压和电流进行放大(增益[G=]6),这里采用两级放大的方式,第一级是电压放大;第二级是功率放大电路。电压放大选用AD8009芯片,其单位带宽增益为1 GHz,在75 MHz时增益平稳度为0.1 dB。功率放大选用THS6022,它是电流反馈性运算放大器,同时具有高速,低畸变,宽供电范围等特点,在50 Ω负载供电电压为±15 V,RF为1 kΩ时,输出电流可达250 mA(大于120 mA即可满足设计要求)[5]。
(3) 输出电路设计
输出电路包括阻抗匹配和输出保护两部分。输出阻抗为50 Ω,这里通过并联多个匹配电阻方式实现。为了防止电源反接或过高的电压接入端口,在输出端采用二极管钳位保护电路。
1.3 控制器电路
控制电路由单片机、键盘、LCD显示、与FPGA接口和RS 232接口四部分组成。其中,单片机选择AT89C52,键盘选择4×4十六位键盘(10个数字键,6个功能键),LCD选择BM240128A,采用点阵图形和菜单的方式设计界面,与PC机的接口采用标准异步串口通过MAX232实现。主要功能包括码元设定、调制选择和调制参数等。
2 软件设计
软件设计包括基带信号发生器和基于改进型CORDIC算法的IQ调制。其中,基带信号发生器主要是m序列的产生和基带调制;基于CORDIC算法的IQ 调制包括相位累加器,象限映射控制器,前端处理,后端处理,以及改进型CORDIC算法模块。IQ调制器软件实现的原理框图如图3所示。
图3 IQ调制器原理框图
图中,m序列发生器产生PN码作为调制器的基带信号;基带调制模块用于产生各种调制方式的基带I,Q信号;IQ模块中,相位累加器运算位数是32位,用于控制载波频率,保证频率分辨率为[(1232)fclk。]同时,为了减少计算量,截取高16位的相位值送入到改进型CORDIC算法模块。其中,高3 位的数据用于象限映射控制信号,分别输入到前端处理和后端处理模块。输入信号有频率字、时钟,输出信号有两路,作为载波发生器时可以同时输出严格正交的正弦信号,作为调制器时[Xout]输出的就是已调信号。
2.1 基带信号发生器的设计
IQ调制的两路基带信号可以是基带信号发生器内部产生,也可以从外部输入,由控制器决定。内部基带信号采用广泛适用的PN码序列,有PN5,PN7,PN9,PN11等多种选择。以PN9为例,它是周期为29-1的m序列,其特征多项式为[f(x)=1+x4+x9。]根据特征多项式,确定其反馈系数(C0,C4,C9),进而得到该序列码。
基带调制是根据不同的调制方式将基带信号调制成相应的基带I,Q信号。可实现的调制方式有多种QPSK(OQPSK,DQPSK, [π4]QPSK)调制、MSK调制和QAM(16QAM和64QAM)调制,为了实现调制器的通用性,将MASK,MFSK,MPSK也加入到其中 [6]。
下面以QPSK,16QAM和64QAM为例,采用星座图映射的方式实现基带调制[7?9]。对输入的数据序列进行串/并转换,第奇数位输出到I路,第偶数位输出到Q路。为了减少误码率,星座图映射采用格雷码的方式。对于QPSK信号,映射成四个星座符号;对于 OQPSK,DQPSK,[π4]QPSK,则需要进行在QPSK调制的基础上进行编码或逻辑映射处理;同理,16QAM调制映射成16种星座符号;64QAM调制映射成64种星座符号。下面以表格的形式给出本设计中QPSK,16QAM和64QAM的星座图映射,如表1~表3所示。
表1 QPSK星座图映射
[二进制码元&电平值 /V&二进制码元&电平值 /V&0&+1&1&-1&]
表2 16QAM星座图映射
[二进制码元&电平值/V&二进制码元&电平值 /V&00&+3&10&-1&01&+1&11&-3&]
另外,MASK,MFSK,MPSK较正交调制实现要简单。MASK调制相当于QAM中的幅度调制,不需要相位调制,不进行串/并转换,直接调制载波幅度;对于MFSK直接控制载波发生器的频率字;以及MPSK调制用基带信号控制载波的初始相位信息。这些都可以在改进型CORDIC模块中实现。对于实现较为复杂的MSK,需要用到两次乘法,所以要多次调用CORDIC算法模块。 表3 64QAM星座图映射
[二进制码元&电平值 /V&二进制码元&电平值 /V&000&+7&100&-7&001&+5&101&- 5&011&+3&111&-3&010&+1&110&- 1&]
2.2 基于CORDIC算法的IQ调制
IQ调制采用CORDIC算法实现,它的优点是取代传统方法中的载波发生器和乘法器,节省了大量的资源,提高了运算精度以及程序运行的最大速度。
CORDIC算法含有旋转和向量两种运算模式,其中,旋转模式完成三角函数值的计算原理如下[10]:[X=Xcosθ-YsinθY=Xsinθ+Ycosθ] (1)
为了用数字方法实现上述公式,将[θ]写成如下形式:
[θ≈i=0n-1δiθi=i=0n-1σitan-1(2-i)] (2)
式中:[δi=±1],[θi=tan-1(2-i)]。
对式(1)进行恒等变换(提取因子[cosθi,]并用[2-i]替代[tanθi]),可得CORDIC算法的迭代公式如下:
[Xi+1=ki(Xi-δi2-iYi)Yi+1=ki(Yi+δi2-iXi)Zi+1=Zi-δitan-1(2-i)] (3)
式中:[i]为旋转次数;[δi]是第[i]次旋转方向;[Zi+1]是第[i+1]次旋转剩余角度(若[Zi+1≥0,]则[δi+1]为+1;否则[δi+1]为-1);[ki]是第[i]个幅度修正因子[11],[ki=cosθi]=
[11+2-2i][。]
式(1)中,初值取[X=1,][Y=0]时,由[X]路[Y]路计算得到的就是载波信号[cosθ],[sinθ]。根据IQ调制表达式 [sk(t)=Xkcosωt+Yk(-sinωt)]可知,CORDIC实现三角函数数值[X]路的计算过程正是IQ调制的过程。其中,算法的初值 [X,Y]对应两路基带信号,由调制方式确定。
设计中星座图映射后的电平值与CORDIC算法模块的初值映射关系如表4所示。
表4 电平值与CORDIC算法模块输入初值对应关系
[电平值 /V&CORDIC初值&电平值 /V&CORDIC初值&+7&011100000000&- 1&111100000000&+5&010100000000&- 3&110100000000&+3&001100000000&- 5&101100000000&+1&000100000000&- 7&100100000000&]
本设计采用改进型的CORDIC算法,较传统的CORDIC算法,提高了运算速度。改进算法的实现采用多级旋转并行计算旋转方向,采用并行流水线的方式进行旋转迭代,提高了程序的最大运行速度。改进型CORDIC结构的原理图如图4所示。
图4 改进型CORDIC算法结构图
如图4所示,采用三级旋转结构。第一级有5次迭代,其旋转方向预存入一个小的ROM表;第二级有4次迭代,其旋转方向采用估计的方式进行预测;第三级在误差范围允许内,用6×6 b的乘法代替迭代运算。最终实现两路正弦信号的输出。
程序按照图3的原理结构图,采用VHDL语言和原理图结合的方式,在Quartus Ⅱ编译环境下,采用模块化的思想实现。图5是IQ调制器实现顶层原理图,主要有m序列产生,星座图映射,相位累加器,象限映射控制器,前端处理,后端处理以及CORDIC算法的计算模块。
图5中,输入信号有频率控制字fcw,基带信号产生时钟clkbase,IQ调制模块运行时钟clk,以及复位信号;输出有xout和yout,其中xout为调制信号输出。
2.3 控制器程序设计
控制器程序包括主程序和执行程序。主程序完成系统自检和初始化,并通过显示器显示启动界面和主界面。执行程序通过键盘完成相应功能和参数的选择和设定。主程序流程图如图6所示。
主界面由菜单区、方式选择区/参数设置区和状态显示三部分构成,如图7所示。
3 仿真与验证
本文通过Modelsim仿真、Matlab性能分析以及实际测试来验证设计的正确性和优越性。
3.1 Modelsim仿真及Matlab分析
IQ调制器可以产生多种调制信号,限于篇幅,给出64QAM的仿真图。根据Quartus Ⅱ时序分析得到设计支持的最大系统时钟为100 MHz,仿真采用系统时钟为20 MHz,频率字为226,即载波频率为312.5 kHz,基带信号频率即PN码产生时钟为78.125 kHz。得到Modelsim仿真图如图8所示。其中,图8(a)是图8(b)的放大图,可以直观地看到幅度和相位的跳变。图中信号从上至下依次是系统时钟,基带信号时钟,IQ两路基带信号,调制信号以及PN9序列,可以明显地看出结果的正确性。
图6 控制器主程序流程图
另外,由该方式产生的载波具有很高的SFDR。这里取时钟clk为100 MHz,频率字任取为220(32位),输出频率为24.4 kHz。图9是用Matlab对仿真数据进行FFT变换得到的载波频谱图,可以直观地看出SFDR的值。
图7 控制器主界面结构图
图8 Modelsim仿真图
图9 余弦信号频谱图
由图9可以看出,此时SFDR为-78 dB。由于DDS中存在相位截断误差和幅度量化误差,对于相位截断为16位,幅度量化为13位的输出信号,其理论值为-80.02 dB。SFDR接近理论值。由此可表明本方法产生的信号性能良好。
3.2 实际验证
将程序下载到硬件电路中进行验证,得到实际产生的64QAM调制图形,为了方便观察,设置载波频率为3.05 kHz,基带信号时钟为1 kHz。测试结果如图10所示。图10(a)显示调制信号具有良好的波形。从示波器参数中可以看到载波频率都为3.05 kHz左右,与理论值相符。
4 结 语
本文实现了一种新型的矢量信号源IQ调制器,给出了硬件电路结构和软件设计方法以及仿真和测试结果。该调制器采用星座图调制和CORDIC算法,实现多种调制方式,还能产生严格正交的载波信号用于其他电路。使用在矢量信号源中,减少了资源的占用,提高了程序的运行速度,节约成本。仿真和测试结果验证了设计的正确性。将该矢量信号源应用于实验环境,可以满足大量通信技术方面的实验需要,具有一定的实用意义。
图10 64QAM实际测试图测试结果
参考文献
[1] 徐文虎,蒋政波,洪伟,等.便携式TDD-LTE矢量信号发生器的研制[J].电子测量与仪器学报,2011,25(6):546-552.
[2] 董明佶.基于现代DSP技术的全数字MQAM调制器的设计[J]. 电视技术,2011,35(9):41?42.
[3] 姜建文,张朝杰,金小军,等.基于 CORDIC 算法的微小卫星发射机设计与实现[J].传感技术学报,2010,23(1):57?61.
[4] 聂伟,饶金玲.基于改进型CORDIC算法和FPGA的DDS实现[J].电子技术应用,2013,39(12):45?48.
[5] 赵荣,岳云.ADSL/HDSL/VDSL用双差分线路驱动器THS6022的特性及应用[J].电子元器件应用,2002,4(6):35?38.
[6] 聂伟,王昭辉,汤作伟.基于FPGA的数字调制器的实现[J].实验技术与管理,2007,24(9):89?92.
[7] 李永超,南京,陆锐敏.基于FPGA的π/4DQPSK跳频调制器的设计与实现[J].电讯技术,2012,52(2):190?193.