《dsp复习例题与答案》由会员分享,可在线阅读,更多相关《dsp复习例题与答案(5页珍藏版)》请在金锄头文库上搜索。
1、三、指令系统理解三、指令系统理解1.LF2407 DSP 指令如下: ADD *0-,8,AR2;设执行该指令前当前辅助寄存器指针,辅助寄存器以及数据存储器单元情况如下:(ARP)=1, (AR0)=0x0010, (AR1)=0x0300, (AR2)=0x0310, (AR3)=0x0320, (0x0010)=0x0000,(0x0300)=0x0002,(0x0310)=0x0004, (0x0320)=0x0008, (ACC)=0x00000020执行完该条指令后情况如何?请将正确数据填入下列方框中。AR0 0x0010AR1 0x0300AR2 0x0310AR3 0x0320A
2、CCARP2. LF2407 DSP 子程序如下:Filter:LAR AR2, #Data_in+8MAR *, AR2 LACL #0 SPM 0 MPY #0RPT #8MACD Coeff, *-APACRET Coeff:.word 0ff80h,0284h,0655h,0999h,1888h,0999h,0655h,0284h,0ff80h .data Data_in:0x00000x00020x00040x00080x02F00x03100x03200x00100x000002202.word 1, 4, 2, 8, 16, 64, 128, 32, 256执行 CALL Fil
3、ter 指令后结果如何?请将正确数据填写到各下划线处。(AR2) = _ _1 1_ _(TREG) = _4 4_(PREG) = _0ff80h0ff80h_ _(ACC) = 0ff8000h + _ + _ + _ + 18880h+ _ + _ + _ + 0ff80hData_in: 1, 1 1, , 4 4, , 2 2, , 8 8, , 1616, , 6464, , 128128, , 3232, , 256256四、数据处理程序设计四、数据处理程序设计已知 根据递推公式: 可求得试用 F2407 DSP 汇编语言完成下面的正弦波发生程序实现上述递推算法,计 算 sink
4、T,k=0,1,2,99 共 100 项。 (定点格式:符号|1 位整数|14 位小数)COST .set _ _1635216352_ _ ; 定义定点常数 COST SINT .set _10291029 _ ; 定义定点常数 SINTSinGen: SPM _ _1 1_ _ LAR AR2, #200h LAR AR3, #201h MAR *, AR2 SPLK #2*COST,* LT *TTTTTTTTTTTTTTT97sin98sincos299sin2sin3sincos24sinsin2sincos23sin0sinsincos22sinMTkkTTTk) 1sin(sin
5、cos2) 1sin(-14-1421028.8sin,216351.7cosTTLACL #0 SACL *, AR3 SPLK #SINT, * LAR AR1, _ _#97#97_ _ ; 设置循环次数 SinGen_Loop: MPY _*+*+_, AR2 ; 计算 2CosT*SinkT,结果存于 PREG PAC ; (PREG) ACC, 2:2:28-1:1:30 格式 SUB *+, 16, AR3 ; 计算 2CosT*SinkT Sin(k-1)T ADD #0001h, 15 ; (ACC)+00008000h,用作乘积 4 舍 5 入 SACH _ _* *_,
6、AR1 ; 保存 Sin(k+1)T BANZ SinGen_Loop,_ _*-*-_, AR3 ; AR10,则减 1 并继续循环 RET五、片上设备控制程序设计五、片上设备控制程序设计1、用通用定时器 2 实现原程序中通用定时器 1 的功能,在需要修改的程序右 边空白处写出修改后的指令。 2、请在横线处填上注释或程序。 ;文件名称:timer_pwm.asm ;*.include “f2407regs.h”.sect “.vect“ reset: B start int1: B Default_I int2: B timer1_int (int2: B Default_I) int3:
7、B Default_I (int3: B timer2_int) int4: B Default_I int5: B Default_I int6: B Default_I Default_I:NOPB Default_I .text start:CALL sys_ini CALL pwm_ini CALL timer1_ini mainLoop:LDP #show/128 OUT show, 0004h ; 将欲显示值赋予 io 空间的 0004 地址B mainLoopsys_ini:SETC INTM CLRC SXM CLRC OVM LDP #WDCR/128SPLK #00E8H,
8、 WDCR SPLK #020DH, SCSR1 LDP #IFR/128SPLK #0002H, IMR;( SPLK #0004H, IMR)SPLK #0FFFFH, IFR ; 执行完该指令后(IFR)= 0 RET timer1_ini: (timer2_ini:) LDP #EVAIMRA/128 ;(LDP #EVAIMRB/128)SPLK #0080H, EVAIMRA ; (SPLK #0080H, EVAIMRB)SPLK #0FFFFH, EVAIFRA ; (SPLK #01CDH, T2PER)SPLK #01CDH, T1PER ; (SPLK #01CDH, T
9、2PER)SPLK #0000H, T1CNT ; (SPLK #0000H, T2CNT) SPLK #164CH, T1CON ; (SPLK #164CH, T2CON) CLRC INTM RET timer1_int: (timer2_int:)LDP #num/128LACC numSUB #1000BCND timer1_Lb1, NEQSACL num LACC showCMPL SACL show B timer1_Lb2 timer1_Lb1: ADD #1001 SACL numtimer1_Lb2:LDP # T1CNT/128SPLK #0000H, T1CNT ;
10、(SPLK #0000H, T2CNT) SPLK #0FFFFH, EVAIFRA ; RETpwm_ini:LDP # MCRC/128LACL #007EH OR MCRCSACL MCRCLDP # ACTRB/128SPLK #0969H,ACTRB ; pwm7、10、11 低有效,8、9、12 高有效SPLK #0AE0, DBTCONB ; 插入 10 个 CPU 时钟周期的死区SPLK #100H,COMPR4 ; PWM8、9、12 输出的信号的占空比分SPLK #200H,COMPR5 ; 别为:5/6、2/3、1/4 SPLK #450 好好,COMPR6 ; SPLK #0600H, T3PR SPLK #8200, COMCONB SPLK #0840H, T3CON ; /通用定时器 3 器工作在 连续增连续增/减减 计数模式下 RET.data num: .word 0 show: .word 0x00AA .end