基于FPGA的三相函數(shù)信號(hào)發(fā)生器設(shè)計(jì)
2.1 分頻模塊設(shè)計(jì)
為了對(duì)波形頻率精確控制,不同頻率段需要不同的輸入頻率。項(xiàng)目設(shè)計(jì)中采用50 MHz外部有源晶振,利用FPGA內(nèi)部鎖相環(huán)將頻率鎖定在40.96 MHz,然后該頻率進(jìn)行10 MHz,100 MHz,1 000 MHz,10 000 MHz,如圖4所示,這樣就得到了5個(gè)不同的頻率區(qū)間,最后通過(guò)5選1數(shù)據(jù)選擇器由單片機(jī)選擇所需要的時(shí)鐘頻率。時(shí)鐘頻率與輸出波形頻率之間具體關(guān)系,如表l所示。本文引用地址:http://m.butianyuan.cn/article/191582.htm
2.2 波形產(chǎn)生模塊設(shè)計(jì)
2.2.1 正弦波
正弦波的數(shù)據(jù)需要轉(zhuǎn)換為*.mif文件后存放到ROM中,mif文件有固定格式規(guī)定了每個(gè)字的位寬WIDTH、總字?jǐn)?shù)DEPTH、地址進(jìn)制基數(shù)ADDR-ESS_RADIX和數(shù)據(jù)進(jìn)制基數(shù)DATA_RADIX。在Matlab環(huán)境中編程計(jì)算出正弦波數(shù)據(jù),然后生成mif文件。
EP2C8T144C8擁有較充裕的存儲(chǔ)空間。因此,設(shè)計(jì)中為了提高精度在ROM中存放4 096個(gè)正弦數(shù)據(jù),頻率控制字、相位控制字由單片機(jī)控制產(chǎn)生,經(jīng)過(guò)相位累加器組成地址發(fā)生器,產(chǎn)生的地址連到ROM的地址線上進(jìn)行查表得到波形數(shù)據(jù)。
2.2.2 方波
方波算法比較容易實(shí)現(xiàn)。由于其只有高低電平兩種狀態(tài)。因此,只需要在一個(gè)周期的時(shí)間中間位置翻轉(zhuǎn)電平即可。由于相位累加器的值是線形累加的,地址address的值也是線形累加的,對(duì)所給地址值address進(jìn)行判斷,當(dāng)?shù)刂分档淖罡呶粸镺時(shí),便將波形幅值各字位賦值1,否則賦值0。就可以實(shí)現(xiàn)最簡(jiǎn)單的占空比50%的方波。
為了實(shí)現(xiàn)占空比可調(diào),設(shè)計(jì)中增加一個(gè)變量PWM_zkb[11..0],讓地址值與WM_zkb[11..O]比較,Adress[11..0]PWM_zkb[11..0]時(shí),輸出Data_out[11..0]=“11111111111l”,否則輸出為“000000000000”,如圖3~圖6所示,PWM_zkb[11..0]由單片機(jī)控制,經(jīng)過(guò)鎖存后送到方波發(fā)生器與Adress[11..0]比較后產(chǎn)生占空比可調(diào)的方波。
2.2.3 三角波
三角波的生成原理與方波生成原理相似,也是對(duì)地址Address的值進(jìn)行判斷,當(dāng)其最高位為0時(shí),取其O~ll位為三角波的波形幅值,即令Data_out[11..0]=Address[11..0]。當(dāng)其最高位為l時(shí),對(duì)其0~1l位的值取反后再作為三角波的波形幅值,即令Data_out[11..0]=not(Address[11..0])。
2.2.4 鋸齒波
鋸齒波的產(chǎn)生也是基于上述原理,是對(duì)地址Address的值進(jìn)行判斷,當(dāng)其最高位為O時(shí),取其0~ll位為三角波的波形幅值,即令。Data_ out[11..0]=Address[11..0]。當(dāng)其最高位為1時(shí),對(duì)其最高位的值取反后作為鋸齒波的波形幅值,即令Data_out,[11..0]=Address[11..0]and“011111111111”。
2.3 相移的實(shí)現(xiàn)
在A相地址的基礎(chǔ)上,增加一個(gè)累加器,輸入段分別是A相地址和偏移值,經(jīng)過(guò)累加之后得到B相波形地址,然后根據(jù)此地址對(duì)ROM尋址或者在地址的基礎(chǔ)上生成方波、三角波和鋸齒波。如圖5所示,A相、B相及B相、C相之間的偏移量有單片機(jī)控制,數(shù)據(jù)經(jīng)過(guò)鎖存后送入累加器。
評(píng)論