【正文】
波等幅值可調(diào)的信號。第二是顯示電路的設(shè)計(jì),這里為了在波形輸出依然有顯示,由于單片機(jī)的局限性這里采用通常的動態(tài)LED顯示行不通,因?yàn)椴ㄐ屋敵鰰r(shí)要求CPU不停地為其服務(wù)而沒有空閑來為LED進(jìn)行不停更新,解決方案是采用帶數(shù)據(jù)緩存器和驅(qū)動的LCD來提供顯示,這樣只占用八個(gè)I/O口即可完成設(shè)計(jì)要求,也可放棄適時(shí)顯示功能采用LED顯示,這里將提供兩種顯示方案。在本電路中,用于粗調(diào)的控制電壓(電流)由一個(gè)12位的DAC產(chǎn)生,使輸出頻率近似等于N倍基準(zhǔn)頻率。第二種方案的設(shè)計(jì)比較完善,由于用到專門的波形發(fā)生芯片,產(chǎn)生的波形比較完美,但外圍電路復(fù)雜,適合于作波形發(fā)生器的產(chǎn)品設(shè)計(jì)方案。其中1/RC為特征頻率,而 1/(3 Avf)為等效品質(zhì)因數(shù)。先置IOA0~IOA3為帶數(shù)據(jù)緩存器的高電平輸出,置IOA4~IOA7為帶下拉電阻的輸管腳,此時(shí)若有鍵按下,取IOA4~IOA7的數(shù)據(jù)將得到一個(gè)值,把此值保存下來,再置IOA4~IOA7為帶數(shù)據(jù)反相器的高電平輸出,置IOA0~IOA3為帶下拉電阻的輸入管腳,此時(shí)若鍵仍沒彈起,取IOA0~IOA3的數(shù)據(jù)將得到另一個(gè)值,把這兩個(gè)值組合就可得知是哪個(gè)鍵按下了,再通過查表得到鍵值。用IOB8—IOB13口作為位選控制, IOA8—IOA14口傳輸要顯示的數(shù)據(jù),數(shù)據(jù)線和位選線直接接凌陽SPCE061A單片機(jī)的I/O口即可,因?yàn)镮/O口輸出電流很小不會對LED造成損壞,它的電壓值卻足以驅(qū)動LED,這不像別的單片機(jī)還要外接驅(qū)動電路和電阻,采用凌陽SPCE061A單片機(jī)大大減化了設(shè)計(jì)過程和硬件電路。 圖6 音頻放大電路 波形的具體產(chǎn)生是通過兩路DAC來產(chǎn)生,之所以采用這種方式,是因?yàn)榱桕朣PCE061A在這方面的設(shè)計(jì)為我們提供了極大的方便,在DAC的編程方面又提供了及其便利的編程環(huán)境。整體按鍵過程如圖8所示。為了實(shí)現(xiàn)頻率的調(diào)整,我在一個(gè)正弦波周期里建了兩百個(gè)點(diǎn),如果我們隔一個(gè)取點(diǎn)的話,且在CPU時(shí)鐘頻率不改變的情形下,正弦波頻率將相對于前面的頻率提高將近一倍。我們可以將IOB8設(shè)置成同相輸出端口,通過設(shè)置P_TimerA_Ctrl(寫)($700BH)的第0~5位來選擇TimerA的時(shí)鐘源(時(shí)鐘源A、B)。 圖14 顯示子程序流程圖 圖15 語音播報(bào)流程圖 其它 在按鍵控制的第6到第12個(gè)按鍵,都是用來改變和編輯波形參數(shù)的,這就為整個(gè)系統(tǒng)能輸出各種波形提供了可能性,以及增加了它的實(shí)用性。作者:bagheera作者:bagheera西安交通大學(xué)正弦調(diào)制波的產(chǎn)生采用查表法,但僅將1/4周期的正弦波數(shù)據(jù)存入FPGA內(nèi)部硬件所構(gòu)造的ROM中,減少了系統(tǒng)的硬件開銷,仿真結(jié)果證明了本設(shè)計(jì)的正確性。邏輯設(shè)計(jì)利用可逆計(jì)數(shù)器對系統(tǒng)時(shí)鐘進(jìn)行計(jì)數(shù)。在FPGA芯片內(nèi)部開辟一塊ROM區(qū)域,將離散時(shí)間正弦波幅值存入其中。在本設(shè)計(jì)中,一個(gè)正弦波周期內(nèi)共采樣2048個(gè)點(diǎn), ,而實(shí)際在ROM表中只需存512個(gè)采樣點(diǎn),這樣大大減少了芯片硬件資源的消耗。設(shè)調(diào)制深度為,當(dāng)前時(shí)刻正弦幅值為Sin_Data, 利用下式得出正弦調(diào)制波幅值Data為: 本設(shè)計(jì)采用雙極性調(diào)制方式,而三角載波的取值范圍為0~255,其中位線值為127,故實(shí)際產(chǎn)生的正弦調(diào)制波幅值按照下列公式進(jìn)行調(diào)整,其中Adjust為調(diào)整后的正弦調(diào)制波數(shù)據(jù)。如圖3所示,A相首先從正弦函數(shù)表的地址0 開始累加讀起,當(dāng)讀到地址90 處,再從地址90 處累減讀到地址0 處,這樣在A相可逆計(jì)數(shù)器的控制下,就可以得到周期為的單向半波正弦信號;C相首先從正弦函數(shù)表的地址60 開始遞減讀起,當(dāng)讀到地址0 處,再從地址0 處遞增讀到地址90 處,然后從地址90 處遞減讀到地址0 處,這樣在C相可逆計(jì)數(shù)器的控制下,就可以得到周期為、初相位滯后A相60 的單向半波正弦信號;同理,B相從正弦函數(shù)表的地址60 開始累加讀起,在B相可逆計(jì)數(shù)器的控制下,就可以得到周期為 、初相位滯后C相60 的單向半波正弦信號。variable m :integer range 511 downto 0if clk\39。1\39。m:=m+1。C_ Address=m。event and clk=\39。 then elsif BB=\39。 B_Data = *ROM_Data。end process。 then 表示當(dāng)前A相正弦--波處于正半周期 End process。發(fā)布時(shí)間:2005331 20:42:11::D_APORT EQU 8000H 。三角波上升沿INCB ALJNC W2LOOPLDB AL,0FEH 。延時(shí)DJNZ AH,$DJNZ CX,W3LOOPDJNZ DX,WAVE3SJMP WAVE1。三角波下降沿DJNZ AL,W2LOOP1DJNZ DX,W2LOOP。延時(shí)DJNZ AH,$INCB ALJNC W1LOOPDJNZ DX,W1LOOP。要產(chǎn)生正弦波的簡單手段是造一張正弦數(shù)字量表。 參考文獻(xiàn):[1]許強(qiáng),等.基于FPGA的三相PWM發(fā)生器[J].電子技術(shù)應(yīng)用,2001,27(1):73~74[2]田杰,等.基于FPGA的靜止補(bǔ)償器PWM脈沖發(fā)生器設(shè)計(jì)[J].電力系統(tǒng)自動化,2000,24(23):47~49[3]Zbigniew Bielewicz,Leszek Debowski.A DSP and FPGA Based Integrated Controller Development Solutions for High Performance Electric Drives.Proceedings of the IEEE International Symposium on Industrial Electronics,Warsaw,Poland,1996,2:679~684[4]ShihLiang Jung,MengYueh Chang.Design and Implementation of a FPGABased Control IC for ACVoltage Regulation.IEEE Transactions on Power Electronics,1999,14(3):522~532[5]戴本祁.三相整流器移相觸發(fā)電路的EDA設(shè)計(jì)[J].電力電子技術(shù),2000,34(3):53~54[6]侯波亨,等. VHDL硬件描述語言與數(shù)字邏輯電路設(shè)計(jì)[M]. 西安電子科技大學(xué)出版社. 1999 可以看到,輸出的六路PWM信號脈沖寬度有了明顯的改變。輸入調(diào)制頻率為50Hz、