来源:本站整理 作者:佚名 2009-05-06 14:47:00
2.3 硬件结构与原理
本电路采用2片C6701,电路结构如图3所示,3路信号为10位定点数据格式,拼成30位并行数据送到C6701的总线上,C6701将其读到片内RAM,利用移位指令分解为3个定点数。求权C6701必须把数据转换成浮点数,才能以较高的精度快速求出自适应权。求权运算中要用到除法操作,浮点DSP进行除法运算很方便。求权C6701将求得的权转换为16位定点格式,写到两片C6701共用的RAM中,加权C6701按定点方式用自适应权对3路数据加权,对结果取16位,通过FIFO后送出。
系统时钟为3 MHz,此时钟将3路共30位数据以及I,Q标志位共6701位数据送向C6701,两片C6701利用互锁信号XF0、XF1确保正确地从总线上读取数据,既不丢失,也不重复读取,并根据数据的I,Q标志区分复数据的实部和虚部,两片C6701的操作如下:
(1)求权C6701用XF1和互锁指令定期读取一批数据作为样本,求得自适应权,并化为16位定点数。
(2)求权C6701利用配置成通用输出管脚的TCLK0、TCLK1向加权C6701先后提出INT0请求、HOLD请求。
(3)求权C6701取得两片C6701的公共总线控制权,利用地址线、数据线、读写R/W和STRB向公共RAM写入自适应权,然后撤销HOLD请求。
(4)加权C6701取得总线控制权,从公共RAM中读自适应权。
(5)加权C6701进行3路数据合成,把16位结果和I,Q标志写入FIFO;系统按数据时钟从FIFO中取走数据。加权C6701一直进行这样的合成、写FIFO操作,直到求权C6701下一次提出中断、HOLD请求。
(6)在两片C6701访问公共RAM,以及加权C6701向FIFO写数时,输入缓冲器74F245上的三态使能是关闭的。
2.4 时序要求
C6701利用互锁操作从数据线上正确读数是关键,数据时钟的占空比是50%,将它与C6701的XF1(设定为输入)相连,C6701通过互锁指令保证读数操作与数据时钟准确同步,同时加权C6701还要完成多次乘加运算和FIFO写数操作,这要求在硬件时序给定的情况下,C6701利用软件指令的优化排列来保证处理的正确性和高效性,其同步和运算、读写流程如图4所示,当C6701读数、写FIFO的时序与数据时钟不合拍时,可以执行指令执行顺序或增减空操作(NOP)指令。
3 软硬件调试
将PC机通过仿真卡、电缆与C6701电路板上的仿真口接好,给电路板加电,运行仿真软件,观察C6701的寄存器、程序、数据内容,因为有两片C6701,用两个仿真器调试更方便。软硬件调试的工作主要是C6701与其他设备的握手、通信问题。求权C6701的主要调试过程是:
(1)调试互锁读数指令,若有信号源,即前端送来3路数据和相应的时钟且3路信号值已知或已测出的话,则令C6701全速运行读取一段数据,然后让C6701停下来,观察读到的数据与送来的数据是否完全一致,若不一致,则逐步检查;若没有信号源,则利用示波器或逻辑分析仪来分析波形,C6701进行互锁读时,就会将XF0置低,观察XF0与XF1(数据时钟)以及STRB信号的波形,可以看出同步互锁的时序配合,若达不到要求,则要修改C6701程序,还应注意C6701读数时刻(STRB上升沿)是否临近数据转换沿。
(2)向RAM写自适应权:利用仿真器直接察看RAM中内容是否正确写入,或者将写入的权再从RAM读回后比较,以次验证存储器总线操作。
4 程序固化
软硬件调试符合要求后,就可以将程序固化到RAM中。求权C6701的程序代码固化在EPROM地址1000H开始的区间,加权C6701的程序代码固化在EPROM地址8000H开始的区间,求权C6701是标准的8位ROM引导方式,而加权C6701是串行口引导方式,其程序头与求权C6701代码的程序头一样,加权C6701的32位代码事先按先低字节,后高字节的顺序转换成8位代码。
求权C6701的代码在上电复位后自动装入片内RAM,求权C6701引导成功后要通过串口向加权C6701发送加权C6701的代码,求权C6701总共向加权C6701发送N+2个32字。
在程序固化后,再检验电路板的工作是否正确,可通过C6701的IACK等管脚连到的发光二极管闪烁来表明DSP程序已经正确引导并正常运行,在C6701的程序中应加入IACK指令,C6701全速工作时定期在IACK管脚上输出一个负脉冲。
5 结 语
DSP器件已经应用于很多领域,用其构成的自适应滤波器,也得到了广泛应用,本文提出的这种特殊结构的自适应滤波器,由于有较好的实时性和滤波效果,应该有较好的应用前景。