基于DSP正弦信號發(fā)生器設計
1.4 獨立鍵盤(pán)的設計
本信號發(fā)生器采用獨立鍵盤(pán)作為人機接口部分,即各個(gè)按鍵相互獨立,按下相應的按鍵,就能輸出對應幅度和頻率的正弦波。
圖3所示為中斷方式工作的獨立式鍵盤(pán)的連接圖,每個(gè)按鍵各接一根I/O接口線(xiàn),每根I/O接口線(xiàn)上的按鍵都不影響其它的I/O接口線(xiàn)。因此,可以通過(guò)檢測I/O的電平狀態(tài)判斷出哪個(gè)鍵按下。這4個(gè)獨立按鍵分別接HD0~HD3口,并且使用4個(gè)220 Ω的上拉電阻接Vcc。本文引用地址:http://dyxdggzs.com/article/150945.htm
當沒(méi)有按下鍵時(shí),對應的I/O接口線(xiàn)輸入為高電平,當按下鍵時(shí),對應的I/O接口線(xiàn)輸入為低電平,則請求中斷INT1。而在讀鍵時(shí),每一個(gè)鍵的狀態(tài)通過(guò)讀入鍵值的高低電平來(lái)反應。在中斷服務(wù)程序中通過(guò)執行判鍵程序,判斷是哪個(gè)鍵按下,從而設置對應的幅度和頻率,執行產(chǎn)生正弦波形的程序。
獨立式鍵盤(pán)的電路配置靈活、軟件簡(jiǎn)單。但每個(gè)按鍵要占用1根I/O接口線(xiàn),在按鍵較多時(shí),I/O接口線(xiàn)浪費較大。故在按鍵數量不多時(shí)采用這種方法,本系統采用4個(gè)獨立按鍵,而DSP芯片有足夠的I/O接口可供使用,設計時(shí)可以充分利用這一特點(diǎn)來(lái)連接硬件,至于對按鍵時(shí)抖動(dòng)的消除可在軟件中完成。使用中斷,可提高CPU的效率,實(shí)現資源共享和并行處理,同時(shí)也可以在芯片運行過(guò)程中對突發(fā)故障做出及時(shí)發(fā)現和處理。
2 系統軟件設計
2.1 正弦波形產(chǎn)生原理
常見(jiàn)產(chǎn)生正弦波的方法有6種:(1)采樣回放法;(2)實(shí)時(shí)計算法;(3)查表法;(4)查表結合插值法;(5)數值迭代法;(6)泰勒級數展開(kāi)法。
采樣回放法容易實(shí)現,但系統的擴展性差,且并沒(méi)有充分利用DSP的數據計算處理能力。實(shí)時(shí)計算法需要花費較多時(shí)間,只能產(chǎn)生較低頻率的正弦波,而且存在計算精度與計算時(shí)間的矛盾。查表法的精度受表的大小影響較大,表越大精度越高,但是存儲量也越大。查表結合插值法亦稱(chēng)混合法,用它產(chǎn)生的正弦波達不到理想的精度。數值迭代法較難編寫(xiě)出清晰的程序來(lái)。泰勒級數展開(kāi)法是一種有效的方法,與查
表法和查表結合插值法相比,該方法需要的存儲單元很少,而且精度更高。一個(gè)角度為的正弦和余弦函數,展開(kāi)成5項泰勒級數如下
式中,x為θ的弦度值,正弦波的波形可以看成是由無(wú)數個(gè)點(diǎn)組成,這些點(diǎn)與x軸的每個(gè)角度值相對應,利用DSP可大量重復計算的優(yōu)勢來(lái)計算出x軸每一點(diǎn)對應的y值,然后通過(guò)D/A轉換即可輸出連續的正弦模擬信號。
2.2 變頻調幅的方法
(1)16位定時(shí)模塊。
C5402 DSP芯片片內定時(shí)器是一個(gè)軟件可編程的計數器,它包括以下3個(gè)16位存儲器映射寄存器:定時(shí)寄存器TIM,定時(shí)器周期寄存器PRD和定時(shí)控制寄存器TCR。片內定時(shí)器中,4位的預定標計數器PSC和16位定時(shí)計數器TIM組成一個(gè)20位的計數器,定時(shí)器每個(gè)CPU時(shí)鐘周期減1,每次計數器減到0將產(chǎn)生定時(shí)器中斷(TINT),同時(shí)PSC和TIM重新載入預設的值。定時(shí)器中斷TINT的速率可由式(3)計算。
(2)變頻調幅實(shí)現方法。
調幅的實(shí)現相對簡(jiǎn)單,只需在所有采樣值前乘以一個(gè)調幅因子A1就可得到相應的正弦波幅值A。而調頻的實(shí)現必須依賴(lài)于C5402芯片內的16位定時(shí)器。DSP芯片不斷向D/A芯片送出采樣值,然后經(jīng)模數轉換后可在示波器上觀(guān)察到連續的正弦波形。先預設要產(chǎn)生的正弦信號頻率為f,根據正弦波生成原理可知,向D/A送出采樣值的間隔,即向D/A送值的周期T1=T/N(N為采樣點(diǎn)數),那么向D/A送值的頻率為f1=N×f,即向D/A送值的頻率是期待產(chǎn)生的正弦波信號頻率的N倍。
因此,為了能夠調節產(chǎn)生正弦信號的頻率,實(shí)際上改變向D/A芯片送值的頻率即可。而改變向D/A芯片送值的頻率就得用到C5402芯片內的16位定時(shí)器。根據式(3)將需要的頻率值換算成PRD內的初值和TDDR的初值,并將該初值分別置入PRD和TDDR。
評論