《基于FPGA器件和VHDL语言实现波形及移相波形发生器的系统设计.docx》由会员分享,可在线阅读,更多相关《基于FPGA器件和VHDL语言实现波形及移相波形发生器的系统设计.docx(4页珍藏版)》请在第一文库网上搜索。
1、基于FPGA器件和VHD1语言实现波形及移相波形发生器的系统设计1 .引言在一些试验、研究中,有时需要存在相位差的两同频值号。通常采用移相网络来实现,如阻容移相,变压器移相等。采用这些方法有许多不足之处,比如:输出波形受输入波形的影响,移相操作不方便,移相角度随信号频率和所接负载等因素的影响等。若采用直接数字频率合成及数字移相技术,能得到频率及相位差高度稳定精确的信号且实现方便。2 .波形及移相波形发生器的系统组成原理如图1所示为波形及移相波形发生器的系统组成方框图。图1波形及移相波形发生器的系统组成原理框图标准时钟(由晶振电路产生)加于进制可编程的n进制计数器,其溢出脉冲加于可预置初值的地址
2、计数器,生成波形存储器所需的地址信号,地址信号的产生频率正比于时钟频率,且周而复始地变化,从而使波形数据存储器输出周期的正弦序列,D/A转换器则输出连续的模拟正弦电压(或电流)波形,如图2所示。图2啕的曲词就正弦废小惊率及相位与T的X.素为移相方便,设一周期的正弦波共采样360个点,即波形数据存储器共存储360个正弦波形的数据。由于移相波形的地址计数器的第一次运行初值为m,故两正弦波存在相位差为moo相邻采样点有n个标准时钟脉冲间隔,即TO=N-IZFc1ko图1中波形数据存储器的全部数据被读出一次的频率为:F=1T0-360=Fc1kn-360o改变n和m,即可改变输出信号的频率和相位。若时
3、钟频率FC1k为IoOMHz,则。例如取n为IOO0,m为120,则产生相位为120,频率为277.8Hz的正弦信号。当n=1时得最高信号频率为277.8KHzo3 .系统的软硬件设计FPGA是20世纪90年代发展起来的大规模可编程逻辑器件,随着EDA技术和微电壬技术的进步,FPGA的时钟延迟可达到ns级,结合其并行工作方式,在超高速、实时测控方面有非常广阔的应用前景,并且FPGA具有高集成度、高可靠性,几乎可将整个设计系统工B于同一芭片中,实现所谓片上系统,从而大大缩小其体积。为此,设计了一种基于FPGA的团!度数字式移相正弦波信号发生器,该装置能够产生频率、相位、幅度均可数字式预置并可调节
4、的两路正弦波信号。相位差范围为0359。,步进为1。系统选用XiIinX公司的Spartan系列XC2S100E-6PQ208E现场可编程门阵列芯片。该芯片最高时钟频率可以达到200MHz,工作电压为2.5V,采用0.22um/18umCMOS工艺,6层金属连线制造,系统门数量为10万,C1B阵列数量为20X30,B1ockRAM容量为40Kbit,最大用户I/O数量为202个。利用FPGA内部B1ockRAM用来存储一周期的正弦波的360个采样点的数据,每个数据为8位,用一片8位A/D转换器以7524来输出正弦波,再用一片10位A/D转换器AD7520的输出作为AD7524的参考电压,用来数
5、字调节输出正弦波的幅度。另一路移相正弦波的产生采用同样的电路结构。整体电路原理图如图3所示。其中逗遨码萱用来显示输出信号的频率、相位差和幅度。BCD拨码开关用来对频率、相位和幅度值的预置。两按钮分别用来对频率、相位和幅度值的向上和向下调节。为节省硬件开销和FPGA的I/O口线,用一个2位拨码开关来设定显示、预置和调节的状态,即频率、相位差和幅度三个状态。RBB体电彝取理闱系统采用硬件描述语言VHD1按模块化方式进行设计,共分为频率、相位差、幅度预置调节控制模块、正弦波形及移相波形产生模块、显示模块及顶层模块等。通过Xi1inXISE5.2软件开发平台和MoCIe1SjWXi1inxEditio
6、n5.6XE仿真工具,对设计文件自动地完成逻辑编译、逻辑砺、综合及优花、逻辑布局布线、逻辑仿真,最后对FPGA芯片进行编程下载。限于篇幅,这里仅介绍正弦波形及移相波形产生模块的设计方法(完整程序可向作者索取)。该模块分为二个进程。其部分程序如下:process(e1k)variab1etemp:std1ogic:=0;beginifrising_edge(e1k)theniftemp=Tthenv=v1;temp:=nottemp;v11二d;e1sev=v2;temp:=nottemp;v12二d;endif;casevis一以下When语句为360个正弦波形的数据幽表,这里只给出了首末几个
7、。when“000000000”=d=10000000”;When“000000001=d=oooooow;whena00000001Ow二d二“10000100”;Whena0000000I1w二d二u100001I1w;when“101100100“二d二“01110111”;When101IOO1O1w=d二”01111001”;when“101100110“二d二“01111100”;Whena10110011,二d=”01111110”;whenothers=nu11;endcase;endif;endprocess;process(e1k)variab1ecountcoun,b:i
8、ntegerrange0to277778;beginifrising_edge(e1k)thenifsw=Othensign二T;e1se一利用减法实现除法运算。ifcoun277778thencoun:=coun+n;b:=b+1;一信号n由频率预置、调节模块送来。e1seifcount=bthencount:=1;ifsign=Tthenv1二“000000000”;v2二m;Sign二0;endif;一信号IT1由相位预置、调节模块送来。ifV1=101100111”thenv1二“000000000”;e1sev1=v1+1;endif;ifv2=“101100111”thenv2二”000000000;e1sev2=v2+1;endif;e1secount:=count+1;endif;endif;endif;endif;endprocess;对该模块利用Mode1SimXi1inxEdition5.6dXE仿真工具进行仿真的波形如图4所示。正就箧正公移相,正,04 .结束语本设计基于FPGA的高精度数字式移相正弦波信号发生器,充分利用VHD1硬件描述语言方便的编程,提高开发效率,缩短研发周期,而且系统的调试方便,修改容易。实验表明系统产生的波形稳定,抗干扰能力强,频率、相位和幅度调节方便,精度高,有一定的开发及生产价值。责任gt