资源描述
DSP作业
1.DSP芯片有哪些主要特点?
答:DSP的主要特点有:
1.哈佛结构
2.多总线结构
3.流水线结构
4.多处理单元
5特殊的DSP指令
6.指令周期短
7.运算精度高
8.硬件配置强。
2.简述典型DSP应用系统的构成。
答:输入信号首先进行带限滤波和抽样,然后进行数模变换将信号变换成数字比特流,根据奈奎斯特抽样定理,对低通模拟信号,为保持信号的不丢失,抽样频率至少必须是输入带限信号最高频率的2倍。
平滑滤波
D/A
DSP芯片
A/D
抗混叠滤波
输入 输出
输出
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)军事:导航、雷达处理、声纳处理、导弹制导等。
(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%.cmd
28.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)有什么异同点?
答:软件仿真器:这种方法主要是使用计算机软件来模拟运行,实际的单片机运行因此仿真与硬件无关的系统具有一定的优点。用户不需要搭建硬件电路就可以对程序进行验证,特别适合于偏重算法的程序。软件仿真的缺点是无法完全仿真与硬件相关的部分,因此最终还要通过硬件仿真来完成最终的设计
硬件仿真器:使用附加的硬件来替代用户系统的单片机并完成单片机全部或大部分的功能。使用了附加硬件后用户就可以对程序的运行进行控制,例如单步,全速,查看资源断点等。硬件仿真是开发过程中所必须的。
33.C54x DSP的串行通信接口有哪些特点?
答:数据是一位一位依次传输的,每位数据占一个固定的时间长度。适用于远距离通信。
34.异步串行通信的数据格式有哪些?如何设置?
答:异步串行采用的数据格式是一组不定“位数”数组组成。第1位成其实位,它的宽度位1位,低电平;接着传送一个字节(8位)的数据,以高电平位“1”,低电平位“0”;最后是停止位,宽度可以是1位,1.5位或2位,在两个数据之间可有空闲位。
35.如何设置异步串行通信的波特率?
答:异步串行通信的波特率是由串行口的初始化完成的。设置串行口数据长度位16位,是能串行口中断,对串行口进行极性控制。
36.如何设计DSP与PC串行通信的硬件电路与软件?
答:采用通用I/O口实现
PC的RS-232接口按照设定的固定波特率传送,RS-232串行口进行通信采用三线式接法,即RX(数据接收)、TX(数据发送)、GND(地)三个引脚,PC机按帧格式发送、接收数据,一帧通常包括1位起始位("0"电平)、5-8位数据位、1位(或无)校验位、1位或1位半停止位("1"电平),起始位表示数据传送开始,数据位为低位在前、高位在后,停止位表示一帧数据结束。
TMS320VC33微处理器的串口帧格式没有起始位和停止位,只有数据位,且数据位为高位在前、低位在后。利用TMS320VC33微处理器的通用I/O引脚实现串行通信时,须依据RS232的通信协议并结合DSP硬件资源编写相应的DSP程序。
1.硬件设计
TMS320VC33微处理器共有10个引脚可配置为通用I/O口,其中XFO、XFl为专用的通用I/O口,通过软件设计可实现XFO、XFl专用I/O口与RS232的串行通信,电路结构如图1所示。
选用MAX3232E作为RS232C电平与TTL电平的转换芯片,R1in、T1out为RS232C电平,R1out、T1in为TTL电平,TMS320VC33微处理器的INT2引脚为外部中断脚,R10ut同时连接到INT2和XF0,即可利用传输的第一位触发TMS320VC33微处理器的外部中断。
2.软件设计
假设系统已经完成初始化,数据接收流程如图2所示,设传输速率为9600bit/s,一个起始位("0")、8位数据位、一个终止位("1")。数据传输时对起始位定时半位的时间,数据位第一位以后的定时周期设置为一个位的时间,保证每一位数据都在中间采样,与传统RS232串口传输方式不同,有利于降低传输的误码率。
数据传输时,先判断Rx是否为OAh,即判断是不是传输起始位,若Rx=OAh,表明数据开始传输;接着判断XF0管脚的状态是否为"O",若XF0=1,则数据传输错误,重新接收下一个数据;若XF=0,则表示数据开始正常传输;然后将Rx-1,同步刷新Rx中的内容,即Rx=Rx-1;同时,在TIMER0的周期寄存器和计数寄存器中存入定时整个位的时间常数,开定时器0的中断,定时时间一到,程序进入TIMER0的中断服务子程序,再判断Rx是不是终止位,若Rx为终止位,则开始继续接收新的数据,打开INT2,将TIMER0周期寄存器和计数寄存器中存放半位的时间参数;若Rx不是终止位,则继续接收数据位,直到Rx接收到终止位
37.C54xDSP的最小系统包括哪些具体电路?
答:复位电路和时钟电路。
38.如何设计DSP的复位电路?
答:对于复位电路的设计,一方面应保证复位低电平时间足够长(一般需要20ms以上),保证DSP可靠复位;另一方面应保证稳定性良好,防止DSP误复位。
39.如何设计DSP的时钟电路?
答:系统中要求多个不同频率的时钟信号时,首选可编程时钟芯片,这样有利于时钟信号的同步;单一时钟信号时,一般的应用建议选择晶体时钟电路;多个同频时钟信号时,可选择有源的晶振作为时钟电路;尽量使用dsp片内的pll,降低片外时钟频率,提高系统的稳定性;c6000、c5510、c5409a、c5416、c5420、c5421和c5441等dsp片内无振荡电路,不能用晶体时钟电路;vc5401、vc5402、vc5409和f281x等dsp时钟信号的电平为1.8v,建议采用晶体时钟电路;
40.如何用DSP C语言编程实现常用的FFT与FIR信号处理算法?
答:窗函数设计法实现一个低通数字滤波器,要求通带截止频率10kHz,阻带截止频率22kHz,阻带衰减大于75dB,采样频率fs=75kHz。
过渡带宽度=通带截止频率+过渡带宽度/2=10kHz+12/2kHz=16 kHz
数字截止频率
Ω1=2π×f1/ fs=2π×16/50=0.64π
理想低通滤波器单位脉冲响应
h1(n)=sin(nΩ1)/n/π=sin(0.64πn)/n/π
选择布莱克曼窗,滤波器长度为
N=5.98 fs过渡带宽度=5.98×50/12=24.9
取N=25,布莱克曼窗函数为
w(n)=0.42-0.5cos(2πn/24)+0.08cos(4πn/24)
滤波器单位脉冲响应为
h(n)= h1(n)w(n) n≤N-1
h(n)=0 n< N-1
y(n)=0.001x(n-2)-0.002x(n-3)-0.002x(n-4)+0.01x(n-5)-0.009x(n-6)-0.018x(n-7)+0.049x(n-8)-0.02x(n-10)+0.11x(n-11)+0.28x(n-11)+0.64x(n-13)+0.28x(n-14)-0.11x(n-15)-0.02x(n-16)-0.049x(n-17)-0.018x(n-18)-0.009x(n-19)+0.01x(n-20)-0.002x(n-21)-0.002x(n-22)+0.001x(n-23)
#include “math.h” //数学函数头文件
#define N 25 //FIR阶数N
#define PI 3.1415926
float InputWave( ); //输入波形
float FIR(); // FIR滤波函数声明
float fHn[N]={0.0,0.0,0.001,-0.002,
-0.002,0.01,-0.009,
-0.018,0.049,-0.02,0.11,0.28,0.64,0.28,-0.11,-0.02,0.049,-0.018,
-0.009,0.01,-0.002,-0.002,0.001,0.0,0.0};
float fXn[N]={0.0};
float fInput,fOutput;
float fSignal1,fSignal2;
float fStepSignal1,fStepSignal2;
float f2PI; //2*PI
int i;
float FIN[256],FOUT[256];
//输入信号与输出信号
i int nIn,nOut
main(void)
{
nIn=0;nOut=0;
f2PI =2*PI;
fSignal1=0.0;
fSignal2=PI*0.1;
fStepSignal1=2*PI/30;
fStepSignal2=2*PI*1.4;
while(1)
{
fInput=InputWave();
FIN[nIn]= fInput;
nIn++;nIn%=256;
fOutput=FIR(); //调用HR滤波函数
FOUT[nOut]= fOutput;
nOut++;
if( nOut>=256) nOut=0;
}
}
float InputWave() //输入波形函数
{
for(i=N-1;i>0;i--) fXn[i]=fXn[i-1];
fXn[0]=sin(fSignal1)+cos(fSignal2)/6.0;
fSignal1+ = fStepSignal1;
if( fSignal1>=f2PI) fSignal1- = f2PI;
fSignal2+ = fStepSignal2;
if( fSignal2>=f2PI) fSignal2- = f2PI;
retum( fXn[0] );
float FIR( ) //FIR滤波函数
{
float fSum;
fSum=0;
for( i=0;i<N;i++) fSum + = (fXn[i]*fHn[i]);
return(fSum);
}
展开阅读全文