DSP56311EVM的教學(xué)實(shí)驗平臺設計
關(guān)鍵詞 DSP56311 教學(xué)實(shí)驗平臺 混合編程
1 設計思想
本系統是一種教學(xué)、課程實(shí)驗及技術(shù)開(kāi)發(fā)的平臺,主要應用于DSP原理及應用、數字信號處理等相關(guān)課程的實(shí)驗教學(xué)。它是以DSP56311EVM為核心,對系統進(jìn)行的擴展,包括軟件和硬件兩個(gè)部分。軟什部分使用C++Builder制作了“DSP56311實(shí)驗平臺”的平臺環(huán)境,實(shí)現的用匯編語(yǔ)言編寫(xiě)的DSP硬件驅動(dòng)程序能夠為C語(yǔ)言調用;硬件部分有效利用了芯片的資源,增強了應用于教學(xué)的功能,并留出了進(jìn)一步擴展的接口。
2 系統結構
2.1 硬件部分
硬件平臺的核心是M0torola公司提供的DSP56311評估板。DSP56311EVM可外接24根數據線(xiàn)、18根地址線(xiàn)和4根地址特征狀態(tài)線(xiàn),對可擴展資源提供了接口;但這些接口一般不能直接與外部的設備連接,需要進(jìn)行相應的擴展。硬件平臺的外部電路包含:5V、15V、+6V的直流電源,正弦波、三角波、方波的波形發(fā)生電路模塊,MIC信號放大電路,LCD顯示模塊等。
圖1為系統硬件平臺內部結構,圖中左側為外部電路模塊,右側為DSP563llEVM評估板。這些電路模塊可以產(chǎn)生實(shí)驗測試所必需的信號,并反映程序執行情況,為DSP的程序開(kāi)發(fā)和調試提供方便的硬件環(huán)境。
硬件部分解決的問(wèn)題:
①DSP的端口通過(guò)寄存器設置可以作為通用輸入/輸出端口(GPI0)或專(zhuān)用端口。外部電路與DSP連接時(shí),可以有多種實(shí)現方案。在資源緊張的情況下,調配資源,實(shí)現最優(yōu)。
②時(shí)序問(wèn)題。DSP563ll的處理速度高達150 MIPS,1個(gè)指令周期大約7ns。解決時(shí)序問(wèn)題,加快外圍的接口芯片工作速度。LCD相對于DSP來(lái)說(shuō),是種“反應”很慢的外部設備。本課題采用定時(shí)器模塊(時(shí)間中斷)來(lái)控制LCD動(dòng)態(tài)圖形顯示的刷新頻率,如把LCD的刷新頻率設定為2幀/s,即每0.5s向LCD傳送1屏圖形的數據。另外,DSP與LcD通信接口的實(shí)現是對DSP的GPIO編程,使GPIO引腳的信號符合LCD數據傳輸的時(shí)序要求。由于DSP的工作頻率很高,DSP與LCD間數據傳輸不僅要注意控制引腳上電平的高低和先后次序,而且還要插入必要的等待時(shí)間,維持信號線(xiàn)上的電平,使LCD可以可靠地讀到控制引腳上的信號。
圖2為系統硬件原理框圖。
2.2 軟件部分
軟件分兩部分:用C++Builder制作的DSP56311軟件實(shí)驗平臺;用匯編語(yǔ)言編寫(xiě)的DSP硬件驅動(dòng)程序。
2.2.1 DSP56311實(shí)驗平臺
圖3為DSP56311實(shí)驗平臺界面。打包好的平臺可以隨意安裝在個(gè)人電腦上,平臺包括實(shí)驗說(shuō)明、程序編制、程序編譯、參考結果、體驗實(shí)驗等內容。此平臺可以作為實(shí)驗的指導軟件,也可作為開(kāi)發(fā)軟件直接在平臺上編寫(xiě)程序、編譯和仿真。
2.2.2 C語(yǔ)言與匯編語(yǔ)言混合編程
本設計用匯編語(yǔ)言編寫(xiě)DSP周邊外設的驅動(dòng)程序和一些數字信號處理算法的子程序。用C語(yǔ)言編寫(xiě)主控程序,調用匯編語(yǔ)言編寫(xiě)的子程序完成硬件操作和信號處理工作。
(1)插入式C與匯編混合編程
使用__asm()指令在C語(yǔ)言程序中插入匯編指令的混合編程方式主要應用在以下情況:需要插入的匯編程序代碼較少(如一些簡(jiǎn)單的直接操作硬件指令);在用C語(yǔ)言的環(huán)境中,用插入式編寫(xiě)的匯編子程序可以避免內存分配、寄存器使用和保護,以及參數傳遞和返回等方面的問(wèn)題。
關(guān)鍵字_ _asm()的基本語(yǔ)句格式:
①“asm_instrution”是指匯編語(yǔ)言的指令名,如move、mpy等。
②“=”用來(lái)區分足輸入還是輸出參數,表示操作數Oper0的值將傳輸給C語(yǔ)言的變量CptrO;沒(méi)有“=”,表示該操作數是輸入操作數,即操作數Operl的值來(lái)自C語(yǔ)言變量Cptrl。
③“M”(operande modifier)用來(lái)指定操作數的類(lèi)別,例如%e用來(lái)指定操作數為累加器的MSB,即a1或bl。
④Oper0、Operl用來(lái)指定操作數是寄存器或內存,如“A”表示該操作數被限定為地址寄存器r0~r7,即要求編譯器為該操作數指定一個(gè)空閑的地址寄存器。
(2)C程序與匯編程序混合編程
C程序與匯編程序混合編程就是將用C語(yǔ)言編寫(xiě)的和用匯編語(yǔ)言編寫(xiě)的源程序分開(kāi)編輯、編譯,生成各自的目標文件,然后再鏈接到一起。其中,主程序在C語(yǔ)言環(huán)境中編寫(xiě),匯編語(yǔ)言編寫(xiě)的子程序可以被調用。C程序與匯編程序混合編程由C程序編譯器g563c來(lái)完成。
C編譯器g563c的命令格式為:
在混合編程時(shí),需要注意以下幾點(diǎn):
①C程序與匯編程序混合編程的特點(diǎn)是,匯編語(yǔ)句是在匯編語(yǔ)言環(huán)境中編寫(xiě)的;而使用_asm()指令在C語(yǔ)言程序中插入匯編指令的混合編程方式,匯編程序的編寫(xiě)要遵循C語(yǔ)言的規則。
②為了確保在匯編環(huán)境中編寫(xiě)的匯編子程序在C語(yǔ)言環(huán)境中可靠地被調用執行,匯編程序需要做出如下處理:引導部分,把程序返回地址保存到堆棧,接受程序入口參數的傳遞;保存匯編程序將要使用的寄存器的值;匯編程序的主體;恢復第二步所保存的寄存器的值,把保存到堆棧中的寄存器的值按順序從堆棧中取出并賦給原來(lái)的寄存器,使這些寄存器恢復到本匯編子程序被調用前的狀態(tài);結尾部分,處理程序的返回值和返回地址,c語(yǔ)言子程序調用可以用return命令返回一個(gè)數值,混合編程的匯編程序也可以在C環(huán)境中被調用后返回一個(gè)值。在匯編源程序中,最后把需要返回的數值存放到累加器a中,然后用匯編指令tst把參數傳遞給c環(huán)境。
③C語(yǔ)言調用匯編源文件中的匯編子程序。首先在一個(gè)匯編源文件(如source,asm)中編寫(xiě)一個(gè)匯編子程序。一般在匯編環(huán)境中子程序的寫(xiě)法如下:
若在C語(yǔ)言源文件(如proj.c)中調用匯編子程序Ftest,則可以在C語(yǔ)言中重新定義匯編子程序的標號。即在C語(yǔ)言文件頭部(或調用該匯編子程序的C函數之前)定義:
extern void ReName()__asm(“FTest”);
然后在C語(yǔ)言環(huán)境中調用ReName()子程序即可。
如果在編寫(xiě)匯編子程序時(shí),在子程序的名稱(chēng)前加上一個(gè)大寫(xiě)的“F”,則在C環(huán)境中可以省略重新定義匯編子程序標號的步驟,這樣C語(yǔ)言默認的匯編子程序的名稱(chēng)為去掉“F”以后的程序名。如上面的例子,在C環(huán)境中調用test()子程序,即調用source.a(chǎn)sm中Ftest子程序。
④中斷程序的C語(yǔ)言寫(xiě)法。編寫(xiě)C語(yǔ)言的中斷程序,首先要修改crt0.a(chǎn)sm中的中斷向量表,即在中斷向量表中找到某中斷向量的位置,并在此處調用程序員所編寫(xiě)的中斷響應程序。
如把增強型同步串口0(ESSI0)設定工作在中斷方式,數據的接收、發(fā)送都采用中斷來(lái)執行。程序員編寫(xiě)的增強串口數據接收中斷服務(wù)子程序為Fssi_rx_isr。增強串口O數據接收的中斷向量的地址為p:$30(p代表程序存儲區),則對crt0.a(chǎn)sm中的中斷向量表修改如下:
⑤C語(yǔ)言使用匯編源文件中定義的變量
因C語(yǔ)言定義的變量都是映射在內存的Y區的,故C語(yǔ)言可以讀寫(xiě)的在匯編源程序中定義的變量也必須是定義在Y區的。例如,在匯編程序source.a(chǎn)sm中定義內存:
則C變量c_var與匯編變量test_var映射的是同一個(gè)內存物理地址。這是一種C語(yǔ)言與匯編語(yǔ)言之間數據的有效傳遞方式。
g563c的局限性在于,對于g563c編譯規則不十分熟悉的使用者,會(huì )常常因為匯編語(yǔ)言與C語(yǔ)言程序使用DSP資源的沖突而發(fā)生異常的錯誤,導致C語(yǔ)言程序無(wú)法可靠運行。本課題的目的也在于減少使用者在C語(yǔ)言環(huán)境下大量使用匯編語(yǔ)言的需要,從而增強了系統的可靠性。
3 主要實(shí)驗項目
本嵌入式系統目前主要是作為本科和研究生的實(shí)驗平臺,在設計上包括硬件基礎實(shí)驗和軟件算法實(shí)驗兩部分。
硬件實(shí)驗部分包括:
①串行通信實(shí)驗。
②數據存儲實(shí)驗。編程控制A端口對外部SRAM存儲器以及外圍的Flash存儲器特定區域進(jìn)行存取操作。
③語(yǔ)音采集存儲實(shí)驗。設置適當采樣率,編程實(shí)現語(yǔ)音信號的采集。
④語(yǔ)音錄放實(shí)驗。
⑤A/D實(shí)驗(簡(jiǎn)易示渡)。
⑥D/A實(shí)驗(函數信號發(fā)生器)。
軟件實(shí)驗部分包括:
①基本數學(xué)運算實(shí)驗。
②FFT快速傅里葉變換。
③FIR有限沖激響應濾波器。
對給定時(shí)域信號進(jìn)行操作,并與Matlab運算結果進(jìn)行分析比較。
下面以串行通信實(shí)驗為例簡(jiǎn)述實(shí)驗:
實(shí)驗內容DSP通過(guò)串行接口(RS232)與PC機進(jìn)行雙向通信。①把從鍵盤(pán)輸入的字符通過(guò)串口發(fā)送給PC機,并且接收PC機發(fā)送的字符。LCD工作在文字顯示模式;鎖相環(huán)時(shí)鐘分頻器和串行通信控制器設定串行通信的波特率。②由PC機通過(guò)串口把一幅黑白圖片傳輸給DSP并且通過(guò)LCD顯示出來(lái)。LCD工作在圖形顯示模式。
實(shí)驗原理 利用對56311的SCI(Serial Communica-tion Interface)編程,實(shí)現DSP與上位機進(jìn)行多種波特率的串行通信。
實(shí)驗使用的外部設備標準102鍵盤(pán)和LCD。
實(shí)驗使用的DSP內部模塊鎖相環(huán)時(shí)鐘分頻器和串行通信接口(SCI)。實(shí)驗內容:DSP通過(guò)串行接口(RS232)與PC機進(jìn)行雙向通信。DSP把從鍵盤(pán)輸入的字符通過(guò)串口發(fā)送給PC機,并且可以接收PC機發(fā)送的字符。
實(shí)驗結果圖4為發(fā)送圖片的LCD顯示結果。
4 結論
本課題實(shí)現了基于DSP563llEVM教學(xué)實(shí)驗平臺的研制。編寫(xiě)了支持C語(yǔ)言的DSP硬件驅動(dòng)程序庫文件系統,沒(méi)計了DSP開(kāi)發(fā)和實(shí)驗所必需的信號發(fā)生電路和方便結果顯示的LCD顯示接口電路;建立了能夠處理多個(gè)任務(wù)的主程序架構。把單獨運行的信號處理程序模塊化為C語(yǔ)言的子程序,可以在系統中隨時(shí)調用執行,充分體現了DSP強大的計算能力和軟件編程的靈活性。
c語(yǔ)言相關(guān)文章:c語(yǔ)言教程
c++相關(guān)文章:c++教程
分頻器相關(guān)文章:分頻器原理 鎖相環(huán)相關(guān)文章:鎖相環(huán)原理
評論