TMS320C54x DSP CPU与外设(二)

2019-07-19 16:47发布

第三章 数据寻址    C54x提供七类寻址方式:l     立即数寻址l     绝对地址寻址l     累加器寻址l     直接寻址l     间接寻址l     内存映象寄存器寻址l     堆栈寻址下面着重介绍以下几种方式。 1 绝对地址寻址术语解释:dmad-数据存储地址;pmad-程序存储地址;PA-口地址;lk-长整数。绝对地址寻址包括四类:l     dmad寻址l     pmad寻址l     PA寻址l     *(lk)寻址1.1 dmad寻址   dmad寻址用一标号标记数据空间地址,这类指令有:l     MVDK Smem,dmadl     MVDM dmad,MMRl     MVKD dmad,Smeml     MVMD MMR,dmad如:MVKD SAMPLE,*AR5。此处SAMPLE即是dmad。1.2 pmad寻址   pmad寻址用一标号标记程序空间地址,这类指令有:l     FIRS Xmem,Ymem,pmadl     MACD Smem,pmad,srcl     MACP Smem,pmad,srcl     MVDP Smem,pmadl     MVPD pmad,Smem如:MVPD TABLE,*AR7-。此处TABLE即为pmad。1.3 PA寻址PA寻址用一标号标记外部I/O口地址,这类指令有:l     PORTR PA,Smeml     PORTW Smem,PA如:PORTR FIFO,*AR5。此处FIFO即为PA。1.4 *(lk)寻址*(lk)寻址也是用标号标记数据空间地址。如:LD *(BUFFER),A。使用这类指令的好处在于不用修改DP和AR值。但有一点要注意的是,这类指令不能用于重复执行单指令中(RPT,RPTZ)。 2 直接寻址在这类指令中,指令中的地址标号构成dmad的低7位(DP方式)或作为正向偏移量(SP方式)。所以指令中地址标号不得超过7位,采用DP或SP方式,由ST1中CPL位决定。CPL=0,采用DP方式;CPL=1,采用SP方式。2.1 DP方式   DP方式,DP中内容作为dmad地址高9位,指令中地址标号作为低7位构成dmad地址。2.2 SP方式   SP方式,以SP中内容作为dmad基地址,指令中地址标号作为正向偏移量,二者相加构成dmad地址。 3 间接寻址间接寻址是指dmad由辅助寄存器AR0-AR7内容构成。使用间接寻址的灵活性不仅在于一条指令完成读或写数据存储区(单操作数),还在于一条指令可以完成两个不同存储区的读操作,或两个不同存储区的写操作,或对两个不同位置的一读一写操作。3.1 对SARAM的访问对SARAM访问使用寄存器AR0-AR7,其中AR0为变址寄存器。用法见下表: 语 法功    能描     述*ARxdmad=ARxARx包含dmad*ARx-dmad=ARxARx=ARx-1访问后,ARx中地址内容减1*ARx+dmad=ARxARx=ARx+1访问后,ARx中地址内容加1*+ARxdmad=ARx+1ARx=ARx+1访问前,ARx中地址内容加1*ARx-0Bdmad=ARxARx=B(ARx-AR0)访问后,ARx中内容减去AR0中内容,并产生反向借位翻转(用于FFT算法)*ARx-0dmad=ARxARx=ARx-AR0访问后,ARx中内容减去AR0中内容*ARx+0dmad=ARxARx=ARx+AR0访问后,ARx中内容减去AR0中内容*ARx+0Bdmad=ARxARx=B(ARx+AR0)访问后,ARx中内容加上AR0中内容,并产生反向进位翻转(用于FFT算法)*ARx-%dmad=ARxARx=circ(ARx-1)访问后,ARx中内容按循环寻址方式减1*ARx-0%dmad=ARxARx=circ(ARx-AR0)访问后,ARx中内容按循环寻址方式减去AR0中内容*ARx+%dmad=ARxARx=circ(ARx+1)访问后,ARx中内容按循环寻址方式加1*ARx+0%dmad=ARxARx=circ(ARx+AR0)访问后,ARx中内容按循环寻址方式加上AR0中内容*ARx(lk)dmad=ARx+lkARx=ARxARx中内容加上16位长偏移(lk)为dmad,ARx不更新*+ARx(lk)dmad=ARx+lkARx=ARx+lkARx中内容加上16位长偏移(lk)为dmad,ARx更新*+ARx(lk)%dmad=circ(ARx+lk)ARx=circ(ARx+lk)ARx中内容按循环寻址方式加上16位长偏移(lk)为dmad,ARx更新*(lk)dmad=lk16位绝对地址寻址
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
1条回答
FCCdsp
1楼-- · 2019-07-19 20:10
第四章 中断系统
 
   硬件和软件驱动都可以使C54x产生中断。软件中断是指由程序指令引起的中断,这类指令有:INTR,TRAP,RESET。硬件中断可由外部硬件引发,或由片内外设内部引发。无论软件中断还是硬件中断都可分为可屏蔽中断和不可屏蔽中断。C54x处理中断按以下三个步骤:
l     接收中断请求
l     响应中断
l     执行中断服务程序
 
3.2 中断标志寄存器IFR(以C549为例)
 
15-14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
保留
BMINT1
BMINT0
BXINT1
BRINT1
HPINT
INT3
TXINT
TRINT
BXINT0
BRINT0
TINT
INT2
INT1
INT0
 
IFR中某位为1表明有相应中断,再次写1清除中断。
3.2 中断屏蔽寄存器IMR(以C549为例)
 
15-14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
保留
BMINT1
BMINT0
BXINT1
BRINT1
HPINT
INT3
TXINT
TRINT
BXINT0
BRINT0
TINT
INT2
INT1
INT0
 
要打开某个中断,只需向IMR中相应某位写1。而ST1中INTM位为中断总开关。
 
3.3 中断位置与优先级(以C549为例)
 
中断号
优先级
名  称
位 置
功  能
0
1
RS/SINTR
0
复位(软硬件)
1
2
NMI/SINT16
4
非屏蔽中断
2

SINT17
8
软件中断17
3

SINT18
C
软件中断18
4

SINT19
10
软件中断19
5

SINT20
14
软件中断20
6

SINT21
18
软件中断21
7

SINT22
1C
软件中断22
8

SINT23
20
软件中断23
9

SINT24
24
软件中断24
10

SINT25
28
软件中断25
11
-
SINT26
2C
软件中断26
12
-
SINT27
30
软件中断27
13
-
SINT28
34
软件中断28
14
-
SINT29
38
软件中断29
15
-
SINT30
3C
软件中断30
16
3
INT0/SINT0
40
外部中断0
17
4
INT1/SINT1
44
外部中断1
18
5
INT2/SINT2
48
外部中断2
19
6
TINT/SINT3
4C
定时器中断
20
7
BRINT0/SINT4
50
带缓存串口0接收中断
21
8
BXINT0/SINT5
54
带缓存串口0发送中断
22
9
TRINT/SINT6
58
TDM串口接收中断
23
10
TXINT/SINT7
5C
TDM串口发送中断
24
11
INT3/SINT8
60
外部中断3
25
12
HINT/SINT9
64
HPI口中断
26
13
BRINT1/SINT10
68
带缓存串口1接收中断
27
14
BXINT1/SINT11
6C
带缓存串口1发送中断
28
15
BMINT0/SINT14
70
BSP0失步检测中断
29
16
BMINT1/SINT13
74
BSP1失步检测中断
30-31
-
 
78-7F
保留

一周热门 更多>