欢迎来到天天文库
浏览记录
ID:31217179
大小:167.84 KB
页数:5页
时间:2019-01-07
《基于fpga的高精度数字移相低频正弦波发生器设计》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、摘要:文章介绍了基于FPGA和数字频率合成技术,利用VHDL编制程序并下载至Xilinx公司的SpartanII系列XC2S100E-6PQ208FPAG芯片上,加以简单的外围电路,构成了高精度数字式移相正弦波信号发生器。该装置能够产生频率、相位、幅度均可数字式预置并可调节的两路正弦波信号,相位差范围为0〜359。,步进为1%关键词:数字移相;FPGA;VHDL;直接数字频率合成1.引言在一些试验、研究屮,有时需要存在相位差的两同频信号。通常采用移相网络来实现,如阻容移相,变压器移相等。采用这些方法冇许多不足之处,比如:输出波形受输入波形
2、的影响,移相操作不方便,移相角度随信号频率和所接负载等因素的影响等。若采用直接数字频率合成及数字移相技术,能得到频率及相位差高度稳定精确的信号且实现方便。2.波形及移相波形发生器的系统组成原理欢迎访问http://www.51kaifa.com如图1所示为波形及移相波形发生器的系统组成方框图。标准时钟fclk图1波形及移相波形发牛器的系统组成原理框图标准时钟(由晶振电路产生)加于进制可编程的n进制计数器,其溢出脉冲加于可预置初值的地址计数器,生成波形存储器所需的地址信号,地址信号的产生频率正比于时钟频率,且周而复始地变化,从而使波形数据存
3、储器输出周期的正弦序列,D/A转换器则输出连续的模拟正弦屯压(或电流)波形,如图2所示。欢迎访问http://www.51kai£a.com图2-・周的两同频正弦波形频率及相位与时钟周期的关系为移相方便,设一周期的正弦波共采样360个点,即波形数据存储器共存储360个正弦波形的数据。由于移相波形的地址计数器的第一次运行初值为m,故两正弦波存在相位差为m。。相邻采样点有n个标准]二XiX兀.360一£.360时钟脉冲间隔,即仏。图1中波形数据存储器的全部数据被读出一次的频率为:。改变n和m,即可改变输出信号的频率和相位。若时钟频率「戚対10
4、0MHz,Ply/=277778。例如取n为1000,m为120,则产生相位为120°,频率为277.8Hz的正弦信号。当n=l时得最高信号频率为277.8KHZ。1.系统的软硬件设计FPGA是20【比纪90年代发展起来的大规模可编程逻辑器件,随着EDA技术和微电了技术的进步,FPGA的时钟延迟可达到ns级,结合共并行工作方式,在超高速、实时测控方面冇非常广阔的应用前景,并且FPGA具冇高集成度、高可靠性,几乎可将幣个设计系统下载于同一芯片中,实现所谓片上系统,从而大人缩小其体积。为此,笔者设计了-•种基于FPGA的高精度数字式移相正弦波
5、信号发生器,该装置能够产生频率、相位、幅度均可数字式预置并可调节的两路正弦波信号。相位差范围为0〜359。,步进为1。。系统选用Xilinx公司的SpartanII系列XC2S100E-6PQ208E现场可编程门阵列芯片。该芯片故高时钟频率可以达到200MHz,工作电压为2.5V,采用0.22屮W18pmCMOS工艺,6层金属连线制造,系统门数量为10万,CLB阵列数戢为20x30,BlockRAM容量为40Kbit,最大用户I/O数量为202个。利用FPGA内部BlockRAM用来存储一周期的正弦波的360个采样点的数据,每个数据为8位
6、,用一片8位A/D转换器AD7524來输出正弦波,再用一片10位A/D转换器AD7520的输出作为AD7524的参考电圧,用来数字调节输出正弦波的幅度。另一路移相正弦波的产生采用同样的电路结构。整体电路原理图如图3所示。其屮LED数码管用來显示输出信号的频率、相位差和幅度。BCD拨码开关用來对频率、相位和幅度值的预置。两按钮分别用來对频率、相位和幅度值的向上和向下调节。为节省硬件开销和FPGA的I/O口线,用一个2位拨码开关來设定显示、预置和调节的状态,即频率、相位差和幅度三个状态。欢迎访问http://www.51kai£a.comVo
7、utlVout2系统采用硬件描述语言VHDL按模块化方式进行设计,共分为频率、相位差、幅度预置调节控制模块、正弦波形及移相波形产生模块、显示模块及顶层模块等。通过XilinxISE5.2软件开发平台和ModelSimXilinxEdition5.6XE仿克工具,对设计文件口动地完成逻辑编译、逻辑化简、综合及优化、逻辑布局布线、逻辑仿真,最后对FPGA芯片进行编程下载。限于篇幅,这里仅介绍正弦波形及移相波形产生模块的设计方法(完整程序可向作者索取)。该模块分为二个进程。其部分程序如下:process(elk)variabletemp:s(d
8、」ogic:-Of;beginifrising_cdgc(clk)theniftemp-lfthenv<=vl;temp:=nottemp;vll<=d;elsev<=v2;temp:=not
此文档下载收益归作者所有