汇编语言编程举例介绍.ppt

  1. 1、本文档共115页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C54x片内没有I/O资源,CPU通过外部译码可以寻址64K的I/O单元。 有两条实现输入和输出的指令: PORTR PA,Smem ;将为PA的端口内容送 ;数据存储器Smem PORTW Smem,PA ;将地址为Smem的数据 ;存储器内容送端口PA 数据的输入/输出 用DSP实现FIR滤波器 N=6的线性缓冲区存储器图 用DSP实现FIR滤波器 使用存储器延时指令DELAY,可以将数据存储单元中的内容向较高地址的下一单元传送。 实现z-1的运算指令为: DELAY Smem ;(Smem)→Seme+1,即数据存储 ;器单元的内容送下一高地址单元 DELAY *AR2 ;AR2指向源地址,即将AR2所指单 ;元内容复制到下一高地址单元中 存储器的延时操作 延时指令与其它指令的结合 LT+DELAY→LTD指令 ;单数据存储器的值装入 ;T寄存器并送下一单元延时 MAC+DELAY→MACD指令 ;操作数与程序存储器值相乘 ;后累加并送下一单元延时 用DSP实现FIR滤波器 在数据存储器中开辟一个称之为滑窗的N个单元的缓冲区,滑窗中存放最新的N个输入样本;每次输入新样本时,以新样本改写滑窗中的最老的数据,而滑窗中的其它数据不作移动;利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址,循环缓冲区地址首尾相邻。 利用循环缓冲区实现Z-1的优点是不需要移动数据,不存在一个机器周期中要求能一次读和一次写的数据存储器,因而可以将循环缓冲区定位在数据存储器的任何位置(线性缓冲区要求定位在DARAM)。 特点 (2)用循环缓冲区法实现z-1 用DSP实现FIR滤波器 N=6的循环缓冲区存储器图 用DSP实现FIR滤波器 3.FIR滤波器的实现方法 例5-25 编写N=5,y(n)=a0*x(n)+a1*x(n-1)+a2*x(n-2)+a3*x(n-3)+a4*x(n-4)的计算程序。 先将系数a0~a4存放在数据存储器中,然后设置线性缓冲区,用以存放输入和输出数据。 (1)用线性缓冲区和直接寻址方法实现FIR 线性缓冲区安排 用DSP实现FIR滤波器 .title “FIR1.ASM” ;定义源程序名 .mmregs ;定义存储器映象寄存器 .def start ;定义语句标号start .bss y,1 ;为结果y预留1个单元的空间 XN .usect “XN”,1 ;在自定义的未初始化段“XN” XNM1 .usect “XN”,1 ;中保留5个单元的空间 XNM2 .usect “XN”,1 XNM3 .usect “XN”,1 XNM4 .usect “XN”,1 A0 .usect “A0”,1 ;在自定义的未初始化段“A0” A1 .usect “A0”,1 ;中保留5个单元的空间 A2 .usect “A0”,1 A3 .usect “A0”,1 A4 .usect “A0”,1 PA0 .set 0 ;定义PA0为输出端口 PA1 .set 1 ;定义PA1为输入端口 用DSP实现FIR滤波器 .data table: .word 1*32768/10 ;假定程序空间有五个参数 .word -3*32768/10 .word 5*32768/10 .word -3*32768/10 .word 1*32768/10 .text start: .SSBX FRCT ;设置进行小数相乘 STM #A0,AR1 ;将数据空间用于放参数的首地址送AR1 RPT #4 ;重复下条指令5次传送 MVPD table,*AR1+ ;传送程序空间的参数到数据空间 LD #XN,DP ;设置数据存储器页指针的起始位置 PORTR PA1,@XN ;从数据输入端口I/O输入最新数据x(n) FIR1: LD @XNM4

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档