DSP复习资料.docx

上传人:b****8 文档编号:9371447 上传时间:2023-02-04 格式:DOCX 页数:15 大小:495.90KB
下载 相关 举报
DSP复习资料.docx_第1页
第1页 / 共15页
DSP复习资料.docx_第2页
第2页 / 共15页
DSP复习资料.docx_第3页
第3页 / 共15页
DSP复习资料.docx_第4页
第4页 / 共15页
DSP复习资料.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

DSP复习资料.docx

《DSP复习资料.docx》由会员分享,可在线阅读,更多相关《DSP复习资料.docx(15页珍藏版)》请在冰豆网上搜索。

DSP复习资料.docx

DSP复习资料

第二章DSP核和DSP处理器的新发展

*2.1DSP核与DSP处理器实现高速运算的途径

硬件乘法器及乘加单元:

满足最常见的乘法及乘积累加的运算,实现卷积、向量和矩阵、傅

里叶变换等算法的运算。

通用CPU通过移位和加法运算实现,需多个时钟周期。

多个执行单元:

多个独立执行单元,并行处理。

如:

并行的多个MAC,ALU,移位器和数据地址发生器(DAG)。

高效的存储器访问:

支持单周期内实现从存储器中提取指令、数据样本及滤波器系数,要有良好的存储器宽度与访问速度,这也是采用哈佛结构的原因。

此外,DSP算法中的存储器访问具有很强的可预测性,方便为下一次运算做准备。

数据格式:

分为定点格式和浮点格式,在精度与其它要求之间达成平衡,满足需求。

零开销循环:

为高效循环提供专门支持,无需消耗任何始终周期进行循环。

数据流的线性I/O:

设置1个或多个专门的串口与并口,采用线性处理机制,使得数据传输不影响CPU的工作。

专门的指令集:

早期DSP指令集需要达成两个目标;最大限度使用硬件,提高效率;最小限度使用存储器,降低成本。

因此,DSP指令集允许在单个指令中并行完成多个操作,并且使用短指令。

使得DSP指令具有高度专门化、复杂且不规则的特点,但使得编写高效的汇编语言软件复杂化。

*2.2当前DSP处理器结构的发展趋势

传统的DSP处理器

于1980年代出现的传统DSP结构具有以下特点:

每个时钟周期执行一条指令,使用复杂的、多操作类型的指令;

往往包括操作一个乘法器或MAC(乘加器),一个ALU和若干个其他的执行单元;20~50MHz频率,低功耗与存储器的条件下提供不错能服务(光盘/硬盘驱动器等)。

增加了一些硬件,如桶形移位器、指令高速缓存(cache)、指令流水线、提供时钟频率等,工作在100~150MHz,保持在低功耗与能耗时,提供较好性能服务。

(无线通信,高速modem).

强化的传统结构DSP处理器

在不提高时钟频率和不显著改变硬件的条件下改善性能:

在传统的DSP结构上增加并行的执行单元,如增加第二个或更多的乘法器和加法器等;伴随着指令集的扩展,以充分利用增加的硬件,并行更多的操作;

强化的传统结构DSP具有更宽的数据总线,以便在每个周期内为增加的执行单元提供数据;

还使用更宽的指令字,以便在单个指令内进行附加的并行操作;(见p.29图2.2.1)

并行结构

为了实现高性能与高效使用编译器的目的:

有别于传统结构DSP,并行性处理器使用非常简单的指令,即同时执行一组并行的指令,而不是一次执行一条指令;

简化指令的编写与执行,处理器在高时钟下运行;如TI公司1996年推出了TMS320C62xx

而传统结构的DSP的并行依靠复杂指令,即单个指令可对应多个操作,如TI的C5400,C5500系列等

并行执行多指令的处理器的结构又分为两类,即超长指令字(VLIW,VeryLongInstructionWord)和超标量(superscalar)结构;主要区别是并行执行的指令如何分组;

在VLIW结构中,将4~8条指令打包成一条很长的指令执行,代码产生工具决定哪些指令要并行执行,在汇编时才打包,执行时不改变分组;

超标量处理器则只打包2~4条指令,有专门的硬件来决定哪些指令将并行地执行,基于数据的关联与资源的情况进行决定,故其是动态决定并行操作。

较难准确预测给定程序的执行时间,故给实时处理带来严重问题。

在VLIW结构中,指令字很简单,但是采用更宽的指令字,由16bit变为32bit.有利于使用大量的规格统一的寄存器,也让指令组更加规则一致,进而提高性能与效率。

但简单指令会增加存储器的需求,提高成本。

一般来说,VLIW与超标量处理器的功耗更大,其应用目标是要求性能好,但对成本与功耗不敏感的移动基站等系统。

单指令多数据(SIMD)

单指令多数据(SIMD,SingleInstructionMultipleData)并不属于结构本身,作为一种结构技术,可以在任何结构中使用。

它通过使处理器并行地用不同的数据,执行多次同样的操作,来改善处理器的性能。

例如,SIMD乘法指令,可以在单周期内用不同的输入数据执行两次或多次乘法,但需要对存储器中数据做专门安排。

其它形式

高性能CPU:

扩展基于SIMD的指令集,将CPU的资源分为多个小的资源并行使用,提高性能。

如,一个具有64-bit数据总线、64-bit寄存器和64-bitALU的CPU,可以当成4个16-bit的数据总线、寄存器和ALU,也就可以同时执行4个16-bit的数据运算。

DSP/MCU的混合:

MCU有良好管理性能,DSP具有好的数据处理性能,满足既要控制又要使用DSP软件的应用。

例如,包含MCU核和DSP核的SoC,在其MCU里强化DSP功能,从而只使用一个处理器来取代原来的两个。

2.3新近推出的DSP核与DSP处理器

LUCENT和MOTOROLA联合开发的STARCORE,1998年开始研发,目前已到第三代SC3850,主要用于数据通信、移动通信和家庭影院。

ADI和INTEL联合开发的DSP核—Blackfin,组合了一个32bitRSIC(reducedinstructionsetcomputer)指令集和双16bitMAC功能,成为一种VLIW的媒体处理器。

TI新的系列DSP核C64+和C66X

ARM(AdvancedRISCMachines)核:

已经和DSP核密不可分,协同工作;同时,ARM的数字信号处理能力大幅度地提升。

Iphone/智能电话都在使用。

该公司只设计,不生产,占有90%市场份额。

2.4新近推出的多核DSP处理器

同构多核DSP处理器

所谓同构多核,是指在一个处理器芯片内,包含了多个同样结构的DSP核,有极高性能,应用于高性能要求场所。

如:

雷达、声纳、导引、LTE系统基站、大型医疗诊断设备。

Freescale基于StarCore的多核DSP处理器MCS8256,采用45nm工艺的高度集成的SoC,集成了6个SC3850核,每核运行于1GHz,整体达到6GHz,性能高功耗低。

TI基于C66x核的多核处理器TMS320C6678,是一种高性能定点/浮点DSP处理器,基于KeyStone多核体系构架,集成8核,累计到10GHz,有一套完整开发工具。

Qualcomm基于Scorpion核的Snapdragon处理器,Scorpion基于ARMv7结构,是一种超标量,双流程的机器,始于2005年,65nm工艺,1GHz.Snapdragon已成为许多先进智能手机的处理器。

Freescale基于ARM技术的i.MX系列应用处理器,其优化了性能与电池寿命之间的平衡,使用了基于ARM9、ARM11和ARMCortex-A8的核技术。

集成了DSP核的异构多核SoC处理器

以上介绍的是基于单核或者多核的ARM技术的SoC处理器。

基于ARM核和DSP核,被称为异构多核的SoC处理器,具有非常优越的性能,更早得到应用。

TI的OMAP(OpenMultimediaApplicationPlatform)处理器,已到第五代,包含处理器、套装软件和电源管理技术,主要应用于无线连接、电源管理、智能电话、移动设备。

TI应用于数字视频的DaVinci(达芬奇)技术,专注于数据视频处理,提供API,不用写DSP代码,包含数百种芯片的庞大体系。

第3章DSP的开发环境和工具

3.1集成开发环境CCS

CCS的功能

CCS的功能十分强大,它集成了代码的编辑、编译、链接和调试等诸多功能,而且支持C/C++和汇编的混合编程,其主要功能如下:

①具有集成可视化代码编辑界面,用户可通过其界面直接编写C、汇编、.cmd文件等;

②含有集成代码生成工具,包括汇编器、优化C编译器、链接器等,将代码的编辑、编译、链接和调试等诸多功能集成到一个软件环境中;

③高性能编辑器支持汇编文件的动态语法加亮显示,使用户很容易阅读代码,发现语法错误;

④工程项目管理工具可对用户程序实行项目管理。

在生成目标程序和程序库的过程中,建立不同程序的跟踪信息,通过跟踪信息对不同的程序进行分类管理;

⑤基本调试工具有装入执行代码、查看寄存器、存储器、反汇编、变量窗口等功能,并支持C源代码级调试;⑥断点工具,能在调试程序的过程中,完成硬件断点、软件断点和条件断点的设置;

⑦探测点工具,可用于算法的仿真,数据的实时监视等;

⑧分析工具,包括模拟器和仿真器分析,可用于模拟和监视硬件的功能、评价代码执行的时钟;

⑨数据的图形显示工具,可以将运算结果用图形显示,包括显示时域/频域波形、眼图、星座图、图像等,并能进行自动刷新;

⑩提供GEL(GeneralExtensionLanguage)工具。

利用GEL扩展语言,用户可以编写自己的控制面板/菜单,设置GEL菜单选项,方便直观地修改变量,配置参数等;

⑪支持多DSP的调试;

⑫支持RTDX(Real-TimeDataEx-change)技术,可在不中断目标系统运行的情况下,实现DSP与其他应用程序的数据交换;

⑬提供DSP/BIOS工具,增强对代码的实时分析能力。

代码生成工具

每个DSP系列都提供代码生成工具

C编译器(Ccompiler):

将C源程序代码编译成为320系列对应汇编语言源代码。

编译包中包括一个外壳程序(shellprogram)、一个优化器(optimizer)和一个内部列表公用程序(interlistutility)。

汇编器(assembler):

将汇编语言源文件转变为基于公用目标文件格式(COFF)的机器语言目标文件。

连接器(linker):

将目标文件连接起来产生一个可执行模块。

它能调整并解决外部符号参考。

连接器的输入是可重新定位的COFF目标文件和目标库文件。

归挡器(archiver):

将一组文件归入一个归挡文件,也叫归档库。

另外,归档器允许通过删除、替代、提取或增加文件来调整库。

归档器最有用的应用之一是建立目标文件库。

助记符到代数语言的转换公用程序(mnemonic-to-algebraictranslatorutility):

转换汇编语言源文件。

该程序接收含有助记符(MOV,ADD)的指令,并将其转换为代数指令,产生一个含有代数指令的汇编语言源文件。

运行支持库公用程序(runtime-supportutility):

建立用户的C语言运行支持库。

标准运行支持库函数在rts.src里提供源代码,在rts.lib里提供目标代码。

运行支持库(runtime-supportlibrary):

包含ANSI标准运行支持函数、编译器公用程序函数、浮点算术函数和被C54x编译器支持的C输入/输出函数。

绝对列表器(absolutelister):

接收已经连接的目标文件作为输入,并产生.abs文件作为输出。

汇编.abs文件产生后含有绝对地址的列表。

十六进制转化公用程序(hexconversionutility):

将COFF目标文件转化为TI-Tagged,ASCII-hex,Intel,Motorola-S,Tektronix等目标格式,从而可以将转化文件装载在可擦除程序存储器里。

TIDSP的调试器接收可执行的COFF文件作为输入,但大多可擦除存储器却不支持COFF文件。

同时该转换工具还可以自动生成BOOTLOADER程序所需要的引导信息。

交叉引用列表(Cross-ReferenceLister):

用目标文件来产生一个交叉引用列表,列出符号、符号的定义、以及它们在已连接的源文件中的引用。

探针(probepoints)工具使用

在CCS环境下可以设置探针,探针实际上是一种特殊的断点。

当程序运行到探针位置时,CCS中断目标系统的DSP程序的运行,然后从与该探针连接的数据文件(存放在PC机)中读出数据或输出结果,当完成数据的传输后自动恢复目标系统的DSP程序的运行。

探针工具特别适用于算法的仿真。

探针工具可以运行在软仿真(Simulator)下。

探测点在算法开发过程中是一个有用的工具,可用来与PC主机进行数据通信。

利用探测点可以进行以下工作:

从PC主机的文件中,传输输入数据至目标系统的缓冲区,作为算法开发的模拟数据;

从目标系统的缓冲区中,输出数据至PC主机的文件中,以便进行数据分析;

更新窗口,例如图形、数据等。

图形工具的使用

CCS提供了多种绘图工具,能将内存中的数据以各种图形方式显示,帮助用户直观地了解数据的意义。

图形工具在数字信号处理中非常有用,可以从总体上分析处理前和处理后的数据,以观察程序运行的效果。

需要注意的是图形窗口只有在断点时才刷新,所以应增加断点,并使用Animate方式运行。

这样可以显示动画效果。

能提供的显示有:

时域/频域波形,眼图,星坐图,图象。

CCS提供了四大类共九种图形显示方式。

CCS提供有显示多种功能图形。

每一种功能都有相应的图形属性对话框,用来设置显示图形的各种参数。

打开图形属性对话框的方法:

在查看菜单“Tools”中,选择“Graph(图

形)”选项,弹出命令子菜单(Debug之后

才会出现);子菜单中有六项图形命令。

择四项命令可以分别打开各自的图形属性

对话框。

选择SingleTime命令,打开的

对话框。

剖析工具(profilepoints)的使用

在CCS中,你可以利用代码剖析工具,计算代码执行了多少个机器时钟。

剖析工具报告的时钟个数是从前一个剖析点开始或程序起始处。

统计CPU执行某程序所用的时钟周期数、程序分支数、子程序调用数、中断发生次数等统计信息。

基本方法是在程序的适当位置设置断点(软断点或评价点),当程序执行通过断点时,收集并统计有关程序的执行信息。

用户通过统计信息评估其性能。

你可以使用鼠标右键单击某个行,选择“Breakpoint->ProfileControlPoint->ResumeProfiling”可以设置剖析点。

然后在“ProfileControlPoint”中选“PauseProfiling”。

剖析点是一种特殊的断点,是专门用来在程序的特殊位置获取评价信息。

在每个评价点上,CCS记录该剖析点命中次数以及距上次剖析点之间的指令周期数等信息。

与断点不同,CPU在通过剖析点统计数据后,继续执行程序。

♥CMD内存定位文件的使用

段的由来

与PC中的应用程序不同,TI的DSP应用程序是一段在固定地址运行的程序。

其在加载时,会写入到指定的存储器中。

由.cmd文件提供,包括系统中可用内存块;程序代码和数据将被安排到哪个内存中。

段的定义

为了有效利用DSP的内部或外部存储器,目标文件中的代码和数据被存放在不同的段中。

这些数据段或代码段在内存中可以是分开的,也可以是连续的。

在生成的OUT文件中包括三个缺省段:

.text,.data,.bss

段有两种基本的类型

已初始化的段:

包括数据和代码。

例如.text和.data段都是已初始化段。

在汇编语言中自己定义的用于存放代码的.sect段也是已初始化段。

未初始化的段:

是为未初始化数据保留的内存空间。

例如,.bss段是未初始化的,用于为变量保留空间。

在汇编语言中还可以使用.usect指令说明一个未初始化段

还可以在汇编语言中自己定义的用于存放代码的段,如.sect(代码),.usect、.buffer(数据)等

连接器如何使用段

汇编器和连接器允许创建、命名和连接已经命名的段。

连接器有两个与段有关的功能:

一个是在建立输出OUT文件时,连接器要使用OBJ目标文件中的段,合并输入段(当被连接的文件多于一个时)。

另一个是连接器为输出段选择存储器地址。

这些连接器可以根据用户提供的CMD定位文件,来安排段的实际地址。

这个CMD定位文件一般有两个部分:

MEMORY和SECTIONS。

在MEMORY中,主要说明目标系统中哪些存储器可以使用,它们的起始地址是多少,大小如何。

在SECTIONS部分中,主要完成段的具体地址的分配。

例如,我们将.text段存放在1800h开始的程序空间中,将.bss段存放在c00h开始的数据空间中,将.vect段存放在程序空间的200h开始的地方。

存储器指令(memorydirective)定义目标系统的存储器图。

用户可以给部分存储器命名,定义它的起始地址和长度。

段指令(sectionsdirective)告诉连接器如何将输入段合并到输出段中,及将这些输出段放在存储器的什么地方。

用户可以用连接器的SECTIONS指令指定子段,如不特别指定,子段将和同基段名的段合并在一起。

定位CMD文件可以包含参数

将连接器使用的参数添加到内存定位CMD文件中,这样整个连接器命令可以简化为(以C5000系列为例,使用LNK500):

C:

\C54X\LNK500asmlnk.cmd

3.2DSP/BIOS的应用

DSP/BIOS的功能

DSP/BIOS是CCS提供的一套工具,用于支持系统实时分析。

它本身仅占用极少的CPU资源。

使用线程来管理程序,如硬件中断服务子程序,软件中断服务子程序,周期函数,idle函数等。

线程(thread)是操作系统能够进行运算调度的最小单位。

一条线程指的是进程中一个单一顺序的控制流,是进程中的实际运作单位,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

提供多种分析工具,评估代码。

如图形化显示各个线程占用的CPU时间,代码执行时间统计,显示输出信息等。

可以修改各个线程的优先级。

CCS中的DSP/BIOS工具已经具有实时操作系统的很多功能特点,如任务的调度管理、任务间的同步和通讯、内存管理、实时时钟管理、中断服务管理等等。

DSP/BIOS(v5.4)以后的版本SYS/BIOS!

当然,你也可以不使用DSP/BIOS工具,而使用传统的汇编和C编写DSP应用程序。

DSP/BIOS应用程序的结构

DSP/BIOSAPI提供可伸缩的实时核,还提供了有优先级的多线程处理。

它是专为那些需要实现实时调度、同步以及通讯的应用程序而设计。

在一个包含DSP/BIOS内核的应用程序按优先级从低到高有四种主要线程:

不使用DSP/BIOS时的程序结构

DSP/BIOS应用程序的结构

DSP/BIOS的大小

对于C62x,最小需要程序存储空间的150字,数据存储空间575字。

以C6201为例:

占有的程序空间0.9%和数据空间3.5%

最多需要6500字,占C6201存储空间的20%。

所以多数应用中是可接受的。

DSP/BIOS的可裁减性:

只把直接或间接调用的模块和API连接到目标文件中

DSP/BIOS支持的平台

支持C5000和C6000,C2000的DSP:

支持的平台:

EVM,DSK,第三方开发的目标板,用户自己开发的板子和Simulator配置模板(Configurationtemplate)使用配置工具配置生成用户自己的.cdb文件

Simulator中使用DSP/BIOS片上时钟,CLKandPRDmodules;PinConnecttool配置中断管脚,仿真硬件中断。

DSP/BIOS提供的应用程序接口(API)模块

CLK模块:

用于片上的定时器管理,设置定时器中断的间隔时间。

HST模块:

用于实现主机与目标系统间数据的输入或输出。

HWI模块:

用于硬件中断管理,可设置相应的中断服务子程序。

IDL模块:

用于管理idle函数,该类函数具有最低优先级。

DSP/BIOS提供的模块

LOG模块:

用于事件的记录显示。

例如,你可以通过该API输出调试信息。

MEM模块:

用于定义目标系统的内存使用。

系统根据此信息自动产生.cmd文件。

PIP模块:

用于管道管理,可以实现线程间的数据交换。

PRD模块:

用于实现周期性的函数。

该类函数的执行频率可以由CLK模块或自己调用PRD_tick决定。

RTDX模块:

用于主机与DSP目标系统间的实时数据传递。

STS模块:

用于状态统计管理,你可以在CCS下查看这些统计参数。

SWI模块:

用于管理软件中断。

CCS将运行队列中的软件中断,并可以设置15个优先级,但都比硬件中断低。

第四章DSP方案工程实现

*4.4DSP最小系统设计(了解内容,没有PPT,见书)

4.6DSP中定点数和浮点数的运算(P228和实验)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1