目录
- 第一章
-
- 1、数字系统对比模拟系统
- 2、冯诺依曼、哈佛架构
- 3、CISC、RISC
- 4、DSP特点
- 5、cpu流水线作用
- 6、DSP芯片优点
- 第二章:DSP芯片结构原理
-
- 1、ALU(算数逻辑运算单元)
- 2、累加器A和B
- 3、桶形移位器的功能
- 4、乘法/加法单元
- 5、CPU状态与控制寄存器
- 6、内部总线结构
- 7、哈佛结构存储空间分配
- 8、程序存储器
- 9、数据存储器
- 10、(MMR)存储器映像寄存器
- 11、复位电路以及片外电路
- 12、外设接口与时序
- 13、利用软件等待实现接口的速度配合
- 14、中断处理
- 15、自举加载
- 第三章:寻址方式以及指令系统
-
- 1、寻址分类
- 2、程序地址的生成
- 第七章:DSPC55x处理器软件开发流程
-
- 1、软件设计
- 2、任务状态
- 3、C语言程序开发优化
- 4、通用目标文件格式
- 5、C/C++和汇编语言中段的分配
- 6、链接命令文件
- 第八章:DSP硬件设计基础
-
- 1、主要芯片种类
- 2、DSP系统的设计思路
- 3、信号线的布置
- 4、DSP最小系统设计
- 第九章、DSP典型算法设计实例
-
- 1、掌握高通滤波器
- 2、巴特沃斯滤波器(Butterworth)
- 3、切比雪夫滤波器
- 4、卷积算法
- 5、无限冲激响应滤波器(IIR)
- 第十一章,语音技术识别
-
- 1、人与人之间、人与机器之间的语音信息处理过程
- 2、典型语音识别系统实现过程
- 第十三章 物联网与智能家居
-
- 互联网协议第六版:IPv6
第一章
1、数字系统对比模拟系统
数字化的优点:
1.高度的程控能力与灵活性
2、更高的精度
3、可靠性与可重复性得到了改善
4、大规模集成
5、接口方便
6、灵活性好
7、保密性好
8、特殊应用(只有数字能做):信息无失真压缩、线性相位滤波器、软件无线电技术
模拟与数字各有所长:
1、实时性
模拟:除了电路引入的延时外,处理是实时的
数字:取决于处理器的速度
2、高频信号的处理
模拟:可以处理包括微波毫米波乃至光波信号
数字:按照奈奎斯特准则的要求,受S/H、A/D 和处理速度的限制
3、模拟与数字信号转换
现实世界的信号大多是模拟的,要想完成数字处理就必须进行转换。
2、冯诺依曼、哈佛架构
两种结构的目的旨在从存储器存取数据。区别在于程序/数据总线和空间是否分开。
冯诺依曼结构:2进制与程序内存思想
哈佛架构:
哈佛结构的特点:
1、将程序与数据存储空间分开
2、各有独立的地址总线和数据总线
3、取址和读数可以同时进行
4、速度大大提高
3、CISC、RISC
CISC:复杂指令计算机
RISC: 精简指令计算机
RISC和CISC的区别:
(1) 指令系统:RISC 设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来完成。而CISC 计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此,处理特殊任务效率较高。
(2) 存储器操作:RISC 对存储器操作有限制,使控制简单化;而CISC 机器的存储器操作指令多,操作直接。
(3) 程序:RISC 汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计;而CISC 汇编语言程序编程相对简单,科学计算及复杂操作的程序设计相对容易,效率较高。
4、DSP特点
1、哈佛结构
2、硬件乘法/累加器
3、多总线结构
4、多DSP协调工作模式
5、特殊DSP指令
6、多级流水线
5、cpu流水线作用
多级流水线技术(PipeLine)
作用:提高取地址效率,减少等待时间。
图示:
流水线深度可达到6级。
6、DSP芯片优点
哈佛结构
多总线结构和多处理单元
流水线技术
特殊的DSP指令
指令周期短
运算精度高
硬件配置强
耗电省
第二章:DSP芯片结构原理
C54x系列DSP器件的CPU基本组成如下:
1、40位算数逻辑单元
2、2个40位累加器寄存器
3、支持16~31位移位范围的桶形移位寄存器
4、乘法累加单元MAC
5、16位临时寄存器
6、16位的转换寄存器(TRN)
7、比较、选择、存储单元(CSSU)
8、指数编码器
9、CPU状态和控制寄存器
10、两个地址发生器
重点:基本性能、CPU结构、内部总线结构、存储器结构、片外围电路,这里以C54x芯片为主要切入点。
需要注重的地方
1、多总线结构
2、40位算术逻辑单元(ALU)
3、17 x 17并行乘法器
4、比较、选择和存储单元(CSSU)
5、指数编码器
6、两个地址发生器
7、数据总线
8、总线寻址空间
9、三种存储器空间
10、单指令循环和块循环
1、ALU(算数逻辑运算单元)
1、ALU如何获取数据
ALU有两个输入端:
X输入端的数据来源于移位寄存器的输出或来自数据总线DB 的数据存储器操作数
Y输入端的数据来源于累加器A中的数据,或累加器B中的数据,或来自数据总线CB的数据存储器操作数,或来自T寄存器中的数据。
2、ALU输出
输出为40位,被送往累加器A或B
3、溢出与进借位
溢出是针对有符号数的,进借位是针对无符号数的。
溢出处理:ALU的饱和逻辑可以处理溢出。当发生溢出、且状态寄存器ST1的OVM=1时,则用32位最大正数00 7FFFFFFFh(正向溢出)或最大负数FF 80000000h(负向溢出)加载累加器。
关于进借位:
可以用来支持扩展精度的算术运算,利用两个条件操作数C和NC,可以根据进位位的状态,进行分支转移、调用与返回操作。
2、累加器A和B
1、作用:存放运算前后的数据
2、结构:一共40位,高8位是保护位,防止在累加运算中产生溢出
3、在存储器中的存储位置:
4、AB异同
累加器A和B的差别仅在于累加器A的31~16位可以用作乘法器的一个输入。
3、桶形移位器的功能
1、定标的含义:
当数据存储器的数据送入累加器或与累加器中的数据进行运算时,先通过它进行0~16位左移然后再进行运算。
2、归一化的作用:
方便指数运算
3、为何要扩展符号位
进行符号保护
4、乘法/加法单元
C54x系列产品的CPU有一个17 x 17的硬件乘法器,这个乘法器与一个40位专用累加器相连接,构成了乘法/累加单元MAC。
这个乘法器能够完成带符号与不带符号的乘法运算。
有符号乘法:使每个16位操作数扩展成17位有符号数。
无符号乘法:使每个16位操作数的前面加个0
无符号数与有符号数乘法:使一个16位操作数前面加一个0,另一个16位操作数符号扩展为17位有符号数,以完成相乘运算。
乘法器工作在小数相乘方式(状态寄存器ST1中的FRCT位=1)时,乘法结果左移1位,以消除多余的符号位。
功能:
乘法器/加法器单元可以在一个流水线状态周期内完成一次乘法累加(MAC)运算
5、CPU状态与控制寄存器
有3个状态控制寄存器:状态寄存器ST0、状态寄存器ST1和处理工作模式状态寄存器PMST
ST0和ST1中包含有各种工作条件和工作方式的状态;
PMST中包含存储器的设置状态及其它控制信息.
这些寄存器是存储器寻址,所以可以把三个寄存器的内容存入数据存储器并能从数据存储器读出。
在存储器中的排布是这样的:
ST0
ARP:辅助寄存器操作,指定用于兼容模式下间接寻址的辅助寄存器
TC:测试控制标志,存储算术运算单元ALU的测试位操作结果
C:进位标志位
OVA:累加器A的溢出标志
OVB:累加器B的溢出标志
DP:数据存储器页指针,用于与指令中7位偏移量共同确定间接寻址的地址。
IPTR:中断矢量指针,指定中断矢量表的存放位置
MP/MC’:微处理器工作方式位。该引脚为0允许使能并寻址片内ROM;为1不能利用片内ROM。
OVLY:为1时允许片内双寻址数据RAM块映射到程序空间
DROM:数据ROM,决定片内ROM是否可以映射到数据空间。
6、内部总线结构
TMS320C54x片内有一组程序总线、两组数据读总线、一组数据写总线。
程序总线(PB):16位,传送取自程序存储器的指令代码和立即操作数
数据总线(CB、DB和EB):16位,CB和DB传送读自数据存储器的操作数;CB用于双数据读、长数据(32位)读高16位,DB用于单数据读、双数据读、长数据(32位)读低16位、外设读;EB用于传送写到存储器的数据。
地址总线(PAB、CAB、DAB和EAB):16位,用于传送执行指令所需的地址。
PAB传送程序的地址;CAB传送读数据需要的地址。
7、哈佛结构存储空间分配
C54x中,片内存储器的型式有DARAM、SARAM和ROM三种,取决于芯片的型号。
RAM总是安排到数据存储空间,但也可以构成程序存储空间。
ROM一般构成程序存储空间,也可以部分地安排到数据存储空间。
8、程序存储器
9、数据存储器
RAM分块目的:
为了提高处理器的性能,片内RAM也细分成若干块。
分块后,用户可以在同一个周期内从同一块DARAM取出两个操作数,并将数据写入到另一块DARAM中。
10、(MMR)存储器映像寄存器
11、复位电路以及片外电路
具有监视(Watchdog)功能的自动复位电路。它除了具有上电复位功能外,还具有监视系统运行并在系统发生故障或死机时再次进行复位的能力。
其基本原理是:为电路提供一个用于监视系统运行的监视线,当系统正常运行时,应在规定的时间内给监视线提供一个高低电平发生变化的信号,如果在规定的时间内这个信号不发生变化,自动复位电路就认为系统运行不正常并重新对系统进行复位。
在片外围电路:有两个通用IO引脚,受软件控制。
XF:输出
BIO:输入
12、外设接口与时序
外设接口引线由三部分组成:地址总线、数据总线、一组控制信号。
作用:对IO口或者片外存储器进行寻址。
外部总线引脚说明:
13、利用软件等待实现接口的速度配合
首先复习软件等待状态发生器(SWWSR) :
结构:
功能:将外部总线周期延长多达7个机器周期,方便地与外部慢速器件相接口。
为什么要对外部存储器分块 ?
协调不同速度的外存器件。
连接图:
本例中C54x的机器周期为25ns(40MHz),若外部器件的存取时间小于15ns,可以不插入等待状态。因此例中的数据存储器可以不插入等待状态,但程序存储器和A/D、D/A外部设备应分别插入3个(75ns)和5个(125ns)等待状态。
此时软件等待状态寄存器SWWSR应配置为:
14、中断处理
1、中断来源
硬件驱动:受外部中断口信号触发的外部硬件中断;受片内外围电路信号触发的内部硬件中断;
软件驱动:程序指令(INTR、TRAP、RESET)
2、中断分类
中断分为可屏蔽中断和非屏蔽中断。
可屏蔽中断:可以用软件屏蔽或开放
非屏蔽中断:C54x总是响应所有软件中断,两个外部硬件中断RS’、NMI’
3、中断处理过程
1、接收中断请求
2、响应中断
3、执行中断服务程序
可屏蔽中断处理过程:
非可屏蔽中断处理过程:
4、实现中断的相关问题
1、中断向量地址的计算
复位后的初始地址计算
1、取IPTR的值
2、查表得中断向量序号
3、将十六进制的中断向量序号左移2位
4、将1与3相加得中断向量地址
具体来一题:复位后的初始地址计算
复位后,IPTR的所有位被置1(IPTR = 1FFh),RS中断向量序号为00;左移2位与IPTR相加,得到最终结果。
注意1FFh会将复位向量银蛇到程序存储器的511页空间,此时RS向量不能被重新银蛇,总是指向程序空间的FF80h。
当加载除了1FFh之外的值到IPTR后,中断向量可以映射到其他地址。如:
其他例子:
15、自举加载
自举加载的任务:
自举加载的途径:
1、从一个外部的8位或者16位的EPROM加载
2、由主处理器从以下几个途径加载:
HPI总线、
8位或16位并行I/0、
任何一个串行口、
从用户定义的地址热自举。
第三章:寻址方式以及指令系统
1、寻址分类
1、立即数寻址:指令中嵌有一个固定的数
2、绝对地址寻址:指令中有一个固定的地址
3、累加器寻址:按累加器内的地址去访问程序存储空间中的一个单元
4、直接寻址:指令中的低7bit是一个数据页的偏移地址,而所在的数据页由数据页指针DP或SP决定,该偏移地址加上DP和SP的值决定了在数据存储空间中的实际地址
5、间接寻址:按照辅助寄存器中的地址访问数据存储空间
6、存储器映象寄存器寻址:修改存储器映射寄存器的值,不影响当前DP或SP的值
7、堆栈寻址:把数据压入和弹出系统堆栈
1、立即数寻址
特点:
指令中包含有执行指令所需要的操作数。
立即数分为3、5、8或9位的短立即数和16位的长立即数两种。
短立即数可包含在单字或双字指令中,长立即数在双字指令中。
语法注意点:
在操作数前面需要加#字号来说明该操作数为立即数。否则会把该操作数误认为是一个地址,从而把立即数寻址变成绝对地址寻址。
LD:装入指令
LD #93h,A ; 把立即数1000H装入累加器A
3、累加器寻址
方法:用累加器中的数值作为地址来读写程序存储器;
特点:可用来完成程序存储器单元的数据与数据存储器单元的数据进行交换。
READA Smem; 以累加器A中的数作为一个程序存储空间地址,读取一个字存入数据存储单元Smem中
WRITA Smem; 从数据存储单元Smem读取一个字存入以累加器A为程序存储空间地址的单元
4、直接寻址
直接寻址是指令代码包含了数据存储器地址的低7位。这7位dma作为偏移地址与数据页指针(DP)或堆栈指针(SP)结合共同形成16位的数据存储空间实际地址。
数据页分为512页,每页128字节,共有64k。
用一个符号或者一个常数来确定偏移地址。偏移地址操作数前应该加@号。
分为两种方式:
CPL=0 7位dma域与9bit的DP相结合 形成16位的数据存储器地址。
CPL=1 7位dma域加上(正偏移)SP 的值形成16位的数据存储器地址。
例1:采用直接寻址的方式,将立即数1234h和5678h分别存放到数据存储空间的0089h和2009h地址单元中。
DAT0 .set 09h
Start: LD #0001H,DP ;设置DP指针。加载指令。STM #2000H,SP ;设置SP指针。存储指令。
BK0: RSBX CPL ;对状态寄存器ST1中的编辑方式位清0。与DP运算ST #1234H,DAT0 ;将立即数1234H存入DAT0地址单元中。
BK1: SSBX CPL ;对状态寄存器ST1中的编辑方式位置1。与SP运算ST #5678H,DAT0 ;将立即数1234H存入DAT0地址单元中。
例2:直接寻址有两种方式,分别是什么?如何控制当SP = 2000H,DP = 2,偏移地址为25H时,分别寻址的是哪个寻址空间的哪个地址?
解:
用一个符号或者常数来确定7位偏移值,与DP共同形成16位的数据存储器实际地址。
用一个符号或者常数来确定7位偏移值,与SP共同形成16位的数据存储器实际地址。
计算方式如图:
所以用DP来算为:0000,0001,0010,0101=> 0125H
用SP来算为:0010,0000,0010,0101 => 2025H
6、存储器映象寄存器寻址
功能:用来修改存储器映象寄存器。
方法:高9位数据存储器地址置0,利用指令中的低7位地址访问MMR。
特点:用来修改存储器映象寄存器而不受到当前数据页指针DP或者堆栈指针SP值的影响。
举例:
LDM PRD,A ;将PRD的内容装入累加器A
7、堆栈寻址
功能:用来在中断和子程序调用时自动保存程序计数器(PC)中的数值,也能用来保护现场或传送参数 .
特点:
从高地址向低地址方向生长,SP)来管理堆栈,SP始终指向堆栈中所存放的最后一个数据,即SP指针始终指向栈顶。在压入操作时,先减小SP的值,再将数据压入堆栈;在弹出操作时,先从堆栈弹出数据,再增加SP的值。
PSHD Smem ; 把一个数据存储器的值压入堆栈
PSHM MMR ; 把一个存储器映射寄存器的值压入堆栈
POPD Smem ; 从堆栈中弹出一个数据到数据存储器单元
POPM MMR ; 从堆栈弹出一个数据到存储器映射寄存器
2、程序地址的生成
程序地址生成器(PAGEN)构成:
1、程序计数器(PC)
2、重复计数器(RC)
3、块重复计数器(BRC)
4、块重复起始地址寄存器(RSA)
5、块重复结束地址寄存器(REA)
核心:
16位程序计数器(PC)内保存某个内部或外部程序存储器的地址。
第七章:DSPC55x处理器软件开发流程
汇编器:将汇编源代码转换成机器语言
链接器:将多个目标文件结合成一个可执行文件
归档器:把一组文件归档为一个库,供用户使用
1、软件设计
主要分为两种程序设计思路
1、程序自己完成任务调度
运行效率高,对硬件中断响应快,程序运行稳定。是和任务较为单一,实时性较强的应用。
2、由嵌入式操作系统完成任务调度
用于同时完成多个任务。
下面是使用操作系统的代码框架
中断程序1;
......
中断程序m;
Main()
{DSP_INIT(){......}; //DSP初始化For(;;) //主循环{if(){};......if(){};}
}
2、任务状态
任务是一个无限循环,它必须处于下面的5个状态之一:
1、休眠状态:驻村与内存中,并没有被系统内核调用
2、就绪状态:任务已经准备好,但是任务优先级较低,暂时不能运行
3、运行状态:任务拥有CPU使用权,正在运行
4、挂起状态:任务正在等待一个事件的发生以结束目前的等待(如等待外设的IO操作、等待共享资源、等待定时或者超时信息等事件)
5、发生中断时,CPU进入中断服务程序,而暂时不能运行当前的任务,任务就进入了被中断态。
3、C语言程序开发优化
对I/O空间进行寻址关键字ioport
C55x处理器包含数据空间和I/O空间,为了在C/C++中对I/O空间进行寻址,编译器给出了关键字ioport,以支持I/O寻址模式。
ioport关键字可以用在数组、结构体、联合、以及枚举类型当中。
当用在数组中时,ioport可以作为数组中的元素;
在结构体中使用ioport,只能指向ioport数据的指针而不能直接作为结构的成员。
ioport类型只能用来声明全局或静态变量,如果在本地变量中使用ioport类型,则变量必须用指针声明。接下来给出指针声明ioport类型的例子:
void foo (void)
{ioport int i; /* 无效的声明 */ioport int *j; /* 有效声明 */
}
应当注意声明ioport类型的指针只有16位,这是因为I/O空间是16位寻址,而不受大/小存储器模式的限制。
在printf()中不能直接引用ioport指针,如果要引用,则必须进行强制类型转换“void *”,具体例子如下:
ioport int *p;
printf(“%p\n”, (void*)p);
给出在本地变量中使用ioport类型的例子:
int *ioport ioport_pointer; //ioport指针
int i;
int j;
void foo(void)
{ioport_pointer = &i;j = *ioport_pointer;
}
编译结果如下:
_foo:
MOV #_i,port(#_ioport_pointer) ; 存储i在I/O空间的地址
MOV port(#_ioport_pointer),AR3 ; 载入i的地址
MOV *AR3,AR1 ; 将i的内容存放到AR1中
MOV AR1,*abs16(#_j) ; 将i的内容保存到j
return
**interrupt关键字 **
中断操作需要使用特定的寄存器保存规则,并具有特殊的返回顺序。
C55x编译器使用了关键字interrupt定义中断函数。
当C/C++代码被中断时,中断程序必须保存所有与程序有关的寄存器。
当使用interrupt关键字定义函数时,中断函数必须返回空并且没有参数传递。
中断函数可以定义本地变量并且使用对战:
interrupt void int_handler()
{unsigned int flags;...
}
c_int00是C/C++程序的入口点,这个函数名被系统复位中断保留,该中断服务程序用来初始化系统并调用main函数。
**onchip关键字 **
onchip关键字的作用:告诉编译器由该关键字定义的指针所指向的数据可以作为一个双乘法指令中的操作数。
如果onchip关键字向函数传递数据,或者最终引用的数据使用onchip定义的,则该数据必须在片上。
如果该数据在片外,则当通过数据总线访问该数据时将产生一个总线错误。
下面哟个onchip定义数组和指针的例子:
onchip int x[100];
onchip int *p;
4、通用目标文件格式
汇编器和链接器产生的可执行文件所采用的格式是通用目标文件格式(COFF),采用通用目标文件格式有助于实现模块化编程。
汇编器和链接器都支持用户创建多个代码段和数据段,这也有助于用户的灵活编程。
编译器产生的可以重新定位的代码和数据块叫做段。
段可以分成两大类-初始化段和未初始化段。
初始化段装有数据或代码。
常用**初始化段包括代码段(.text段)、常数段(.const段)**等。
未初始化段的作用是在存储器中保留一定空间供程序生成和存储变量使用。
常用的未初始化段包括堆栈和系统堆栈段(.stack和.sysstack)、存储全局和静态变量的.bss段以及为分配动态存储器保留的.sysmem段等。
5、C/C++和汇编语言中段的分配
1、汇编语言中为代码分配段的例子:
.text
MOV #10,AC0
MOV AC0,AC1
2、汇编语言中为数据分配段的例子:
.data
.word 9,10
.word 11,12
6、链接命令文件
链接器对汇编器编译好的代码和数据进行链接时,所依据的是连接命令文件,即.cmd文件。
在连接命令文件中定义了段名,段的起始地址,段的长度,初始化段的初始值等。
下面给出一个.cmd文件的具体示例:
/****************************************************************
* lnk55x <obj files...> -o <out file> -m <map file> lnk.cmd
* cl55x <src files...> -z -o <out file> -m <map file> lnk.cmd
/****************************************************************/-c /*不区分大小写 */-m a1.map /*生成.map文件*/ -stack 0x1800 /*主堆栈尺寸*/-sysstack 0x1800 /*系统堆栈尺寸*/-heap 0x100 /*动态内存大小*//* Set entry point to Reset vector*//* - Allows Reset ISR to force IVPD/IVPH to point to vector table.*/-e RESET_ISR/*设置系统内存映射*//* 载入及链接使用字节地址*/MEMORY{PAGE 0:MMR (RWIX) : o=0000000h, l=00000C0hDARAM0 (RWIX) : o=00000C0h, l=000af40hDARAM1 (RWIX) : o=000b000h, l=0000800hDARAM2 (RWIX) : o=000b800h, l=0000800hDARAM3 (RWIX) : o=000c000h, l=0000800hDARAM4 (RWIX) : o=000c800h, l=0000800h SARAM0 (RWIX) : o=0010000h, l=0010000hSARAM1 (RWIX) : o=0020000h, l=0010000hSARAM2 (RWIX) : o=0030000h, l=0020000hCE0 (RWIX) : o=0050000h, l=0100000hCE1 (RWIX) : o=0400000h, l=0400000hPDROM (RX) : o=0FF8000h, l=0008000hPAGE 1:CE2 (RWIX) : o=0400000h, l=0200000hCE3 (RWIX) : o=0600000h, l=0100000hPAGE 2:IOPORT (RWI) : o=0000000h, l=0020000h
} /*为段分配内存地址*/SECTIONS{{rts55x.lib<boot.obj exit.obj strcpy.obj>(.text)}*/{rts55.lib<boot.obj exit.obj>(.text)}.text > SARAM0 /* CODE*/.switch > SARAM0 /* SWITCH TABLE INFO */.const > SARAM0 /* CONSTANT DATA */.cinit > SARAM0 /* INITIALIZATION TABLES */.pinit > SARAM0 /* INITIALIZATION TABLES */ .data > DARAM0 fill=0xBEEF /* INITIALIZED DATA */.bss > DARAM0 fill=0xBEEF /* GLOBAL & STATIC VARS */.sysmem > DARAM0 fill=0xBEEF /* DYNAMIC MALLOC AREA */.stack > DARAM0 fill=0xBEEF /* PRIMARY SYSTEM STACK */.sysstack > DARAM0 fill=0xBEEF /* SECONDARY SYSTEM STACK */.cio > DARAM0 fill=0xBEEFinput > DARAM1 fill=0xBEEF /* Input data */output > DARAM2 fill=0xBEFF /* Output data */writdata > DARAM3 fill=0xBEFF /* Write pen point */para > DARAM4 fill=0xBEFF /* Tranfer parameter */intvecs > DARAM5 fill=0xBEFFparadata > DARAM6 fill=0x7time > DARAM7 fill=0.ioport > IOPORT PAGE 2
}
第八章:DSP硬件设计基础
1、主要芯片种类
TI的DSP芯片
三大系列
1、TMS320C2000系列,DSP控制器,集成了flash存储器、告诉A/D转换器以及可靠的CAN模块
以及数字马达控制的外围模块,适用于三相电动机、变频器等高速实时工控产品等需要数字化的控制领域
2、TMS320C5000系列,16位定点DSP。主要用于通信邻域,如IP电话机和IP电话网关、数字式助听器
便携式声音/数据/视频产品。
3、TMS320C6000系列,采用新的超长指令字结构设计芯片。
主要应用于
1)、数字通信 完成FFT、信道和噪声估计、信道纠错、干扰估计和检测等
2)、图像处理 完成图像压缩、图像传输、模式及光学特性识别、加密/解密、图像增强等。
2、DSP系统的设计思路
3、信号线的布置
信号的过冲与阻尼震荡:
1、无终端补偿(NO Termination)
直接进行信号的传输,对终端不进行补偿
2、串电阻补偿(Serial Res)
串电阻补偿方式就是在点对点的连接中直接传入一个电阻,这将减少外来的电压波形的幅值。
合适的串电阻补偿将使信号正确终止,消除接收器的过冲现象。
4、DSP最小系统设计
DSP最小系统就是满足DSP运行的最小硬件组成,任何一个DSP硬件系统中都必须包括最小系统的各个组成部分,最小系统由电源电路、复位电路、时钟电路、JTAG接口电路和程序加载部分等组成
第九章、DSP典型算法设计实例
1、掌握高通滤波器
2、巴特沃斯滤波器(Butterworth)
3、切比雪夫滤波器
4、卷积算法
卷积和的运算在图形上表示可分为四步:
1、翻转:先在变量坐标m上作图x(m)和h(m),将h(m)以m=0的垂直轴为对称轴翻转成h(-m);
2、移位:将h(-m)移位n,即得h(n-m)。当n为正整数,右移n位。当n为负整数,左移n位。
3、相乘:再将h(n-m)和x(m)的相同m值的对应点值相乘。
4、相加:把以上所有对应点的乘积叠加起来,得到y(n)的值。