DSP第三章
第三章 DSP定点运算
数的定标 高级语言 DSP定点算术运算 非线性运算的定点快速实现 小 结
3.1.1 数的定标
在定点DSP芯片中,采用定点数进行数 值运算,其操作数一般采用整型数来表 示。 一个整型数的最大表示范围取决于DSP 芯片所给定的字长,一般为16位或24位。 显然,字长越长,所能表示的数的范围 越大,精度也越高。
虽然有时需要使用混合表示法,但是,更通常 的是全部以Q15格式表示的小数或以Q0格式表 示的整数来工作。 这一点对于主要是乘法和累加的信号处理算法 特别现实,小数乘以小数得小数,整数乘以整 数得整数。 乘积累加时可能会出现溢出现象,在这种情况 下,程序员应当了解数学里面的物理过程以注 意可能的溢出情况。 返回
3.4.2 查表法
在实时DSP应用中实现非线性运算,一般都采取适当 降低运算精度来提高程序的运算速度。查表法是快速 实现非线性运算最常用的方法。 查表法:根据自变量的范围和精度要求事先制作一张 表格,根据输入值确定表的地址,根据地址就可得到 相应的值。 显然输入的范围越大,精度要求越高,则所需的表格 就越大,即存储量也越大。 查表法求值所需的计算就是根据输入值确定表的地址, 因而运算量较小。 查表法比较适合于非线性函数是周期函数或已知非线 性函数输入值范围这两种情况 。
3.3 DSP定点算术运算
定点DSP芯片的数值表示是基于2的补码表示形 式。 每个16位数用1个符号位、i个整数位和15-i个小 数位来表示。 例如数00000010.10100000表示的值为 21 + 2 −1 + 2 −3 =2.625, 这个数可用Q8格式(8个小数位)来表示,它表 示的数值范围为-128~+127.996,一个Q8定点 数的小数精度为1/256=0.004。
数字信号处理DSP第三章3.2 DFT定义
易知,DFT的变换区间长度N不同, 表示对X(ejω)在区 间[0, 2π]上的采样间隔和采样点数不同, 所以DFT 的变换结果也不同。
jIm(z)
−2 WN −1 WN 0 WN k =0 − ( N −2 ) WN
X (ejω)
X (k )
o
Re[z] o π
W
− ( N −3) N
ω
DFT与序列傅里叶变换、Z变换的关系
例1 已知序列x(n)=δ(n),求它的N点DFT。 解
nk 0 X (k ) = ∑ δ (n)WN = WN =1 n=0 N −1
k=0, 1, …, N-1
对序列δ(n),不论对它进行多少点的DFT,所得结果 都是一个离散矩形序列。
本节将根据周期序列和有限长序列之间的关系, 由周 期序列的离散傅里叶级数表示,给出有限长序列的离散 频域表示,即离散傅里叶变换(DFT)。
一、预备知识 1、余数运算表达式 如果n=n1+mN, m为整数;则有
((n))N=n1, 0≤n1≤N-1
运算符(( ))N表示n被N除,商为m,余数为n1。 n1是((n))N的解, 或称作取余数,或说n对N取模值,简 称取模值,n模N,(n mod N) 。
周期延拓
长度为M的有限长序列x(n)的N点DFT,是有限长序
~
x(n)
N
~ x (n)
DFS
DFS[ ~ x (n) ]
~ X (k )
% (k ) R (k ) 取主值 X N
DFT[x(n)]N
注:以上定义中N长度没有限制!
有限长序列x(n)的N点DFT—即DFT正变换公式
X (k ) = DFT[ x(n)]N = ∑ xN (n)W , 0 ≤ k ≤ N − 1
DSP第三章.ppt
二、程序地址的产生
程序地址产生的情况
▲ 顺序操作:程序的地址来源于PC程序计数器(程序地址+1) ▲ 空(哑)周期:程序的地址来源于PAR (程序地址+1) ▲ 从子程序返回:程序的地址来源于栈顶(TOS) ▲ 从表传送或块传送返回:程序的地址来源于转移或调用指
PSC
TDDR
R-0
D15
PSCH
D8 D7
R/W-0
D0
TDDRH
R-0
R/W-0
一、时钟及系统控制
看门狗及其应用
F2812的看门狗与240x的基本相同,当8位的看门狗计数 器计数到最大值时,看门狗模块产生一个输出脉冲(512个振荡 器时钟宽度)。如果不希望产生脉冲信号,用户需要屏蔽计数 器,或用软件周期向看门狗复位控制寄存器写“0x55+0xAA", 该寄存器能够使看门狗计数器清零。
SUBC(条件减)
希望同学们坚信:
数据存储区中建立一个堆栈。
二、程序地址的产生
堆 栈 例 子
二、程序地址的产生
堆栈例子
二、程序地址的产生
微
堆 ▲ 一级深、16位宽,操作不可见,即无指令,只有程序
栈
地址产生逻辑才能够使用微堆栈。
▲ 程序地址产生逻辑在执行BLDD、BLPD、MAC、MACD、 TBLR 和TBLW 这些串(块)操作指令时利用微堆栈保 存返回地址。
WDCHK
R/W-0
R/W-0
D0
WDCNTR
R/W-0
D0
WDKEY
R/W-0
D8
D3 D2
D0
R/W-0WDPS
二、程序地址的产生
DSP第三章1节3部分
为使捕获单元正常工作,应完成以下寄存器配置: (1)初始化捕获FIFO状态寄存器CAPFIFO,将其适当的状态位 清0。 (2)设置时基通用定时器的控制寄存器T2CON或T3CON,同 时确定它的计数模式。 (3)如必要,应设置相关的通用定时器比较寄存器或通用定时 器周期寄存器。 (4)设置捕获控制寄存器CAPCON。
3.1.3 捕获单元 捕获单元是一种输入设备,用于捕获引脚上电平的变化并记录 它发生的时刻。 普通的微处理器能作到这一点,但需要由CPU完成判断和记录 工作。因此它占用CPU的资源。 而DSP的捕获单元与CPU并行地捕获引脚上电平的变化并记录 它发生的时刻,替代了普通CPU的判断和记录功能。 另外,对于两次间隔很短的跳变的捕获,普通的微处理器就显 得力不从心,这对于快速变化的信号检测、测速等就显得非常的不 方便。 哪么对于时间间隔很短的多次跳变的捕获,DSP是否也可以得 心应手? DSP控制器的捕获单元不需要占用CPU的资源,与CPU并行工 作。同时设置了两级深的FIFO(先入先出)堆栈缓冲器,故对于二 次间隔很短的跳变的捕获得心应手。 DSP控制器共有四个捕获单元,结构示意图如图3.19所示:
为了采集到跳变信号,必须保持输入的当前电平两个CPU时钟 周期。 (6)用户指定的边沿检测方式:可以检测CAPx的上升沿、下 去图 降沿或两者都检测。 (7)对应于每一个捕获单元,都有1个可屏蔽的中断标志位。 (8)捕获单元的操作不影响任何定时器的操作或与任何定时器 相关的比较/PWM输出。 (9)捕获单元4中断标志的置位可以编程用于启动ADC。 通用定时器用作捕获单元的时基时,并不影响它原来的功能, 它仍可实现通用定时器的“定时”或“比较/PWM输出”。 捕获控制寄存器CAPCON和捕获FIFO状态寄存器CAPFIFO各位 的组成定义与说明见表3.11~3.13。
数字信号处理基础pptDSP第3章
(5) 循环右移到h((n−m))LRL(m),与x(m)相乘相加得 yc(n)
例3-6 x(n)= {1, 2, 3},0 n 2;h(n)= {1, 2, 2, 1},0n3。
翻褶 翻褶循环右移1位
§3.2.2 有限长复序列共轭的DFT
DFT[ x*( N n)]N X *(k), 0 k N 1
DFT[ x*(n)]N X *( N k), 0 k N 1
证明:
X*(N
k)
N 1
x(n)W
n0
(N N
k
)n
*
N 1
x(n)W
n0
N
kn
n 4 3 2 1 0 1 2 3 4 5
y(n4) 1 4 9 11 8 3
y(n)
1 4 9 11 8 3
yc1(n)
9 7 9 11
3. 循环卷积定理 x(n)长度M,h(n)长度N,L max(M, N) yc(n) = x(n) L h(n),Yc(k) = X(k)H(k) DFT[x1(n)x2(n)]L = X1(k) L X2(k)/L 0nL1,0kL1
N 4,
X (k)4
1 e j2k 1 e jk 2
4, 0,
k0 1k 3
4 (k),
0 k 3
N 8,
X (k)8
1 e jk 1 e jk 4
,
0
k
7
N 16,
X (k )16
1 e jk 1 e jk
DSP第三章
定时器相关的位都被复位为0,因此所有通用定时器的操作
都被禁止,计数方向指示位都置成1。 所有的定时器中断标志位均被复位为0。所有的定时器中断
屏蔽位都被复位为0,因此所有通用定时器的中断都被屏蔽。
所有通用定时器的比较输出都被置为高阻态。
Page 28
比较单元与PWM发生器
事件管理器有3个全比较单元和3个单比较单元。每个单比较 单元对应一根输出引脚CMPy/PWMy(y=7、8、9),
00 仿真挂起时立即停止
01 仿真挂起时当前定时周期结束后停止 10 操作不受仿真挂起的影响
11 操作不受仿真挂起的影响
位13、12、11 六种计数模式选择 001 单增计数模式 011 定向的增/减计数模式 101 连续增/减计数模式
Page 19
000 停止/保持模式 010 连续增计数模式 100 单增减计数模式
Page 24
LDP #00H SPLK #02H IMR 使能内核中断2 SPLK #FFFFH IFR LDP #E8H 清内核中断标志 7400H~747FH
SPLK #80H EVIMRA 定时器1周期中断使能
SPLK #FFFFH EVIFRA 中断标志位清0 SPLK #0042H GPTCON 不启动ADC,T1高有效
Page 14
周期、下溢、上溢中断标志位、中断以及相应的事件产生, 与连续递增计数模式一样。 注意:TMRDIR引脚的输入改变引起计数方向改变要2个 CPU时钟周期。引脚电平状态会在GPTCON的方向指示位 TxSATA中反映出来。 5.单增减模式 由初始值增计数至周期匹配再减计数至0为止,TxCON使
* 16位定时器向上/下计数器TxCNT,可读或写
* 16位定时器比较寄存器(带阴影寄存器、双缓冲)TxCMPR,读或写 * 16位定时器周期寄存器(带阴影寄存器、双缓冲)TxPR,可读或写
西工大DSP第三章
WN = e
W =e
N称为DFT变换区间长度
4 PDF created with pdfFactory Pro trial version
DFT 导出的图形解释
x(n)
~ x (n)
IDFS n
% (n) = x ((n)) N x
一、问题的提出: 有限长序列的傅立叶变换在频域是关于频率的连续函数,为 了适用于计算机的运算,希望将连续的频率函数也能离散化,如 何解决这一问题呢?
二、如何解决问题: 引出了 离散傅立叶变换
回忆傅里叶变换几种形式
2 PDF created with pdfFactory Pro trial version
1
x ((1 - m)) R ( m)
2 N N
m
0 1 2 3 4 5 6 7
2 N
x (( 2 - m)) R ( m )
N
m
两个长度为N的序列的循环卷积长度仍为N
4 2
0 1 2 3 4 5 6 7
x (n )
n
0 1 2 3 4 5 6 7
3、循环卷积定理 有限长序列 x1(n) 和 x2(n),长度分别为N1和N2, x1(n) 和 x2(n)的N 点DFT分别为 X1(k) 和 X2(k) , N=max[N1,N2]
1 PDF created with pdfFactory Pro trial version
§3.0 引言
DFT使信号在频域离散化,从而使计算机能在频 域进行信号处理,特别是DFT有多种快速算法可使信 号处理的速度大大提高。因而离散傅立叶变换在各种 数字信号处理的算法中起着核心作用。
3.2.4
DSP第三章1节1部分
GPTx 控制寄存器 T CON
与通用定时器相关的引脚(x=1,2,3,下同)
1、TMRDIR:用于确定通用定时器计数增/减方式,高电平为 去图 增计数,低电平为减计数。
2、TMRCLK:外部时钟引脚,最大频率是CPU时钟频率的1/4。 3、TxPWM/TxCMP:通用定时器输出引脚。平时高阻,在通 用定时器的比较输出操作被开启时该引脚起作用。 4、ADC—Start:它是A/D转换的启动信号。当定时时间到时自 动发出。
TMRCLK引脚提供外部时钟输入。 EV模块所有输入均与内部CPU时钟同步。 应当注意,在被EV确认之前,当前转换必须保持,直到遇到 CPU时钟的两个上升沿。即所有要求输入的信号跳变至少应保持2 个CPU时钟周期。 因此,为了可靠,我们推荐任何转换都应保持至少两个CPU时 钟周期。 与事件管理模块有关的引脚说明如表3.1所示。
周期寄存器 TxPR (双缓冲)
周期寄存器 T1PR (双缓冲)
MUX
GPTCON 通用定时器 控制寄存器
比较寄存器 TxCMP (双缓冲)
比较逻辑
对称/非对称 波形发生器
TxPWM
输出逻辑
TxCMP
中断标志
TxCNT 通用定时计数器
ADC启动 内部CPU时钟 控制逻辑 TMRCLK TMRDIR 图3.2 通用定时器的结构示意图
在通用定时器的比较输出操作被开启时,还将使引脚 TxPWM/TXCMP产生跳变。
定时周期寄存器 TxPR 与定时比较寄存器 TxCMPR 类似,它存 放周期值,也是双缓冲结构,可在任何时候对它的缓冲寄存器进行 读写。 定时周期缓冲寄存器的内容装载到它的工作寄存器,只能在计 去图 数寄存器的值为0时进行。
去图2
DSP原理与应用---第3章 EMIF
DRAM是Dynamic RAM的缩写,中文含义为动态随机存取存储器, 需要不断的刷新,才能保存数据。而且是行列地址复用的,许多都有 页模式。SDRAM:Synchronous DRAM,即数据的读写需要时钟 来同步。 一个是静态的,一个是动态的,静态的是用的双稳态触发器来保存信 息,而动态的是用电子,要不时的刷新来保持。
DRAM容量大,SRAM容量小
SDRAM的结构
FLASH ROM
Flash-ROM(闪存)已经成为了目前最成功、流行的一种固态内存,与 EEPROM 相比具有读写速度快,而与 SRAM 相比具有非易失、以及价廉等优 势。而基于 NOR 和 NAND 结构的闪存是现在市场上两种主要的非易失闪存技 术。 Intel 于 1988 年首先开发出 NOR flash 技术,彻底改变了原先由 EPROM 和 EEPROM 一统天下的局面。紧接着,1989 年东芝公司发表了 NAND flash 技术(后将该技术无偿转让给韩国 Samsung 公司),强调降低每比特的成 本,更高的性能,并且象磁盘一样可以通过接口轻松升级。 NOR 的特点是芯片内执行(XIP,eXecute In Place),这样应用程序可以直 接在闪存内运行,不必再把代码读到系统 RAM 中。NOR 的传输效率很高,在 1~4MB 的小容量时具有很高的成本效益,但是很低的写入和擦除速度大大影 响了它的性能。 NAND 结构能提供极高的单元密度,可以达到高存储密度,并且写入和擦除的 速度也很快,这也是为何所有的 U 盘都使用 NAND 闪存做为存储介质的原因。 应用 NAND 的困难在于需要特殊的系统接口。
NAND flash和NOR flash的对比
接口差别 NOR 闪存带有SRAM接口,有足够的地址引脚来寻址,可 以很容易地存取其内部的每一个字节。 NAND闪存使用复杂的I/O口来串行地存取资料,各个产品 或厂商的方法可能各不相同。8个引脚用来传送控制、地 址和资料信息。NAND读和写操作采用512字节的块,这 一点有点像硬盘管理此类操作,很自然地,基于NAND的 闪存就可以取代硬盘或其它块设备。
DSP完整课件第3章 共29页
fin
CLKOUT
PLL选择 (SCSR1.11:9)
1500pF PLFF2
退出
2)外部滤波器电路回路
3.2.1 锁相环(PLL)
PLL有2个外接滤波输入引脚:PLLF,PLLF2 PLL模块使用外部滤波电路回路来抑制信号抖动和电磁干 扰,使信号抖动和干扰影响最小。
1 1Ω 0.68μ F
PLLF
(3)当未检测到累加器溢出时,其值为0;当溢出发生时, OV位被置1。
(4)根据被测试位的结果,测试控制标志位(TC)位被置1或0。
2019
退出
3.1.4 累加器(ACC)
存放CALU中的运算结果,其存放的数据可以执行单一的移位 或循环操作。其中的高位或低位字可以进入输出定标移位器进行 移位后再存放进数据存储器。与ACC有关的状态位有: 1)进位标志位C ① 当累加器中的数据相加时,结果有进位或减法无借位时C=1; 相减时,结果有借位或或加法无进位时,C=0 。 ② 当累加器中的数据被移动1位时,累加器中的最低位或最高位 进入C。
(2)外部时钟方式
最小和最大的CLKIN频率分别为4MHz和30MHz(2407A 为40MHz)。
2019
退出
3.2.2 看门狗定时器时钟
当CPU工作于低功耗模式下,看门狗能持续计数 WDCLK引脚为看门狗电路的时钟输入端。 WDCLK的时钟来自于时钟输出引脚CLKOUT。
WDCLK=CLKOUT/512 当CPU的挂起信号有效时,WDCLK将被停止。
2019
退出
3.1.6 状态寄存器ST0和ST1
1) 状态寄存器ST0
OV:溢出标志位。当中央算术逻辑单元发生溢出时,OV=1, 直到发生复位、执行以OV(溢出)或NOV(不溢出)为条件的转 移指令、或执行LST指令时被清0。
DSP原理及应用第三章PPT课件
SP可以指向存储器中的任意一个地址。dmad可 以指向当前页中具体的单元,从而允许访问存储器 任意基地址中的连续的128个单元
15
第15页/共157页
特点
举例
用途
可以在不改 变DP或SP的 情况下,随 机地寻址128 个存储单元 中的任何一 个单元。
EFB:循环缓冲器的有效基地址(EFB)就是用户 选定的辅助寄存器(ARx)的低N位置 0后所得到 的值。
EOB:是通过用BK的低N位代替ARx的低N位得
到。
25
第25页/共157页
26
第26页/共157页
循环缓冲器的指示index就是ARx的低N位, 步长step就是加到辅助寄存器,或从辅助寄存 器中减去的值。循环寻址的算法如下:
特点:指令中包含一个固定的16位地址,能寻 址所有数据、程序和I/O存储空间,但 运行速度慢,需要较大的存储空间。
用途:用于对速度要求较低的场合。
9
第9页/共157页
3.累加器寻址
方法
举例
特点
用累加器 中的数值 作为地址 来读写程 序存储器。
READA Smem WRITA Smem
可用来完成 程序存储器 单元的数据 与数据存储 器单元的数 据进行交换
23
第23页/共157页
1) 循环寻址
许多算法,如卷积,相关和FIR滤波等, 都需要在存储器中实现一个循环缓冲器。在 这些算法中,一个循环缓冲器就是一个包含 了最近的数据的滑动窗口。当新的数据来到 时,缓冲器就会覆盖最早的数据。
循环缓冲器实现的关键是循环寻址的实 现。‘C54x间接寻址中提供了循环寻址的方 式,以%表示。
哈工程DSP专业课课件第三章
在应用实例一中,我们将介绍如何使用数字信号处理算法对信号进行处理。具体来说,我们将实现一个简单的滤 波器,该滤波器可以对信号进行低通滤波、高通滤波和带通滤波等操作。通过这个实例,我们将深入了解数字信 号处理算法的实现原理和应用方法。
应用实例二:数字滤波器设计
总结词
数字滤波器是数字信号处理中的重要组成部分,它可以有效地滤除信号中的噪声和干扰,提高信号的 清晰度和可靠性。
习题三解答
01
总结词:系统设计
02
总结:这道习题要求设计一个简单的 数字信号处理系统,包括信号的采集 、处理和输出。
03
详细描述:首先,需要确定系统的目 标和功能,选择合适的数字信号处理 器和相关硬件。然后,设计系统的数 据流和指令流,以及系统的控制流程 。在系统设计过程中,需要考虑系统 的实时性能、可靠性和可扩展性。最 后,需要对系统进行测试和验证,确 保其满足设计要求。
THANKS
感谢观看
习题二解答
01
总结词:算法实现
02
总结:这道习题要求实现一个简单的数字信号处理算法,如 离散傅里叶变换(DFT)或其快速算法(FFT)。
03
详细描述:首先,需要理解算法的基本原理和数学公式。然后, 根据算法原理,使用编程语言实现算法。在实现过程中,需要注 意算法的效率和精度,并尽可能优化算法性能。最后,需要对算 法进行测试和验证,确保其正确性和可靠性。
详细描述
在应用实例二中,我们将介绍如何设计数字滤波器。具体来说,我们将设计一个简单的低通滤波器和 一个带通滤波器。通过这个实例,我们将深入了解数字滤波器的设计原理和应用方法,并掌握如何根 据实际需求选择合适的滤波器类型和参数。
应用实例三:数字信号处理系统实现
DSP第三章
50. SQRA 037Fh,
移位乘积)
DAT30
;(DP = 6: 地址 0300h–
;PM = 0: 无
51. SPH 027Fh,
DAT3
;(DP = 4: 地址 0200h– ;PM = 0:
无移位)
52. SPH
* ,AR7
;(PM = 2: 左移四位)
• 控制指令
BIT
(数据位 (15 – 0))
28.BCND
P9, LEQ,C
如果ACC 内容小于等于0,并且进位位置位,程序转到 P9 地址处开始执行,否则PC + 2。
29. INTR K
K: 中断向量值,每个K值(0~31)代表一个中断向量。
INTR
3
;PC + 1 被压入堆栈。 使得程序控制转换到与K值=3对应的地址, 由该地址引导到相应的中断服务程序。
ARP 装载方式: (1) MAR 指令 (2) LST 指令
(3) 任何支持间接寻址的指令
ARP 所指的寄存器被作为当前辅助寄存器或简称为当前AR。 • 间接寻址选项
LF240x 提供四种间接寻址选项:
(1)“ * ” 不增不减 指令用当前AR所指的数据存储器地址中内容装载,但当前 AR 内容不增不减。
POPD 59. POPD
DAT10 ;(DP = 8)
PSHD 60. PSHD
* ,AR1
61. SPM 11)
3
;乘积寄存器移位方式 3 (PM =
• I/O 和存储器指令
BLDD 源, 目的
BLDD # lk, dma 源地址长立即数目的地址直接 BLDD # lk, ind [, AR n] 源地址长立即数目的地址间接
DSP完整课件第3章PPT文档30页
DSP完整课件第3章
26、机遇对于有准备的头脑有特别的 亲和力 。 27、自信是人格的核心。
28、目标的坚定是性格中最必要的力 量泉源 之一, 也是成 功的利 器之一 。没有 它,天 才也会 在矛盾 无定的 迷径中 ,徒劳 无功。- -查士 德斐尔 爵士。 29、困难就是机遇。--温斯顿.丘吉 尔。 30、我奋斗,所以我快乐。--格林斯 潘。
66、节制使快乐增加并使享受加强。 ——德 谟克利 特 67、今天应做的事没有做,明天再早也 是耽误 了。——裴斯 泰洛齐 68、决定一个人的一生,以及整个命运 的,只 是一瞬 之间。 ——歌 德பைடு நூலகம்69、懒人无法享受休息之乐。——拉布 克 70、浪费时间是一桩大罪过。——卢梭
DSP完整课件第3章
15~13
ARB X
12
0
11
X
10
1
9
1
8
1 1
7
1 1
6
1 1
5
1 1
4
XF 1
3
1 1
2 1~0
1 1 PM 00
CNF TC SXM C
CNF:片内DARAM配置位。当CNF=0时,可配置的 DARAM映射到数据存储空间;当CNF=1时,可配置的 DARAM映射到程序存储空间。可通过SETC、CLRC指令对其 进行修改。 2010 退出
2010
退出
3.1 CPU功能模块
CPU是DSP 的核心部件, 主要进行取数、 运算(加、乘、 移位等)、送数 的操作。包括: 输入定标移位 器、中央算术 逻辑单元 (CALU)和乘法 单元等。
2010
退出
3.1.1 输入定标移位器
用于完成不同数据格式之间的转换。 因为240x芯片的数据总线是16位,而中央算术逻辑单元 (CALU)是32位,必须把16位数据转换为32位,实现数据格式转 换。因此,输入定标移位器的16位输入与数据总线相连,32位 输出与CALU单元相连。 输入定标移位器作为从数据总线到CALU之间的数据传输路 径的一部分,不会额外占用CPU的时钟开销。 定标移位器对输入数据进行0-15位左移。 左移时,输出数据的最低有效位(LSB)为0,最高有效位(MSB) 根据状态寄存器ST1的符号扩展控制位SXM的值来决定是否需要 进行符号扩展。 (1)当SXM=1时,高位进行符号扩展; (2)当SXM=0时,高位填0。 移位次数由包含在指令中的常量或临时寄存器(TREG)中的值 来指定。 2010 退出
精品课件-DSP处理器原理与应用(鲍安平)-第3章
(6) DSP开发系统。DSP开发系统是由厂家提供的一个包 含DSP、存储器、常用接口电路的通用电路板和相应软件的软 /硬件系统。通常有两种形式,一种是电路板卡的形式,插入 计算机中;另一种是通过计算机控制端口(如:串口、并口或 者USB接口)连接到计算机,通过计算机的控制端口来控制DSP 的运行。DSP厂家或者其他的第三方公司提供DSK(DSP starter Kit)入门套件和EVM(Evaluation Module)评估模块 等来帮助初学者熟悉DSP处理器的应用。同时,DSK和EVM也可 以作为程序的初步运行对象,以方便调试。
7
为了克服C编译器低效率,在提供标准C库函数的同时,开发 系统也提供了许多针对DSP运算的高效库函数,例如FFT、FIR 、IIR、相关、矩阵运算等,它们一般采用汇编语言来编写, 带有高级语言调用/返回接口。
为了得到高效编程,在系统软件开发中,关键的DSP运算 程序一般都是自行手工用汇编语言编写的,按照规定的接口 约定,由C程序进行调用,这样极大地提高了编程效率。
2
3.1 DSP处理器软、硬件开发工具简介
虽然不同DSP芯片厂家提供了多种不同的开发调试工具, 但它们的功能大体相似。图3-1为DSP处理器软件开发流程图 。
3
ห้องสมุดไป่ตู้
图3-1 DSP处理器软件开发流程图
4
从图3-1中可以看出,DSP软件开发可以分为5个步骤,首 先要根据所设计的硬件情况编写出结构文件;然后用C或者汇 编语言编写源程序,源程序经过C编译器和汇编器后与结构文 件以及库文件在链接器中链接成可执行代码,如果是汇编语 言编写的程序则可以跳过C编译器;可执行代码可以在软件模 拟器模拟运行或者通过硬件仿真器在标准的开发板或者评估 板上运行调试;当软件运行达到要求后,再在用户自己制作 的目标板上调试;调试成功后将可执行代码制作成EPROM码, 目标板脱机运行,完成系统的测试和调试。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章 DSP芯片开发工具的 特点及应用§3.1 DSP开发环境 §3.2 通用目标文件格式COFF §3.3 编程工具特点及应用 §3.4 调试工具的特点及应用XCHL《DSP原理及应用》讲稿1宏源程序 文件C语音 源文件 汇编语音 源文件§3.1 DSP 开发环境汇 编 语 音 开 发 流 程归档器 宏文件库C编译器 汇编语音 源文件 建库应 用程序 实时 支持库 Computer 调试工具汇编器归档器COFF通用 目标文件目标 文件库 十六进制 转换程序 EPROM中 的十六进制 代码程序 绝对 列表器链接器 可执行的单个 COFF文件交叉引用 TMS320C2XX 芯片 列表器 返回本章首页2XCHL《DSP原理及应用》讲稿§3.2 通用目标文件格式COFFCOFF文件格式是基于段(section)的概念建立的,即程序被分 解成各种段的组合体:如文本段、数据段等。
这种文件格式便于 实现模块化程序设计,即程序员设计时只需基于代码段和数据段 等概念进行,不需关注每条命令或每个数据的具体目标地址。
至 于它们的最终将处于存储器的哪个位置,将由链接器来安排。
• • • • • •段的概念及分类 段的创立 段的组合及其在存储器中的映象 程序重定位 COFF文件内的符号 COFF文件的装载•《DSP原理及应用》讲稿返回本章首页XCHL3段的概念及分类• 段(section)是目标文件的最小单位。
即指最终在存储器中占据连续空间的一段代码或数据。
• COFF文件中可包含如下几种段:– 文本段( .text section):通常包含可执行代码 – 数据段 (.data setion):通常包含已初始化数据 – 变量段 (.bss section):通常用来为未初始化变量保留存储 空间 – 命名段(.named section):是用户自定义段 前三种是DSP系统的基本缺省段。
• 分类– 已初始化段(initialized section):如.text 和. data段 – 未初始化段(unintialized section):存储器中保留的用来存 放未初始化数据或变量的空间 – 返回本节首页XCHL 《DSP原理及应用》讲稿 4段的创立• 汇编器有六个伪指令来创立段。
– .bss – .usect 创立未初始化段 – .text – .data 创立初始化段 – .sect – .asect 【注】如用户未使用任何伪指令,则汇编器将把所以 内容汇编入.text段。
• 未初始化段的创立 • 初始化段的创立 • 例题•XCHL 《DSP原理及应用》讲稿返回本节首页5未初始化段的创立 • 未初始化短的作用是在存储器(一般是RAM型)中保 留部分空间,以便程序运行时创建和存储变量。
• 一般用两条伪指令.bss和.usect创立未初始化段。
• .bss:– 功能:在.bss型段内保留空间 – 语法格式: .bss 符号,字数 – 符号指向.bss命令保留的第一个字,通常用第一个未初始化变 量的变量名来表示。
字数指明保留空间的大小。
– 例:.bss varl, 1• .usect:– 语法格式:符号 .usect “段名”,字数 – 功能:在指定段内为由符号指向的变量表保留一定字数的空 间,该段必须是用户自定义的。
– 例:inbuf .usect newvars, 7 – 返回次节首页XCHL 《DSP原理及应用》讲稿 6初始化段的创立 • 初始化段的作用是包含可执行代码或初始化数据。
• 有四条伪指令可创立初始化段:.text,.data,.sect 和.asect。
• .text:创建存放可执行代码的.text段例: add: aloop: .text LAC 0FH SBLK #1 BLEZ aloop SACL varl , 0 .data .word 011h, 022h, 033h .sect “section name” 返回次节首页7• .data:创建存放已初始化数据的.data段例: coeff 例: 例:• .sect:创建具可重定位地址的命名段 • .asect:创建具绝对地址的命名段XCHL.asect “section name”, address 《DSP原理及应用》讲稿例题行号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17XCHLSPC 0000 0000 0001 0002 0000 0001 0003 0000 0000 0001 0002 0003 0004 0005 0004 0004 0005目标代码 0011 0022 0033 coeff源程序 .data .word 011h, 022h, 033h0123 200f d003 0001 f280 0001 6000 00aa 00bbptr add: aloop:.bss varl, 1 .bss buffer, 10 .word 0123h .text LAC 0Fh SBLK #1 BLEZ aloop SACL varl, 0 .data .word 0AAh, 0BBh8ivals《DSP原理及应用》讲稿行号 18 19 20 21SPC 0000 0001 0006 0006目标代码 var2 inbuf ccff源程序 .usect newvars, 1 .usect newvars, 7 .text ADD #0FFh• 解释 – 关于段程序计数器SPC汇编器在对源程序分段汇编时,为每种类型的段分配一个 SPC,用来指示各段的内容顺序。
SPC总是指向本段的当前 值。
– 伪指令效用期• 长效应伪指令:如.text,.data,.sect和.asect,汇编器遇到 该类伪指令时,则停止对当前段的汇编,开始对该指令指 定段的汇编,直至遇到另一个长效应伪指令为止。
• 短效应伪指令:如.bss和.usect,汇编器遇到该类伪指令 时,则暂停对当前段的汇编,开始对该指令指定段的汇 编,然后继续进行对上一个长效应伪指令的汇编。
返回次节首页XCHL 《DSP原理及应用》讲稿 9段的组合及其在存储器中的映象汇编器将源文件的段类别识别出来,由链接器将各种段组合起 来,形成可执行的COFF输出模块。
同时,链接器还将为各输出段 选择存储器地址。
• 链接器用两条伪指令完成上述功能: – MEMORY: 定义目标系统的存储器映象,可以给 它们命名,规定起始地址和长度 – SECTIONS:指定怎样组合各输入段以及将各输出 段存放在存储器的哪个位置 • 链接器定位段的两种方法 – 缺省的定位算法 – 用MEMORY和SECTIONS 命令分配存储器返回本节首页XCHL 《DSP原理及应用》讲稿 10缺省的定位算法返回本次节首页•存储器分配原则–读目标文件以确定正确的目标处理器,即确定当前处理器的具体型号–根据目标处理器确定存储器的可用情况,以TMS320C25为例:•程序存储器:外部1000h~0FEFFh•数据存储器:片内0300h~03FFh片外0400h~0FEFFh–将.text段定位到字1000H开始的程序存储器中;–将.data段定位到紧接着.text段后的程序存储器中;–根据遇到的已初始化命名段次序先后将它们依次定位在.data段之后;–将.bss段定位到自3000h开始的数据存储器中;–将未初始化命名段依次定位到.bss段之后的数据存储器中。
XCHL《DSP原理及应用》讲稿11用MEMORY和SECTIONS 命令分配存储器•例:MEMORY{PAGE 0: VECS:origin=0h, length=020hCODE: origin=020h,length=0F90hPAGE 1: RAMB2:origin=060h, length=020hRAMB0:origin=200h, length=100hRAMB1:origin=300h, length=100h}SECTIONS{vectors:>0000h.text:>CODE.data:>RAMB2.bss:>RAMB0newvars:>RAMB1}XCHL《DSP原理及应用》讲稿13程序重定位(Relocation)•概念–汇编器在汇编源程序时,给各个段分配一个SPC,且每个段的SPC 均从0开始。
此时,源程序中的标号(如前例中的aloop)值取该段在本语句的SPC值(aloop=0001H),即相当该段起始位置的偏移量。
链接器在给各个段分配存储器空间的时候,不能保证每个段都从0000H单元开始,故源程序中的标号需随各段在存储器中的具体位置重新赋值,此即重定位。
•实现方法重定位的工作通常又汇编器和链接器共同完成。
–汇编器为段内所以需重定位的标号创建一个重定位入口表,表中提供各个符号的相应重定位入口信息(如其定义行的SPC值,重定位地址的计算方法等)。
此表在汇编结束各个段的COFF中提供。
–链接器按如下步骤完成重定位:•把段定位到存储器中以确定各段的起始位置;•计算各个需重定位符号在存储器中的具体位置;•修改引用符号处的符号值以便引用。
XCHL《DSP原理及应用》讲稿15•运行时的重定位返回本节首页–有时希望程序目标码存储和运行使用不同的存储器空间,如保存在ROM中,运行却希望在SRAM中完成,此时需对程序进行重定位。
–运行时的重定位也是由链接器完成。
即使用SECTIONS命令对段进行二次分配。
如:.text : load=CODE run=RAMB0其中,load和run分别是用于装载地址和运行地址的关键字。
•举例SPC目标代码重定位后目标码源程序.ref X 0000 0200h.text0000FF80FF80 B X0001000001000002D001D001LALK Y0003000402040004CEIF CEIF Y:IDLE 【注释】.ref X表明标号X是在.text段外定义的标号,汇编后其值取0000。
XCHL《DSP原理及应用》讲稿16COFF文件内的符号由汇编器和链接器创建的COFF文件中包含一个符号表,专门存储程序中所用到的符号信息。
•内部符号和外部符号–内部符号:本段内定义,本段内使用。
重定位由链接器借助SPC完成,不列入符号表中。
–外部符号:在一个模块中定义,在另一个模块中使用,汇编时需列入符号表,以便帮助链接器重定位该符号。
•外部符号的声明–.global:全局符号,所有模块都可使用,可能时参考符号和定义符号。
–.ref:参考符号,在其它模块中定义,在本模块中只引用。