DSP硬體實驗報告

2021-03-04 04:00:57 字數 4651 閱讀 8082

實驗一:簡單指令程式執行實驗

**(含注釋):

.mmregs

.global _main

_main:

stm #3000h,sp ;sp為堆疊指標暫存器,stm為儲存器對映暫存器定址

ssbx xfxf賦值為1,燈亮

call delay呼叫delay函式,延遲0.5秒

rsbx xfxf賦值為0,燈滅

call delay呼叫delay函式

bmain無條件呼叫_main函式

nopnop;delay .5 second延時5秒

delay:

stm 270fh,ar3 ;ar3賦值207fh,十進位制為9999d

loop1

stm 0f9h,ar4ar4賦值0f9h,十進位制為249d

loop2:

banz loop2,*ar4- ;若不為0,ar4減1

banz loop1,*ar3- ;若不為0,ar3減1,共進行10000*250次跳轉

retnopnop.end

實驗操作:

可見xf燈以一定頻率閃爍;單擊「halt」暫停程式執行,則xf燈停止閃爍,如再單擊「run」,則「xf」燈又開始閃爍。

實驗二:資料儲存實驗

本實驗程式將對0x1000開始的8個位址空間,填寫入0xaaaa的數值,然後讀出,並儲存到0x1008開始的8個位址空間。在ccs中可以觀察data記憶體空間位址0x1000~0x100f值的變化。

**(含注釋):

.mmregs

.global _main

_main

;store data儲存資料

stm 1000h,ar1 ;將立即數1000h送入輔助暫存器ar1 (記憶體位址)

rpt #07h迴圈執行下一條指令,8次

st 0aaaah,*ar1將立即數 0xaaaah賦給輔助暫存器ar1的1000h位址內,

;之後ar1的位址加1, 8次;ar1的位址變1008,記憶體0x1000-- ox1007中的資料均為0xaaaah

;read data then re-store讀入資料重新儲存

stm 7h,ar3令輔助暫存器ar3的初值為07h

stm 1000h,ar1重新將立即數1000h送入輔助暫存器ar1

stm 1008h,ar2 ;將立即數1008h送入輔助暫存器ar2

loop進入迴圈

ld *ar1+,t ;將輔助暫存器ar1的值0xaaaah存入t暫存器中, 且ar1的位址加1

st t,*ar2+ ;將t暫存器內容0xaaaah存入輔助暫存器ar2 ,並且ar2的位址加1

banz loop,*ar3- ;暫存器ar3的值不為0時,執行迴圈 loop,ar3的位址值減1直至為0時退出迴圈

here:

b here

.end結束(位址0x1000-- 0x100f,程式完成對16個記憶體單元賦值 )

實驗操作:

1.用「view」下拉列表中的「memory」檢視記憶體單元;

2.輸入要檢視的記憶體單元位址,本實驗要檢視0x1000h~0x100fh單元的數值變化,輸入位址0x1000h;

3.檢視0x1000h~0x100fh單元的初始值,單擊「run」執行程式,也可以「單步」執行程式;

4.單擊「halt」暫停程式執行;

5.檢視0x1000h~0x100fh單元內數值的變化;

6.關閉各視窗,本實驗完畢。

實驗三:i/o實驗

**(含注釋):

.mmregs

.global _main

.text

_main:

stm 3100h,sp

stm 1000h,ar1指定位址

portr 00h,*ar1 ;讀入開關狀態,並存入輔助暫存器ar1中

nopnopportw *ar1,01h ;將輔助暫存器ar1的內容即開關的狀態寫入到led燈上

nopnopb _main迴圈執行

nopnop.end

實驗操作:

任意調整k0~k7開關,可以觀察到對應lp0~lp7燈「亮」或「滅」;單擊「halt」,暫停持續執行,開關將對燈失去控制。

關閉所有視窗,本實驗完畢。

實驗四:定時器實驗

定時器實驗時要用到c54晶元的定時器控制暫存器,定時器時間常數暫存器,定時器中斷響應,暫存器定義詳見c54晶元資料。c54的定時器是乙個20位的減法計數器,可以被特定的狀態位實現停止、重新啟動、重設定或禁止,可以使用該定時器產生週期性的cpu中斷,控制定時器中斷頻率的兩個暫存器是定時週期暫存器prd和定時減法暫存器tddr

定時器實驗通過 led(lp1~lp7)來顯示。在本系統中,時鐘頻率為20mhz,令prd = 0x4e1f,這樣得到每1/1000秒中斷一次,通過累計1000次,就能定時1秒鐘。

**(含注釋):

【初始化程式】

.mmregs

.global _initial

_initial:

stm 300h,ar1 ;初始化300h 資料位址

st #00h,*ar1 ;輔助暫存器ar1指向#00h

stm 302h,ar1 ;初始化 302h 資料位址

st #00h,*ar1

stm 200h,ar1

st #5555h,*ar1

stm 201h,ar1

st #0aaaah,*ar1

stm 202h,ar1

st #400h,*ar1

ssbx 1,11將置為1,停止所有中斷

stm 0ffffh,ifr ;清除所有中斷標識 ifr:中斷標誌暫存器

stm 00h,imr ;將立即數暫存器置為0,停止所有中斷

stm 410h,tcr ;停止計時器 tcr:傳送控制暫存器

stm 4e1fh,prd ;將初始時間設為4e1fh

stm 420h,tcr ;開始計時器

stm 08h,imr ;允許計時器中斷

rsbx 1,11將置為0,開始所有中斷

ret【埠程式】

.mmregs

.global _porta

.global _portb

_porta:

stm 304h,ar1

st 5555h,*ar1 ;輔助暫存器ar1指向5555h

portw *ar1,01h

ret_portb:

stm 304h,ar1

st 0aaaah,*ar1 ;輔助暫存器ar1指向0aaaah

portw *ar1,01h

ret【向量程式】

.sect ".vectors"

.ref _c_int00c程式入口

.ref _timer時間中斷點

.align 0x80必須被鏈結到頁邊界

reset重設向量

bd _c_int00到c入口點的分支

stm #200,sp堆疊大小為200 sp:堆疊暫存器

nmi: rete啟動中斷並從乙個返回

nopnop

nop軟體中斷

sint17 .space 4*16

sint18 .space 4*16

sint19 .space 4*16

sint20 .space 4*16

sint21 .space 4*16

sint22 .space 4*16

sint23 .space 4*16

sint24 .space 4*16

sint25 .space 4*16

sint26 .space 4*16

sint27 .space 4*16

sint28 .space 4*16

sint29 .space 4*16

sint30 .space 4*16

int0: rete

nopnop

nopint1: rete

nopnopnop

int2: rete

nopnop

noptint: b _timer

nopnop

rint0: rete

nopnop

nopxint0: rete

nopnop

noprint1: rete

nopnop

nopxint1: rete

nopnop

nopint3: rete

nopnop

nopend

實驗操作:

1.單擊「run」執行,可觀察到led燈(lp0~lp7)以一定的間隔時間不停擺動;

2.單擊「halt」,暫停程式執行,led燈停止閃爍;

DSP硬體實驗報告

北京郵電大學 實驗一 常用指令實驗 一 實驗目的 1.熟悉dsp開發系統的連線 2.了解dsp開發系統的組成和結構和應用系統構成 3.熟悉常用c54x系列指令的用法 程式定址,暫存器,i o口,定時器,中斷控制 二 實驗裝置 計算機,ccs 2.0版軟體,dsp 器,實驗箱。三 實驗操作方法 1 系...

DSP硬體實驗報告

班級學號姓名 班內序號 2014年12月23日 第一部分 5416常規實驗 實驗一 常用指令實驗 截圖及注釋 1 實驗目的 了解dsp開發系統的組成和結構,熟悉dsp開發系統的連線,熟悉dsp的開發介面,熟悉c54x系列的定址系統,熟悉常用的c54x系列指令的用法。2 截圖 3 源 注釋 mmreg...

DSP硬體實驗報告參考

數字訊號處理實驗報告 學院 電子工程學院 班級 2012211207 學號 2012210995 班內序號 04 姓名 王孟哲 file name exp01.a the program is piled at no autoinitialization mode mmregs global mai...