DSP作业1
- 格式:docx
- 大小:65.73 KB
- 文档页数:3
DSP作业1-.1.举几个DSP应用的例子,并说明DSP在系统中承担的任务。
(1通信:在蜂窝电话中,DSP协调各种芯片合理而快速的工作,并兼有开发和测试的功能。
(2军事:在雷达图像处理中,使用DSP进行目标识别和实时飞行轨迹估计。
(3家用电器:在高清晰数字电视中,采用DSP实现关键的MPEG2译码电路。
2.数字信号处理有哪几种实现方式,各有什么优缺点或特点?(1利用X86处理器完成优点:处理器选择范围较宽,主板及外设资源丰富,有多种操作系统可供选择,开发、调试较为方便。
缺点:数字信号处理能力不强,硬件组成较为复杂,系统体积、重量较大,功耗较高,抗环境影响能力较弱。
(2利用通用微处理器完成优点:可选范围广,硬件组成简单,系统功耗低,适应环境能力强。
缺点:信号处理的效率较低,内部DMA通道较少。
(3利用可编程逻辑阵列(FPGA进行实现优点:适合高速信号处理,具有专用数字信号处理结构。
缺点:开发需要较深的硬件基础,调试困难。
(4利用数字信号处理器实现优点:大规模集成性、稳定性好,精度高,可编程性,高速性能,可嵌入性,接口和集成方便。
缺点:成本较单片机高,甚至高于PC机,DSP技术更新速度快,开发和调试工具不尽完善,不如PC机方式编程和修改方便。
(5用ASIC芯片实现优点:集成程度高,简化系统结构。
缺点:功能单一,一般用于大批量消费电子。
3.简述数字信号处理器从哪几个方面提高做数字信号处理的能力。
存储器及总线结构;流水线;硬件乘法累加单元;零开销循环,特殊的寻址方式;高效的特殊指令;丰富的运算类指令。
4.比较TMS320C55x 系列DSP和已学过的单片机和通用微处理器的结构和指令系统的特点。
与单片机及通用微处理器相比,DSP有以下特点:分工精细,部件更多,硬件配置强;DSP字长为15/16位,而单片机字长仅为8位,运算精度高;流水线结构使在数字信号处理中用的最多的乘法运算在一个时钟周期内完成,而51单片机需要更多个时钟周期;55系列DSP内有12条独立总线,大大提高了运算能力,能够完成更复杂的功能;指令系统丰富,尤其运算类指令很多,更适宜做DSP运算。
DSP 作业1.DSP 芯片有哪些主要特点?答:DSP 的主要特点有:1.哈佛结构2.多总线结构3.流水线结构4.多处理单元5特殊的DSP 指令6.指令周期短7.运算精度高8.硬件配置强。
2.简述典型DSP 应用系统的构成。
答:输入信号首先进行带限滤波和抽样,然后进行数模变换将信号变换成数字比特流,根据奈奎斯特抽样定理,对低通模拟信号,为保持信号的不丢失,抽样频率至少必须是输入带限信号最高频率的2倍。
输入 输出 输出3.简述DSP 应用系统的一般设计开发过程。
如何选择DSP 芯片?答:DSP 应用系统的一般开发过程有:系统需求说明;定义技术指标;选择DSP 芯片及外围芯片;软件设计说明、软件编程与测试;硬件设计说明、硬件电力与调试;系统集成;系统测试,样机、中试与产品。
DSP 芯片的选择:1.DSP 芯片的运算速度2. DSP 芯片的价格3. DSP 芯片的硬件资源(存储器、ADC 、PWM 等等)4.DSP 芯片运算精度5.芯片开发工具:软件 硬件6..DSP 芯片功耗7.其他:封装、应用场合、售后服务等。
4.常用的DSP 芯片有哪些?答:C20x 、C24x 、C5x 、C54x 、C62xx 、C3x 、C4x 、C67xx 。
5.DSP 控制器的应用领域有哪些?答:(1)信号处理:数字滤波、快速FFT 、相关运算、谱分析、自适应铝波、卷积、模式匹配、加窗、波形产生等。
(2)通信:调制解调器、数据压缩、回拨抵消、多路复用、传真、自适应均衡、数据加密、扩频通信、纠错编码、可视电话等。
(3)语言:语音邮件、语音存储、语音编码、语音合成、语音识别、语音增强、说话人辨认、说话人确认等。
(4)图形/图像:图像增强、动画、机器人视觉、二维/三维处理器、图像压缩与传输等。
(5)军事:导航、雷达处理、声纳处理、导弹制导等。
抗混叠滤波 A/D DSP 芯片 D/A 平滑滤(6)医学:病人监控、修复手术、超声设备等。
14秋《DSP技术》在线作业1
一,单选题
1. 直接在指令中给出操作数的绝对地址的寻址方式是()
A. 直接寻址
B. 绝对寻址
C. 立即数寻址
D. 累加器寻址
?
正确答案:B
2. 下面选项哪些不属于高速处理数字化系统的主要技术指标。
A. 系统通过速率和系统线性误差
B. 系统分辨度和共模抑制比
C. 系统精度
D. 系统开发平台
?
正确答案:D
3. 通过信道传输语音时,声音通常被数字化,并被压缩成()声音流传输。
A. 低频
B. 高频
C. 压缩
D. 脉冲编码调制PCM
?
正确答案:D
4. TMS320C54x的立即数寻址中,位数最长的短立即数的长度是()。
A. 16位
B. 9位
C. 8位
D. 5位
?
正确答案:B
5. 在进行小数乘法运算时,需要设置的表示小数乘法运算的标志位是()
A. SP
B. AR0
C. FRCT
D. IMR
?
正确答案:C。
TMS320C62xx一、DSP简介自1982年推出第一款DSP后,德州仪器公司(Texas Instrument简称TI)不断推陈出新、完善开发环境,以其雄厚的实力在业界得到50%左右的市场份额。
TI的DSP经过完善的测试出厂时,都是以TMS320为前缀。
在众多款型DSP中,TI把市场销量好和前景看好的DSP归为三大系列而大力推广,TI也称之为三个平台(Platform)。
TMS320C2000 平台,包含16位C24xx和32位C28xx的定点DSP。
C24xx系列市场销量很好,而对C28xx系列,TI认为很有市场潜力而大力推广。
C2000针对控制领域做了优化配置,集成了了众多的外设,适合逆变器、马达、机器人、数控机床、电力等应用领域。
由于C2000定位在控制领域,其包含了大量片内外设,如IO、SCI、SPI、CAN、A/D等等。
这样C2000既能作为快速微控制器(单片机)来控制对象,也能作为DSP来完成高速数字信号处理,DSP的高性能与通用微控制器的方便性紧密结合在一起,所以C2000也常被称为DSP控制器。
这里C2000采用的是与OMAP 不同的途径简化了主从式设计。
C2000系列(定点、控制器):C20X,F20X,F24X,F24XX,C28X,F28XX 该系列芯片具有大量外设资源,如:A/D、定时器、各种串口(同步和异步),WATCHDOG、CAN总线/PWM发生器、数字IO脚等。
是针对控制应用最佳化的DSP,在TI所有的DSP中,只有C2000有FLASH,也只有该系列有异步串口可以和PC 的UART相连。
3)C6000 系列:C62XX,C67XX,C64XX 该系列以高性能著称,最适合宽带网络和数字影像应用。
32bit,其中:C62XX和C64XX是定点系列,C67XX 是浮点系列。
该系列提供EMIF扩展存储器接口。
该系列只提供BGA封装,只能制作多层PCB。
且功耗较大。
TMS320C5000 平台,包含代码兼容的定点C54x和C55x。
1.DSP有哪些显著特点?答:(1)在一个指令周期内可完成一次乘法和一次加法(2)程序和数据空间分开,可以同时访问指令和数据(3)片内有大容量的快速RAM(4)快速中断处理和硬件I/O支持(5)可以并行执行多个操作(6)支持流水线操作,使取指、译码和执行等操作可以重叠执行2.简述TMS320LF2407A的片内资源。
答:(1)40MIPS处理能力(2)两个事件管理模块能提供16路PWM输出、四个16位定时器,很便于对电机的控制(3)16路AD模拟通道(4)集成了CAN总线控制器(5)16位串行外设接口和串行通讯接口(6)高达40个可编程或复用的通用输入输出引脚(7)片内32K的flash程序存储器和2K数据程序RAM、2K单口RAM和544字节双口RAM(8)程序和数据空间可外扩至64K3.TMS320LF2407A通用定时器有哪些功能?简述其工作模式。
答:功能如下:(1)计时(2)使用定时器的比较功能产生PWM波(3)给事件管理器的其他子模块提供基准时钟。
有四种操作模式,分别为:停止/保持模式,连续递增计数模式,定向增/减计数模式,连续增/减计数模式。
4. 简述DSP C语言与ANSI C的主要区别答:DSP C语言以ANSI C为基础,并对ANSI C进行了相应的限定和扩展。
以下是LF2407 C语言的一些不同于一般标准C的特征:(1)标识符和常量所有标识符的前100个字符是有效的,区分大小写;不允许多字节字符;多字符的字符常数按序列中的最后一个字符来编码,例如:‘abc’==‘c’。
(2)数据类型整型、双精度型等数据类型长度与常见编译器中数据类型不同,所有的浮点型都是由MS320C2x/C2xx/C5x的32位的二进制浮点格式来表示。
size_t(sizeof操作符的结果)定义为unsigned int;ptrdiff_t(指针加减的结果)定义为int。
(3)类型转换浮点数转换为整型数为向零取整转换;指针和整型数可以自由转换。
第一章引言1. 一个存储单元有哪两个属性?寄存器与存储器有什么不同?一个存储单元的两个属性是:地址与值。
寄存器是特殊的存储器,读写寄存器可引发相关电路的动作。
2. 由单片机构成的最小系统有哪几部分构成?由单片机构成的最小系统包括电源和晶体振荡器。
3. DSP是哪三个英文词的缩写?中文意义是什么?DSP是Digital Signal Processor的缩写,中文意义是数字信号处理器。
4. 哈佛结构计算机与冯∙诺伊曼结构计算机有什么差别?哈佛结构计算机有独立的数据总线和程序总线,冯∙诺伊曼结构计算机数据和程序共用一套总线。
5. 微控制器与微处理器有什么不同?微控制器内部可固化程序,而微处理器内部不含程序。
6. TMS320LF24xA系列单片机有几套总线?分别起什么作用?总线中数据线和地址线分别有多少条?最大可以访问多少存储单元?每个存储单元由多少位组成?TMS320LF24xA系列单片机有三套总线,分别是程序读总线、数据读总线和数据写总线。
每套总线中各有16条数据线和16条地址线,最大可以访问64K个存储单元,每个存储单元由16位组成。
7. 什么是操作码?什么是操作数?操作码用于表示指令所要执行的动作,操作数表示指令所涉及的数据。
8. 实现一条指令的功能要经过哪四个阶段?CPU为什么要采用流水线结构?实现一条指令的功能要经过“取指”、“译码”、“取操作数”和“执行”四个阶段,CPU采用流水线结构可以同时使多条指令处于不同的处理阶段,实现并行处理,提高CPU的指令吞吐率。
第二章寻址方式与主要寄存器操作1. 有哪三种寻址方式?三种寻址方式是:立即数寻址、直接寻址和间接寻址。
2. 指令LACL #10与LACL 10有什么区别?各为什么寻址方式?含义是什么?指令LACL #10将常数10装载到累加器,指令LACL 10将地址10(假设DP为0)处的值装载到累加器。
前者是立即数寻值,操作数在指令中;后者是直接寻址,操作数的地址最低7位在指令中。
1绪论数字信号处理是利用计算机或专用处理设备,以数字的形式对信号进行分析、采集、合成、变换、滤波、估算、压缩、识别等加工处理,以便提取有用的信息并进行有效的传输与应用。
与模拟信号处理相比,数字信号处理具有精确、灵活、抗干扰能力强、可靠性高、体积小、易于大规模集成等优点数字信号处理器(DSP)主要针对描述连续信号的数字信号进行数学运算,以得到相应的处理结果。
这种数学运算以快速傅立叶变换(FFT)为基础,对数字信号进行实时的处理。
最近二十年来,由于集成电路技术的高速发展,用硬件来实现各种数字滤波和快速傅立叶变换成为可能,从而使DSP得到了非常快速的发展和广泛的应用。
在数字化的世界和互联网的时代,DSP变得越来越重要,可以说是无处不在1.1课题提出的背景1.1.1 数据采集技术数据采集是获取信息的基本手段,数据采集技术作为信息科学的一个重要分支, 以传感器、信号测量与处理、微型计算机等技术为基础而形成的一门综合应用技术,它研究数据的采集、存储、处理及控制等,具有很强的实用性。
随着现代科学技术的发展和计算机技术的普及,高速数据采集系统已应用于越来越多的场合,如通信、雷达、生物医学、机器人、语音和图像处理等领域。
数据采集系统追求的主要目标有两个:一是精度,二是速度。
对任何量值的测试都要有一定的精确度要求,否则将失去采集的意义;提高数据采集的速度不但可以提高工作效率,更重要的是可以扩大数据采集系统的适用范围,以便于实现动态测试。
1.1.2 数字滤波技术数字滤波器将输入信号序列通过一定的运算后变换为输出信号序列,从而完成滤波功能。
因此,数字滤波器就是一个数字系统(离散系统),而且一般情况下还是线性时不变系统。
与模拟滤波相比,数字滤波具有很多突出的优点:它可以满足滤波器对幅度和相位特性的严格要求,可以避免模拟滤波无法克服的电压漂移、温度漂移和噪声等问题。
且精度可以达到很高,容易集成。
1.1.3 CAN总线通信CAN即控制器局域网,是一种多主方式的串行通信总线。
第一章1 DSP芯片的特点有哪些?2 DSP芯片的选型一般是从哪几个方面进行考虑?3简述 TI 公司的 DSP 三大平台和它们各自的应用场合。
4 DSP芯片发展趋势应该朝着哪些方面发展?第二章1 如何对 CCS3.3的单处理器目标系统进行配置?2 简单程序的开发步骤有哪些?3 DSP探针的作用有哪些?第三章1TMS320X28xx 编译器输出哪些代码文件?2 编译器的集成预处理功能完成哪些预处理任务?3 DSP 的寄存器是如何定义的?试举例说明。
4 TMS320X28xx 定点处理器是如何实现浮点运算的? IQmath 主要由哪几部分组成?第四章1 写出 TMS320X28xx 的工作频率、内核电压和 I/O电压的关系, 内核电压和I/O电压的上电次序有没有特定的要求?2 TMS320X281x 处理器外设功能有哪些?简要介绍。
第六章1 若要将高速外设模块的时钟频率设置为 SYSCLKOUT/8,低速外设模块的时钟频率设置为 SYSCLKOUT/10,应该如何设置寄存器HISPCP 和寄存器 LOSPCP 的值?答:将高速外设模块时钟前分频寄存器 HISPCP 的值设置为 0x0004, 将高速外设模块时钟前分频寄存器 HISPCP 的值设置为 0x0005。
2 画出程序监视器功能框图,对照图简要说明它的工作原理。
第八章第十三章1 已知 XCLKIN=30MHz,要使 ADC 模块的时钟为 3.125MHz ,应该对哪些寄存器中的哪些段进行设置,设置的数值分别为多少?答:应该对 PCLKCR 中的 ADCENCLK 、 PLLCR 中的 DIV 、 HISPCP 中的HSPCLK 、 ADCTRL3中的 ADCCLKPS 、 ADCTRL1中的 CPS 进行设置。
设置的数值分别是:PCLKCR 中的 ADCENCLK 设置为 1(或 PCLKCR=0x0008, PLLCR 中的 DIV 设置为 1010(PLLCR=0x000A, HISPCP 中的 HSPCLK 设置为011(HISPCP=0x0003, ADCTRL3中的 ADCCLKPS 设置为 0010, ADCTRL1中的CPS 设置为 1。
2013-2014(一)DSP 作业学号:1120130107 姓名:崔晓东1 概述TMS320F28335的引脚及其(输入输出)特性,说明IO引脚分别与5V CMOS 、TTL 芯片连接的方法;TMS320F28335的引脚及其(输入输出)特性:TMS320F28335有多种封装形式,下面以176引脚PGF/PTP薄型四方扁平封装(LQFP)为例进行概述,176引脚LQFP封装TMS320F28335顶视图如下:F28335的176个引脚可以分为JTAG相关引脚、闪存相关引脚、时钟相关引脚、复位引脚、ADC信号相关引脚、CPU和I/O电源相关引脚、GPIO和外设信号相关引脚及XRD引脚这几部分。
̅̅̅̅̅̅̅、TCK、TMS、TDI、TDO、EMU0、EMU1。
其中和JTAG相关的引脚包括:TRST和闪存相关的引脚包括:VDD3VFL、TEST1、TEST2。
其中VDD3VFL为3.3V闪存内核电源引脚,这个引脚应该一直被连接至3.3V。
和时钟相关的引脚有:XCLKOUT、XCLKIN、X1、X2。
XCLKOUT取自SYSCLKOUT的输出时钟,通过相关寄存器的配置,XCLKOUT的频率可被设置为与SYSCLKOUT相等,或为其一半,或为其四分之一。
复位时,XCLKOUT=SYSCLKOUT/4。
与其他GPIO 引脚不同,复位时,不要将XCLKOUT 引脚置于高阻态。
当使用外部振荡器时,XCLKIN 用来馈入外部时钟信号。
X1、X2用来连接外部晶振。
若使用外部时钟,X2未用时比须保持在未连接状态。
复位引脚XRS̅̅̅̅̅是器件复位(输入)和安全装置复位(输出)引脚。
器件复位:XRS̅̅̅̅̅导致器件终止执行。
PC 指向包含在0x3FFFC0中的地址;当XRS ̅̅̅̅̅被置为高电平时,在PC 指向的位置开始执行。
安全装置复位期间,在512个OSCCLK 周期的安全装置复位持续时间内,XRS̅̅̅̅̅引脚被驱动为低电平。
第一章1.什么是DSP,DSP的两层含义?什么是DSP - 简单说就是数字信号处理数字信号处理(DSP)一般有两层含义,一层是广义的理解,为数字信号处理技术——Digital Signal Processing,另一层是狭义的理解,为数字信号处理器——Digital Signal Processor2.简述数字信号处理与模拟信号处理相比的优越性?数字信号处理的特点:精度高,可靠性高灵活性大,易于大规模集成,可获得高性能指标,抗干扰能力强体积小。
3.什么是哈佛结构,它和传统CPU所使用的冯.诺依曼结构有什么主要区别?哈佛结构采用双存储空间程序存储器和数据存储器是分开的有各自独立的程序总线和数据总线可独立编址和独立访问。
冯诺依曼程序存储器和数据存储器不分开所以哈佛结构比冯诺依曼结构有更快的指令执行速度。
4.DSP芯片的分类DSP的芯片可以按照以下的三种方式进行分类。
1. 按基础特性分静态DSP芯片和一致性DSP芯片。
2. 按数据格式分通用型芯片和装用型芯片3. 按用途分定点DSP和浮点DSP。
5.衡量DSP芯片运算速度的指标运算速度是DSP芯片的一个最重要的性能指标,也是选择DSP芯片时所需要考虑的一个主要因素。
DSP芯片的运算速度可以用以下几种性能指标来衡量:(1)指令周期。
就是执行一条指令所需要的时间,通常以ns为单位。
(2)MAC时间。
即一次乘法加上一次加法的时间。
(3)FFT执行时间。
即运行一个N点FFT程序所需的时间。
(4)MIPS。
即每秒执行百万条指令。
(5)MOPS。
即每秒执行百万次操作。
(6)MFLOPS。
即每秒执行百万次浮点操作。
(7)BOPS。
即每秒执行十亿次操作。
第二章1.C54x内部总线结构有中央处理器CPU,内部总线控制,特殊功能寄存器,数据存储器RAM,程序存储器ROM,I/O接口扩展功能,串行口,主机通信接口HPI,定时器,中断系统等10个部分组成2.TMS 320C 54x的累加器A和B的区别累加器A和B的唯一区别是累加器A的32~16位能被用做乘法累加单元中的乘法器输入,而累加器B不能。
1、简述DSP应用系统的一般设计过程;答:DSP应用系统的一般设计过程为:(1)、根据需求写出任务说明书;(2)根据任务说明书确定技术指标;(3)、选择DSP芯片及外围芯片;(4)、总体设计,确定软硬件分工;(5)、编写软硬件说明书,进行软硬件设计,再进行硬件调试和系统集成;(6)、系统测试、样机完成、中试、产品测试与生产。
2、简述C2000 DSP CPU的组成;答:C2000 DSP CPU主要由输入定标单元、中央算术逻辑单元、乘积单元、辅助寄存器算术单元和一些状态、配置寄存器组成。
3、简述TMS320F24X DSP 控制器主要特性;答:TMS320F24X DSP 控制器主要特性是:(1)、在X24X系列DSP控制器的CPU内包含32位中央算术逻辑单元、32位累加器、16位*16位并行硬件乘法器,并带有32位的结果寄存器、3个定标移位器和8个辅助寄存器。
(2)、一般来说,典型的DSP控制器具有片上544字DARAM、16千字的程序ROM或Flash EEPROM,最大可寻址空间为224千字,带有软件等待状态产生器的外部存储器接口,可实现与各种类型外部存储器接口。
根据器件型号的不同,存储空间的大小也各不同。
(3)、4级流水线,8级硬件堆栈,6个外部中断。
(4)、源代码与C1x、C2x、C2xx、C5x系列DSP芯片兼容,具有单周期乘加、单指令重复、存储器块移动指令,支持位反转寻址和索引寻址。
(5)、采用静态CMOS工艺技术,4种低功耗操作模式可进一步节电。
(6)、单指令周期小于50ns,绝大多数指令可在单周期内完成。
(7)、片上集成事件管理器、ADC、28个可编程复用I/O引脚、锁相环时钟发生器,具有实时中断的看门狗电路、串行通信接口、串行外设接口等功能外设;片设外设的配置与具体的器件信号相关。
(8)、多种封装形式。
4、说明C2000 DSP 的总线结构及特点;答:C2000 DSP 的总线结构及特点是:C2000 DSP片内采用并行总线结构,数据的读写可发生在不同的总线上。
西⼯⼤DSP⼤作业西⼯⼤DSRt作业实验1基于CCS的简单的定点DSF程序⼀、实验要求1、⾃⾏安装CCS3.3版本,配置和运⾏CCS2、熟悉CCS开发环境,访问读写DSP勺寄存器AC0-AC3 AR0-AR7,PC, T0-T33、结合C5510的存储器空间分配,访问DSR的内部RAM4、编写⼀个最简单的定点DSP程序,计算下⾯式⼦y=0.1*1.2+35*20+15*1.65、采⽤定点DSP进⾏计算,确定每个操作数的定点表⽰⽅法,最后结果的定点表⽰⽅法,并验证结果6、对编写的程序进⾏编译、链接、运⾏、断点执⾏、单步抽并给出map映射⽂件⼆、实验原理DSP芯⽚的定点运算---Q格式(转)2008-09-03 15:47 DSP 芯⽚的定点运算1. 数据的溢出:1>溢出分类:上溢(oveflow ): 下溢(underflow )2>溢出的结果:Max MinMin Max un sig ned char 0 255 sig ned char -128 127 un sig nedint 0 65535 signed int -32768 32767上溢在圆圈上按数据逆时针移动;下溢在圆圈上顺时钟移动。
例:signed int : 32767+1 = —32768 ; -32768-1 = 32767 unsigned char : 255+1 = 0; 0-1 = 2553>为了避免溢出的发⽣,⼀般在DSP中可以设置溢出保护功能。
当发⽣溢出时,⾃动将结果设置为最⼤值或最⼩值。
2. 定点处理器对浮点数的处理:1>定义变量为浮点型(float , double ),⽤C语⾔抹平定点处理器和浮点处理器2>放⼤若⼲倍表⽰⼩数。
⽐如要表⽰精度为0.01的变量,放⼤100倍去运算,3>定标法:Q格式:通过假定⼩数点位于哪⼀位的右侧,从⽽确定⼩数的精度。
Q0 :⼩数点在第0位的后⾯,即我们⼀般采⽤的⽅法Q15 ⼩数点在第15位的后⾯,0~ 14位都是⼩数位。
DSP 的数字信号处理(Digital Signal Processing,简称DSP )是一门涉及许多学科而又广泛应用于许多领域的新兴学科。
DSP 有两种含义:Digital Signal Processing (数字信号处理)、Digital Signal Processor(数字信号处理器)。
我们常说的DSP 指的是数字信号处理器。
数字信号处理器是一种适合完成数字信号处理运算的处理器。
20世纪60年代以来,随着计算机和信在过去的二十多年时间里,数字信号处理已经在通信等领域得到息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。
极为广泛的应用。
数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。
数字信号处理是围绕着数字信号处理的理论、实现和应用等几个方面发展起来的。
数字信号处理在理论上的发展推动了数字信号处理应用的发展。
反过来,数字信号处理的应用又促进了数字信号处理理论的提高。
而数字信号处理的实现则是理论和应用之间的桥梁。
数字信号处理是以众多学科为理论基础的,它所涉及的范围极其广泛。
例如,在数学领域,微积分、概率统计、随机过程、数值分析等都是数字信号处理的基本工具,与网络理论、信号与系统、控制论、通信理论、故障诊断等也密切相关。
近来新兴的一些学科,如人工智能、模式识别、神经网络等,都与数字信号处理密不可分。
可以说,数字信号处理是把许多经典的理论体系作为自己的理论基础,同时又使自己成为一系列新兴学科的理论基础。
顾名思义,DSP 主要应用在数字信号处理中,目的是为了能够满足实时信号处理的要求,因此需要将数字信号处理中的常用运算执行的尽可能快,这就决定了DSP 的特点和关键技术。
适合数字信号处理的关键技术:DSP 包含乘法器、累加器、特殊地址产生器、领开销循环等;提高处理速度的关键技术:流水线技术、并行处理技术、超常指令(VLIW )、超标量技术、DMA 等。
实验一的练习一dotprod.cconst int N = 20;//定义常数N/////////////////////////////////////////////////////////////////////////////// // int a_dot_b( int*, int* )/////////////////////////////////////////////////////////////////////////////// //定义子函数a_dot_b,函数的功能是数组a,b的点积和int a_dot_b( int *a, int *b ){int i;int output = 0.0;for( i=0; i<N; i++ ){output += ( a[i] * b[i] );}return( output );}/////////////////////////////////////////////////////////////////////////////// // int a_dot_c( int*, int* )/////////////////////////////////////////////////////////////////////////////// //定义子函数a_dot_c,函数的功能是数组a,c的点积和int a_dot_c( int *a, int *c ){int i;int output = 0.0;for( i=0; i<N; i++ ){output += ( a[i] * c[i] );}return( output );}/////////////////////////////////////////////////////////////////////////////// // int a_dot_d( int*, int* )/////////////////////////////////////////////////////////////////////////////// //定义子函数a_dot_d,函数的功能是数组a的偶数部分与数组d的点积和int a_dot_d( int *a, int *d ){int i;int output = 0.0;for (i=0; i<N/2; i++){output += ( a[2*i] * d[i] );}return( output );}dotprod_main.c#include <stdio.h>#include <stdlib.h>#include <math.h>/////////////////////////////////////////////////////////////////////////////// // global variables 全局变量/////////////////////////////////////////////////////////////////////////////// //定义a,b,c,d四个数组int a[] = {66,140,48,4,-121,-178,-146,14,231,383,328,-15,-607,-1286,-1827,6160,-1286,-607,-15 };int b[] = {86,115,-77,-103,24,187,18,-248,-132,319,327,-374,-744,412,2564,3671,2564,412,-744,-374, };int c[] = {0,18957,-3290,8595,-5323,5597,-5323,-3290,-15497,0,15497,3290,-462,5323,-5597,5323,-8595,3290,-18957};int d[] = {319,327,-374,-744,412,5323,-8595,3290,-18957,};/////////////////////////////////////////////////////////////////////////////// // function prototypes 3个函数/////////////////////////////////////////////////////////////////////////////// extern int a_dot_b( int *, int * );extern int a_dot_c( int *, int * );extern int a_dot_d( int *, int * );/////////////////////////////////////////////////////////////////////////////// // void main() 主函数///////////////////////////////////////////////////////////////////////////////void main(){int i;int result[3] = {0};//数组初始化result[0] = a_dot_b( a, b );//调用子涵是a_dot_bresult[1] = a_dot_c( a, c );//调用子函数a_dot_cresult[2] = a_dot_c( a, d );//调用子函数a_dot_cfor( i=0; i<3; i++ ){printf( "Dot product [%d] = %d\n", i, result[i] );//显示3个函数的结果}}跑马灯Main主函数程序#include "BF533 Flags.h"#include "ccblkfn.h"#include "sysreg.h"short sLight_Move_Direction = 0; /*定义方向变量来控制流水灯的工作方向*/void main(void){sysreg_write(reg_SYSCFG, 0x32); /*初始化系统配置寄存器*/Init_Flags(); /*初始化可编程端口函数*/Init_Timers(); /*初始化定时器函数A*/Init_EBIU(); /*初始化外部接口单元*/Init_Flash(); /*初始设置Flash*/Init_Interrupts();/*初始化中断函数*/while(1);}初始化程序#include "BF533 Flags.h"void Init_Flags(void){*pFIO_INEN = 0x0100;/*全能可编程端口PF8*/*pFIO_DIR = 0x0000;/*设置方向为输出*/*pFIO_EDGE = 0x0100;/*设置触发方式为沿触发*/*pFIO_MASKA_D = 0x0100;/*开中断*/}void Init_Timers(void){*pTIMER0_CONFIG = 0x0019;/*配置定时器0工作方式为PEM_OUT模式*/ *pTIMER0_COUNTER = 0x0fffffff;*pTIMER0_PERIOD = 0x00880001;*pTIMER0_WIDTH = 0x00800000;/*设定脉冲宽度*/*pTIMER_ENABLE = 0x0001;/*全能定时器0*/}void Init_EBIU(void){*pEBIU_AMBCTL0 = 0x7bb07bb0;*pEBIU_AMBCTL1 = 0x7bb07bb0;*pEBIU_AMGCTL = 0x0006;}void Init_Flash(void){*pFlashA_PortB_Dir = 0x3f;/*设置FlashA_PortB方向*/}void Init_Interrupts(void){*pSIC_IAR0 = 0xffffffff;*pSIC_IAR1 = 0xffffffff;*pSIC_IAR2 = 0xffff5ff4;register_handler(ik_ivg11, Timer0_ISR);register_handler(ik_ivg12, FlagA_ISR);*pSIC_IMASK = 0x00090000;}中断处理程序#include "BF533 Flags.h"EX_INTERRUPT_HANDLER(Timer0_ISR){static unsigned char ucActive_LED = 0x01;*pTIMER_STATUS = 0x0001;if(sLight_Move_Direction){if((ucActive_LED = ucActive_LED >> 1) == 0x00)/*判断跑马灯方向*/ ucActive_LED = 0x20;}else{if((ucActive_LED = ucActive_LED << 1) == 0x40) ucActive_LED = 0x01; }*pFlashA_PortB_Data = ucActive_LED;/*数值输出控制流水灯的亮灭*/}EX_INTERRUPT_HANDLER(FlagA_ISR){*pFIO_FLAG_C = 0x0100;/*关可编程端口中断*/sLight_Move_Direction = ~sLight_Move_Direction;/*改变流水灯工作方向*/}头文件#ifndef __BF533_FLAGS_DEFINED#define __BF533_FLAGS_DEFINED#include <sys\exception.h>#include <cdefBF533.h>#define pFlashA_PortB_Dir (volatile unsigned char *)0x20270007#define pFlashA_PortB_Data (volatile unsigned char *)0x20270005// in file Initialization.cvoid Init_Flags(void);void Init_Timers(void);void Init_EBIU(void);void Init_Flash(void);void Init_Interrupts(void);// in file ISRs.cEX_INTERRUPT_HANDLER(Timer0_ISR);EX_INTERRUPT_HANDLER(FlagA_ISR);#endif //__BF533_FLAGS_DEFINED实验五——数据采集与滤波处理Initialize.c#include "Talkthouth.h"#include <filter.h>fir_state_fr16 state;//--------------------------------------------------------------------------// // Function: Init_EBIU // // // // Description: This function initializes and enables asynchronous memory // // banks in External Bus Interface Unit so that Flash A can be // // accessed. // //--------------------------------------------------------------------------// //定义子函数Init_EBIU,其功能是将寄存器EBIU初始化void Init_EBIU(void){*pEBIU_AMBCTL0 = 0x7bb07bb0;*pEBIU_AMBCTL1 = 0x7bb07bb0;*pEBIU_AMGCTL = 0x000f;}//--------------------------------------------------------------------------// // Function: Init_Flash // // // // Description: This function initializes pin direction of Port A in Flash A// // to output. The AD1836_RESET on the ADSP-BF533 EZ-KIT board // // is connected to Port A. // //--------------------------------------------------------------------------// //定义子函数Init_Flash,其功能是将寄存器Flash的端口PortA初始化void Init_Flash(void){*pFlashA_PortA_Dir = 0x3;}//--------------------------------------------------------------------------// // Function: Init1836() // // // // Description: This function sets up the SPI port to configure the AD1836. //// The content of the array sCodec1836TxRegs is sent to the // // codec. // //--------------------------------------------------------------------------// //定义子函数Init1836void Init1836(void){int i;int j;static unsigned char ucActive_LED = 0x01;/*变量ucActive_LED赋初值*/*pFlashA_PortA_Data = 0x00;/*将端口PortA清零*/*pFlashA_PortA_Data = ucActive_LED;/*将ucActive_LED的值赋给端口PortA*/ for (i=0; i<0xf000; i++)*pSPI_FLG = FLS4;*pSPI_BAUD = 16;/*波特率为2MHz*/*pSPI_CTL = TIMOD_DMA_TX | SIZE | MSTR;*pDMA5_PERIPHERAL_MAP = 0x5000;*pDMA5_CONFIG = WDSIZE_16;/*DMA5为16位传输*/*pDMA5_START_ADDR = sCodec1836TxRegs;/*数据缓冲区的首地址为变量sCodec1836TxRegs的值*/*pDMA5_X_COUNT = CODEC_1836_REGS_LENGTH;/*循环计数器的长度为sCodec1836TxRegs的长度*/*pDMA5_X_MODIFY = 2;/*内部循环地址增量为2*/*pDMA5_CONFIG = (*pDMA5_CONFIG | DMAEN);*pSPI_CTL = (*pSPI_CTL | SPE);for (j=0; j<0xaff; j++);*pSPI_CTL = 0x0000;/*将寄存器SPI清零*/}//--------------------------------------------------------------------------// // Function: Init_Sport0 // // // // Description: Configure Sport0 for I2S mode, to transmit/receive data // // to/from the AD1836. Configure Sport for external clocks and // // frame syncs. // //--------------------------------------------------------------------------// //定义子函数Init_Sport0void Init_Sport0(void){*pSPORT0_RCR1 = RFSR | LRFS | RCKFE;*pSPORT0_RCR2 = SLEN_24 | RXSE | RSFSE;*pSPORT0_TCR1 = TFSR | LTFS | TCKFE;*pSPORT0_TCR2 = SLEN_24 | TXSE | TSFSE;}//--------------------------------------------------------------------------//// Function: Init_DMA // // // // Description: Initialize DMA1 in autobuffer mode to receive and DMA2 in // // autobuffer mode to transmit // //--------------------------------------------------------------------------// //定义子函数Init_DMAvoid Init_DMA(void){*pDMA1_PERIPHERAL_MAP = 0x1000;*pDMA1_CONFIG = WNR | WDSIZE_32 | DI_EN | FLOW_1;*pDMA1_START_ADDR = iRxBuffer1;/*数据缓冲区的起始地址为变量iRxBuffer1的值*/ *pDMA1_X_COUNT = 4;/*循环计数器的长度为4*/*pDMA1_X_MODIFY = 4;/*内部循环地址增量为4*/*pDMA2_PERIPHERAL_MAP = 0x2000;*pDMA2_CONFIG = WDSIZE_32 | FLOW_1;*pDMA2_START_ADDR = iTxBuffer1;/*数据缓冲区的起始地址为变量iTxBuffer1的值*/ *pDMA2_X_COUNT = 4;/*循环计数器的长度为4*/*pDMA2_X_MODIFY = 4;;/*内部循环地址增量为4*/}//--------------------------------------------------------------------------// // Function: Enable_DMA_Sport // // // // Description: Enable DMA1, DMA2, Sport0 TX and Sport0 RX // //--------------------------------------------------------------------------// //定义子函数Enable_DMA_Sportvoid Enable_DMA_Sport0(void){*pDMA2_CONFIG = (*pDMA2_CONFIG | DMAEN);*pDMA1_CONFIG = (*pDMA1_CONFIG | DMAEN);*pSPORT0_TCR1 = (*pSPORT0_TCR1 | TSPEN);*pSPORT0_RCR1 = (*pSPORT0_RCR1 | RSPEN);}//--------------------------------------------------------------------------// // Function: Init_Interrupts // // // // Description: Initialize Interrupt for Sport0 RX // //--------------------------------------------------------------------------// //定义子函数Init_Interrupts,其功能是对DMA1的中断进行初始化void Init_Interrupts(void){*pSIC_IAR0 = 0xffffffff;*pSIC_IAR1 = 0xffffff2f;*pSIC_IAR2 = 0xffffffff;register_handler(ik_ivg9, Sport0_RX_ISR);/*Sport0 RX ISR -> IVG 9*/*pSIC_IMASK = 0x00000200;/*启用Sport0 RX中断*/}//--------------------------------------------------------------------------// // Function: Init_ProcessData // // // // Description: Initialize Process Data for FIR // //--------------------------------------------------------------------------// //定义子函数Init_ProcessData,其功能是完成数据采集和计算void Init_ProcessData(void){ int i;Process_Stat=BUF_FIRST;/*Process_Stat=0*/OutBufCnt=0;fir_init(state, coeffs, delay, FIR_TAPS,1);}ISR.c#include "Talkthrough.h"//定义子函数EX_INTERRUPT_HANDLEREX_INTERRUPT_HANDLER(Sport0_RX_ISR){*pDMA1_IRQ_STATUS = 0x0001;/*确认中断处理*/iChannel0LeftIn = iRxBuffer1[INTERNAL_ADC_L0];/*将DMA输入缓冲区的数据赋给变量iChannel0LeftIn*/iChannel0RightIn = iRxBuffer1[INTERNAL_ADC_R0];iChannel1LeftIn = iRxBuffer1[INTERNAL_ADC_L1];iChannel1RightIn = iRxBuffer1[INTERNAL_ADC_R1];Process_Data();/*调用子函数*/iTxBuffer1[INTERNAL_DAC_L0] = iChannel0LeftOut;/*将处理过的数据存储在DMA输出缓冲区*/iTxBuffer1[INTERNAL_DAC_R0] = iChannel0RightOut;iTxBuffer1[INTERNAL_DAC_L1] = iChannel1LeftOut;iTxBuffer1[INTERNAL_DAC_R1] = iChannel1RightOut;}Main.c#include "Talkthrough.h"#include "sysreg.h"#include "ccblkfn.h"#include <fract.h>//--------------------------------------------------------------------------// // Variables // // // // Description: The variables iChannelxLeftIn and iChannelxRightIn contain // // the data coming from the codec AD1836. The (processed) // // playback data are written into the variables //// iChannelxLeftOut and iChannelxRightOut respectively, which // // are then sent back to the codec in the SPORT0 ISR. // // The values in the array iCodec1836TxRegs can be modified to // // set up the codec in different configurations according to // // the AD1885 data sheet. // //--------------------------------------------------------------------------// int iChannel0LeftIn, iChannel1LeftIn;int iChannel0RightIn, iChannel1RightIn;int iChannel0LeftOut, iChannel1LeftOut;int iChannel0RightOut, iChannel1RightOut;volatile short sCodec1836TxRegs[CODEC_1836_REGS_LENGTH] ={DAC_CONTROL_1 | 0x000,DAC_CONTROL_2 | 0x000,DAC_VOLUME_0 | 0x3ff,DAC_VOLUME_1 | 0x3ff,DAC_VOLUME_2 | 0x3ff,DAC_VOLUME_3 | 0x3ff,DAC_VOLUME_4 | 0x000,DAC_VOLUME_5 | 0x000,ADC_CONTROL_1 | 0x000,ADC_CONTROL_2 | 0x000,ADC_CONTROL_3 | 0x000};volatile int iTxBuffer1[4];/*SPORT0 DMA传输缓冲区*/volatile int iRxBuffer1[4];/*SPORT0 DMA接收缓冲区*///--------------------------------------------------------------------------// // Function: main //// Description: After calling a few initalization routines, main() just // // waits in a loop forever. The code to process the incoming // // data can be placed in the function Process_Data() in the // // file "Process_Data.c". // //--------------------------------------------------------------------------// void main(void){sysreg_write(reg_SYSCFG, 0x32); /*初始化系统配置寄存器*/Init_EBIU(); //以下都是子函数的调用Init_Flash();Init1836();InitCoeffs();Init_ProcessData();Init_Sport0();Init_DMA();Init_Interrupts();Enable_DMA_Sport0();while(1);}Process_data.c#include "Talkthrough.h"#include <filter.h>#include <fract.h>#include <math.h>#include <complex.h>#define PI 3.1415926#define FC2 0.05//以采样率Fs进行归一化的高频截止频率#define FC1 0.00//以采样率Fs进行归一化的低频截止频率#define FL 0.2//移位量#define COEFFSCALE 20000//滤波器系数整型标尺//////////////#define RESULT_SIZE 256////////////////short int Process_Stat;int OutBufCnt;int Window;//加窗标志float W[FIR_TAPS]; //窗函数int Shift;//频域移位标志int Compress;//时域压缩标志int h[FIR_TAPS]; //最终设计的滤波器冲击响应fract16 delay[FIR_TAPS];fract16 coeffs[FIR_TAPS];fract16 Inbuf[2];fract16 Outbuf[2];int FirOutCnt;short int FirResultBuf[RESULT_SIZE];//--------------------------------------------------------------------------// // Function: Init_Coeffs //// // // Description: Initialize Process Data for FIR ////--------------------------------------------------------------------------// void InitCoeffs(void){int i;float hd[FIR_TAPS];//理想低通滤波器的冲击响应float cosine[FIR_TAPS];//移位因子Window=0;Shift=0;Compress=0;/////////////testFirOutCnt=0;/****************初始化滤波器系数******************///////////////滤波器系数产生///////////////for(i=0;i<(FIR_TAPS-1)/2;i++)hd[i]=(1/PI)*(sin(2*FC2*PI*(i-(FIR_TAPS-1)/2))-sin(2*FC1*PI*(i-(FIR_TAPS-1) /2)))/(i-(FIR_TAPS-1)/2);for(i=(FIR_TAPS-1)/2+1;i<FIR_TAPS;i++)hd[i]=(1/PI)*(sin(2*FC2*PI*(i-(FIR_TAPS-1)/2))-sin(2*FC1*PI*(i-(FIR_TAPS-1) /2)))/(i-(FIR_TAPS-1)/2);hd[(FIR_TAPS-1)/2]=2*(FC2-FC1);///////////时域截取////////////for(i=0;i<FIR_TAPS;i++) h[i]=(int)(hd[i]*COEFFSCALE);///////////时域加窗///////////////if(Window){for(i=0;i<FIR_TAPS;i++) W[i]=0.54-0.46*cos(2*PI*i/(FIR_TAPS-1));for(i=0;i<FIR_TAPS;i++) h[i]=(int)((float)h[i]*W[i]);}///////////时域压缩系数///////////if(Compress){for (i=0;i<FIR_TAPS/2;i++) hd[i]=h[i*2];for (i=0;i<FIR_TAPS/2;i++) h[i]=hd[i];for (i=FIR_TAPS/2;i<FIR_TAPS;i++) h[i]=0;//序列右边填零}/////////////移位FL*fs///////////if(Shift){for (i=0;i<FIR_TAPS;i++) cosine[i]=cos(2*PI*i*FL);for(i=0;i<FIR_TAPS;i++) h[i]=(int)((float)h[i]*cosine[i]);}for(i=0;i<FIR_TAPS;i++)coeffs[i]=h[i];}//--------------------------------------------------------------------------// // Function: Process_Data() // // // // Description: This function is called from inside the SPORT0 ISR every // // time a complete audio frame has been received. The new //// input samples can be found in the variables iChannel0LeftIn,// // iChannel0RightIn, iChannel1LeftIn and iChannel1RightIn // // respectively. The processed data should be stored in // // iChannel0LeftOut, iChannel0RightOut, iChannel1LeftOut, // // iChannel1RightOut, iChannel2LeftOut and iChannel2RightOut // // respectively. // //--------------------------------------------------------------------------// void Process_Data(void){ int i;/**************Sample the data******************/if(Process_Stat==BUF_FIRST)Inbuf[0] /*若Process_Stat=0,开始采集数据存入Inbuf[0]*/{Inbuf[0]=(iChannel1LeftIn>>8);iChannel1LeftOut=((int)Outbuf[0]<<8);iChannel0LeftOut=((int)Outbuf[0]<<8);iChannel1RightOut=((int)Outbuf[0]<<8);iChannel0RightOut=((int)Outbuf[0]<<8);}if(Process_Stat==BUF_SECOND)/*若Process_Stat=1,开始采集数据存入Inbuf[1]*/ {Inbuf[1]=(iChannel1LeftIn>>8);iChannel1LeftOut=((int)Outbuf[1]<<8);iChannel0LeftOut=((int)Outbuf[1]<<8);iChannel1RightOut=((int)Outbuf[1]<<8);iChannel0RightOut=((int)Outbuf[1]<<8);}Process_Stat++; /*采集完毕,停止采集,进入FIR滤波*/////////////做256点FIR滤波//////////////if(Process_Stat==BUF_FILTER){fir_fr16(Inbuf, Outbuf, 2, &state); // apply the filter to the dataFirResultBuf[2*OutBufCnt]=Outbuf[0];FirResultBuf[2*OutBufCnt+1]=Outbuf[1];OutBufCnt++;if(OutBufCnt>=RESULT_SIZE/2)OutBufCnt=0;Process_Stat=BUF_FIRST;}}。
第一章作业1、C54x有哪些寻址方式?都是如何寻址的?2、块循环共使用了哪些寄存器,可以嵌套使用吗?重复次数如何确定?3、中断向量地址是如何确定的?4、现在要开放外中断2,应该如何编程?5、晶振为10M,实现5mS定时,应该如何编程?第五章作业1:作整数乘法Z= (其中XI= 1,2,3,4,5,6,7,8,9,10, YI=11,12,13,14,15,16,17,18,19,20 )2:分别用块循环操作法和banz 循环方法对的100个变量分别初始化为1,2,3,…,100.bss x,100 ;3:初始化变量X=5555 5555H,Y=AAAA AAAAH,并将X 与Y 的乘积结果保存在变量Z 中4:作小数乘法Z= 其中a i 和x i 分别为常量-0.4,-0.3,-0.2,-0.1,0.1,0.2,0.3,0,4,并将乘积结果保存在变量Z 中。
5:C 程序调用汇编子程序,应如何编写,举例说明(参考实验3)i i i y x *9∑=i i i x a *30∑=1、C54x有哪些寻址方式?都是如何寻址的?答:有即立即寻址、绝对寻址、累加器寻址、直接寻址间接寻址、存储器映像寄存器寻址和堆栈寻址7种寻址方式。
如何寻址略:2、块循环共使用了哪些寄存器,可以嵌套使用吗?重复次数如何确定?答:在块循环中使用了BRC,RSA REA三个寄存器,因为在DSP内部只有这样一组用于块循环操作的寄存器因此不能嵌套使用。
重复次数等于加载BRC的数值加一。
3、中断向量地址是如何确定的?答:中断向量地址由中断向量指针IPTR和所使用的中断向量号共同来确定。
用公式表示就是:中断向量地址=IPTR* 27+中断序号*44、现在要开放外中断2,应该如何编程?经查IMR和IFR寄存器,外部中断2的允许(标志)位都是第2位,即位码为04H。
对编成的叙述略。
SSBX INTM;关闭可屏蔽中断总开关STM 04H,IFR;清除历史中断标志STM 04H,IMR;设置中断屏蔽寄存器允许响应中断RSBX INTM;开放中断屏蔽总开关5、晶振为10M,实现5mS定时,应该如何编程?定时器初始化程序如下:Prd=10000,tddr=10计算略STM # 0000H,SWWSRSSBX INTM; 停止所有可屏蔽中断STM #17ffH,CLKMD;PLL*2 方式CLKOUT=20MHzSTM #0010H,TCR; 停止定时器STM #9999,PRD; 设置时间常数STM #270fH,PRDSTM #0C29H,TCR;启动定时器,设置TDDR =9STM #08H,IMR ;开放屏蔽寄存器的允许位STM #08H,IFR ;清除历史中断标志第五章习题答案1:作整数乘法Z= 要求在运算之前初始化X I = 1,2,3,4,5,6,7,8,9,10, Y I =11,12,13,14,15,16,17,18,19,20.mmregs.bss X,10.bss Y,10.bss Z,1.text_c_int00: stm #X,AR1;ld #1,ASTM #19,AR2LOOP:STL A,*AR1+ADD #1,ABANZ LOOP,*AR2-STM #X,*AR2i i i y x *90∑=STM #Y,AR3RPTZ A,#9MAC *AR2+,*AR3+,ASTM #Z,AR0STL A,*AR0.end2:分别用块循环操作法和banz 循环方法对的100个变量分别初始化为1,2,3,…,100 .bss x,100.bss x,100 ; .text.text_c_int00:STM #x,AR0_c_int00: STM #x,AR0 LD #0,ASTM #99,AR2 STM 99,BRCLD #1,A RPTB NEXT-1LOOP:STL A,*AR0+ADD #1,AADD #1,A STL A,*AR0+BANZ LOOP,*AR2-NEXT: nop3:初始化变量X=5555 5555H,Y=AAAA AAAAH,并将X与Y的乘积结果保存在变量Z中.mmregs.data.bss z,4x.long 55555555hY .long 0aaaaaaaahstm #x+1,ar2;取x低字stm #y+1,ar3;取x低字ld *ar2,Tmpyu *ar3-,Astl a,@z+1ld a,-16,amacsu *ar2-,*ar3+,a stl a,@z+2;macsu *ar3-,*ar2,a sth a,@z+3;stl a,@z .endld a,-16,amac *ar2,*ar3,a4:作小数乘法Z= 其中a i 和x i 分别为常量-0.4,-0.3,-0.2,-0.1,0.1,0.2,0.3,0,4,并将乘积结果保存在变量Z 中。
dsp技术及应用试题及答案(一)dsp技术及应用试题及答案【一】 1.1 DSP的概念是什么?本书说指的DSP是什么?答:DSP有两个概念。
一是数字信号处理(Digital Signal Processing),指以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理;二是数字信号处理器(Digital Signal Processor),指是一种特别适合于进行数字信号处理运算的微处理器,其主要应用是实时快速地实现各种数字信号处理算法。
本书中的DSP主要指后者,讲述数字信号处理器的应用。
1.2 什么是哈佛结构和冯•诺伊曼结构?它们有什么区别?答:(1) 冯·诺伊曼(Von Neuman)结构该结构采用单存储空间,即程序指令和数据共用一个存储空间,使用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行。
当进行高速运算时,不但不能同时进行取指令和取操作数,而且还会造成数据传输通道的瓶颈现象,其工作速度较慢。
(2)哈佛(Harvard)结构该结构采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,使取指令操作、指令执行操作、数据吞吐并行完成,大大地提高了数据处理能力和指令的执行速度,非常适合于实时的数字信号处理。
1.3 已知一个16进制数3000H,若该数分别用Q0、Q5、Q15表示,试计算该数的大小。
答:3000H=12288。
若用Q0表示,则该数就是12288;若用Q5表示,则该数就是12288*2-5=384;若用Q15表示,则该数就是12288*2-15=0.3751.4 若某一个变量用Q10表示,试计算该变量所能表示的数值范围和精度。
答:Q10能表示的数值范围是-32~31.9990234,其精度为2-101.5 若x=0.4567,试分别用Q15、Q14、Q5将该数转换为定点数。
答:Q15:x*215=int(0.4567*32768)=14965;Q14:x*214=int(0.4567*16384)=7482;Q5:x*25=int(0.4567*32)=14。
20春《DSP技术》在线作业1
试卷总分:100 得分:100
一、单选题 (共 20 道试题,共 100 分)
1.()就是将输入的信号序列按规定的算法处理之后得到所希望的输出序列的过程。
A.数字滤波
B.滤波器
C.DC
D.模拟滤波器
答案:A
2.模拟信号采集的过程是将模拟信号转换成( )。
A.离散信号
B.数字信号
C.混合信号
D.采样信号
答案:B
3.TMS320C54X DSP中有( )个辅助寄存器。
A.4
B.8
C.16
D.32
答案:B
4.在状态位寄存器ST1中,选用堆栈指针(SP)的直接寻址方式时( )。
A.CPL=0
B.CPL=1
C.CMPT=0
D.CMPT=1
答案:B
5.一个自适应滤波器实现的复杂性,通常用它所需的( )来衡量。
A.加法次数和阶数
B.乘法阶数
C.乘法次数
D.乘法次数和阶数
答案:D
6.()实际上是在标准串口的基础上增加了一个缓冲区。
A.多通道
B.缓冲并口
C.缓冲串口
D.控制寄存器。
第一章:答:数字信号处理的实现是用硬件软件或软硬结合的方法来实现各种算法。
(1 在通用的计算机上用软件实现;(2 在通用计算机系统中加上专用的加速处理机实现;(3 用通用的单片机实现,这种方法可用于一些不太复杂的数字信号处理,如数字控制;(4 用通用的可编程DSP 芯片实现。
与单片机相比,DSP 芯片具有更加适合于数字信号处理的软件和硬件资源,可用于复杂的数字信号处理算法;(5 用专用的DSP 芯片实现。
在一些特殊的场合,要求的信号处理速度极高,用通用DSP 芯片很难实现(6)用基于通用dsp 核的asic 芯片实现。
答:第一阶段,DSP 的雏形阶段(1980年前后)。
代表产品:S2811。
主要用途:军事或航空航天部门。
第二阶段,DSP 的成熟阶段(1990年前后)。
代表产品:TI 公司的TMS320C20 主要用途:通信、计算机领域。
第三阶段,DSP 的完善阶段(2000年以后)。
代表产品:TI 公司的TMS320C54主要用途:各个行业领域。
答:1、采用哈佛结构(1)冯。
诺依曼结构,(2)哈佛结构(3)改进型哈佛结构2、采用多总线结构3. 采用流水线技术4、配有专用的硬件乘法-累加器5、具有特殊的dsp 指令6、快速的指令周期7、硬件配置强8、支持多处理器结构9、省电管理和低功耗答:哈佛结构:该结构采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,使取指令操作、指令执行操作、数据吞吐并行完成,大大地提高了数据处理能力和指令的执行速度,非常适合于实时的数字信号处理。
冯。
诺依曼结构:该结构采用单存储空间,即程序指令和数据共用一个存储空间,使用单一的地址和数据总线,取指令和取操作数都是通过一条总线分时进行。
当进行高速运算时,不但不能同时进行取指令和取操作数,而且还会造成数据传输通道的瓶颈现象,其工作速度较慢。
区别:哈佛:该结构采用双存储空间,程序存储器和数据存储器分开,有各自独立的程序总线和数据总线,可独立编址和独立访问,可对程序和数据进行独立传输,使取指令操作、指令执行操作、数据吞吐并行完成,大大地提高了数据处理能力和指令的执行速度,非常适合于实时的数字信号处理。
DSP模数、数模转换实验报告
姓名:XXX
学号:201012171855
指导老师:XXX
专业:信号与信息处理
DSP模数、数模转换实验报告
摘要:本次试验完成了F2812A片内的模数、数模转换的控制,对控制程序进行编译,并观察转换后产生的波形。
关键词:模数、数模、DSP、
一、引言
DSP是Digital Signal Processing的缩写,表示数字信号处理器,信息化的基础是数字化,数字化的核心技术之一是数字信号处理,数字信号处理的任务在很大程度上需要由DSP器件来完成,DSP技术已成为人们日益关注的并得到迅速发展的前沿技术。
数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。
二.实验原理
1.TMS320F2812A芯片自带模数转换模块特性
- 12位模数转换模块ADC,快速转换时间运行在25mhz,ADC时钟或
12.5MSPS。
-16个模拟输入通道(AIN0—AIN15)。
-内置双采样-保持器
-采样幅度:0-3v,切记输入ad的信号不要超过这个范围,否则会烧坏2812芯片的。
2.模数模块介绍
ADC模块有16个通道,可配置为两个独立的8通道模块以方便为事件管理器A和B服务。
两个独立的8通道模块可以级连组成16通道模块。
虽然有多个输入通道和两个序列器,但在ADC内部只有一个转换器,同一时刻只有1路ad进行转换数据。
3.模数转换的程序控制
模数转换相对于计算机来说是一个较为缓慢的过程。
一般采用中断方式启动转换或保存结果,这样在CPU忙于其他工作时可以少占用处理时间。
设
计转换程序应首先考虑处理过程如何与模数转换的时间相匹配,根据实际需要选择适当的触发转换的手段,也要能及时地保存结果。
关于TMS320F2812A DSP芯片内的A/D转换器的详细结构和控制方法,请参见光盘上文档spru060a.pdf。
四、硬件框图
五、软件流程图
六、调试过程和步骤
七、实验结果及分析
八、C语言及汇编语言源代码
九、结束语(心得体会)。