【DSP复习主要知识点】(大概)

网友投稿 470 2022-09-24

【DSP复习主要知识点】(大概)

目录

​​第一章​​

​​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、冯诺依曼、哈佛架构

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流水线作用

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

累加器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状态与控制寄存器

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、哈佛结构存储空间分配

8、程序存储器

9、数据存储器

10、(MMR)存储器映像寄存器

11、复位电路以及片外电路

在片外围电路:有两个通用IO引脚,受软件控制。 XF:输出 BIO:输入

12、外设接口与时序

13、利用软件等待实现接口的速度配合

14、中断处理

1、中断来源 硬件驱动:受外部中断口信号触发的外部硬件中断;受片内外围电路信号触发的内部硬件中断; 软件驱动:程序指令(INTR、TRAP、RESET)2、中断分类 中断分为可屏蔽中断和非屏蔽中断。 可屏蔽中断:可以用软件屏蔽或开放 非屏蔽中断:C54x总是响应所有软件中断,两个外部硬件中断RS’、NMI’3、中断处理过程 1、接收中断请求 2、响应中断 3、执行中断服务程序

15、自举加载

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 09hStart: 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地址单元中。

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语言程序开发优化

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的内容保存到jreturn

**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、汇编语言中为代码分配段的例子:

.textMOV #10,AC0MOV AC0,AC1

2、汇编语言中为数据分配段的例子:

.data.word 9,10.word 11,12

6、链接命令文件

链接器对汇编器编译好的代码和数据进行链接时,所依据的是连接命令文件,即.cmd文件。 在连接命令文件中定义了段名,段的起始地址,段的长度,初始化段的初始值等。 下面给出一个.cmd文件的具体示例:

/***************************************************************** lnk55x -o -m lnk.cmd* cl55x -z -o -m 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=00000C0h DARAM0 (RWIX) : o=00000C0h, l=000af40h DARAM1 (RWIX) : o=000b000h, l=0000800h DARAM2 (RWIX) : o=000b800h, l=0000800h DARAM3 (RWIX) : o=000c000h, l=0000800h DARAM4 (RWIX) : o=000c800h, l=0000800h SARAM0 (RWIX) : o=0010000h, l=0010000h SARAM1 (RWIX) : o=0020000h, l=0010000h SARAM2 (RWIX) : o=0030000h, l=0020000h CE0 (RWIX) : o=0050000h, l=0100000h CE1 (RWIX) : o=0400000h, l=0400000h PDROM (RX) : o=0FF8000h, l=0008000h PAGE 1: CE2 (RWIX) : o=0400000h, l=0200000h CE3 (RWIX) : o=0600000h, l=0100000h PAGE 2: IOPORT (RWI) : o=0000000h, l=0020000h} /*为段分配内存地址*/ SECTIONS { { rts55x.lib(.text) } */ { rts55.lib(.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=0xBEEF input > 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=0xBEFF paradata > DARAM6 fill=0x7 time > 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、信号线的布置

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)的值。

5、无限冲激响应滤波器(IIR)

第十一章,语音技术识别

1、人与人之间、人与机器之间的语音信息处理过程

2、典型语音识别系统实现过程

第十三章 物联网与智能家居

互联网协议第六版:IPv6

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:单调栈 leetcode整理(一)
下一篇:神仙打架?Mate 40与iPhone12系列最全参数对比!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~