- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Freescale(Motorola)16位DSP原理及开发技术 2. DSP芯片概述 ?? ? ? ? ? 第一部分 Freescale(Motorola)16位DSP DSP56800介绍 模拟滤波器原理图 用DSP实现FIR滤波器 DSP芯片硬件和软件的结合 DSP与CPU 一 普通CPU与DSP结构上的区别 普通CPU: 采用冯.诺曼结构(程序与数据统一编址,不 区分存 储器的程序空间和数据空间)。 DSP: 采用哈佛结构(程序与数据空间分开编址)即多总 线结构。 DSP56800内核的内部总线有7条: PAB PDB XAB1 XAB2 XDB2 CGDB PGDB 改进的哈佛结构:程序和数据空间相互传数据。 DSP与CPU(续) (1)单并行处理 例: ADD X0 ,A Y0,X:(R1)+N (2)双重并行处理 例: MACR X0,Y0,A X:(R0)+N,Y X:(R3)-,X0 ; 程序的流水线执行使得读-译-执行似乎在一个时钟周期内完成的 DSP与CPU(续) 四 运算方面 乘加运算 循环运算 CPU 要调用相应 每一次检查是否 乘、加函数 循环n次 DSP 在一或二个时钟 有重复n次指令 周期内完成乘加 REP n 运算 ,用硬件逻辑 有循环n次指令 完成 Do loop n 如MAC指令 DSP与CPU(续) 五 CPU与DSP存储器 CPU: 片内存储器和片外可扩展存储器 RAM、ROM(Flash) DSP: 程序Flash、程序RAM、数据Flash 、数据RAM、B00t Flash等等。 DSP的存储器比单片机要复杂得多! DSP与CPU(续) 六 CPU与DSP56800的中断 DSP56800的中断比CPU要复杂得多: (1) DSP56800的中断源可达64个; (2) DSP56800的中断优先级达7级; (3) DSP56800与中断有关的寄存器多,达到14个。 DSP56800是MCU和DSP的混合体 DSP56800内核结构 DSP56800的算数逻辑单元(ALU) 组成: 内部寄存器 乘/加器 MAC 极值限制器 DSP56800的算数逻辑单元 DSP56800的算数逻辑单元 乘/加器 MAC 在一个周期内可以以并行方式完成乘及加运算,可完成有符 号或无符号16位乘16位的分数运算,有符号16位乘16位的整数运 算。 极值限制器 处理数据溢出的饱和限制器。用于处理包含扩展寄存器的 36位或20位操作,使在执行从36位到32位或从20位到16位的传 输、运算指令时不至于出现错误。 (在软件执行时能体现其功能) DSP56800的地址产生单元(AGU) DSP56800的地址产生单元寄存器 通用地址寄存器R0-R3:等效为C语言中的指针类型的寄存器变量,用于访问存储器。 地址偏移量寄存器N:常包含用于更新地址的偏移量,可为CGDB所读/写,可作为地址运算单元的输入。 地址域寄存器M01:用于定义一个循环缓冲区。只有R0和R1可以与M01合作完成循环存储域的运算,R3是在存储器的并行处理时,用做读/写片内存储器的寄存器。 堆栈指针SP:所有push和pop指令中都必须用到的寄存器,复位后要首先对SP初始化 使用地址产生单元寄存器注意点 出现的问题: 由于DSP并行处理和流水线结构的特点,当使用 MOVE指令和位操作指令改变R0-R3、SP、M01这些寄存 器时,紧接着执行下一条指令时,上述寄存器的新值 还不能起作用,要到再下一条指令时才能使用该新值。 解决思路: 用MOVE或位操作指令改变地址产生单元AGU中寄存 器以后,要先插入一条与该寄存器无关但对程序有用 的指令,当然也可
原创力文档


文档评论(0)