学号:
姓名:
日期:2017年5月23日星期二
1.DSP的生产厂商主要有哪些?分别有什么系列?
答:
① 德州仪器公司(最有名的DSP芯片厂商)。TI公司在市场上主要的三个系列产品:
(1)面向数字控制、运动控制的TMS320C2000系列,主要包括TMS320C24x/F24x、TMS320LC240x/LF240x、TMS320C24xA/LF240xA、TMS320C28xx等;
(2)面向低功耗、手持设备、无线终端应用的TMS320C5000系列,主要包括TMS320C54x、TMS320C54xx、TMS320C55x等;
(3)面向高性能、多功能、复杂应用领域的TMS320C6000系列,主要包括TMS320C62xx、TMS320Cxx、TMS320C67xx等。
② 美国模拟器件公司。其主要的系列:
(1)定点DSP芯片有ADSP2101/2103/2105、ADSP2111/2115、ADSP2126/2162/21、ADSP2127/2181、ADSP-BF532以及Blackfin系列;
(2)浮点DSP芯片有ADSP21000/21020、ADSP21060/21062,以及虎鲨TS101、TS201S。
③ Motorola公司(发布较晚)。其主要的系列包括:
(1)定点DSP 处理器MC56001;
(2)与IEEE浮点格式兼容的的浮点DSP芯片MC96002;
(3)DSP53611、16位DSP56800、24位的DSP563XX和MSC8101等产品。
④ 杰尔公司。主要系列有:
嵌入式DSP内核的SC1000和 SC2000系列,主要面向电信基础设施、移动通信、 多媒体服务器及其它新兴应用。
2.浮点DSP和定点DSP各自有什么特点?
答:
浮点DSP和定点DSP在宏观上有很大的特点区别,包括动态范围、速度、价格等等。
(1)动态范围:定点DSP的字长每增加1bit,动态范围扩大6dB。16bit字长的动态范围为96dB。程序员必须时刻关注溢出的发生。例如,在作图像处理时,图像作旋转、移动等,就很容易产生溢出。这时,要么不断地移位定标,要么作截尾。前者要耗费大量的程序空间和执行时间,后者则很快带来图像质量的劣化。总之,是使整个系统的性能下降。在处理低信噪比信号的场合,例如进行语音识别、雷达和声纳信号处理时,也会发生类似的问题。
32bit浮点运算DSP的动态范围可以作到1536dB,这不仅大大扩大了动态范围,提高了运算精度,还大大节省了运算时间和存储空间,因为大大减少了定标,移位和溢出检查。
由于浮点DSP的浮点运算用硬件来实现,可以在单周期内完成,因而其处理速度大大高于定点DSP。这一优点在实现高精度复杂算法时尤为突出,为复杂算法的实时处理提供了保证。
32bit浮点DSP的总线宽度较定点DSP宽得多,因而寻址空间也要大得多。这一方面为大型复杂算法提供了可能、因为省的DSP目标子程序已使用到几十MB存储器或更多;另一方面也为高级语言编译器、DSP操作系统等高级工具软件的应用提供了条件。DSP的进一步发展,必然是多处理器的应用。新型的浮点DSP已开始在通信口的设置和强化、资源共享等方面有所响应。
(2)在硬件和软件上的区别
在硬件结构上最大的不同之处在于数据存储结构方面。浮点DSP用户不必知道如何存储数据,而应用定点DSP时就需了解数据存储数据格式,必须对数据格式作一些转换。浮点DSP处理器具有浮点/整数乘法器,整数/浮点算术逻辑运算单元 ALU,适合存放扩展精度的浮点结果的寄存器等。
主要有浮点DSP编程的特点以及注意事项;定点DSP进行浮点运算时的定标,移位,检测溢出操作。比较两个浮点数时,不要使用==来判断是否相等。即使比较两个相等的数,还是可能有微小的舍入差别。
3.针对TI公司的C6000系列,说一下CACHE、EDMA、EMIF的概念和用途。
答:
EMIF: 外部存储器接口(EMIF)是TMS、DSP器件上的一种接口,具体可以分为EMIFA和EMIFB。一般来说,EMIF可实现DSP与不同类型存储器(SRAM、Flash RAM、DDR-RAM等)的连接。一般EMIF与FPGA相连,从而使FPGA平台充当一个协同处理器、高速数据处理器或高速数据传输接口。设计接口提供了一个FPGA块至RAM的无缝连接。在读/写、FIFO或存储器模式中,双端口块RAM的一侧被用来实现与DSP的通信。另一侧用于实现与内部FPGA逻辑电路或平台-FPGA嵌入式处理器的通信。
EDMA: 增强型直接内存存取(EDMA)是数字信号处理器(DSP)中用于快速数据交换的重要技术,具有于CPU的后台批量数据传输的能力,能够满足实时图像处理中高速数据传输的要求。通过灵活控制EDMA不仅能够提高图像数据的传输效率,而且能够充分发挥DSP的高速性能。
CACHE:CACHE高速缓冲存储器一种特殊的存储器子系统,其中复制了频繁使用的数据以利于快速访问。存储器的高速缓冲存储器存储了频繁访问的RAM位置的内容及这些数据项的存储地址。当处理器引用存储器中的某地址时,高速缓冲存储器便检查是否存有该地址。如果存有该地址,则将数据返回处理器;如果没有保存该地址,则进行常规的存储器访问。因为高速缓冲存储器总是比主RAM存储器速度快,所以当RAM的访问速度低于微处理器的速度时,常使用高速缓冲存储器。
4.DSP的PCB设计属于高速信号设计,高速信号设计需要考虑什么问题?
答:
(1)考虑电源和地的去耦
随着DSP工作频率的提高,DSP和其他IC元器件趋向小型化、封装密集化,通常电路设计时考虑采用多层板,建议电源和地都可以用专门的一层,且对于多种电源,例如DSP的I/O电源电压和内核电源电压不同,可以用两个不同的电源层,若考虑多层板的加工费用高,可以把接线较多或者相对关键的电源用专门的一层,其他电源可以和信号线一样布线,但要注意线的宽度要足够。
无论电路板是否有专门的地层和电源层,都必须在电源和地之间加一定的并且分布合理的电容。为了节省空间,减少通孔数,建议多使用贴片电容。可把贴片电容放在PCB板背面即焊接面,贴片电容到通孔用宽线连接并通过通孔与电源、地层相连。
考虑电源分布的布线规则。
分开模拟和数字电源层。
高速高精度模拟元件对数字信号很敏感。例如,放大器会放大开关噪声,使之接近脉冲信号,所以在板上模拟和数字部分,电源层一般是要求分开的。
(2)隔离敏感信号
有些敏感信号(如高频时钟) 对噪声干扰特别敏感,对它们要采取高等级隔离措施。高频时钟(20MHz以上的时钟,或翻转时间小于5ns的时钟)必须有地线护送,时钟线宽至少10mil,护送地线线宽至少20mil,高频信号线的保护地线两端必须由过孔与地层良好接触,而且每5cm 打过孔与地层连接;时钟发送侧必须串接一个22Ω~220Ω的阻尼电阻。可避免由这些线带来的信号噪声所产生的干扰。
(3)硬件抗干扰设计:
硬件抗干扰效率高,在系统复杂度、成本、体积可容忍的情况下,优先选用硬件抗干扰设计。常用的硬件抗干扰技术可归纳为以下几种:
硬件滤波:RC 滤波器可以大大削弱各类高频干扰信号。如可以抑制“毛刺”干扰。
合理接地:合理设计接地系统,对于高速的数字和模拟电路系统来说,具有一个低阻抗、大面积的接地层是很重要的。地层既可以为高频电流提供一个低阻抗的返回通路,而且使EMI、RFI变得更小,同时还对外部干扰具有屏蔽作用。PCB 设计时把模拟地和数字地分开。
屏蔽措施:交流电源、高频电源、强电设备、电弧产生的电火花,会产生电磁波,成为电磁干扰的噪声源,可用金属壳体把上述器件包围起来,再接地,这对屏蔽通过电磁感应引起的干扰非常有效。
光电隔离:光电隔离器可以有效地避免不同电路板间的相互干扰,高速的光电隔离器常用于DSP和其他设备(如传感器、开关等) 的接口。
(4)软件抗干扰设计
软件抗干扰有硬件抗干扰所无法取代的优势,在DSP 应用系统中还应充分挖掘软件的抗干扰能力,从而将干扰的影响抑制到最小。下面给出几种有效的软件抗干扰方法。
数字滤波:模拟输入信号的噪声可以通过数字滤波加以消除。常用的数字滤波技术有:中值滤波、算术平均值滤波等。
设置陷阱:在未用的程序区内设置一段引导程序,当程序受干扰跳到此区域时,引导程序将强行捕获到的程序引导到指定的地址,在那里用专门程序对出错程序进行处理。
指令冗余:在双字节指令和三字节指令后插入两三个字节的空操作指令NOP,可以防止当DSP系统受干扰程序跑飞时,将程序自动纳入正轨。
设置看门狗定时:如失控的程序进入“死循环”,通常采用“看门狗”技术使程序脱离“死循环”。其原理是利用一个定时器,它按设定周期产生一个脉冲,如果不想产生此脉冲,DSP就应在小于设定周期的时间内将定时器清零;但当DSP程序跑飞时,就不会按规定把定时器清零,于是定时器产生的脉冲作为DSP复位信号,将DSP重新复位和初始化。
(5)电磁兼容性设计
电磁兼容性是指电子设备在复杂电磁环境中仍可以正常工作的能力。电磁兼容性设计的目的是使电子设备既能抑制各种外来干扰,又能减少电子设备对其他电子设备的电磁干扰。在实际的PCB板中相邻信号间或多或少存在着电磁干扰现象即串扰。串扰的大小与回路间的分布电容和分布电感有关。解决这种信号间的相互电磁干扰可采取以下措施:
选择合理的导线宽度:由于瞬变电流在印制线条上产生的冲击干扰主要是印制导线的电感成分引起的,而其电感量与印制导线长度成正比,与宽度成反比。所以采用短而宽的导线对抑制干扰是有利的。时钟引线、总线驱动器的信号线常有大的瞬变电流,其印制导线要尽可能短。对于分立元件电路,印制导线宽度在1.5mm左右即可满足要求;对于集成电路,印制导线宽度在0. 2mm~1. 0mm之间选择。
采用井字形网状布线结构:具体做法是在PCB印制板的一层横向布线,紧挨着的一层纵向布线。
(6)散热设计
为有利于散热,印制板最好是自立安装,板间距应大于2cm,同时注意元器件在印制板上的布排规则。在水平方向,大功率器件尽量靠近印制板边沿布置,从而缩短传热途径;在垂直方向大功率器件尽量靠近印制板上方布置,从而减少其对别的元器件温度的影响。对温度较敏感的元器件尽量布放在温度比较低的区域,而不能放在发热量大的器件的正上方。
5.自己设定参数,用C语言编写一段低通滤波器的程序,并指明,在RF5框架中,此程序如何嵌入其中。
答:程序如下:
#include #include #define true 1 #define false 0 #define n 8 #define bufsize 100 int in_buffer[bufsize]; int out_buffer[bufsize]; static int processing(int *input, int *output); static void dataio(void); static long round(long a); void main() { int *input = &in_buffer[0]; int *output = &out_buffer[0]; puts("the 1st experiment started\\n"); while(true) { dataio(); processing(input, output); dataio(); } } static int processing(int *input, int *output) { int i,size = bufsize; short xx0,x,y; short z[n]={0,0,0,0,0,0,0,0}; short w[2*n+1]={101,4356,810,8192,2835,3403,5670,2517,7088,605,5670,193,2835,21,810}; long y0,z0; while(size--){ xx0=*input++; x=xx0*6; z0=(long)x<<15; y0=0; for(i=0;i z0-=(long)w[2*i+1]*(long)z[i]; y0+=(long)w[2*i+2]*(long)z[i]; } y0+=(long)w[0]*(z0>>15); y0=round(y0); for(i=n-1;i>0;i--) z[i]=z[i-1]; z0=round(z0); z[0]=(short)(z0>>15); y=(short)(y0>>15); *output++ =y; } return(true); } static void dataio() { return; } static long round(long a) { long x3; x3=a&(0xffff0000); return x3; } 6.利用视频的FVID驱动编写一段视频驱动的程序。 答:程序如下: //gioAttrs.nPackets = 8; //gioAttrs.timeout = SYS_FOREVER; self->hGioVpfeCcdc = FVID_create ( "/VPFE0", IOM_INOUT) result=FVID_control for (i=0; i numBytes = self->bytesPerFrame; p = pspFramePtrNew->frameBufferPtr; for(i=0;i< numBytes / sizeof; i++) APP_SYSTEM_cacheWbInv; result = FVID_queue; APP_SYSTEM_ASSERT(result == 0, "FVID_queue()failed"); } msgPtr->processedFlag = 1; return status; self->hGioVpfeCcdc= FVID_create("/VPFE0", IOM_INOUT) for (i=0; i p = pspFramePtrNew->frameBufferPtr; for(i=0;i< numBytes / sizeof; i++) APP_SYSTEM_cacheWbInv; result = FVID_queue; APP_SYSTEM_ASSERT(result==IOM_COMPLETED , "FVID_queue() failed"); ATM_inci(&self->driverFrameCnt); } msgPtr->processedFlag = 1; return status;下载本文