dsp浮点实验二(编辑修改稿)内容摘要:

j*S]; k= 0 to N- l n= 0 这里: C= COS( 2*PI*k*n/N), S=sin( 2*pi*k*n/N), j=sqrt( 1) */ # include “ ” # define N 64 .SECTION/ DM dm_data; / *变量定义在 DM数据段 */ .VAR Input[ N] =“ ”; / * 输入数据 */ .VAR real[N] =“ ”; / *输出数据的实部 */ .VAR imagp[N]=“ ”; / *输出数据的虚部 */ .SECTION/ PM pm_data; .VAR sine[ N] =“ sin64. dat”; / *定义正弦旋转因子表,放在 PM数据段 */ / *余弦旋转因子表由正弦表移动 N/ 4而得 */ .VAR modul[N]= “” .SECTION/ PM pm_rsti; NOP; USTAT2= 0x108421; / *USTAT2为用户自定义寄存器 */ DM( WAIT) =USTAT2; / *WAIT寄存器用来设定与外设数据传 输时的等待周期及状态数 */ JUMP Start; .SECTION/ PM pm_code; /*程序代码段 */ START: M1=l; / *地址修改寄存器 */ M9=1; B0=input。 / *设定循环基址 */ L0=@ input; / *输入数据循环长度 */ I1=imag; / *虚部输出地址 */ L1=0; CALL dft( DB); / *调用子程序,计算 DFT*/ I2=real。 / *实部输出地址 */ L2=0; nop。 CALL modl。 /*调用子程序 ,计算 DFT的模值 */ end: IDLE; /********* 计算 DFT子程序 ****************************/ dft: /*dft子程序 */ B8= sine; / *将 sine放到 I8基址,并设定循环基址 */ L8=@ sine; B9=sine; / *Cos表的循环基址 */ I9= sine+ N/4; / *通过 sine+ N/ 4得到 cos放到 I9基址 */ L9=@ sine; / *循环长度. */ I10=0; / *用来调整 M8的步长 */ L10= 0; F15= 0; / *在每一外循环时,对 F F9清 0*/ LCNTR= N, DO outer UNTIL LCE; / *外循环 */ F8= PASS F15, M8= I10; F9=PASS F15, F0= DM( I0, M1), F5=PM( I9, M8); / *上二句是清 F F9寄存器,设定 M8步长 ,并读取 X( n)和 COS值 */ F12=F0*F5, F4= PM( I8, M8); LCNTR=N- l, DO inner UNTIL LCE。 / *内循环 */ F13= F0*F4, F9= F9+F12, F0= DM( I0, M1), F5=PM( I9, M8); inner: F12=F0*F5, F8=F8- F13, F4= PM( I8, M8)。 F13= F0*F4 , F9= F9+ F12; / * F8中放虚部值, F9中放实部值 */ F8=F8- F13, DM( I2, M1)= F9; / *存实部值 */ MODIFY(I10, M9); / *使旋转因子表的寻址步长加一 */ outer: DM( I1, M1) =F8 / *存虚部值 */ RTS; /********* 求模计算的子程序 ****************************/ modl: I0=real。 L0=0。 I1=imag。 L1=0。 I8=modul。 L8=0。 F2=DM(I0,M1)。 F6=F2。 F3=DM(I1,M1)。 F7=F3。 F8=F2*F6。 F13=F3*F7。 LCNTR=N, DO mod_cal UNTIL LCE。 F8=F2*F6,F13=F8+F13,F3=DM(I1,M1)。 F4=RSQRTS F13, F7=F3。 F4=F4*F13,F2=DM(I0,M1)。 F13=F3*F7,F6=F2。 mod_cal: PM(I8,M9)=F4。 NOP。 NOP。 RTS。 2. 实验步骤 1) 调入程序 启动运行 VisualDSP++,建立新工程,将位于将 DSP_exp\float\unit_2\DFT_MOD 目录下的源文件( )添加到工程中,同时也将备用的数据文件 、 、 以及初始化文件 加入工程中。 2)选择输入数据文件 编译程序前,在下述程序行中将输入数据文件改为 : .VAR input[N]=。 其中 为方波信号。 3)编译程序 分析、理解源程序,在此基础上再编译运行程序。 可通过点击按钮命令或选择菜单命令 \Project\Build Project 来完成编译。 本程序的 sessions 为 ADSP21062 ADSP2106x Simulator。 4) 观察结果  程序调试时,可在程序中设置多个断点,来观察输入数据 x、输出数据的实部 real 、输出数据的虚部 imag和求模后的数据 mudul的值;  打开 Mem。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。