DSP作业
DSP作业
DSP 应用开发技术课程作业班级:学号:姓名:1. 请问DSP和单片机有什么本质的区别?有哪些不同点?DSP芯片实际上就是一种单片机,是集成高速乘法器,具有多组内部总线,能够进行快速乘法和加法运算,适用于高速数字信号处理的高速、高位单片计算机。
单片机比DSP应用范围更广,但DSP比单片机功能更强大。
(1)DSP的程序一般在RAM里运行,单片机的程序一般在flash或者ROM里运行,因为DSP的速度高,一般要100M以上,flash的速度达不到那么快;(2)由于DSP的程序一般在RAM里执行,而脱机程序必须存储在ROM里以便掉电后不丢失,所以需要在上电后把程序从ROM搬到RAM里。
因此一些DSP在片内ROM里固化了一段程序来做这个工作,这段程序就称为bootloader;(3)DSP的内核结构要较单片机复杂(这里说内核是因为现在的芯片都SOC化,很多单片机内核并不复杂,但加了很多片上外设也复杂了),针对信号处理做了硬件上的支持,如FIR、MAC、乘方、开方等;例如:典型的ARM核3万门,典型的51核1万门,而典型的DSP核xx门(呵呵,这个有待补充);(4)串行接口方式DSP多采用同步口,而单片机多采用异步口,DSP的同步串行口占用较少的CPU负荷,并且支持的速度更高;(5)DSP器件还提供了高度专业化的指令集,提高了FFT快速傅里叶变换和滤波器的运算速度。
2. 简述2000系列DSP器件2407内核各组成部分的功能机构与特点。
TMS320LF2407A CPU的基本组成模块如下:(1)输入定标移位部分;TMS320LF2407A的程序总线和数据总线是都是16位,但是其中央算术逻辑单元CALU却是32位的。
为了使数据能正确地在中央算术逻辑单元中运算,中央算术逻辑单元与程序和数据读总线之间加了一个输入定标移位器,对输入的数据向左移位。
输入移位模块的两个输入源分别是数据读总线和程序读总线。
数据读总线上的数据来自指令操作所需引用的数据存储器,程序读总线上的数据是指令码中的常数值。
DSP作业(精)
DSP的数字信号处理(Digital Signal Processing,简称DSP)是一门涉及许多学科而又广泛应用于许多领域的新兴学科。
DSP有两种含义:Digital Signal Processing(数字信号处理)、Digital Sign al Processor(数字信号处理器)。
我们常说的DSP指的是数字信号处理器。
数字信号处理器是一种适合完成数字信号处理运算的处理器。
20世纪60年代以来,随着计算机和信在过去的二十多年时间里,数字信号处理已经在通信等领域得到息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。
极为广泛的应用。
数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。
数字信号处理是围绕着数字信号处理的理论、实现和应用等几个方面发展起来的。
数字信号处理在理论上的发展推动了数字信号处理应用的发展。
反过来,数字信号处理的应用又促进了数字信号处理理论的提高。
而数字信号处理的实现则是理论和应用之间的桥梁。
数字信号处理是以众多学科为理论基础的,它所涉及的范围极其广泛。
例如,在数学领域,微积分、概率统计、随机过程、数值分析等都是数字信号处理的基本工具,与网络理论、信号与系统、控制论、通信理论、故障诊断等也密切相关。
近来新兴的一些学科,如人工智能、模式识别、神经网络等,都与数字信号处理密不可分。
可以说,数字信号处理是把许多经典的理论体系作为自己的理论基础,同时又使自己成为一系列新兴学科的理论基础。
顾名思义,DSP主要应用在数字信号处理中,目的是为了能够满足实时信号处理的要求,因此需要将数字信号处理中的常用运算执行的尽可能快,这就决定了DSP的特点和关键技术。
适合数字信号处理的关键技术:DSP包含乘法器、累加器、特殊地址产生器、领开销循环等;提高处理速度的关键技术:流水线技术、并行处理技术、超常指令(VLIW)、超标量技术、DMA等。
DSP作业
1、以 51i i i y ax ==∑ 为例,编写完整的.asm 汇编源程序以及.cmd 命令文件,写出程序注释,并叙述在CCS2.0集成开发环境下,调试程序的基本步骤。
其中 a 和x 的值由自己确定。
解:.title "mpy_add.asm".mmregs ;将存储映像寄存器导入列表STACK .usect "STACK",10h ;给堆栈段分配空间.bss a,5 ;将11个字空间分配给各个变量.bss x,5.bss y,1PA0 .set 0 ;将端口PA0全部置0.def start ;定义标号start.data ;定义数据代码段table:.word 4,4,4,4,4(设置8个单元的16位整型常量,其初值为4).word 4,4,4,4,4.text ;定义文本代码段start:STM #0,SWWSR ;将等待寄存器设为0,表示不等待STM #STACK+10h,SP ;设堆栈指针STM #a,AR1 ;将AR1指向变量a 的地址RPT #9 ;从程序存储空间转移9+1个值到数据储存空间MVPD table,*AR1+CALL SUM ;调用SUM 子程序end: B end ;循环等待SUM: STM #a,AR3 ;将AR3指向变量a 的地址STM #x,AR4 ;将AR4指向变量x 的地址RPTZ A,#4 ;将A 清0,并重复执行下一条指令4+1次MAC *AR3+,*AR4+,ASTL A,@y ;将寄存器A 中的低16位存入y 地址空间PORTW @y,PA0 ;将y 地址中的值输出到输出口RET ;子程序返回.end ;程序结束2、试举一例DSP 实际应用的例子,具体要求如下:1)画出系统基本的硬件连接电路或硬件电路框图;2)对系统的工作原理及工作过程进行详细介绍;3)给出DSP 软件程序和必要的注释;4)报告内容条理清楚,思路清晰;5)报告要求手写完成,格式要规范美观。
dsp作业(DOC)
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。
DSP作业及答案
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)类型转换浮点数转换为整型数为向零取整转换;指针和整型数可以自由转换。
DSP作业
DSP作业1.请详细描述传统的DSP芯片的主要结构特点。
传统DSP芯片的主要结构特点有:(1)DSP采用改进的哈佛总线结构,内部有两条总线,即数据总线和程序总线。
(2)采用流水操作,每条指令的执行划分为取指令、译码、取数、执行等若干步骤,由片内多个功能单元分别完成,支持任务的并行处理。
(3)片内多总线并行技术。
DSP可以充分利用哈佛结构多重总线的优点,在一个周期里使内部的各个处理单元同时工作,实现高度的并行处理。
如在一个周期里可以同时完成取指令、计算下一个指令的地址、执行一个或两个数据传输、更新一个或两个地址指针并且进行计算等等。
(4)软、硬件等待功能,可设定的软件等待周期,外部设备数据就绪指示(硬件等待)(5)DSP有独立的乘法器和加法器,包括硬件乘法器、多种乘法、乘法输入输出寄存器、乘法加法器,在一个指令周期内实现一次或多次乘法累加(MAC)运算。
(6)DSP同PC的CPU相比具有低功耗、体积小、价格低等特点。
(7)中断和定时器,多级多路中断源,多个定时器。
(8) DMA通道和通信口。
DSP有一组或多组独立的DMA控制逻辑,提高了数据的吞吐带宽,为高速数据交换和数字信号处理提供了保障。
同时DSP有一组或多组独立的DMA控制逻辑,提高了数据的吞吐带宽,位高速数据交换和数字信号处理提供了保障。
2.结合所在实验室的某项目,做一篇DSP选型报告,要求有项目描述、重点问题、选型依据、性能比较等内容。
项目描述:主要是通过工控机,以显示网压网流波型,通过以太网接口、can接口、485接口读取采集数据。
28335还拥有tf扩展卡,可以把采到的数据直接存到卡里,DA用来观测中间变量信号,通过8个排针来观察,并且控制总线也通过排针引出,因为控制总线可以用示波器观察波形的时序,以便控制总线是按逻辑时序工作的。
同时可以在工控机上编一个界面,在界面上可以有只补谐波、只补无功等工作方式,然后传给28335,在传给FPGA。
DSP作业
DSP作业
总电路图如下所示:
1.芯片
本次所采用的芯片为TMS230C5416,使用JTAG用于芯片测试,利于10MHz晶振为芯片提供时钟。
并且芯片部分引脚需要接入上拉电阻,上拉电阻置为高电位。
其核心图形如下所示:
B模块
PC机作为上位机,通过在PC上运行相应程序来控制数据传输。
USB传输的功能芯片为CY7C68001,其满足USB2.0协议,可工作在高速或全速模式下。
3.电源
所用芯片采用双电源供电模式,内核电源采用1.8、2.5或3.3V,I/O口电压为
3.3V。
采用LM317产生的1.8V电压,为芯片内核供电,LM1117-3.3V线性稳压
器产生3.3V电压为芯片的I/O口供电。
使用LM2940线性稳压器产生5V电压,给AD模块供电。
原理图如下:
4.AD模块
ADC部分使用8通道10位并行A/D转换器TLV1571芯片。
芯片供电电压5V,由线性稳压芯片LM2940产生;高精度电压基准芯片REF3040产生4V电压,作为AD采样的基准电压。
原理图如下:
5.SRAM及FLASH
SRAM作为IS61LV12816的存储器扩展,FLASH作为SST39LF400的存储器扩展。
原理图如下:。
DSP作业
1绪论数字信号处理是利用计算机或专用处理设备,以数字的形式对信号进行分析、采集、合成、变换、滤波、估算、压缩、识别等加工处理,以便提取有用的信息并进行有效的传输与应用。
与模拟信号处理相比,数字信号处理具有精确、灵活、抗干扰能力强、可靠性高、体积小、易于大规模集成等优点数字信号处理器(DSP)主要针对描述连续信号的数字信号进行数学运算,以得到相应的处理结果。
这种数学运算以快速傅立叶变换(FFT)为基础,对数字信号进行实时的处理。
最近二十年来,由于集成电路技术的高速发展,用硬件来实现各种数字滤波和快速傅立叶变换成为可能,从而使DSP得到了非常快速的发展和广泛的应用。
在数字化的世界和互联网的时代,DSP变得越来越重要,可以说是无处不在1.1课题提出的背景1.1.1 数据采集技术数据采集是获取信息的基本手段,数据采集技术作为信息科学的一个重要分支, 以传感器、信号测量与处理、微型计算机等技术为基础而形成的一门综合应用技术,它研究数据的采集、存储、处理及控制等,具有很强的实用性。
随着现代科学技术的发展和计算机技术的普及,高速数据采集系统已应用于越来越多的场合,如通信、雷达、生物医学、机器人、语音和图像处理等领域。
数据采集系统追求的主要目标有两个:一是精度,二是速度。
对任何量值的测试都要有一定的精确度要求,否则将失去采集的意义;提高数据采集的速度不但可以提高工作效率,更重要的是可以扩大数据采集系统的适用范围,以便于实现动态测试。
1.1.2 数字滤波技术数字滤波器将输入信号序列通过一定的运算后变换为输出信号序列,从而完成滤波功能。
因此,数字滤波器就是一个数字系统(离散系统),而且一般情况下还是线性时不变系统。
与模拟滤波相比,数字滤波具有很多突出的优点:它可以满足滤波器对幅度和相位特性的严格要求,可以避免模拟滤波无法克服的电压漂移、温度漂移和噪声等问题。
且精度可以达到很高,容易集成。
1.1.3 CAN总线通信CAN即控制器局域网,是一种多主方式的串行通信总线。
DSP作业和答案(盐城工学院)(精)
第一章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。
DSP作业
第一章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不能。
dsp原理与应用课程作业
2 理解DSP在音频和图像处理中的应用
了解数字信号处理在音频处理和图像处理领 域中的广泛应用,如音效处理、图像增强等。
3 提高解决实际问题的能力
通过完成作业和项目,您将培养解决实际问 题的能力,并应用所学知识。
4 培养团队协作与沟通能力
通过课程中的团队项目,您将与他人合作, 并在团队中培养协作与沟通的能力。
完成基本的数字信号处理算法的实现,如卷积、离散傅立叶变换等。
作业2: 设计音频处理程序
设计并实现一个音频处理程序,用于音频音效处理或音频合成。
作业3: 实现图像处理算法
编写代码实现图像处理算法,如图像增强、图像压缩或图像识别。
学习收获
1 掌握DSP的基本知识和原理
通过学习该课程,您将深入了解数字信号处 理的基础知识和工作原理。
DSP在音频处理中的应用
了解数字信号处理在音频音效处理、音频合成 和音频编码等方面的重要应用。
DSP算法与模型
探索数字信号处理中常用的算法和模型,如滤பைடு நூலகம்波器设计,快速傅立叶变换等。
DSP在图像处理中的应用
探索数字信号处理在图像增强、图像压缩和图 像识别等领域的广泛应用。
作业要求
作业1: 实现基本的DSP算法
DSP原理与应用课程作业
在这个DSP原理与应用课程中,我们将深入研究数字信号处理的基础知识和 应用,并通过一系列的作业来提高您的实践能力。
课程概述
本课程将介绍数字信号处理(DSP)的基本概念和原理,并深入探讨其在音 频和图像处理领域的应用。
课程内容
DSP基础知识
学习数字信号处理的基础概念,包括采样和量 化,频域与时域分析等。
课程总结
通过这门DSP原理与应用课程,您将对数字信号处理有全面的了解,掌握其 基本概念和技术,并将能够应用于音频和图像处理等领域。
DSP作业
DSP作业1.什么是流水线技术?什么是流水线冲突?如何解决流水线冲突?答:流水线技术:在执行多条指令时,将每条指令的预取指、取指、译码、寻址、读取操作数、执行等阶段,相差一个阶段地重叠地执行。
可以减少指令执行时间。
流水线冲突:双寻址存储器的流水线冲突,流水线冲突原因是CPU在单个周期内两次访问双寻址存储器。
CPU同时访问DARAM 的同一存储器块就会发生时序上的冲突。
1. 同时从同一存储器块中取指和取操作数(都在前半个周期);2.同时对同一存储器块进行写操作和读(第二个数)操作(都在后半周期)。
解决办法:1.人为合理安排指令,错开访问时序。
2.CPU通过写操作延迟一个周期,或者通过插入一个空周期的办法,自动地解决。
2.哈佛结构,冯诺依曼结构,改进型哈佛结构是什么?区别?答:哈佛结构:程序空间和数据空间分开,可同时取指令和操作数。
冯诺依曼结构:程序空间和数据空间合在一起。
改进哈佛结构:允许数据存放在程序存储器中,并可以被算术指令直接使用,改进存储器块结构,允许在一个周期内同时读取一条指令和两个操作数。
3.nop指令执行什么样的动作?作用?答:nop指令什么也不执行,一个nop是一个机器周期,用于延时。
它有两个作用:一是在执行程序全部清除后,用NOP显示;二是用于修改程序,利用在程序中插入NOP指令,修改程序时可以使程序步序号的变化减少。
4.2812可屏蔽中断有多少个?不可屏蔽中断多少个?NMI、RS各属于哪种中断?可屏蔽中断,不可屏蔽中断中优先级高的是哪个?答:可屏蔽中断:14个通用中断——INTl~INTl4;为仿真而设计的中断——DLOGINT(数据标志中断)和RTOSINT(实时操作系统中断)。
不可屏蔽中断包括:软中断INTR和TRAP指令,硬件中断NMI,非法指令陷阱,硬件复位中断RS。
复位(RS=0)是优先级最高的中断,为不可屏蔽外部中断。
5.PIE三级中断过程是什么?答:外设级:一个中断产生事件出现在某个外设中,和该事件相关的中断标志(IF)位会在这个特别外设的寄存器中被置为1。
DSP作业
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原理与应用课程作业 最终版
第 2 次作业
硬件仿真需要用户具备目标板,如TI的DSK、EVM及 用户设计的系统板,仿真程序会利用开发系统将代码 下载到DSP芯片中。程序在目标板中运行,仿真软件 只是将结果读出来显示。目标板一般是通过USB接口 XDS510或高速XDS560开发系统与主机相连。硬件仿 真的优点是仿真速度快,仿真结果与系统实际一致。 软件仿真通常用于调试软件的算法和进行效率分析等, 在外设程序调试及系统程序联调时需使用硬件仿真
第 1 次作业
1
第 1 次作业
1.2 简述DSP芯片选择原则。
答:DSP芯片选择原则主要包括DSP芯片生产厂家 的选择、运算速度、数据的传输能力、片内存 储器大小、存储器容量、集成外设、功耗、芯 片价格、芯片的供货状况、开发工具。
2
1.3 简述DSP应用系统的一般设计过程
答:确定系统性能指标
核心算法模拟和验证 选择DSP芯片及其他系统组件 软件设计和调试 硬件设计和调试 系统测试。集成
14
第 2 次作业
3.4 简述采用CCS及DSP系统开发DSP 程序的主要步骤(包括软 件仿真Simulator和硬件仿真Emulator)。
答:1.创建新的工程文件。
2.创建、编写源代码文件(包括.c、.asm、.h等源文件)和链接器 命令文件(.cmd)。
3.将工程文件中应包含.c和.asm源代码文件、链接器命令文件、 库文件(.lib)添加到工程中。
4
4个40位的累加器,能够存储计算结果,减少对存 储器的访问 8个增强的辅助寄存器,可用作数据寻址。4个暂 存数据寄存器满足数据处理的要求。
循环寻址,最多支持5个循环缓冲
单指令重复、块重复操作支持。
源代码全兼容所有的TMS329C54x器件。
DSP作业_百度文库(精)
DSP 的数字信号处理(Digital Signal Processing,简称DSP )是一门涉及许多学科而又广泛应用于许多领域的新兴学科。
DSP 有两种含义:Digital Signal Processing (数字信号处理)、Digital Signal Processor(数字信号处理器)。
我们常说的DSP 指的是数字信号处理器。
数字信号处理器是一种适合完成数字信号处理运算的处理器。
20世纪60年代以来,随着计算机和信在过去的二十多年时间里,数字信号处理已经在通信等领域得到息技术的飞速发展,数字信号处理技术应运而生并得到迅速的发展。
极为广泛的应用。
数字信号处理是利用计算机或专用处理设备,以数字形式对信号进行采集、变换、滤波、估值、增强、压缩、识别等处理,以得到符合人们需要的信号形式。
数字信号处理是围绕着数字信号处理的理论、实现和应用等几个方面发展起来的。
数字信号处理在理论上的发展推动了数字信号处理应用的发展。
反过来,数字信号处理的应用又促进了数字信号处理理论的提高。
而数字信号处理的实现则是理论和应用之间的桥梁。
数字信号处理是以众多学科为理论基础的,它所涉及的范围极其广泛。
例如,在数学领域,微积分、概率统计、随机过程、数值分析等都是数字信号处理的基本工具,与网络理论、信号与系统、控制论、通信理论、故障诊断等也密切相关。
近来新兴的一些学科,如人工智能、模式识别、神经网络等,都与数字信号处理密不可分。
可以说,数字信号处理是把许多经典的理论体系作为自己的理论基础,同时又使自己成为一系列新兴学科的理论基础。
顾名思义,DSP 主要应用在数字信号处理中,目的是为了能够满足实时信号处理的要求,因此需要将数字信号处理中的常用运算执行的尽可能快,这就决定了DSP 的特点和关键技术。
适合数字信号处理的关键技术:DSP 包含乘法器、累加器、特殊地址产生器、领开销循环等;提高处理速度的关键技术:流水线技术、并行处理技术、超常指令(VLIW )、超标量技术、DMA 等。
DSP作业
实验一的练习一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;}}。
中原工学院dsp作业
概述1、简述DSP2812的特点。
2、简述DSP2812应用领域。
时钟1、简述DSP2812时钟系统的组成及工作过程。
2、请编写EV A事件管理器25MHz的时钟初始化程序。
3、请编写SCI-A串行通信口37.5MHz的时钟初始化程序。
4、请编写用CPU定时器2产生1秒时钟脉冲的程序。
5、请编写用CPU定时器0产生10秒时钟脉冲的程序。
中断1、请用文字描述DSP中断响应过程。
2、在编写DSP中断初始化程序及服务子程序过程中应该注意哪些问题?3、请编写DSP定时器1下溢中断初始化程序,主程序及其服务子程序(子程序内容不做要求)。
AD及EV1、简述DSP2812 AD系统的组成及特点。
2、利用中断方式编写采集50Hz正弦波40次的均方根AD程序。
(画出流程图)3、利用查询方式编写采集400Hz正弦波20次的均方根AD程序。
4、简述简述DSP2812 EV模块的组成及各部分的功能5、编写产生占空比50%,周期78.125us的PWM波程序。
6、编写产生50Hz的SPWM波程序。
7、利用2812DSP板产生的SPWM波,经过RC滤波后进入DSP的AD,输出电压稳定在0.8V,频率为50Hz的正选波,用Graph观察AD采集波形并编写闭环程序。
(画出流程图)8、编写利用事件管理器EV A捕获单元测出PWM波脉宽的程序。
通信1、简述DSP2812 SCI系统的组成及特点。
2、编写DSP2812 SCI系统初始化程序,参数自定。
3、简述DSP2812 SPI系统的组成及特点。
4、编写DSP2812 SPI系统初始化程序,参数自定。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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)医学:病人监控、修复手术、超声设备等。
(7)控制:机器人控制、发动机控制、激光打印控制。
(8)汽车控制:自适应驾驶控制、导航、震动分析等。
(9)家用电器:数码相机、音乐合成、移动电话等。
6.哈佛结构与冯·诺依曼结构计算机存储器的组成有何不同?答:二者的区别是:冯·诺依曼结构的程序空间和数据空间是合在一起,取指令和取操作数都是通过一条总线分时进行的。
而哈佛结构则不同,它的程序空间和数据空间是分开的,可同时取指令和操作数。
7.5416 DSP引脚可以分为哪几类?其中的XMP/MC引脚有什么作用?答:1、事件管理器A引脚2、事件管理器B引脚3、A/D转换引脚4、通信模块引脚5、外部中断与时钟引脚6、振荡器/PLL/Flash/Boot及其他引脚7、JTAG仿真测试引脚8、地址/数据及存储器控制信号引脚9、电源引脚XMP/MC引脚的作用为:微处理器/微型计算机模式选择。
复位时,如该引脚为低,选择微型计算机模式,程序从内部程序存储器的(Flash)的0000h地址开始执行程序:复位时,如该引脚为高,选择微处理模式,程序从外部程序存储器的0000h地址开始执行程序,同时,对SCSR寄存器的第2位进行设置。
8.简述5416 DSP的内部结构主要部分的功能。
答:多处理单元:可以在一个指令周期内同时进行运算。
多级流水线:在程序运行过程中指令的取值、译码、取操作数和执行这几个阶段是重叠的。
9.简述5416 DSP的片内存储器的组成、地址与用途。
答:片内存储器一般包含随机存取存储器,只读存储器和Flash型存储器10.如何由外部晶振或外部时钟频率确定CPU时钟频率?周期包含12个时钟周期,一个机器周期就是0.5425μs。
一个机器周期一般是一条指令花费的时间,也有些是2个机器周期的指令,DJNZ,是双周期指令。
11.什么是DSP的低功耗模式? 答:以51为例,晶振22.1184M,时钟周期(晶振周期)就是(1/22.1184)μs,一个机器答:DSP芯片可以工作在省点模式,使系统功能降低。
12.如何使用看门狗定时器?答:看门狗定时器(WDT,Watch Dog Timer)实际上是一个计数器,一般给看门狗一个大数,程序开始运行后看门狗开始倒计数。
如果程序运行正常,过一段时间CPU应发出指令让看门狗复位,重新开始倒计数。
如果看门狗减到0就认为程序没有正常工作,强制整个系统复位。
13.C54x DSP的通用I/O接口有哪些引脚?有哪些功能?如何使用?答:C54x DSP的通用I/O借口的引脚有:BIO和XF。
分支转移控制输入引脚BIO 用来监控外围设备。
在时间要求苛刻的循环中,不允许受干扰。
根据BIO引脚的状态决定分支转移去向,以代替中断。
外部标志引脚XF可以用来向外部器件发信号,通过软件命令。
14.片内外设寄存器的地址是如何安排的?如何访问?答:利用Geffe发生器与MD5算法。
Geffe发生器是一种密钥序列发生器,它利用线性反馈移位寄存器(LINEAR Feedback Shift Register,LFSR)产生序列密码。
Geffe发生器使用了三个LFSR,它们以非线性方式结合,其中两个LFSR作为复合器的输入,第三个LFSR控制复合器的输出。
因为运算量很大,所以LFSR用软件实现起来比较慢,但是用汇编语言实现比用C语言实现快。
MD5(MD,即Message Digest)是一个单向散列函数,它对输入消息产生128位散列值(或消息摘要)。
该算法需要进行大量的移位和逻辑操作,用DSP实现比较方便。
15.C54x DSP的中断是如何组织的?有哪些中断源?答:RINT:触发CPU的发送中断信号;XINT:触发CPU的接受中断信号。
16.响应中断后,如何找到中断服务程序入口地址?答:响应中断后,得到中断类型码,向左移两位得到中断向量首地址,一个中断向量对应四个字节,将前两个字节给IP,后两个字节给CS,则中断服务程序的入口地址为IP和CS的第一个地址合成的物理地址。
17.DSP复位后从哪里开始执行程序?答:DSP复位后,处理器从FF80h处取指令,开始执行程序。
18.辅助寄存器有哪些?其作用是什么?答:辅助寄存器有AR0~AR7;主要作用是产生16位的数据存储空间地址。
此外,辅助寄存器还可以用作通用目的寄存器或保存变量。
19.状态寄存器ST0、ST1的作用是什么?答:快速存放到数据存储器,或者由数据存储器对它们加载,或者用子程序或者中断服务程序保存和恢复处理器的状态20.C54x DSP有哪些寻址方式?答:C54xDSP共有7种基本寻址方式,分别是:1.立即寻址;2.绝对寻址;3.累加器寻址;4,。
直接寻址;5.间接寻址;6.存储器映射寄存器寻址;7.堆栈寻址。
21.直接寻址方式中,数据存储单元的地址是如何形成的?答:在直接寻址方式中,指令包括数据地址的低7位,这低7位地址作为偏移地址与DP或SP中德基地址组合形成完整的16位数据地址。
22.访问片内外设寄存器可以采用哪些寻址方式?答:内部寻址方式:直接寻址。
外部寻址方式:寄存器间接寻址。
23.C54x DSP有哪些类型的指令?答:C54x DSP的指令系统分为4类:算术运算指令、逻辑运算指令、程序控制指令、加载和存储指令。
24.DSP应用系统的软件开发流程是什么?答:C编译器将其编译成汇编语言后,送到TMS320C54X汇编器进行汇编,汇编后生成COFF格式(公共目标文件格式)的目标文件,再调用链接器进行链接,生成在TMS320C54X上可执行的目标代码,并且利用调试工具对可执行的目标代码进行软件仿真或硬件在线仿真器的调试,以保证应用软件的正确无误且满足使用要求。
25.采用CCS集成开发环境进行软件开发调试的步骤是什么?答:1.识别问题。
2.收集信息。
3.分析收集的数据。
4.修改BUG。
26.说明.text段、.data段、.bss段分别包含什么内容?答:text段在内存中被映射为只读,但.data和.bss是可写的。
bss是英文Block Started by Symbol的简称,通常是指用来存放程序中未初始化的全局变量的一块内存区域,在程序载入时由内核清0。
BSS段属于静态内存分配。
它的初始值也是由用户自己定义的连接定位文件所确定,用户应该将它定义在可读写的RAM区内,源程序中使用malloc分配的内存就是这一块,它不是根据data 大小确定,主要由程序中同时分配内存最大值所确定,不过如果超出了范围,也就是分配失败,可以等空间释放之后再分配。
text段是程序代码段,表示程序段的大小,它是由编译器在编译连接时自动计算的,当你在链接定位文件中将该符号放置在代码段后,那么该符号表示的值就是代码段大小,编译连接时,该符号所代表的值会自动代入到源程序中。
data包含静态初始化的数据,所以有初值的全局变量和static变量在data区。
段的起始位置也是由连接定位文件所确定,大小在编译连接时自动分配,它和你的程序大小没有关系,但和程序使用到的全局变量,常量数量相关27.链接命令文件包括哪些主要内容?如何编写?答:利用C54x的链接器lnk500.exe,根据链接命令或链接命令文件(.cmd文件)对已汇编的一个或多个目标文件(.obj文件)进行链接,生成一个可以执行的目标文件(.out文件)以及在目标系统中德存储器配置文件(.map文件)。
常用得链接器命令为:Lnk500 1%.cmd28.DSP C语言有哪些特点?答:1.标识符和常数2.数据变换3.表达式4.声明5.预处理29.如何访问片内外设寄存器的某些位?答:8051的存储器在物理结构上分程序存储器空间和数据存储器空间。
有四个存储空间:片内程序存储器和片外程序存储空间以及片内数据存储器和片外数据存储器。
这种程序存储器和数据存储器分开的结构形式,称为哈佛结构。
但从用户使用的角度,8051存储器地址空间分为三类:1、片内,片外统一编址0000H—FFFFH的64K字节的程序存储器地址空间,用16位地址;2、64K字节片外数据存储器地址空间,地址也从0000H—FFFFH,用16位地址;3、256K字节数据存储器地址空间,用8位地址。
上述三个存储空间地址是重迭的,任何区别这三个不同的逻辑空间呢?8051的指令系统设计了不同的数据传送指令符号:CPU访问片内片外ROM指令用MOVC,访问片外指令用MOVX,访问片内RAM指令用MOV。
30.如何直接访问存储器单元?答:通过DMA;通过指令译码器。
31.C语言与汇编语言混合编程有哪些方法?答:(1)C程序调用汇编函数(2)内嵌汇编语句(3)C程序访问汇编程序变量(4)修改C编译器输出32.DSP的硬件仿真器(Emulator)和软件仿真器(Simulator)有什么异同点?答:软件仿真器:这种方法主要是使用计算机软件来模拟运行,实际的单片机运行因此仿真与硬件无关的系统具有一定的优点。