dsp实验3.doc_第1页
dsp实验3.doc_第2页
dsp实验3.doc_第3页
dsp实验3.doc_第4页
dsp实验3.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

思考题1 设DSP的CPU主时钟频率为100MHz,指令周期为10ns,请说明产生频率为100KHz的周期三角波信号时,应该如何修改主程序。答:将正弦波的64个离散值修改为三角波对应值,并将两个离散点间的时间间隔修改。主程序修改如下: .mmregs.def _c_int00.include c54.inc.ref c54initDA_ADDR .set 0x0002 ; 定义符号DA_ADDR表示D/A 端口地址.datasin_table: ;在这里放置一个周期的正弦波的64个离散值.word 248,240,232,224,216,208,200,192.word184,176,168,160,152,144,136,128.word 120,112,104,96,88,80,72,64.word 56,48,40,32,24,16,8,0.word 0,8,16,24,32,40,48,56.word 64,72,80,88,96,104,112,120.word128,136,144,152,160,168,176,184.word 192,200,208,216,224,232,240,248 .bss DA_DATA,1 ;声明变量DA_DATA作D/A缓冲区 .bss DA_NUM,1 ; 声明变量DA_NUM作D/A计数器 .sect progsys ;自定义初始化段progsys .align 0x10 ;调整SPC,下面的程序代码放置在存储器中时,起始地址对准16字的边界_c_int00: STM #0x0f80,SP ;设置堆栈指针 CALLc54init ;调整DSP初始化程序,硬件仿真时必须的部分LD #sin_table ,DP ;设置数据页指针,DP指向sin_table所在的数据存储器页LOOP: ;周期循环标号ST #0,DA_NUM ;计数变量清零STM #sin_table,AR1 ; AR1指向查找表首地址SINLOOP: ;一个周期内的D/A循环标号MVDK *AR1+,DA_DATA ;读查找表中的值放入到数据缓冲区DA_DATA中,软件仿真时在此处设置断点PORTWDA_DATA,DA_ADDR ; 数据缓冲区DA_DATA中的值写到D/A端口,软件仿真时不起作用RPT#1 ;下面的一条指令执行1次NOP ;空操作,在这里起延时作用ADDM #1,DA_NUM ; DA_NUM循环计数CMPMDA_NUM,#63; DA_NUM与63比较 BC SINLOOP,NTC ;一个周期内的64个点还没D/A完继续 B LOOP ;一个周期内的64个点已经D/A完,进入周期循环 .end运行程序后三角波如下:2如果在查找表中放置正弦波一个周期内的360个离散值(在MATLAB中产生),请重写产生正弦波的主程序并仿真。答:main.asm: .mmregs.def _c_int00.include c54.inc.ref c54initDA_ADDR .set 0x0002 ; 定义符号DA_ADDR表示D/A 端口地址.datasin_table: ;在这里放置一个周期的正弦波的64个离散值.word 4 ,9 ,13 ,18 ,22 ,27 ,31 ,35 ,40, 44 ,49 ,53 .word 57 , 62 , 66 , 70 , 75 , 79 , 83 , 87 ,91 , 96 , 100 , 104 .word 108 , 112 , 116 ,120 , 124 , 128 , 131 , 135 , 139 , 143 , 146 , 150.word 153 , 157, 160 , 164 , 167 , 171 , 174 , 177 , 180 , 183 , 186 , 190.word 192 , 195 , 198 , 201 , 204, 206 ,209 , 211 ,214 , 216 , 219 , 221.word 223 , 225 , 227 , 229 ,231 ,233 , 235 , 236 , 238 , 240 , 241 , 243.word 244 , 245 , 246 , 247 , 248 , 249 , 250 , 251 , 252 , 253 , 253 , 254 .word 254 , 254 ,255 , 255 ,255 ,255 , 255 , 255 , 255 , 254 , 254 , 254.word 253 ,253 , 252 , 251 ,250 ,249 ,248 , 247 , 246 , 245 , 244 , 243.word 241 , 240 , 238 ,236 , 235 , 233 ,231 , 229 , 227 , 225 , 223 , 221.word 219 , 216 , 214 ,211 ,209 , 206 ,204 , 201 , 198, 195 , 192 , 190.word 186 , 183 , 180 , 177 , 174 ,171 , 167 , 164 , 160 ,157 , 153 , 150.word 146 , 143 ,139 ,135 , 131 , 128 , 124 , 120 ,116 , 112 , 108 , 104.word 100 , 96 , 91 , 87 , 83 , 79 , 75 , 70 , 66 , 62 , 57 , 53.word 49 , 44 , 40 , 35 , 31 , 27 , 22 , 18 , 13 , 9 , 4 , 0 .word -4 , -9 , -13 , -18 , -22 , -27 , -31 ,-35 , -40 , -44 , -49 , -53 .word -57 , -62 , -66 , -70 , -75 ,-79 , -83 , -87 ,-91 ,-96 , -100 ,-104 .word -108 , -112 ,-116 , -120 ,-124 , -127 , -131 , -135 , -139 , -143 , -146 , -150 .word -153 , -157 ,-160 , -164 ,-167 , -171 , -174 , -177 , -180 , -183 , -186 , -190.word -192 ,-195 , -198 , -201, -204 , -206 ,-209 , -211 ,-214 ,-216 , -219 , -221.word -223 , -225 ,-227 , -229 ,-231 ,-233 ,-235 ,-236 , -238 , -240 , -241 , -243 .word -244 ,-245 , -246 ,-247, -248 , -249 ,-250, -251, -252, -253 , -253 , -254.word -254 , -254 , -255 ,-255 , -255 , -255, -255 ,-255 ,-255 , -254 , -254 , -254.word -253 , -253 , -252 , -251 ,-250 , -249 , -248 ,-247 ,-246 ,-245 , -244 , -243 .word -241 , -240 , -238 , -236, -235, -233 , -231 ,-229 ,-227 , -225 , -223 , -221 .word -219 , -216, -214 , -211 , -209 , -206 , -204 , -201 , -198 ,-195 , -192 , -190.word -186 , -183 , -180 , -177 , -174 , -171 , -167 ,-164 ,-160 ,-157 , -153 , -150 .word -146 , -143 , -139 , -135 ,-131 ,-128 , -124 , -120 , -116 , -112 , -108 ,-104.word -100 , -96 , -91 , -87 , -83 , -79 , -75 , -70 ,-66 ,-62 , -57 , -53 .word -49 ,-44 ,-40 ,-35 ,-31 , -27 ,-22 ,-18 , -13 , -9 , -4 , 0.bss DA_DATA,1 ;声明变量DA_DATA作D/A缓冲区 .bss DA_NUM,1 ; 声明变量DA_NUM作D/A计数器 .sect progsys ;自定义初始化段progsys .align 0x10 ;调整SPC,下面的程序代码放置在存储器中时,起始地址对准16字的边界_c_int00: STM #0x0f80,SP ;设置堆栈指针 CALLc54init ;调整DSP初始化程序,硬件仿真时必须的部分LD #sin_table ,DP ;设置数据页指针,DP指向sin_table所在的数据存储器页LOOP: ;周期循环标号ST #0,*(DA_NUM) ;计数变量清零STM #sin_table,AR1 ; AR1指向查找表首地址SINLOOP: ;一个周期内的D/A循环标号MVDK *AR1+,DA_DATA ;读查找表中的值放入到数据缓冲区DA_DATA中,软件仿真时在此处设置断点PORTWDA_DATA,DA_ADDR ; 数据缓冲区DA_DATA中的值写到D/A端口,软件仿真时不起作用RPT#1000 ;下面的一条指令执行1001次NOP ;空操作,在这里起延时作用ADDM #1,*(DA_NUM) ; DA_NUM循环计数CMPM*(DA_NUM),#359; DA_NUM与359比较 BC SINLOOP,NTC ;一个周期内的64个点还没D/A完继续 B LOOP ;一个周期内的64个点已经D/A完,进入周期循环.end memory.cmd -m sensor.mapMEMORYPAGE 0: PROG: origin = 0x2000, len = 0x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论