图10接口信号参数
表为扩展存储器引脚信号定义外部接口总线是一组并行接口。它有两个互相排斥的选通信号:MSTRB#和IOSTRB#。前者用于访问外部程序或者数据存储器,后者用于访问I/O设备。读/写信号R/W#撑则控制数据传送方向。外部数据准备输入信号(REDAY)与片内软件可编程等待状态发生器一道, 可以使处理器与各种速度的存储器以及I/0设备接口。当与慢速器件通信时,CPU处于等待状态,直到慢速器件完成了它的操作并发出READY信号才继续运行。当外部设备需要寻址DSP的终部程序、数据和帕存储空间时,可以利用HOLD#和 HOLDA#信号,达到控制DSP外部资源的目的。CPU寻址片内存储器时,外部数据总线鬣高阻状态,而地址总线以及存储器选择信号均保持先前的状态,此外,MSTRB#、IOSTRB#、R/W#、IAQ#和MSC#信号均保持在无效状态。
4.2.8 A/D转换接口电路设计
在A/D转换器中,因为输入的模拟信号在时间上是连续量,而输出的数字信号代码是离散量,所以进行转换时必须在一系列选定的瞬间(亦即时间坐标轴上的一些规定点上)对输入的模拟信号取样,然后再把这些取样值转换为输出的数字量。因此,一般的A/D转换过程是通过取样、保持、量化和编码这四个步骤完成的。①取样定理:在满足取样定理的条件下,可以用一个低通滤波器将信号vs还原为n,这个低通滤波器的电压传输系数pt,月在低于^。。的范围内应保持不变,而在,s_缸。以前应迅速下降为零。因此,取样定理规定了A/D 转换的频率下限。因为每次把取样电压转换为相应的数字量都需要一定的时间,所以在每次取样以后,必须把取样电压保持一段时间。可见,进行A/D转换时所用的输入电压,实际上是每次取样结束时的n值。②量化和编码:我们知道,数字信号不仅在时间上是离散的,而且在数值上的变化也不是连续的。这就是说,任何一个数字量的大小,都是以某个最小数量单位的整倍数来表示的。因此,在用数字量表示取样电压时,也必须把它化成这个最小数量单位的整倍数,这个转化过程就叫做量化。所规定的最小数量单位叫做量化单位,用△表示。显然,数字信号最低有效位中的1表示的数量大小,就等于△。把量化的数值用二进制代码表示,称为编码。这个二进制代码就是A/D转换的输出信号。单片集成A/D转换器的转换精度是用分辨率和转换误差来描述的。①分辨率:它说明A/D转换器对输入信号的分辨能力,A/D转换器的分辨率以输出二进制(或十进制)数的位数表示。从理论上讲,n位输出的A/D转换器能区分20个不同等级的输入模拟电压,能区分输入电压的最小值为满量程输入的1/2“。在最大输入电压一定时,输出位数愈多,量化单位愈小,分辨率愈高。例如A/D 转换器输出为10位二进制数,输入信号最大值为3V,那么这个转换器应能区分输入信号的最小电压为3mV。②转换误差:表示A/D转换器实际输出的数字量和理论上的输出数字量之间的差别。常用最低有效位的倍数表示。例如给出相对误差≤±1LSB,这就表明实际输出的数字量和理论上应得到的输出数字量之间的误差小于最低位的一个字。根据模数转换器件的特点,在本数字滤波器系统中选择了Tl公司的TLVl570芯片,它是一款8通道10位2.7到5.5V低电压模数转换芯片。由于DSP的Io电压为3.3V,因此选择3.3V电压供给TLVl570器件可以省略电平转换器件。TLVl570在3V电压下的采样频率为625KSPS,因此对于输入信号来说最高频率不能超过300K。系统的分辨率为3mV,最大误差≤±1LSB。图4—7 为TLVl570的功能时序图。从功能时序图可以看出该器件包含一个8通道输入多路复用器,一个高速的10位ADC,一个内部的电压参考源和一个高速的串行接口。
TLVl570的高速串行接口包含五根信号线:SCLK串行时钟输入、SDIN串行数据输入、SDOUT串行数据输出、Fs帧同步信号、CS#片选信号。其中每个取样和转换过程需要16个系统工作时钟,因此只有当几(~)一(1,16)九。时,系统才能正常的工作。
11
out 3.3vPROBLEMAIN1AIN2AIN3AIN4AIN5AIN6AIN7AIN8543211817165432118N-TLV157017161920212223272829272829N-TLV1570242519202122232425BOCK1BFS1BOX1BOR1R610KC101CAPR71KR510KA/D转换 图11A/D转换电路
4.2.9 D/A转换接口电路设计
数字量是用代码按数位组合起来表示的,对于有权码,每位代码都有一定的权。为了将数字量转换成模拟量,必须将每1位的代码按其权的大小转换成相应的模拟量,然后将这些模拟量相加,即可得到与数字量成正比的总模拟量,从而实现了数字一模拟转换。这就是构成D/A转换器的基本思路。D/A转换器的转换精度通常用分辨率和转换误差来描述。①分辨率,D/A转换器模拟输出电压可能被分离的等级数。输入数字量位数越多,输出电压可分离的等级越多,即分辨率越高。在实际应用中,往往用输入数字量的位数表示D/A转换器的分辨率。此外,D/A转换器也可以用能分辨的最小输出电压(此时输入的数字代码只有最低有效位为l,其余各位都是0)与最大输出电压(此时输入的数字代码各有效位全为1)之比给出。N位D/A转换器的分辨率可表示为1/(28—1)。它表示D/A转换器在理论上可以达到的精度。②转换误差,转换误差的来源很多,转换器中各元件参数值的误差,基准电源不够稳定和运算放大器的零漂的影响等。D/A转换器的绝对误差(或绝对精度)是指输入端加入最大数字量时,D/A转换器的理论值与实际值之差。该误差值应低于LSB/2。由于模数转换选择了10位器件,为了简化程序代码,减少DSP的运算工作量,并根据数模转换器件的特点,在本数字滤波器系统中选择了Tl公司的TL,V5608芯片,它是一款8通道10位2.7到5.5V低电压数模转换芯片。由于DSP的10电压为3.3V,因此选择3.3V电压供给聊1570器件可以省略电平转换器件。
out 3.3vR9910KR202R210K10K20111618BT?N-TLV560820111618121314156N-TLV56087189102193412131415678921934AOUT1AOUT2AOUT3AOUT4AOUT5AOUT6AOUT7AOUT8BOX0BOR0BCLK0C410D/A转换110R25RST10K5
12
图12D/A转换电路
DSP系统的硬件设计之后,软件设计就成为系统设计的关键,一个DSP系统在很大程度上取决于软件设计是否合理与可靠。在DSP进行数字滤波运算前必须进行一些初始化程序。在本系统中初始化
【24】
程序主要包括:DSP芯片的初始化、矢量表初始和两个串行端口的初始化。DSP5402共有三个控制和状态寄存器,对CPU的控制是通过CPU状态和控制寄存器来完成的。分别为状态寄存器0(STO)、状态寄存器1(STl)和处理器模式状态寄存器(PMST)。DSP不同条件和模式下的状态都包含ST0和STl: PMST包含存储器设置状态和控制信息。由于这些寄存器是存储器映像,所以可以像对数据存储器操作那样对它们进行读出和写入。在调用子程序或中断服务子程序时,可以将它们保存下来,返回时再恢复。DSP芯片的初始化是设定DSP芯片工作状态的重要步骤,只有正确进行DSP 芯片的初始化,才能保证芯片的正确运行。在调试软件的过程中,如果发现程序运行不正确,应首先查看芯片各寄存器的初始化状态设置是否正确,然后再调试用户程序,否则就会降低调试效率。1MS320Vc5402芯片加电复位之后处于预先设定的状态,无论是状态寄存器还是控制寄存器都有一个确定的数值。对寄存器进行初始化主要包括:状态寄存器ST0、状态寄存器STl、处理器模式控制寄存器PMST、软件等待状态寄
[25]
存器SWWSR、组交换控制寄存器BSCR和时钟模式寄存器CLKMD。中断矢量表是每个DSP系统必须用至4的,对中断矢量表进行初始化是DSP 初始化的一个重要的组成部分,正确设置中断矢量包括:1)根据DSP芯片对各中断矢量的设置位置编写一个子程序。在TMS320VC5402中,要求每个中断矢量占4个字,如果跳转指令不够4个字,可用NOP指令填充,每个NOP占一个字。2)设置PMST控制寄存器。该寄存器的高9位是IPTR,用于设置矢量表的起始地址。3)连接时将矢量表重定位到IPTR指定的地址。TMS320VC5402芯片包含两个多通道缓冲串行口,在本系统的设计中两个串口分别接DA和AD芯片。McBSP通过一系列存储器映射控制寄存器来进行配置和操作。为了是MeBSP接口工作在所希望的模式下,必须在初始化时多相关寄存器进行正确的配置。
五、基于DSP的IIR程序设计及软件调试
5.1 图5—4是利用DSP实现数字滤波的流程图,说明如下:利用DSP实现FIR 数字滤波的子程序
设计思路如下:1、查询SPCRll寄存器的第二位,当为1时说明read ready,将DRRll的值读入AR3所指向的地址,该值为最新的采样值。将最新的采样值减去200h,然后AR3的值减一。3、执行MAC指令。4、将累加器的值送给变量Y。并将Y加上200h。5、查询SPCR20寄存器的第二位, 当为1时说明write ready,将Y值附给DXRl0,该值为滤波器输出值。6、循环执行上面步骤
13
开始DSP初开始化Mcbsp0初始化Mcbsp1初始化将h(n)值附缓冲区给h(x)值清零TLV5608初始化TLV1507初始化。循环执行滤波程序 图13为DSP实现数字滤波器流程图
本设计的程序工程中包含4个文件:filter.c,init.asm,vectors.asm,fliter.cmd。四个文件实现不同的功能。filter.c文件为C语言编写的源文件,在本设计中主要功能是将各个子程序结合起来,便于阅读。init.asm文件为汇编语言编写的源文件,是本设计中的主要文件,包含了各个初始化程序的具体操作和实现数字滤波的具体代码。vectors.asm文件为中断矢量表初始化子程序文件,中断矢量表是每个DSP系统必须用到的,对中断矢量表进行初始化是DSP初始化的一个重要的部
【17-18】
分。filter.trod为链接器命令文件。
5.2 在IIR滤波器结构中,直接H型结构是最常用的滤波器结构,因为这种结构的二阶形式可
作为级连型和并联型结构中的基本节。
图14二阶直接II型IIR滤波器 二阶直接II型结构滤波器的差分方程为:
d(n)=x(n)+ald(n一1)+a2d(n-2) y(n)=bod(n)+bld(n一1)+b2d(n-2、
式中,d(n),d(n一1),d(n-2)对应于图中具有不同延迟的中间节点值。在利用1MS320vc5402实现IIR程序中要注意的事项同实现FIR的基本相同。
14
5.3 IIR数字滤波的软件调试
图 15利用DSP的IIR数字滤波效果图(1)
图 16利用DSP的IIR数字滤波效果图(2)
在效果图中,上面波形为DSP实验箱产生的滤波前的效果图,下面波形为进行IIR滤波后的效果图。从两图的比较可以看出,所设计的IIR滤波器收到了较好的效果,完成了设计要求。
在编写及调试的过程中主要遇到以下问题:
(1)在编写程序的过程中要对所涉及的存储单元进行初始化,这样在数据或是代码段进行汇编时才不会出现问题。
15