原创 基于FPGA与单片机的波形发生器设计

2009-8-15 00:42 2258 3 3 分类: MCU/ 嵌入式

发布: 2009-4-04 23:46 |  作者: 刘 薇 王建立 |   来源: 微计算机信息 |  查看: 30次


摘要:利用FPGA与单片机相结合的方法,使用单片机控制FPGA产生频率为10Hz~20kHz的正弦波,锯齿波,三角波和四路分别占空比0到100%可调的PWM波形。该波形发生器以单片机(MCS8031)为中心控制单元,由上位机界面,波形发生模块和D/A转换模块组成。采用DDS(直接数字频率合成)技术,通过VHDL语言,单片机C语言,VC++语言实现了对正弦波,锯齿波,三角波频率以及四路PWM波占空比的设置和发生。电子园51单片机学习网j6z{zW9x
关键词: FPGA;单片机;VHDL;DDS
c D/t\v4bjM9vu0电子园51单片机学习网%S$t ?1f?K

1 引言

P$lq ZM)G0

可编程逻辑器件(PLD)及EDA技术的应用成为电子系统设计的潮流。FPGA是一种新兴的可编程逻辑器件(PLD),与其它PLD相比,具有更高的密度、更快的工作速度和更大的编程灵活性。单片机以其体积小、功能齐全、价格低廉、可靠性高等方面所具有的独特优点,长期以来被广泛的应用在各领域。电子园51单片机学习网uv u:Q)[B~DW


基于FPGA的高密度、高速度、现场可编程的能力和单片机强大的数据处理功能,制作了波形发生系统,用于产生频率为10Hz~20kHz的正弦波,锯齿波,三角波和四路分别占空比0~100%可调的PWM波。

zA`U/Pg1K0电子园51单片机学习网:b.Xb8^ k:H|.Q$J

2 系统设计电子园51单片机学习网YkPa*bI


4?h4b+cw8J~@o0整体设计由四个部分组成:上位机部分,单片机部分,FPGA部分,模拟电路部分。电子园51单片机学习网5W&Y5B0}U4Ww


7_ eb_+t/SjId0波形发生器以单片机(MCS8031)为中心控制单元,由上位机控制界面,波形发生模块和D/A转换模块组成,采用DDS(直接数字频率合成)技术,将要求的波形数据存储于FPGA内构建的ROM当中,单片机跟据上位机的命令输出查表地址等信息至FPGA,FPGA产生相应得波形数据经D/A转换器输出。其系统原理框图如下:

U'l4c6M,B:p {f0电子园51单片机学习网Z W"J"o]2O

6136_2009040423471514A8u.jpg

|$[] ZcPT0

\k]/o%O{0电子园51单片机学习网*RW,L-Hhdp+z


6U cZ(?#b4GM0图1  系统原理框图电子园51单片机学习网 K[ztK O4Y`

电子园51单片机学习网jKNR]bBepK

2.1 单片机部分

d2~ rYq"ro^8n0

在设计中采用MCS8031为处理器,选择P1.0,P1.1作为波形选择信号,P1.2作为FPGA的复位信号,P2.5作为DACO832的片选端,P0口作为低8位地址和数据线。单片机接收来自上位机的命令信息后将相应的波形设置信息输出到FPGA,并控制DAC0832的使能。

{[c+nl)Pb{!Q0

单片机接收并处理来自上位机的数据信息流程图如图2所示:

({ sU%DD sXM C0

 点击看大图电子园51单片机学习网Cc0K(yG.gyZl

电子园51单片机学习网~a\uf$`7Q

图2  单片机接收并处理上位机数据流程图电子园51单片机学习网 ^M P'F0qew

电子园51单片机学习网cq2g~V:C%rq

2.2 FPGA部分及模拟电路部分电子园51单片机学习网W4w?Y Cc}


波形发生采用DDS技术可以很方便地产生各种高质量的波形。DDS技术是从相位概念出发之结合成所需要波形的一种频率合成技术。以正弦波为例,首先要按照一定的采样点数将正弦波形一个周期的数据信息存于ROM表中,表中包含着一个周期正弦波的数字幅度信息,每个地址对应正弦波中0到360度范围内的一个相位点的幅度值,查找表时即是把输入的地址相位信息映射成正弦波幅度的数字量信号,以驱动D/A转换电路。DDS方法通过查找表输出信号的频率可由下式给出:电子园51单片机学习网"R~sd v6R | Z'smG


Fout=(x*[Fclk])/Y;     Y为2的N次幂;

$Npz&iq` C!hx\0

其中频率控制字与输出信号的频率成正比,因此可以通过改变寻址的步长来改变输出信号的频率,因为在确定了累加器的位宽N和寻址位宽M,以及系统时钟Fclk后,随着步长X的增加,在每次累加器循环的一个周期中,输出的M为查找表的地址个数就会减少,相应输出一个中期波形的时间也就会减少,输出信号的频率相应增加,这就是DDS的方法。

h i0w!Nqan0

需要注意的是,随着步长和输出频率的增加,输出信号的采样点数会减少,会降低产生波形的精度和平滑度,因此也限制了输出信号的最高频率,而且由采样定理可知,所产生的信号频率不能超过时钟频率的一半,在实际应用中,为了保证信号的输出质量,输出的频率不要高于时钟频率的33%,以避免混叠或谐波落入有用输出频带内。

)d,Cg+WQ6Y9X0

为了提高所产生的波形频率,采用高频率特性的FPGA(ALTERA EPF10K10LC84-4)。后级电路采用有较高的转换速度的DAC0832作为D/A转换。

&s'UfVkJ v3K0

7HO'd4Bj]/TR)f0在FPGA内实现ROM表的资源是有限的,并且ROM表的大小随着地址位数和数据位数的增加成指数递增关系,因此在满足采样信号性能的前提条件下,如何减少资源的开销就是一个重要的问题。在实际设计时,充分利用了正弦波信号周期内的对称性和算术关系来减少ROM表资源的开销,因此通过一个正弦表的前1/4周期就可以通过相位变换得到其整个波形周期的采样值,这样就节省了将近3/4的资源。

3]_$_ f IAc8_ E0

`7R-`#S}e0对于PWM波部分,采用分频器,累加器与比较器结合的方式实现,对于各个部分采用模块化设计分别实现,并在顶层文件中连接在一起可以方便进行修改,扩展和移植。电子园51单片机学习网a"FXOz v^

电子园51单片机学习网6m r2i9n)b

正弦波,三角波,锯齿波的部分VHDL源程序如下:电子园51单片机学习网J!`:v m,E E e


|9d+[r5ZW6c"o0p_rom:process(clk,reset)

RmjcG5X|0

S*U4o9NK0  begin电子园51单片机学习网 y$VfpE`$C"x H3[&e

电子园51单片机学习网7CT6ad7y;`lS+O

    if clk'event and clk='1' then

3[szA'rUa%Y0

{*A!L Jt h0        clk_rom<=clk_rom + frq_data;电子园51单片机学习网0Mh c7r5t8{@"?

电子园51单片机学习网6{ jLZ;[n

           case p1 is电子园51单片机学习网6ce;L S1n/PK"D


avw*K dX^i0              when "00"=>rom_address<=clk_rom( 19 downto 13)+"000000000";电子园51单片机学习网2V6f \7m'k

电子园51单片机学习网qS&C%l Y1?m+q

              when "01"=>rom_address<=clk_rom( 19 downto 13)+"010000000";

wd4m Jc0电子园51单片机学习网/akg [v

              when "10"=>rom_address<=clk_rom( 19 downto 13)+"011111111";

L%o$L/mT)dKt} x0

[1y#[_"V j"L0              when others=>null;电子园51单片机学习网a Ez(lxv

电子园51单片机学习网K)}By D L)m0J#{z

           end case;

v*qw#qr0电子园51单片机学习网.R/o)c"Lt~ T[

     end if;电子园51单片机学习网/N&rp.B/S khAB

电子园51单片机学习网&hn:dK6`5b~ nw

end process p_rom;       电子园51单片机学习网jb3QxwX5y {

电子园51单片机学习网@$SA uZ(cE~

2.3 上位机部分电子园51单片机学习网0B*` i7bJ:q"V1tHa

电子园51单片机学习网q&J'~E@oU

利用Windows系统中提供的串行通讯功能完备的ActiveX控件即MSComm控件实现与单片机的通信。MSComm控件具有编程容易实现,简捷方便等优点,但仅在对话框中使用。根据波形发生器的特点和要求,MSComm控件可以完全实现要求。

&b/V3s\ uu4[V0

'mF2` b-W;~z)m9T0像其他控件一样,通信空间也是用一系列的属性和用户接口,控件提供了许多属性,大部分属性仅和Modem有关,下面将常用的属性做一下简要说明:

G.}IMU2SR va0

CommPort:设置并返回通信口号,缺省值为COM1。电子园51单片机学习网/a*~$k:AbI$w*]!}9D


Settings:设置并返回波特率、奇偶校验、数据位、停止位的字符串。其中波特率的范围为300b/s到19200b/s。

[i3c Mr7iy0

PortOpcn:设置并返回通信口的状态,同时用来打开和关闭通信口。

s"qXws0

InputLen:决定每次Input读入的字符个数,缺省为0,表示读取接收缓冲区的全部内容。电子园51单片机学习网sbH6FJ2]


Input:读入并清除接收缓冲区的字符。

o"e+}&ESH;F0

InBuferCount:返回接收缓冲区已接收的字符数,通过置0可清除接收缓冲区。

hL;t+l!}DM0<-!wuyou dianzi kaifawang-->

Output:将发送的字符串或数组写到发送缓冲区。

s+Ws7\*}0jG/s'N0

InputMode:定义Inpput属性获得数据的方式。电子园51单片机学习网$s.Q Ig1}#N.B&Q


Rthreshold:设置、返回在通信控件置ComEvRecieve并激发OnComm事件前要接收的字符数。

6BC$B Hy,B0

SThreshold:设置、返回通信控件置ComEvSend并激发OnComm事件前发送缓冲区中的最少字符数。电子园51单片机学习网Z$RG*_wO8W


另外,由于在VC界面中出现的是10到20k的整型数据,因此需要将此频率数据转换成16位的频率控制字送给单片机,转换程序如下:

Y_K iG#Nq^._fU0

void CWaveDlg::CalculateFreq(unsigned  int unFreq)

V/NL0VQ h Z z.`0

{

B |#k3B[~0

              double m;

%q+Hpr4W,I`7}U%K0

        m=unFreq*0.0001024;电子园51单片机学习网3R1hjk5S


           m=m*1024;

5\(_#i4^t(@1DA0

           CommandMCU.uchLowData= (unsigned char) m%256;

s;Q~$?1[6[T d0

           CommandMCU.uchHighData=m/256;

}l|F K}0E@0

           return;电子园51单片机学习网%O@Zan%{;N


}电子园51单片机学习网"cS@7}}&y:k q8Nj6u


!I/]"t+eR2D9S2FW.z03 结束语

"mU W+pBURT0

本文作者创新点:采用了直接数字频率合成(DDS)技术,经过仿真,电路测试,输出波形上完全达到了设计的要求。与以往的采取波形存储和波形复现方式的波形发生器相比,基于DDS的波形发生器可以很方便的实现频率的调制功能,产生的波形可以达到很高的频率分辨率,输出频率的转换速度快,而且在频率转换时,DDS输出波形的相位是连续的。

0_}}{(|\e u0

 

;W s,c"g*Tfj0

参考文献:电子园51单片机学习网6WWo bJ|4F+s/]

电子园51单片机学习网nj.~R A)zX

1.王凤臣,李庆瑞等.基于DDS的波形发生器在HIRFL-CSR电源控制系统中的应用[J].微计算机信息,2006,22:3-5

a \L%{FSqb+vN0电子园51单片机学习网R{7~$iq:J8ZF

2.段传华.直接数字频率合成器的原理及应用[J].电讯技术,1995年10月,35(5).电子园51单片机学习网qf5N"B9\ `r{$?7D


3.侯博亨等.VHDL硬件描述语言与数字逻辑电路设计.成都电子科技大学出版社.1997.

T8wF.A5F5xUo,R,z0

4.徐志军等.CPLD/FPGA的开发与应用.北京:电子工业出版社.2002

miR.E1u,Ta|J0
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /3 下一条