1、AR3 0101AR3 01000100h 1500数据存储器二、 简答(共40分)1 TMS320C54x有多少条16位总线?这些总线各有什么作用?(6分)答:C54x共有4组8条16位总线 1条程序总线(PB):传送取自程序存储器的指令代码和立即操作数。 3条数据总线(CB、DB、EB):CB和EB传送从数据存储器读出的操作数;EB传送写到存储器中的数据。 4条地址总线(PAB、CAB、DAB、EAB)传送相应指令所学要的代码。2 TMS320C54x片内存储器一般包括哪些种类?如何控制存储器片内或片外的分配?TMS320C54x的片内存储空间分为3个可选择的存储空间:64K的程序空间,6
2、4K的数据空间和64K的I/O空间,所有TMS320C54x芯片都包括RAM、SARAM、DARAM。 程序空间:MP/MC=1 4000HFFFFH 片外 MP/MC=0 4000HEFFFH 片外 FF00HFFFFH 片内 OVLY=1 0000H007FH 保留 0080H007FH 片内 OVLY=0 0000H3FFFH 片外 数据空间:DROM=1 F000HFEFFH 只读空间 FF00HFFFH 保留 DROM=0 F000HFEFFH 片外3 当TMS320C54x CPU接收到可屏蔽的硬件中断时,满足哪些条件中断才能被响应?(1)出现多个中断时,此中断的优先级最高(2)I
3、NTM=0 允许全局中断 (3)IMR中的响应相应位为1,开放此中断。4 循环寻址中,如何确定循环缓冲的起始地址?如果循环缓冲大小为17,其起始地址必须从什么地址开始?BK初始化为多少?(4分)5 TMS320C54x硬件复位地址为多少?如何确定中断向量地址?计算INT0(IPTR=001H)的中断向量地址。复位后,复位向量地址为:0080H 确定地址方式:IPTR+左移2位后的中断向量序列号 10H左移2位后成为40H,IPTR=001H,则中断向量地址为00C0H6 若辅助寄存器AR0的值为0x0005H,AR3的值为0x030FH,请分别给出下列寻址方式修改后的辅助寄存器的值。*AR3+
4、 ; AR3=0310H*AR3+0 ; AR3=0314H*AR3(15) ; AR3=0324H7 分别解释以下指令的功能。LD #80h, A; 把立即数80H装入累加器ALD 80h, A; 把80H为地址的数据装如累加器ALD #80h,16, A; 把立即数80H左移16位后装如累加器A三、 程序填空(共22分,每空2分)1实现计算z=x+y-w的程序。 title example1.asm mmregsSTACK usect STACK, 10h bss x,1 bss y, bss w,1 bss z,1 def start datatable: word 10,26,23 t
5、extstart: STM #0,SWWSR STM #STACK+10h,SP ;初始化堆栈指针SP STM #x,AR1 RPT #2 MVPD table,*AR1+ ;数据从程序存储器传送到数据存储器 CALL SUMBend: B endSUMB: LD x, A ADD y, A SUB w,A ;实现减法运算 STL A, z RET end2实现对数组X5=1,2,3,4,5的初始化,然后将数据存储器中的数组X5复制到数组Y5。最后实现数组X和数组Y中对应元素相乘并累加,即z=1*1+2*2+3*3+4*4+5*5 bss x, 5 bss y, 5 bss z, word 1
6、,2,3,4,5 text STM #x, AR1 RPT 4 MVPD table,*AR1+ ;从程序存储器传送到数据存储器数组X5 STM # x, AR2STM # y, AR3 MVDD *AR1,*AR3 ;从数据存储器数组X5传送到Y5 SSBX FRCT ;准备整数乘法STM # x, AR2 STM # y, AR3STM # z, AR4RPTZ 4 MAC *AR2+,*AR3+,A STL A,*AR4 End:四、分析程序回答问题(共8分)def _c_int00 mmregsstack: usect stack,10h bss a,4 bss x,4 bss y,1
7、table: word 1,2,4,3 word 8,6,4,2 text_c_int00: STM #stack+10h,sp STM #a,AR1 RPT #7 MVPD table,*AR1+ CALL sumend: B endsum: STM #a,AR3 STM #x,AR4 RPTZ A,#3 MAC *AR3+,*AR4+,A STL A,y ret end (1) 说明该程序的功能:a1*x1=a2*x2+a3*x3+a4*x4(2) 说明以下各量的理论值(4分)A: 2A a1的地址:81H 内容:1 AR1: 88H AR3: 84H第二套1. TI公司的定点DSP产品主
8、要有 TMS320C2000 系列、TMS320C5000系列和 TMS320C6000 系列。2. C54x DSP中传送执行指令所需的地址需要用到 PAB 、CAB、DAB和 EAB 4条地址总线。3. DSP的内部存储器类型可分为随机存取存储器(RAM)和只读存储器(ROM)。其中RAM又可以分为两种类型:单寻址RAM(SARAM)和双寻址RAM(DARAM)。4. C54x DSP的内部总存储空间为192K字,分成3个可选择的存储空间:64K字的程序存储空间 、64K字的数据存储空间和64K字的 I/O空间 。5. 从功能结构上,C54X DSP的CPU可以划分成 运算部件 和 控制部
9、件 两大部分。6. C54x DSP的寻址方式有七种,分别为立即寻址、绝对寻址、累加器寻址、直接寻址、 间接寻址 、存储器映象寄存器寻址、堆栈寻址。7. 在C54x DSP寻址和指令系统中,Xmem和Ymem表示 16位双寻址操作数 ,Dmad为16位立即数,表示 数据存储器地址 ,Pmad为16位立即数,表示 程序存储器地址 。8. 程序计数器的值可以通过 复位操作 、 顺序执行指令 、 分支转移 ,累加器转移,块重复,子程序调用,从累加器调用子程序,中断等操作改变。9. C54x DSP芯片采用了6级流水线的工作方式,即一条指令分为 预取指 、取指、译码、 寻址 、读数和执行6个阶段。10
10、. 解决MMR写操作的流水线冲突时,一般可用采用推荐指令和 插入空操作指令 的方法。11. C54x DSP定时器由3个16位存储器映射寄存器组成:定时器寄存器(TIM)、 定时器周期寄存器(PRD)和 定时器控制寄存器(TCR) 。12. 主机接口(HPI,Host Port Interface) 是TMS320C54x 系列定点芯片内部具有的一种接口部件,主要用于DSP与其他总线或CPU进行通信。13. C54x DSP的指令系统有 助记符指令 和 代数指令 两种形式。14. COFF目标文件中.text段通常包含 可执行代码 ,.data段通常包含己初始化的数据,.bss段中通常为 未初
11、始化的数据 保留空间。15. DSP芯片的开发工具可以分为 代码生成工具 和 代码调试工具 两类。1BANZ 2000h, *AR3-2CMPR GT, AR33ADD *AR3+, 14, A4SUB A, -8, B5MPY *AR3+, A五、程序题(15分)写出计算的主要汇编程序,并给程序添加注释,画出程序的流程图。解:程序及注释:.bss x, 20 ;给变量x分配20个字单元.bss y, 1 ;给变量y分配1个字单元STM #x, AR1 ;取x地址STM #19, AR2 ;设置循环次数LD #0, A ;累加器清零loop: ADD *AR1+, A ;累加x分量 BANZ
12、loop, *AR2- ;循环是否结束,没有结束则继续累加 STL A, y ;把结果存入y流程图:第三套1、 用C55x汇编语言实现计算 的程序。(10分)mpym *AR0+, *AR1+, AC0mpym *AR0+, *AR1+, AC1add AC1, AC0或者: |rpt #2 macm *AR0+, *AR1+, AC02、 用C55x汇编语言实现计算 的程序。mpym *AR0+, *AR1+, AC3 masm *AR0+, *AR1+, AC33、 以8点的FFT为例,用C55x的汇编语言实现FFT的算法,并且解释该算法的实现方法。(20分) .sect fft_code
13、 _fft: aadd #(ARGS-Size+1),SP ; Adjust stack for local vars mov mmap(ST1_55),AR2 ; Save ST1,ST3 mov mmap(ST3_55),AR3 mov AR2,fft.d_ST1 mov AR3,fft.d_ST3 btst #0,T1,TC1 ; Check SCALE flag set mov #0x6340,mmap(ST1_55) ; Set CPL,XF,SATD,SXAM,FRCT (SCALE=1) mov #0x1f22,mmap(ST3_55) ; Set: HINT,SATA,SMUL
14、 xcc do_scale,TC1 mov #0x6300,mmap(ST1_55) ; Set CPL,XF,SATD,SXAM (SCALE=2) do_scale mov T2,fft.d_T2 ; Save T2 | mov #1,AC0 mov AC0,fft.d_L ; Initialize L=1| sfts AC0,T0 ; T0=EXP mov AC0,fft.d_N ; N=1EXP mov XAR1,XCDP ; CDP = pointer to U mov XSP,XAR4 add #fft.d_temp,AR4 ; AR4 = pointer to temp mov
15、XAR0,XAR1 ; AR1 points to sample buffer mov T0,T1 mov XAR0,XAR5 ; Copy externd bits to XAR5outer_loop ; for (L=1; L=EXP; L+) mov fft.d_L,T0 ; note: Since the buffer is| mov #2,AC0 ; arranged in re,im pairs sfts AC0,T0 ; the index to the buffer neg T0 ; is doubled| mov fft.d_N,AC1 ; But the repeat co
16、utners sftl AC1,T0 ; are not doubled mov AC0,T0 ; LE=2 sub #1,AC0 ; Init mid_loop counter mov mmap(AC0L),BRC0 ; BRC0=LE1-1 sub #1,AC1 ; Init inner loop counter mov mmap(AC1L),BRC1 ; BRC1=(NL)-1 add AR1,AR0 mov #0,T2 ; j=0 | rptblocal mid_loop-1 ; for (j=0; jLE1;j+) mov T2,AR5 ; AR5=id=i+LE1 mov T2,A
17、R3 add AR0,AR5 ; AR5 = pointer to Xid.re add #1,AR5,AR2 ; AR2 = pointer to Xid.im add AR1,AR3 ; AR3 = pointer to Xi.re | rptblocal inner_loop-1 ; for(i=j; i#1,dual(*AR3) ; Scale Xi by 1/SCALE mov dbl(*AR3),AC2 scale add T0,AR2| sub dual(*AR4),AC2,AC1 ; Xid.re=Xi.re/SCALE-temp.re mov AC1,dbl(*(AR5+T0
18、) ; Xid.im=Xi.im/SCALE-temp.im| add dual(*AR4),AC2 ; Xi.re=Xi.re/SCALE+temp.re mov AC2,dbl(*(AR3+T0) ; Xi.im=Xi.im/SCALE+temp.iminner_loop ; End of inner loop amar *CDP+ amar *CDP+ ; Update k for pointer to Uk| add #2,T2 ; Update j mid_loop ; End of mid-loop sub #1,T1 add #1,fft.d_L ; Update L bcc outer_loop,T10 ; End of outer-loop mov fft.d_ST1,AR2 ; Restore ST1,ST3,T2 mov fft.d_ST3,AR3 mov AR2,mmap(ST1_55) mov AR3,mmap(ST3_55) mov fft.d_T2,T2 aadd #(Size-ARGS-1),SP ; Reset SP ret .end第四套
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1