基于FPGA技术的多功能DDS信号发生器设计
- 格式:pdf
- 大小:1.05 MB
- 文档页数:3
收稿日期:2007-02 作者简介:蔡丽(1973—),女,硕士,讲师,主要从事电子技术、E DA 的教学和研究。
基于FPG A 技术的多功能DDS 信号发生器设计蔡 丽1,翟小东1,高云红2(1.中国矿业大学信电学院,江苏徐州221008;2.沈阳航空工业学院自动控制系,辽宁沈阳110034) 摘要:介绍DDS 的基本理论及新型FPG A 器件(EP1K10)的特点,并结合EP1K10对DDS 信号发生器的设计过程及优化方案进行论述。
最终实现频率、相位、复合波形皆可调节的直接数字合成的信号发生器。
关键词:直接数字合成器;单片机;FPG A;复合波形中图分类号:T M930 文献标识码:B 文章编号:1006-2394(2007)08-0016-02A D esi gn of M ulti 2purpose DD S S i gna l Genera tor Ba sed on FPGA TechnologyCA IL i 1,Z HA I Xiao 2dong 1,G AO Yun 2hong2(1.College of I nfor mati on and Electrical Engineering of C UMT,Xuzhou 221008,China;2.Depart m ent of Aut omatic Contr ol,Shenyang I nstitute of Aer onautical Engineering,Shenyang 110034,China )Abstract:The basic theory of D igital D irect Synthesizer and main point of ne w FPG A device EP1K10,and how t o i m p le ment the DDS signal generat or design within EP1K10are intr oduced in this paper .The DDS signal generat or which can adjust signal phase,signal frequency and comp lex wave is designed .Key words:direct digital synthesizer;single chi p m icr ocomputer;FPG A;comp lex wave1 多功能直接数字频率合成DD S 原理假设正弦信号的表达式为如下:y =A sin (φ+φ0)(1)y =A sin (2πft +φ0)=A sin2π(ft +φ0/2π)(2)式(1)中φ为正弦函数的相位,φ0为正弦函数的初始相位。
如果将正弦信号进行数字合成,必须将相位进行采样。
设一个周期相位的二进制采样位数为N ,则采样分辨率为2N,采样的时间间隔表示为:Δt =T /2N =1/(f 02N )(3)t =n Δt (4)式(4)中的n 即为正弦信号的数字域的自变量,其变化频率为f 0。
式(2)中f 即为输出的正弦波的可调频率,令f =(10k +m )f 0(其中f 0=1/T ),因此式(2)又可以表示如下:y =A sin2π[n (10k +m )+(φ0/2π)2N]/2N(5)令φ0/2π=p /2N,得y =A sin2π[n (10k +m )+p ]/2N(6)其中p 为数字域的初始相位,变化范围0~2N,k 、m 是四位二进制BCD 码,k 从0到9变化,m 从1到9变化。
从式(6)可以看出,调节k 、m 函数的频率就可以从f 0变化到99f 0,配合基频f 0调节可将输出信号在0~1MHz 的范围内调节,调节p 即可调节初始相位。
根据这个原理,利用EDA 软件工具就可以在器件(1K10)上实现复合波形的DDS 信号发生器。
2 多功能DD S 信号发生器设计思路多功能DDS 信号发生器原理框图如图1所示。
主要模块的功能介绍如下:图1 多功能DDS 信号发生器原理框图(1)单片机:W 78E516是W I N BOND 公司基于51内核的单片机,内部有64K +4K Flash EPROM ,256字节的RAM 。
将启动程序放在高4K 的EPROM 中,通・61・仪表技术 2007年第8期图2 DDS 的FPG A 核心电路过程序可以改写低64K 的程序存储器的内容。
将单片机低64K 的存储空间划分为44K +20K 的形式,其中20K 字节用于FPG A 的配置数据(Acex1k10的配置数据约19.47K ),44K 的空间预存各种复合波形。
单片机中的波形数据可以由高级语言生成,形成二进制格式一起写入单片机程序存储器,也可以通过RS232接口与PC 的串行口相连,随时更新存储器中的波形数据。
(2)键盘:利用键盘实现人机接口。
通过4×4矩阵式键盘可以将波形类型选择、频率选择、初始相位选择输入单片机并经单片机处理后送FPG A 实现DDS 的调整。
(3)配置接口:完成系统上电期间单片机将程序存储器中的FPG A 配置数据利用被动串行模式配置FPG A 。
(4)总线接口:完成单片机与FPG A 的交互。
(5)FPG A:FPG A 是完成DDS 的核心部件,由它产生各种频率和相位以及输入、输出的控制。
将1K10内部的EAB 设计成双端口RAM ,其中输出端口将RAM 中预存的波形数据读出送D /A 转换器生成模拟信号,输入端口与单片机的总线相连可以随时将单片机ROM 中的多种不同的波形数据写入EAB 。
Acex1k 系列器件是ALTERA 公司最新推出的FP 2G A 系列,其性价比很高,是目前ALTERA 公司器件中单位逻辑单元较便宜的器件系列,主要包括1K10、1K30、1K50、1K100等四个品种。
本设计采用1K10器件,内部有3个512字节EAB ,可以设计成1536字节的双端口RAM ,可以读、写分别进行互不干扰。
有576个逻辑单元可以完成各种逻辑设计。
有1002Pin T QFP,1442Pin P QFP,2562Pin Fineline BG A 等封装形式。
内核电压2.5V ,接口电压3.3V 。
由于FPG A 在掉电期间配置数据丢失,因此需外加上电配置电路。
3 DD S 的FPGA 核心设计电路连接图如图2和图3所示,图2中模块taddsub是f 0线性分频产生器,其原理是24位循环累加,从taddsub 的输出反馈到输入端输入数据dataa [23..0],相加后送给taddsub 模块的触发器,在inclk 的上升沿模块taddsub 得到累加和。
f 0是累加器的进位位输出,f 0与输入的数据dataa[23..0]成线性关系,即f 0=k 3data [23..0],k 是比例系数。
如果inclk 为96MHz,dataa [23..0]=1时,可以计算出f 0=96M /16M =6Hz。
因图3 基于FPG A 单片机接口电路此只要调节data[23..0]的值即可调节f 0。
Taddsub1模块是波形数据的地址产生器,实际也是循环累加器,可以输出10位的地址,输入端ti m ef [9..0]是倍频系数,一般设置范围1~99,可以实现波形分辨率与波形最高频率之间的调节。
Taddsub2模块是波形数据的相位地址偏移产生器,初始相位偏移可以由输入端qp [9..0]给定。
相位偏移量由公式Δφ=2π3qp [9..0]/1024进行计算。
如果qp [9..0]=512,可以计算出Δφ=π,也即是180°。
因此只要设定不同qp [9..0]的值就可以得到不同的初始相位。
Pa [7..0]是单片机的p0口,pc [4..0]是单片机的p2口的低五位,wr 、ale 是与单片机对应的控制线。
LP M 2RAM 2DP 为波形数据存储器,是利用FPG A 的E AB 设计成的双端口RAM ,可以存储数字化的信号波形,一方面地址产生器得到的地址将内部的数据通过输出端q [7..0]送给D /A 转换器产生模拟波形,另一方面可以通过写控制端口,随时将单片机程序存储器的各种预存的波形改写RAM 的内容,这样就可以实现程控的复合波形产生器。
译码器74138完成单片机的I/O 空间的译码,实现分地址空间对dataa [23..0]、ti m ef[9..0]、qp [9..0]以及双口RAM 的读写。
(下转第20页)・71・2007年第8期 仪表技术//函数功能:向串口发送字节数据Void UART1_SendByte (uint8dat ){U1THR =dat;while ((U1LSR&0x40)==0);//查询方式发送字节数据}//函数功能:向串口发送一字符串uint8UART1_SendStr (uint8const 3str,uint8cnt ){int I =0;f or (i =0;i <cnt;i ++)UART1_SendByte (3str ++);//发送数据}//函数功能:从串口接收1字节数据,使用查询方式接收。
U int8UART1_Get B yte (void ){while ((U1LSR&0x01)==0);//查询方式等待数据rcv_dat1=U1RBR;return (rcv_dat1);//返回数据}//函数功能:从串口接收应答帧U int8UART1_GetStr (uint83s1,uint8n ){f or (;n >0;n --)3s1++=UART1_Get B yte ();//接收数据}//函数功能:将采集到的数据写入U 盘void Udisk (void ){Open_File ();//调用打开文件函数UART1_GetStr (Rcv,11);Rcv_Pr ocess (Rcv );//处理应答帧……/3中间过程为移动文件指针,写入数据操作,操作方式与找开文件过程相同,此处省略3/……Cl ose_File ();//调用关闭文件函数UART1_GetStr (Rcv,6);Rcv_Pr ocess (Rcv );//处理应答帧}//函数功能:输出高电平控制脉冲信号,Void Contr ol_On (void ){I O 1SET =1<<18;//P1.18端口置高电平Delay MS (500);//延时500m s,继电器动作时间I O 1CLR =1<<18;//P1.18端口置低电平}6 结束语AR M7微处理器LPC2131具有较快的处理速度,配以外围电路、Easy Udisk 串口读写U 盘模块,实现了系统监控、数据记录等设计要求。