《典型DSP系统设计芯片介绍》由会员分享,可在线阅读,更多相关《典型DSP系统设计芯片介绍(84页珍藏版)》请在金锄头文库上搜索。
1、DSP系统设计,主讲:杜建铭 教授,第二章 典型DSP芯片祥解,2.1 ADSP21160处理器核,2.2 ADSP21160处理器存储器,2.3 ADSP21160寄存器,2.4 ADSP21160中断逻辑和定时器,2.5 ADSP21160串行口/DMA及链路口,2.6 ADSP21160主机接口与ISA总线,2.1 ADSP21160处理器核,ADSP SHARC 系列处理器是构建在ADSP 21000 DSP核的基础上,形成一个完整SoC。 (SystemonChip ,中文称为系统集成到芯片上或片上系统); 有一个双口的在片SRAM; 加上集成周边IO和为单指令多数据(SIMD) 提
2、供支持的附加处理单元。,处理器核是由以下几个部分组成: (1)两个处理器单元; (2) 1个程序控制器; (3) 2个数据地址产生器; (4) 1个定时器; (5) 1个指令缓存;所有数字信号处理都在处理器核里实现。,2.1 ADSP SHARC 系列处理器核,2.1.1 处理单元的构成(两个处理单元):,每个处理单元包含: (1)算术逻辑单元(ALU); (2)乘法器; (3)移位器; (4)通用数据寄存器组;,算术逻辑单元(ALU)、乘法器(Multiplier) 、移位器(Shifter )在结构上并行排列,分别完成加、减、乘和逻辑移位运算等操作; 指令执行时间都是1个周期; 任何一个单
3、元的输出都可以在下一个周期作为本单元或其他单元的输入。,处理单元的构成(续),算术逻辑单元(ALU),ALU指令包括定点和浮点加、减、取平均、取绝对值、取反及定浮点转换等。 对于定点操作,有逻辑与、或、非、异或等。 对于浮点操作,有取对数、平方根、倒数等。 输入的操作数可以是1个或2个,在时钟周期的前半周期操作数从数据寄存器送入ALU,在后半周期将运算结果输出到数据寄存器。,乘法器(Multiplier),浮点乘 定点乘 乘法器与ALU、数据寄存器的结合,使处理器能在1个周期内实现多功能并行计算(如乘/累加操作,可大大提高数字滤波与FFT的运算速度)。,移位器(Shifter ),进行逻辑移位
4、或算术移位、位段存取、位清零、置位、测试、取反等操作。,通用数据寄存器,用于运算单元与数据总线间的数据传输,并存取中间结果。,2.1.1 处理单元的构成(续),每个处理单元中各包含一个通用数据寄存器组40位宽, 每组32个寄存器(16个主,16个辅)用于运算单元和数据总线间的数据传输,并暂存结果。其中的寄存器可与内部存储器间不受约束地进行数据传输。对于定点和小数操作,只有高32位数据有效, 程序设计中标为:PEx内部的寄存器组:R0R15;PEy内部的寄存器组:S0S15;对于浮点操作,所有的40位数据都有效,程序设计中标为:PEx内部的寄存器组:F0F15;PEy内部的寄存器组:SF0SF1
5、5 。,图2.1 ADSP21160内部结构图,DAG 3,PEx和PEy(SIMD),处理器,程序4,处理器核2,利用通用数据寄存器实现高度并行的指令操作,每个周期能实现多达9次的数据传输 (一句内)例如:F12F0F4,F8F8F12,F9F8F12,F0DM(I1,M1),F4PM(I8,M8);上述指令执行时,首先读F0,F4的值,求出其乘积,写到F12中;然后F0,F4的值被相应存储单元的值更新,同时读F8,F12的值,求出其和、差;再分别写到F8,F9中;这样4次读操作的寄存器是:F0,F4,F8和F12;3次写操作的寄存器是:F12,F8和F9;两次存储器访问是:F0与F4。,A
6、DSP21160具有增强型超级哈佛结构。其中数据存储器(DM),程序存储器(PM)总线即可传送数据又可传送程序指令; ADSP21160还有一个内部指令缓存; 正是由于具有上面所述的结构(其程序和数据总线是分开的,并有内部指令缓存),所以该处理器可在单周期内同时取四个操作数(每套总线两个)及一条指令(从指令缓存中读取)。从而实现了单指令多数据(SIMD),2.1.2 单周期取四个操作数,ADSP-21160 SHARC DSP 的SIMD结构,小测验,ADSP 21160M中处理器核由哪几部分组成? 每个处理单元的构成如何? 两个处理单元中通用数据寄存器的代号(定点、浮点)?寄存器位数是多少?
7、,数据地址产生器(DAG),在通用CPU中,数据地址的产生和数据的处理都是由ALU来完成的,而在DSP中,设置了专门的数据地址发生器(有的设置了多个数据地址发生器)来产生所需要的数据地址。数据地址的产生与CPU的工作是并行的。从而节省了CPU的时间,提高了信号处理的速度,2.1.3 带有硬件循环缓冲的数据地址产生器DAG (循环寻址)与PM和DM总线,ADSP21160有两个数据地址产生器,可实现间接寻址,并可实现硬件数据循环缓冲,从而可以使数字信号处理中所需的延迟线及其它数据结构获得高效率的编程,所以常用于数字滤波及傅立叶变换。 ADSP21160每个DAG有足够的寄存器(4组,每组8个寄存
8、器,每个寄存器32位宽)。 并能自动处理地址指针的回转,减小了开销,提高了性能,简化了编程,其起始地址和结束地址在存储区内可以任意指定。,两套地址产生器DAG1、DAG2分别指向DM地址总线和PM地址总线; 每套DAG都配有8个地址索引寄存器Ix,8个地址修改寄存器Mx,其中: (1)索引寄存器Ix存放的地址值是指向存储器的指针; (2)修改寄存器Mx为索引寄存器的预修改和后修改提供地址增量, M与I两个寄存器相配合可以完成:(1)指令执行前的地址预修改;(2)执行完毕后地址后修改操作。,ADSP21160的两个DAG介绍1,ADSP21160的两个DAG介绍2,每个DAG中还有八个基址寄存器
9、Bx和八个长度寄存器Lx; Bx:为环形缓冲区循环寻址提供起始地址; Lx:为环形缓冲区循环寻址提供地址范围; 也就是说:Bx中存放缓冲区起始地址;Lx中存放缓冲区长度。,ADSP21160的两个DAG介绍3,注(1)对于通常的寻址方式,我们只使用I, M寄存器,而不使用B寄存器,此时L寄存器写 零,环形缓冲区操作被Disable。(2)ADSP21160M在进行环形缓冲区寻址 操作过程中,B寄存器被装入值时,I寄存器被 同时装入相同的值;反之I寄存器被装入值时, B寄存器不被同时装入相同的值。,DAG寄存器分配情况,地址修改方式的指令操作过程,预修改示例: r1pm(m1,i5) /有效地址
10、m1+i5 dm(4,i5)=addr_1 /有效地址4i5,先输出I寄存器中的地址,后修改I寄存器值,修改后的地址写入到I中,后修改示例: r1pm(i5,m1) /有效地址i5 dm(i5,m1)=0x1234 /有效地址i5 f5=dm(i5,6) /有效地址i5,返回,地址直接修改,MODIFY(i1,4);/将i1中的值加4后写入i1,不输出。设i1=18,则修改后的地址:i1=18+4=22; 注:修改量可以是立即数(上例中的4),也 可以是M寄存器中的地址值,例如:MODIFY(i1,m1)。 设:m1=3,则修改后的地址:i1=18+3=21;,地址位反序,BITREV(i1,
11、4)/将索引寄存器i1中的值加4后位反序写入i1中,但不输出。设:i1=8;则上述语句执行后i1=3; 位反序寻址方式:用于快速傅立叶变换(FFT),使输出地址单元都是相应输入地址单元的位反序,以二进制地址为例: 输入X1=0001, 则输出X1=1000输入X2=1100, 则输出X2=0011注:通过设置MODE1寄存器的BR0和BR8位(对应DAG1中的i0和i8),就可以使能位反序寻址模式。,地址位反序操作举例,BIT SET MODEL1 BR0; /使能寄存器i0位反序 i0=0x8a000; M0=0x4000000; /载入后修改地址量 R1DM(i0,M0); /将i0中的值
12、0x8a000位反序 因为索引寄存器为32位,既i0=0x0008a000; 0000,0000,0000,1000,1010,0000,0000,0000 位反序后为0x00051000; 0000,0000,0000,0101,0001,0000,0000,0000 将该地址中的值放入R1中,然后i0M0i0; 地址后修改:i0= 0x8a000+0x4000000=0x408a000;,PM和DM总线与PX寄存器,PX寄存器又称为总线连接器(BUS connect); PX寄存器为PM数据总线和DM数据总线之间的数据传输提供通道(扩展哈佛结构)。 另外利用PX寄存器,还可以与40位的通用
13、数据寄存器传递数据; 对于ADSP21160其PX寄存器长达64位,由PX1寄存器(低32位)和PX2(高32位)组成。,ADSP21160内部结构图,缓存返回,ADSP21160通用数据寄存器Rx与 Px之间的数据传递,1. PX2/PX1与Rx,2. PX与Rx,PX与内部数据总线PM和DM之间 传递数据时的对齐格式,1. PX2/PX1与PM或DM数据总线,2. PX与PM或DM数据总线,2.1.4 程序控制器(PROGRAM SEQUENCER),程序控制器主要是控制程序流的执行,并为访问程序存储器提供地址; 通常程序流都是顺序执行,只有遇到分支程序指令(如跳转、循环、子程序调用、中断
14、、等待等)时才会改变执行顺序; ADSP21160片内有循环计数器和循环堆栈,控制循环间隔和评估条件指令,循环代码可以实现零开销运行。 程序控制器的硬件循环结构支持多达8级的无开销嵌套循环,而且每层都可以单周期退出。,1. 指令流水线操作,流水线操作指令结构为简化程序设计,提高程序代码的可维护性,增强系统整体性能带来了很大好处,消除了传统上程序取指、数据访问和乘法器操作中的瓶颈问题,提高了单周期的数据吞吐率。,指令流水操作说明,0x01 0x02 0x03 0x04 0x05.,地址值 指令,指令1 指令2 指令3 指令4 指令5.,ADSP SHARC系列处理器分支程序指令包括: 1.跳转J
15、UMP-跳到一个新地址,不需返回; 2.子程序调用CALL-先将返回地址压到PC堆栈,子程序执行完毕后,返回到调用指令的地址; 3.返回-中断返回(RTI)和子程序返回(RTS)两种类型;当程序运行到上述指令时,就不再顺序执行 下一个顺序地址的指令,而产生分支。,2. 分支程序执行,非延迟分支指令和延迟分支指令,非延迟分支指令:(1)分支指令后没有“DB”附加符;If FLAG1_IN JUMP H_1;(2)该指令后处于取指和译码阶段的两条指令将不被执行,而是插入两条NOP指令;(3)然后直接执行分支程序入口的第一条指令。,非延迟分支程序的流水操作说明,延迟分支指令,延迟分支指令:(1)分支
16、指令后有“DB”附加符;举例:CALL DFT(DB);(2)分支指令后处于取指和译码阶段的两条 指令将仍然被取指、译码和执行;(3)然后执行分支程序入口的第一条指令。,延迟分支程序的指令流水操作说明,对延迟分支指令的一些限制,由于分支指令后的两条指令只能顺序执行,因此对这两条指令的类型有一些限制:(1)不能是其它跳转、调用和返回指令; (2)不能是其他压入或者弹出堆栈指令; (3)不能是中断响应指令。,两种形式的分支指令特点,由于处理器采用流水结构,分支指令会对程序的执行效率产生影响,有两种形式的分支指令。非延迟分支指令延迟分支指令,存在两个周期的开销,降低了程序执行效率,可保证程序执行效率,但增加了程序设计的难度,3 程序循环,另外一种重要的非顺序指令就是程序循环指令。 ADSP SHARC系列处理器片内有专门的硬件结构来管理所有循环操作任务; 能自动跟踪循环的终止条件,如果终止条件不成立,不需要任何分支开销就能自动返回到循环的开始,同时更新循环计数器; 上述结构简化代码设计,节省指令执行时间,提高了循环指令的效率。,