数字信号处理方法与实现
贺知明 副教授
电子科技大学
四川 ?成都
SHARC系列 DSP原理
概述
SHARC系列 DSP的处理器核
SHARC系列 DSP的存储器
SHARC系列 DSP的集成外部接口( DMA、
链路口、串行口、主机接口)
概述
SHARC—— Super Harvard Architecture
Computer
包含:浮点 DSP核、片内存储器,DMA
控制器、串口,链路口、共享总线连接
等。
多片处理器无需外部控制逻辑,就能
无缝连接成一个高效的紧耦合(通过
总线结构)或松耦合(通过链路结构)
方式的并行多处理器系统。
结构特点
有共享寄存器文件的计算单元(含 ALU、
乘法器和移位器)
数据地址产生器( DAG1,DAG2)
能自动处理环形地址指针,降低程序开销,提
高程序的执行效率并简化程序代码。
大容量的片内 SRAM
双端口 SRAM可以被处理器核和 DMA同时独立
访问,根据不同型号,SRAM容量不同。
结构特点
有指令 Cache的程序控制器
高效的 32级指令缓存,允许 3条总线同时取 1条
指令和 2个操作数,处理器能够高速执行循环操
作(如数字滤波的乘、累加操作和 FFT的蝶形运
算等)。指令缓存是否使用,可通过编程控制。
内部定时器
与片外存储器及外围电路接口的外部端口
主机及多处理器接口
结构特点
DMA控制器
支持 DMA通道的无干预后台传输,DSP核与 I/O
处理器可同时并行访问内部存储器。
串口
2套串口可以用多种操作模式工作(如控制通讯)
JTAG测试口
访问片内的仿真资源,仿真使使用。
结构特点
三条片内总线
PM bus(程序总线)
DM bus(数据总线)
I/O bus
配合指令缓存,就能在单周期内实现同时取 2
个操作数(通过 PM bus,DM bus)和 1条指
令(从指令缓存中取)。
处理器内部各个功
能模块之间进行信
息传输的重要通道,
可以实现通道控制、
仲裁逻辑及数据传
输等操作。
ADSP-21160 SHARC DSP的 结构框图
SHARC系列 DSP的处理器核
计算处理单元
程序控制器
地址产生器与 PM,DM总线
寄存器
中断逻辑与定时器
计算处理单元
ALU,乘法器, 移位器 以及 通用数据寄
存器 共同执行单周期指令。
结构上并行排列,分别完成加、减、乘
和逻辑、移位等操作,大大提高了数据
吞吐率,任何一个单元的输出都可以在
下一周期作为本单元或其它单元的输入。
ALU
ALU指令包括定点和浮点加、减、取平均、
取绝对值、取反及定浮点转换等。
对于定点操作,有逻辑与、或、非、异或等。
对于浮点操作,有取对数、平方根、倒数等。
输入的操作数可以是 1个或 2个,在时钟周期
的前半周期操作数从数据寄存器送入 ALU,
在后半周期将运算结果输出到数据寄存器。
Multiplier
浮点乘
定点乘
乘法器与 ALU、数据寄存器的结合,使
处理器能在 1个周期内实现多功能并行计
算(如乘 /累加操作,可大大提高数字滤
波与 FFT的运算速度)。
Shifter
进行逻辑移位或算术移位、位段存取、
位清零、置位、测试、取反等操作。
通用数据寄存器
用于运算单元与数据总线间的数据传输,
并存取中间结果。
SIMD模式
ADSP21160内部有两个完全相同的计算
处理单元,可工作于两种模式,SIMD和
SISD(由模式控制寄存器 MODE1的相
应位使能控制)。
ADSP-21160 SHARC DSP 的 SIMD结构
SIMD模式下,处理器执行的并行操作
将同一条指令同时发送到两个处理单元;
从存储器载入两组操作数分别送到两个
处理单元;
同时在两个处理单元里执行同一条指令;
将两个运算输出结果同时保存到存储器
中。
注意
在 SIMD模式下,如果指明访问内部存储
器的奇地址,则会同时访问下一个偶地址。
例,
访问内部地址单元 0x40001
则同时也会访问未明确制定的地址单元
0x40002
程序控制器
功能:主要控制程序流的执行,并为访
问程序存储器提供地址。
通常,顺序执行,如有分支程序指令
(跳转、循环、子程序调用、中断等),
则改变程序流的执行顺序。
在每一个周期跟踪和更新 PC堆栈,当分
支程序出现时,首先判断是否执行该指
令,同时自动将取指地址加 1。
指令流水线操作
所有指令的执行都经过取指、译码、执
行三个时钟周期,并高速并行执行。
0x01 指令 1
指令 2
指令 3
指令 4
指令 5
指令
0x02
0x03
0x04
0x05
地址 周期数 取指 译码 执行
1 0x01
2 0x02 0x01
3 0x03 0x02 0x01
4 0x04 0x03 0x02
5 0x05 0x04 0x03
顺序执行程序的指令流水操作情况
当一条指令取指时,它前一周期的指令被
译码,而在两个周期前的指令正在执行。
对于顺序执行指令,每周期都有一条指令
的吞吐量,如有分支指令,则会降低处理
器对指令的吞吐量。
延迟
SHARC DSP支持带
两级延迟的分支跳转、
调用和返回指令
优化程序,提高程序执行
分支程序执行
如有 跳转, 子程序调用 与 返回 等指令,
产生程序分支。
JUMP,跳到一个
新地址,不需返回
CALL,先将返回地
址压到 PC堆栈,子程
序执行完毕后,返回
到调用指令的地址
返回指令:中断
返回( RTI)和子
程序返回( RTS)
两种类型
条件分支程序执行
SHARC DSP通过检测状态寄存器 ASTAT
中的相应位的条件逻辑,支持条件跳转和
子程序调用。
条件满足,产生程序分支;
否则,顺序执行程序。
分支指令寻址方式
直接寻址:直接在分支命令后给出程序
地址标号或 PC相对地址值;
间接寻址:直接分支到数据地址产生器
DAG2指定的地址。
如,JUMP( M12,I12)
两种形式的分支指令
由于处理器采用流水结构,分支指令会
对程序的执行效率产生影响,有两种形
式的分支指令。
非延迟分支指令
延迟分支指令
存在两个周期的
开销,降低了程
序执行效率
可保证程序执行效
率,但增加了程序
设计的难度
程序循环
片内专门的 硬件结构 来管理所有循环操
作,简化循环程序代码设计,也可避免
执行循环条件指令而节省了指令执行时
间,提高了循环指令的效率。
DO/UNTIL
重复执行循环体内指令,
直到测试条件为真
程序循环的控制方式
SHARC DSP检测循环测试条件是否完
成了 LCNTR寄存器指定的循环次数,以
决定是否继续执行循环体。
它有两种控制方式,
基于计数器方式进行控制
基于非计数器方式进行控制
循环嵌套
可支持多达 6级嵌套循环(而对循环体大小没
有任何限制),由于指令执行的流水结构,
对循环体的最后三条指令有以下限制,
不能是跳转、子程序调用与返回指令;
对循环嵌套,不能使用相同的终止循环地址;
在计数器方式控制循环时,不能使用写循环
计数器指令。
指令缓存
同一周期既要通过 PM总线取指令,又要
取数据,就会存在 数据冲突 。
address n f0=f3*f4,PM( i9,m8) =f5
address n+1 f0=f0*f5
address n+2 f6=f6*f0
由于三级流水方式,当处理器执行地址单元 n处的指令
时,需要利用 PM总线取数据,而同时处理器正在取地
址单元 n+2处的指令,故有冲突。
存在冲突
指令缓存
解决数据冲突的办法,
将地址 n+2处的指令保存在缓存中。
当处理器第一次取指冲突时,须等待 1个
周期,在下一周期才能将指令取出。
当同一条指令再次出现冲突时,直接并
行从指令缓存取指令,避免冲突,也不
会出现延迟。
若冲突的指令不在指令缓存中,存在一
个周期的开销。
SHARC DSP的指令缓存
2通道,可存放 32条指令缓存区,编程实现,
体现程序优化技巧。
设置 MODE2寄存器的 CADIS位和 CAFRZ位
进行选择。
置 1,指令缓存,
否则,禁止
置 1,禁止指
令缓存刷新,
否则,允许
地址产生器与 PM,DM总线
地址产生器主要为数据访问产生地址,
实现存储器与寄存器间的数据传递,完
成对片内 DM数据存储区和 PM程序存储
区的访问。
DAG1
DAG2
DM
PM
内部都有 4种类型的寄存器
( Ix,Mx,Bx,Lx)
索引寄存器 修改寄存器 基址寄存器 长度寄存器
DAG支持的地址修改方式
地址的预修改
地址的后修改
地址直接修改
地址位反序
硬件实现,一个周期完成,
没有软件开销,执行效率高
SHARC DSP的位反序寻址
通过设置 MODE1寄存器的 BR0和 BR8位
可以使能位反序寻址模式。
BR0=1,DAG1
将索引寄存器 I0
中的地址值位反
序后输出
BR8=1,DAG2
将索引寄存器 I8
中的地址值位反
序后输出
SHARC DSP的环形缓冲区循环寻址
连续地存放数据的存储器地址单元
B,缓冲区起始地址
L,缓冲区长度
通过设置 MODE1寄存器的 CBUFEN位可
使能环形缓冲区循环寻址方式。
SHARC DSP 的广播式数据传输
单一指令通过广播方式同时向多个寄存
器赋值。
通过设置 MODE1寄存器的 BDCST1位和
BDCST9位实现使能索引寄存器 I1和 I9的
广播式数据传输。
寄存器
寄存器的位定义信息为灵活程序设计带来方
便。在编写 DSP应用程序时,通常要对寄存
器的位进行设置、清除及位测试等,以控制
程序执行。主要有这样一些寄存器,
运算单元寄存器
程序控制寄存器
地址产生寄存器
I/O处理寄存器
系统控制与状态寄存器
运算单元寄存器
通用数据寄存器
Rx,Fx,Sx( x=0~15)
乘法结果寄存器
MRFx(前台),MRBx(后台)( x=0~2)
主要用于存放 80位乘法结果
PX总线交换寄存器
PX1,PX2
程序控制寄存器
引导指令的执行,主要实现 指令流水操作,
程序与循环堆栈, 定时器操作, 中断锁存
与屏蔽 等。
PC程序寄存器
FADDR取指寄存器
DADDR译码寄存器 PCSTK程序计数堆栈寄存器
LCNTR循环计数寄存器
TPERIOD定时器周期数寄存器
TCOUNT定时器计数寄存器 IRPTL中断锁存寄存器
IMASK中断屏蔽寄存器
地址产生寄存器
DAG1 DAG2
I0~I7 I8~I15 索引寄存器
M0~M7 M8~M15 修改寄存器
B0~B7 B8~B15 基址寄存器
L0~L7 L8~L15 长度寄存器
I/O处理寄存器(核外)
映射到 DSP内部的存储器空间,但与内部
存储器,占用地址 0x00~0xFF,总线可将
这些寄存器作为内部存储器地址单元访问。
SHARC DSP不支持直接在 I/O寄存器与内
部存储器地址单元间传数,要读写 I/O处理
寄存器,须用处理器核寄存器作为中介,
但 DMA操作除外。
系统控制与状态寄存器
主要配置处理器核的操作模式,同时标
志处理器核的工作状态,作为条件程序
执行的判别条件。
如,模式控制寄存器 MODE1,MODE2
模式屏蔽寄存器 MMASK
运算状态寄存器 ASTATx,ASTATy
附加状态寄存器 STKYx,STKYy
用户定义状态寄存器 USTATx
中断逻辑
丰富的中断资源
外部中断:仿真器中断、复位中断(不可屏蔽)
3个外部输入中断
内部中断:定时器中断,DMA控制中断,环形
缓冲区溢出中断、非法输入中断、堆栈溢出中
断、运算错误中断、多处理器中断、链路服务
请求中断及用户自定义软件中断
外部异步事件 中断当前任务 返回
定时器
内部可编程的定时器,实现以下功能,
产生定时事件
实现计数
产生标准脉冲
中断处理器
测量输入脉冲
通过对内部 TCOUNT和 TPERIOD寄存器编
程,在 TIMEXP引脚产生脉冲输出,同时产
生两个定时中断( TMZHI,TMZLI)
置位 MODE2寄存器的 TIMEN位使能定时器
存放定时器
的计数值
存放定时器
中断的频率
SHARC系列 DSP的存储器
片内双口 SRAM,等量分成
块 0
块 1
由 DAG1控制
由 DAG2控制
DM
PM 指令或数据
数据
处理器核
PM
DM
存储器
I/O总线
链路口、串口等外部接口
由 I/O处理器控制
存储器空间
芯片不同,存在差异,
ADSP21065( 0.5M) ADSP21061( 1M)
ADSP21161( 1M) ADSP21062( 2M)
ADSP21060 ( 4M) ADSP21160( 4M)
ADSPTS101( 6M) ADSPTS201( 24M)
ADSPTS202( 12M) ADSPTS203( 4M)
内部存储空间、多处理器空间和外部
存储空间
内部存储空间( S):由片内 SRAM存储
器和存储器映射的寄存器资源构成(地
址范围 0x00000000~0x0007FFFF)
多处理器空间( M):多片处理器系统
中和其他 DSP相对应的内部存储器空间
外部存储空间( E):与 DSP相连的片外
存储器和存储器映射的 I/O设备相对应的
存储空间
内部存储空间、多处理器空间和外部
存储空间
PC程序计数器分别定义了地址空间访问
控制的 S,M,E段码。
由 I/O处理器根据指令指定的访问地址来
区别。
内部存储空间
I/O处理器寄存器空间
保留的 I/O存储器
块 0存储区
块 1存储区
保留存储区
多处理器空间
SHARC DSP支持多达 6片的多处理器总
线共享连接(无需外加控制逻辑)。
当每片 SHARC DSP的 PM/DM总线指向
其自身所在的存储器空间时,就是对自
己片内存储器的访问;
当指向其他 SHARC DSP所在的存储器
空间时,就是对共享总线的其他 DSP内
部存储器的访问。
注意
由于多处理器共享外部地址总线,每个时
刻只能有一片 SHARC DSP控制总线,对
其他 SHARC DSP片内存储空间进行访问,
SHARC DSP提供了片内的总线仲裁和多
处理器控制握手信号进行协调,保证总线
访问不发生冲突。
还应注意
在多处理器存储系统中,只能以正常字
( 32位)访问多处理器存储空间,长字
( 64位)或短字( 16位)的读写都会导
致不正确的操作结果。
外部存储空间
SHARC DSP的外部存储空间可以由 DM、
PM和 I/O总线通过外部端口进行读写,
DAG1和 DAG2和 I/O处理器产生 32位地
址,可以完全寻址片外 4G字的存储空间。
外部存储空间
外部存储器空间分成 5组,0~3组和无分
组存储空间,通过处理器的片选信号选
择前 4个分组,对无分组外部存储区的访
问,只需存储器地址。
外部存储区也可以作为 EPROM加载区和
DRAM控制页。
存储器组织与字长
存储器组织的 基本存储单元 是 16位字宽
的存储列单元。
对 ADSP21160而言,4M位的片内存储
器分成块 0(程序存储区)和块 1(数据
存储区),在每个 2M位的存储器块阵列
中,每行有 4个存储列单元,单列存储列
单元长度为 32K。
存储器访问
与 SHARC DSP存储器访问相关的 寄存
器 有 SYSCON,MODE1,MODE2和
WAIT,这些寄存器控制了存储器的操作
模式。
可以进行 64位长字,48位指令字与 40位
扩展精度字,32位正常字,16位短字等
不同字长的访问。
存储器访问存在的限制
DM总线可以访问所有存储空间,PM总线只能
访问内部存储空间和外部存储空间的低 12M位,
不能访问多处理器存储空间;
I/O总线不能访问 IOP寄存器映射的内部存储空
间;
不能对同一物理地址既用 32位又用 48位访问;
对于不同字宽的访问格式,也并非能访问所有
存储空间 。
SHARC系列 DSP的 DMA
SHARC DSP提供了片上 DMA功能,具
有专门供 DMA传输的总线,可在后台实
现数据块的零开销满时钟率传输,几乎
不需要处理器核的干预就可以完成数据
的输入 /输出。使 IOP操作与处理器核操
作并行,效率大大提高。
DMA传输类型
内部存储器与外部存储器或存储区映射
的外设间的数据传输;
内部存储器与内部存储器或其他 SHARC
DSP间的数据传输;
内部存储器与主机间的数据传输;
内部存储器与串行口间的数据传输;
内部存储器与链路口间的数据传输 ;
外部存储器与外部设备间的数据传输。
DMA资源( ADSP21160为例)
DMA通道号 数据缓冲区 说明
DMA通道 0 Rx0 串行口 0接收
DMA通道 1 Rx1 串行口 1接收
DMA通道 2 Tx0 串行口 0发送
DMA通道 3 Tx1 串行口 1发送
DMA通道 4 LBUF0 链路口缓冲 0
DMA通道 5 LBUF1 链路口缓冲 1
DMA通道 6 LBUF2 链路口缓冲 2
DMA通道 7 LBUF3 链路口缓冲 3
DMA通道 8 LBUF4 链路口缓冲 4
DMA通道 9 LBUF5 链路口缓冲 5
DMA通道 10 EPB0 外部口缓冲区 0
DMA通道 11 EPB1 外部口缓冲区 1
DMA通道 12 EPB2 外部口缓冲区 2
DMA通道 13 EPB3 外部口缓冲区 3
DMA通道建立
SHARC DSP的 DMA控制器有两种基本操作,
外部口的 DMA传输
I/O口的 DMA传输
设定 DMA
参数寄存器
设定 DMA通
道控制寄存器
后台
传输
传输完毕,
DMA中断
配置
I/O口
设定 DMA参
数寄存器
后台
传输
传输完毕,
DMA中断
设置 I/O口
控制寄存器
注意
在 DMA数据传输过程中,不可以重
新设置 DMA控制寄存器。若要重新启动
新的 DMA传输,在程序设计中须先禁止
该 DMA通道,对 DMA参数寄存器写入
新值,才可以使能该通道的 DMA传输。
DMA参数 寄存器和控制寄存器
DMA通道参数寄存器
串行口 DMA控制器
链路口 DMA控制器
外部口 DMA控制器
DMA通道参数寄存器
内部索引寄存器( IIx)
内部修改寄存器( IMx)
计数寄存器( Cx)
链式指针寄存器( CPx)
通用寄存器( GPx)
外部索引寄存器( EIx)
外部修改寄存器( EMx)
外部计数寄存器( ECx)
SHARC系列 DSP的链路口
利用链路口,可以实现与其他 SHARC系列
DSP或者外设的无缝连接,也可以在复位时,
通过链路口4对处理器进行引导。
所有链路口可同时工作,进行点对点的双向
数据并行传输,并具有通信协议简单、数据
传输率高的优点。
链路口是 SHARC系列 DSP接口的一大特色。
链路口特性
所有链路口可以同时或者独立地操作;
链路口间传输的数据可以打包成 32位 /48位;
处理器核可以访问链路口,链路口可以与片内
存储器进行 DMA传输,外部主机也可以直接读
或写链路口;
每个链路口有双缓冲的发送/接收寄存器;
每个链路口有一位时钟线和一位应答信号线。
ADSP21160的链路口
ADSP21160有 6组 8位字宽 的双向数据链
路口;
ADSP21160每个链路口收发数据的时钟
频率可以配置为 1倍,0.5倍,0.33倍和
0.25倍的核时钟频率,最高时钟频率可
达到內核的时钟频率 。
链路口的中断形式
用中断方式进行程序设计是一种常用的程序设计方
法,有 3种关于链路口的的中断方式,
链路口 DMA使能后,DMA传输完成后将产生一个
可屏蔽中断;
链路口 DMA禁止时,处理器核可直接对链路口缓冲
区读写,若接收缓冲区非空或发送缓冲区非满,将
产生一个可屏蔽中断;
当链路设备访问一个未被指定的链路口,或访问一
个已指定但对应缓冲区被禁止的链路口时,将产生
一个可屏蔽中断。
链路口控制寄存器
链路口控制寄存器主要完成对链路缓冲区的分配,链
路口操作模式的配置,以及链路口 DMA等,主要有,
链路缓冲控制寄存器( LCTLx)
链路通用寄存器( LCOM)
链路分配寄存器( LAR)
链路口服务请求( LSR)
当链路口被禁止时,如果外部设备访问链路口,
称为 链路口服务请求( LSR),其标志锁存于
LSRQ寄存器中。
把 LSRQ寄存器中的状态标志位读到通用数据寄存
器里,经检测以判定是哪个链路口要求发送或接
收数据。
注意:当一个链路口服务请求使用时,若要对该
链路口进行使能、禁止或分配等操作,应将该链
路口服务请求屏蔽。
链路口握手信号
在多处理器系统中,可以利用时钟和应
答信号通过链路口实现 SHARC DSP之
间的异步数据通信。
SHARC系列 DSP的串行口
2个独立的同步串行口 SPORT0和
SPORT1,为 SHARC DSP与外部器件
的连接提供了灵活、简捷的全双工 I/O
接口。
每个串行口均有一套控制寄存器和数
据缓冲区,支持和编程的串行时钟和
帧同步,满足标准的串口通信协议。
串行口功能
独立的发 /收通道,全双工收发数据;
多条简单的硬件连接线;
具有双数据缓冲结构;
发 /收数据时,有集成的可选压扩(压缩与解压)
功能;
能实现 DSP核控制下的中断触发的单字传输;
DMA块传输和单字传输两种传输模式;
支持多种操作模式;
可编程实现 3~32位数据传输。
串行口控制寄存器
主要对串行口的操作模式进行配置,属于 IOP
寄存器。
各有自己独立的寄存器(主要有:发送控制寄
存器 STCTLx和接收控制寄存器 SRCTLx),
可利用处理器核对其进行读写。
对于串行口使能,要经过两个输入时钟周期的
延时,串行口才能开始发 /收数据。
串行口操作模式
自环模式
标准模式
I2S( INTER-IC-SOUND)模式
多通道模式
SHARC系列 DSP的主机接口
利用主机接口,可实现以下功能,
可控制处理器及处理器的外部总线,访问处理器资源;
可读写处理器的 IOP寄存器,EPBx FIFO缓冲区,完
成对处理器操作模式的配置,以及建立 DMA传输;
利用外部口 DMA通道,可实现主机与处理器间的程序
与数据传输;
可将 8/16/32位数据打包成 32/48位内部数据;
使用处理器内部消息和向量中断确保主机命令的有效
执行;
能监视与控制处理器的操作;
在多处理器系统中,主机对主从处理器均能访问。