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

2009-8-16 00:07 1032 7 7 分类: FPGA/CPLD

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


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

1 引言电子园51单片机学习网 |v+Kf)Jca


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


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

jN1AD0dr0电子园51单片机学习网5G-t)uJ b.@0fB.G

2 系统设计

pn,Z'm8v7I-h$N0

'{0HKWFS0整体设计由四个部分组成:上位机部分,单片机部分,FPGA部分,模拟电路部分。电子园51单片机学习网4@{9L%rV6F e


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

8ne R] l ]f9S \0电子园51单片机学习网u9^,NR7r-wxe

6136_2009040423471514A8u.jpg

r/EFNAdMm6hD0电子园51单片机学习网p*A8K SPy P7[

电子园51单片机学习网P%g-|8~f+SD

电子园51单片机学习网!B3l M wv

图1  系统原理框图

i,c itu9A ZL^,D0电子园51单片机学习网(V#QN)C!k}-t^~1q`N

2.1 单片机部分电子园51单片机学习网q{N9i1C8P\&?cL


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

x^?zy,A{ R{0

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

6m4W6}Fc7pe;D-c0

 点击看大图电子园51单片机学习网Cg n ]%xqP

电子园51单片机学习网9UD!n.zCh

图2  单片机接收并处理上位机数据流程图电子园51单片机学习网 p OQ/zJlmYA%t


w I"HL$R02.2 FPGA部分及模拟电路部分电子园51单片机学习网 GT L0D$Na{0q"[@![


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

b.EVL*@n,S0

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

h`.pphAR&{8k k0

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


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


为了提高所产生的波形频率,采用高频率特性的FPGA(ALTERA EPF10K10LC84-4)。后级电路采用有较高的转换速度的DAC0832作为D/A转换。电子园51单片机学习网`k:i"x tE

电子园51单片机学习网,n5t7z6M,?f2C3@

在FPGA内实现ROM表的资源是有限的,并且ROM表的大小随着地址位数和数据位数的增加成指数递增关系,因此在满足采样信号性能的前提条件下,如何减少资源的开销就是一个重要的问题。在实际设计时,充分利用了正弦波信号周期内的对称性和算术关系来减少ROM表资源的开销,因此通过一个正弦表的前1/4周期就可以通过相位变换得到其整个波形周期的采样值,这样就节省了将近3/4的资源。电子园51单片机学习网2f&u4G,W.~0Q9R$d


(yAY1PL%\O,Ar^r0对于PWM波部分,采用分频器,累加器与比较器结合的方式实现,对于各个部分采用模块化设计分别实现,并在顶层文件中连接在一起可以方便进行修改,扩展和移植。电子园51单片机学习网` h5|T8lK[#D_

电子园51单片机学习网)]nS:YjQ8ca?%T

正弦波,三角波,锯齿波的部分VHDL源程序如下:

Nb$T3ID@Wn0电子园51单片机学习网Y3y4]Ml\1J:{c

p_rom:process(clk,reset)

"Y _4Z"P;L m.X qZP2Y0电子园51单片机学习网-KR K rZ0]6b

  begin电子园51单片机学习网,f~U9chY,h

电子园51单片机学习网gC.X#d3bZ

    if clk'event and clk='1' then电子园51单片机学习网m}^-F,|X0~[

电子园51单片机学习网$p}1|'w0TL&c a5t

        clk_rom<=clk_rom + frq_data;电子园51单片机学习网g,qT"o ~i7ca'a


I+J H-C1H D~0           case p1 is

LRP@ ?tv0`0电子园51单片机学习网zJ \0]#buZ"q

              when "00"=>rom_address<=clk_rom( 19 downto 13)+"000000000";

U)VVX)L$Y Z0

[(FD{?.]1f0              when "01"=>rom_address<=clk_rom( 19 downto 13)+"010000000";电子园51单片机学习网0|'K/q_1[s


.qA5S` ]D:SQs0              when "10"=>rom_address<=clk_rom( 19 downto 13)+"011111111";

&FX,D7vh9lf)K0

7vh6H$X-qy adE0              when others=>null;电子园51单片机学习网O"ctVt H)^


9@&Q/y#zU?+x0           end case;电子园51单片机学习网1WTiy2n2K9ZZK

电子园51单片机学习网(x N(r6N*}^&h(G

     end if;

;r1k ^#XA8n.v {6fA0电子园51单片机学习网 F`Rc8L(u3rjT|

end process p_rom;       电子园51单片机学习网 jS,dt$W q


#jf1?2O!A.j/k%J(M02.3 上位机部分电子园51单片机学习网"Tw/O5ssbM;i n

电子园51单片机学习网;@RZ(uy~+Dt

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

]PQjoXA0电子园51单片机学习网a*h/B_ ?-U M(s*fS9Z

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

fDu5K~+r[Qb0

CommPort:设置并返回通信口号,缺省值为COM1。电子园51单片机学习网TY$G.a-v7h


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

nx(\-|H;fVy;Y[0

PortOpcn:设置并返回通信口的状态,同时用来打开和关闭通信口。电子园51单片机学习网;n,UiP0X1^5V9fbY?


InputLen:决定每次Input读入的字符个数,缺省为0,表示读取接收缓冲区的全部内容。

TmDqBB"I#i0

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

1j6X(^w.G\ }\c ^M#\Y0

InBuferCount:返回接收缓冲区已接收的字符数,通过置0可清除接收缓冲区。电子园51单片机学习网T*a+w0M:t9f,v,lC

<-!wuyou dianzi kaifawang-->

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

$Ey ]^ u%Sa0

InputMode:定义Inpput属性获得数据的方式。电子园51单片机学习网o h @N?'{E+Nu"b ? k


Rthreshold:设置、返回在通信控件置ComEvRecieve并激发OnComm事件前要接收的字符数。电子园51单片机学习网iNK,b q{_


SThreshold:设置、返回通信控件置ComEvSend并激发OnComm事件前发送缓冲区中的最少字符数。电子园51单片机学习网*Z0R%o},A(GxkM j*Y


另外,由于在VC界面中出现的是10到20k的整型数据,因此需要将此频率数据转换成16位的频率控制字送给单片机,转换程序如下:电子园51单片机学习网VTb)k8y#B xq


void CWaveDlg::CalculateFreq(unsigned  int unFreq)电子园51单片机学习网%p!B7H,z$X[jB4J2K


{

o;wj P:aF8[0

              double m;电子园51单片机学习网Z eR H(fd b(c


        m=unFreq*0.0001024;

3LbZ@sX X0

           m=m*1024;

&v6@(]0r-~$Fz\I0N0

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

-S e,`+rE0

           CommandMCU.uchHighData=m/256;电子园51单片机学习网6[~6B#tP3UW!h S


           return;电子园51单片机学习网8Vy(RJv3EDJ


}电子园51单片机学习网-Xx0lX#k

电子园51单片机学习网4`F}#axd)f M

3 结束语电子园51单片机学习网A;} l7^0Z-^0B3Z


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

W4E d_ Ut8D*d7N0

 电子园51单片机学习网Q}hkZ-S7`!x


参考文献:电子园51单片机学习网0V8h!U4jxQ1T O@

电子园51单片机学习网$S Io)V s ~$~a

1.王凤臣,李庆瑞等.基于DDS的波形发生器在HIRFL-CSR电源控制系统中的应用[J].微计算机信息,2006,22:3-5电子园51单片机学习网bL vy'@a5T|

电子园51单片机学习网(nxO#i@4}+K

2.段传华.直接数字频率合成器的原理及应用[J].电讯技术,1995年10月,35(5).电子园51单片机学习网0v G4s!n?ZC3`


3.侯博亨等.VHDL硬件描述语言与数字逻辑电路设计.成都电子科技大学出版社.1997.电子园51单片机学习网 E4Xajj j%}U/~


4.徐志军等.CPLD/FPGA的开发与应用.北京:电子工业出版社.2002电子园51单片机学习网M T)um.g nN-B*D

PARTNER CONTENT

文章评论0条评论)

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