首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

知名厂商热门MCU芯片应用(一):ADSP系列(2)

知名厂商热门MCU芯片应用(一):ADSP系列(2)

FPGA实现ADSP-TS101的Linkport接口与CY7C68013A之间的双向数据缓冲和接口协议转换。考虑到CY7C68013A中的 FIFO容量较DSP的一个处理帧预发送或接收的数据量较小,故在FPGA中设置上行和下行各一个大容量FIFO,用于数据缓冲,以减少对DSP中并行流水运行的程序的打扰。这里,由于DSP链路口的瞬时数据率远高于USB芯片的传输速率(理论上限为60 MB/s),故FIFO的DSP端口的数据传输为:一个处理帧只操作一次,而USB芯片端则分成多次操作。
  限于篇幅,下文将重点对传输数据率要求高、设计难度大的上行通道的设计进行详细描述。
  FPGA需要模拟Linkport口的接口时序,其与DSP的硬件连接关系图如图2所示。

  Link协议通过8位并行数据总线完成双向数据传输,与数据总线配合的还有相应的时钟信号线LxCLKIN,LxCLKOUT。
  2.1 Linkport口的传输协议
  Linkport口传输数据时,每8个周期传送一个4字组(16 B),在时钟的上升沿和下降沿均传送一个字节。在传送过程中,发送端将检测接收端的LxCLKOUT信号,仅当接收端将它的LxCLKOUT置为高时,即接收端处于接收方式,且有空闲的缓冲时,发送端才可以启动下一个传送过程。
  传送启动过程如图3所示,发送端驱动信号LxCLKOUT为低电平,以此向接收端发出令牌请求,发出令牌请求后,发送端等待6个周期,并验证LxCLKIN是否依旧为高,若是则启动传送过程。传送过程启动一个周期以后,接收端将发送端的LxCLKIN驱动为低,以此作为连接测试。若接收完当前4字组后接收端无法再接收另外的4字组,则接收端保持LxCLKIN为低。这种情况下,缓冲空闲后LxCLKIN信号被禁止。若缓冲为空,则接收端将置LxCLKIN为高电平。
  作为同步信号,LxCLKOUT信号由发送端驱动。数据在LxCLKOUT的上升沿和下降沿处锁存到接收缓冲中,发送和接收缓冲都是128b宽。 LxCLKIN信号由接收端驱动,发往发送端,它通常用作“等待”指示信号,但LxCLKIN信号也可以用作连接测试信号,保证接收端能正确地接收当前传送数据。
  当LxCLKIN信号用于等待指示信号时,接收端驱动LxCLKIN信号为低电平。若LxCLKIN信号保持低电平状态,则发送端可以[完成当前的4字组传送,但无法启动下一个垂字组传送。若还有其余的数据需要传送,发送端需将LxCLKOUT置低,并等待接收端将 LxCLKIN驱动为高电平。如果在第12个时钟沿到来之前LxCLKIN变为高电平,则紧跟着传送的将是新的4字组。
  2.2 FPGA内的Linkport口逻辑设计
  由于Link协议采用双时钟沿传输数据,而同步FPGA系统中,一般只采用单一时钟的上升沿完成操作,因此需要将FPGA系统工作频率SCLK设定为Link时钟的2倍。然后将该时钟的两分频输出作为LxCLKOUT信号,有效数据则在SCLK的上升沿更新。
  FPGA中的Linkport口接口模块电路与ADSP-TS101的Linkport口完全兼容,且采用了双向双倍数据传输DDR技术,能实现双向双倍的数据传输。FPGA中的Link口接口模块电路如图4所示。

  图5是FPGA内实现DSP数据上行的Linkport口接收时序仿真图(基于Modelsim仿真软件)。

  Link口协议的一大特点就是在收发数据时可以选择是否需要校验位VERE比特,VERE的启用或关闭可以通过ADSP-TS101中的寄存器来设置,也可以通过FPGA模块中的Verein信号置高或置低来设置。该设计在FPGA中设置VERE信号的启用或关闭。当VERE启用后,FPGA模块中的输出信号Rx_Vere_Bad用于表征最后接收的128 b数据是否正确。由于使用VERE有两个好处,一是能保证数据的完整性;二是能减小在两个时钟不严格一致的系统中传输数据时产生数据重叠的可能性。因而在设计中采用了带数据校验的传输方式。
  3.1 传输方式的确定
  CY7C68013A芯片具有GPIF模式和从属FIFO(Slave FIFO)模式两种接口工作模式。在本设计中,USB数据传输存储模块负责完成存储算法产生的大量数据的高速传输,由于不涉及到对外部电路的控制,所以不选用GPIF模式,而选择Slave FIFO模式进行连接。在数据传输时,用Slave FIFO接口模式,批量传输,自动输入(AUTOIN)方式,使用EP6端口作为上行输入缓冲区。CY7C68013A的,Slave FIFO接口模式如图6所示。

  3.2 EZ-USB FX2时序设计
  在本设计的FPGA中,设计了如图6的外部主控制器的功能逻辑。由于DSP端Linkport口数据传输速率很高,而在USB端的速率可能无法跟 Linkport口的数据率相匹配,故在FPGA中开辟一个2KB的FIFO,经由Linkport上传的数据首先传送到FIFO中,之后再经由USB口上传至主机。为了保证数据传输的完整性,设计USB的数据传输速率为DSP Link口的1/8。在此,对FPGA逻辑应用Modelsim软件进行了仿真,仿真结果如图7所示。
  图7中,在LxCLKIN时钟的上升沿和下降沿将DSP_Data中的数据写入到FPGA的FIFO中,然后再把FIFO中的数据从数据线 USB_Data中输出给EZ-USB FX2的FD数据线,最后经由USB传送给主机。图中USB_Data的数据率明显只有DSP_Data数据率的1/8,是符合设计要求的。

  在上传传输时,采用异步自动输入方式。EZ-USB FX2芯片FIFO异步写时序如图8所示。根据此时序,在本设计中,FPGA输出的USB_Data信号提供给USB的FD数据线,FPGA输出的 USB_SLWR提供给USB的SLWR,USB端便能在SLWR的下降沿把数据线FD中的数据写入到FX2芯片FIFO中,并由USB传送给主机。
  4 结语
  本文重点对DSP扩展USB接口的数据上行通道的硬件设计进行了详细论述。本系统经测试验证,通过该扩展USB接口,配合定制的上位机软件,DSP数据上传PC机的速率平均达到8 MB/s以上,连接可靠稳定,满足对DSP变量实时监测的数据率需求,同时可通过此接口完成程序的加载与烧写功能。仅需一台带USB接口的PC机,就能完成弹载DSP系统的实时测试与在线程序加载,简捷、通用、方便,具有显著的工程实用价值。

四、基于SigmaDSP的车载音响噪音降低方案

  ADAU1401是一款完整的单芯片音频系统,包括完全可编程的28/56位音频DSP、模数转换器(ADC)、数模转换器(DAC)及类似微控制器的控制接口。信号处理包括均衡、低音增强、多频段动态处理、延迟补偿、扬声器补偿和立体声声场加宽。这种处理技术可与高端演播室设备的效果相媲美,能够弥补由于扬声器、功放和听音环境的实际限制所引起的失真,从而明显改善音质。
  借助方便易用的SigmaStudio开发工具,用户可以使用不同的功能模块以图形化的方式配置信号处理流程, 例如双二阶滤波器、动态处理器、电平控制和GPIO接口控制等模块。
  噪底
  与便携式设备不同,车载音响系统配有高功率放大器,每个功放能够提供高达40 W-50 W功率,每辆汽车至少有四个扬声器。由于功率较大, 噪底很容易被放大,使得人耳在安静的环境下就能感受到。例如,假设扬声器灵敏度约为90 dB/W,则4 Ω扬声器中的1 mV rms噪声可以产生大约24 dB的声压级(SPL),这一水平噪音人耳在安静环境下就能够感受到。可能的噪声源有很多, 如图1所示,主要噪声源包括电源噪声(VG)、滤波器/缓冲器噪声(VF)以及电源接地布局不当引起的噪声VE。VO是来自处理器的音频信号,VIN是扬声器功率放大器的音频输入信号。

  图1. 车载音响系统的噪声源示例


  电源开关期间的爆音:车载音频功率放大器一般采用12 V单电源供电,而DSP则需要使用低压电源(例如3.3 V),滤波器/缓冲器可能采用双电源供电(例如±9 V)。在以不同的电源电压工作的各部分电路之间,必须使用耦合电容来提供信号隔离。在电源开/关期间,电容以极快的速度充电/放电,产生的电压跳变沿着信号链传播,最终导致扬声器发出爆音。图2显示了这一过程。

  图2. 扬声器产生爆音的原理


  虽然知道噪底和爆音的来源,而且也努力采用良好的电路设计和布局布线技术,以及选择噪声更低的优良器件来降低信号源处的噪声,但在设计过程中仍然可能出现许多不确定性。汽车多媒体系统的设计人员必须处理许多复杂问题,因此必须具备高水平的模拟/混合信号设计技能。即便如此,原型产品的性能仍有可能与原来的预期不符。例如,1 mV rms的噪声水平会带来巨大挑战。至于爆音,现有解决方案使用MCU来控制电源开关期间功率放大器的操作顺序,但当MCU距离功率放大器较远时,布局布线和电磁干扰(EMI)会构成潜在问题。
  功耗
  随着车载电子设备越来越多,功耗问题变得日趋严重。例如,如果音频功率放大器的静态电流达到200 mA,则采用12 V电源时,静态功耗就高达2.4 W。如果有一种方法能检测到没有输入信号或信号足够小,进而关闭功率放大器,那么在已开机但不需要扬声器发出声音的时候,就可以节省不少功耗。
  将车载音响系统的噪声和功耗降至最低
  利用SigmaDSP技术,就可以提供这样一种方法, 可以减小系统噪声和功耗,同时不增加硬件成本。图3是一个4扬声器车载音响系统的框图,其中ADAU1401 SigmaDSP处理器用作音频后处理器。除了采样、转换、音频信号数字处理和生成额外的扬声器通道以外,SigmaDSP处理器还具有通用输入/输出 (GPIO)引脚可用于外部控制。微控制器(MCU)通过I2C接口与SigmaDSP处理器进行通信,模拟输出驱动一个采用精密运算放大器 ADA4075-2的低通滤波器/缓冲器级。

  图3. 四扬声器车载音响系统


  SigmaDSP处理器与功率放大器之间的红色信号线控制功率放大器的静音/待机引脚。在正常默认工作模式下,开集GPIO1引脚通过10 kΩ上拉电阻设置为高电平(图中未标注)。ADAU1401具有均方根信号检测功能,可确定是否存在输入信号。当没有输入信号时,GPIO1变为低电平,功率放大器置于静音/待机模式,因而扬声器没有噪声输出,同时功放的待机功耗也很低。当检测到高于预定阈值(例如–45 dB)的输入信号时,GPIO1变为高电平,功率放大器正常工作。这时虽然噪底仍然存在,但由于信号的高信噪比(SNR)将其屏蔽,使它不易被人耳感知到。
  电源开关期间,SigmaDSP处理器(而不是MCU)通过响应MCU的命令直接控制功率放大器的静音/待机。例如,在电源接通期间,来自MCU的控制信号通过I2C接口设置SigmaDSP处理器的GPIO1,使之保持低电平(静音),直到预定的电容充电过程完成,然后MCU将 GPIO1设置为高电平,由此消除启动瞬变所引起的爆音。关闭电源时,GPIO立即变为低电平,使功率放大器处于静音/待机状态,从而消除电源切断时产生的爆音。将功率放大器置于SigmaDSP处理器而不是MCU的直接控制之下的原因是SigmaDSP处理器通常距离功率放大器更近,因此布局布线和 EMI控制也更容易实现。
  如上所述,利用SigmaStudio软件算法可以测量输入信号的均方根电平。使用SigmaStudio图形开发工具,很容易设置均方根检测模块,并用它来控制GPIO状态,如图4的范例所示。

  图4. SigmaStudio均方根检测、GPIO控制和压限器电路图


  均方根检测功能利用均方根算法单元和逻辑单元实现。信号阈值必须具有迟滞功能,用以消除静音功能响应小变化而产生的震颤。例如RMS1阈值设置为–45 dB,RMS2阈值设置为–69 dB。当输入信号高于–45 dB时,GPIO1为高电平。当输入信号低于–69 dB时,GPIO1为低电平。当输入信号位于这两个阈值之间时,GPIO1输出信号保持先前所处的状态(参见图5)。
  图4还显示了用以进一步降低输出噪声的压限器功能。例如,当输入信号低于–75 dB时,扬声器系统的输出信号将会衰减到–100 dB,从而也降低了系统噪底。

  图5. RMS阈值设置以及输入与输出之间的关系


  总结
  噪声和功耗是车载音响系统设计面临的巨大挑战。ADI公司的SigmaDSP处理器已广泛应用于车载音响系统的数字音频后处理,若利用其均方根检测和 GPIO控制功能来显着降低噪声和功耗,则能进一步发挥更大作用。SigmaStudio图形化开发工具支持以图形方式设置各种功能,而不需要编写代码,令设计工作倍加简单。此外,由于功率放大器模块通常离SigmaDSP处理器比离MCU更近,因此用SigmaDSP处理器来控制静音功能,可以简化布局布线工作并提高EMI抗扰度。
五、基于CPCI总线的多片ADSP-TS201引导设计

  数字信号处理器DSP是一种具有特殊结构的微处理器,它专门为实现数字信号处理的各种算法而设计,因而在硬件结构上具有特殊性。TS201是ADI公司TigerSHARC系列中集成了定点和浮点计算功能的高速DSP。该处理器广泛应用于视频、通信市场和国防军事装备中,适合于大数据量实时处理的应用领域。
  TigerSHARC系列DSP引导程序的加载方法非常灵活,可根据实际系统的需求灵活选用。某雷达信号处理机采用6U板形,CPCI总线采用欧洲卡尺寸标准,通过CPCI总线与主机进行数据通信。针对该信号处理机硬件系统,本文提出一种引导方案,该方案采用CPCI总线向板卡传输引导代码,进而依靠FPGA通过链路口引导DSP自启动。
  1 ADSP-TS201引导模式
  DSP的引导就是在DSP系统复位的情况下从DSP外部存储器装载算法程序代码的过程。TS201支持两种引导模式:主引导(Master Boot)模式和从引导(S|ave Boot)模式。
  在主引导模式下,TS201作为主动方,用外部口输出地址,读引导方式选择()等控制信号,从EPROM或FLASH中加载代码。在从引导模式下,TS201作为被动方,不向外部输出控制信号,外部主机或其他设备向TS201的主机或链路口传送要加载的代码,TS201仅启动若干DMA通道,并执行第一个DMA所接收的加载核。
  另外,FS201还可以选择一种“非引导”模式,或利用TS201的(仿真器)USB-ICE加载程序,这种方式可直接将程序加载到TS201内部的RAM或外部的RAM中,DSP直接从RAM中运行程序,常用于DSP的调试过程。
  通过对TS201的引脚的设置,可将DSP的引导过程设置成主引导模式或从引导模式。在DSP复位期间,如果引脚为低电平,则选择主引导模式,DSP从外部EPROM或FLASH中加载程序;若引脚为高电平,则进入从引导模式,DSP为空闲状态,等待主机或链路口加载程序。两种引导模式都有相同的加载过程,具体步骤如下:
  (1)TS201自动启动一个DMA,自动把256个字(32位)传送到内部存储器的地址0x00~0xFF。
  (2)TS201执行上述256个字的指令(加载核),加载核启动其他DMA,把后续指令和数据加载到内部和/或外部存储器中。
  (3)加载核自我覆盖,执行DSP算法程序。
  本系统引导方案采用从引导模式,通过CPCI总线将代码从主机传至FPGA中,再利用FPGA经过链路口启动DSP。
  2 某雷达信号处理机的引导设计方案
  基于某雷达信号处理机硬件处理平台,采用如图1所示的多DSP引导设计方案。

  4片DSP的算法程序代码(.LDR文件)通过上位机软件传输到FPGA中,FPGA通过与DSPA的链路口给DSPA加载程序。DSPA加载成功后,分别引导DSPB,DSPC,DSPD启动。
  采用这种方式加载DSP的优点:调试DSP时可以不使用JTAG仿真器;同时当DSP自启动时,可以不采用FLASH或E2PROM存放程序代码,对于DSP程序的大小没有限制,也节约了电路板的空间及其硬件设计复杂度。
  采用这种方式加载DSP的难点:CPCI总线与FPGA数据传输无误及FPGA与TS201链路口通信,这两个难点在实际工程中都已经解决。CPCI总线与FPGA接口可以采用PLX9656芯片完成数据传输,所以这种加载模式的设计是可行的。
  2.1 自动引导程序设计思路
  为了设计加载(自动引导)程序,首先必须了解ADSP-TS201的软件设计流程,其流程图如图2所示。

  其中,链接描述文件(.LDF)定义了整个系统的存储器配置和程序中数据及代码的具体存放位置。加载核文件(.DEX)是指加载引导核程序,其功能是将用户工程所编译成功的可执行文件(.DXE)合成一个链路口加载方式的输出文件(.LDR)。该加载输出文件用来定义加载过程中TS201的内部和外部存储器如何被初始化。
  在VisualDSP++安装目录的ldr子目录下,ADI公司提供了标准加载核文件和相应的源程序(.ASM)和链接描述文件。一般可直接使用提供的标准加载核文件或对其相应的源程序进行简单修改,重新编译链接生成的加载核文件。加载文件是由引导加载器 (elfloader)将可执行文件进行一定的格式变化,并在起始位置附加上加载核文件生成的。
  由于TS201有三种引导方式(不考虑非引导模式),ADI公司相应地提供了三种不同的加载和文件,分另0为:TS201_prom.dxe,TS201_li- nk.dxe,TS201_host.dxe。三个程序的核心思想和功能完全一致,只是由于使用的加载端口和方式不同,在具体代码实现上稍有差异。由于本系统采用链路口启动,同时对于DSPA,DSPB,DSPC,DSPD都采用不同的链路口启动,因此采用链路口加载核文件,需要对加载核文件稍作修改,满足不用链路口启动的需求。
  2.2 本信号处理机的复位引导设计流程
  如图1所示,4片DSP要运行的程序最终通过上位机读取后,通过CPCI总线传至FPGA,4片DSP为链路口引导模式。DSP复位后,DSPA从FPGA加载程序,DSPA加载完成后,再分别通过链路口加载DSPB,DSPC,DSPD。加载完成后,4片DSP正常执行各自的程序。
  结合以上各部分的分析,可以看出要实现该信号处理机中4片DSP的正确引导,所需的工作由以下几步组成:
  (1)由DSPB要执行的程序(DSPB.dxe),结合链路口的加载核程序生成DSPB的加载文件(DSPB_bin.ldr)。需要注意的是,该链路口加载核程序不能直接使用提供的标准链路口加载程序,必须将提供的链路口加载核文件(TS201_link.asm)中的LINK常数改为 1(#define LINK 1),即DSPB由链路口1引导。
  (2)与(1)类似,生成DSPC的加载文件 (DSPC_bin.ldr),只是需要把链路口加载核文件(TS201_link.asm)中的LINK常数改为2(#define LINK 2),即DSPC由链路口2引导。同样DSPD由链路口2加载,同样生成DSPD的加载文件(DSPD_bin.ldr)。
  (3)由于 DSPA要通过链路口来对DSPB,DSPC,DSPD进行程序引导,所以在进行DSPA编程时,需要在程序的最开始添加给后面所有ADSPTS2 01的引导程序。而每片ADSP-TS201的程序都由引导码和用户程序构成,所以在DSPA给其余DSP传输程序时将传输完整.1dr文件的数据。
  DSPA程序流程图如图3所示。

  (1)DSPA关闭所有中断,所有链路口和所有DMA通道,进行初始化;
  (2)开启链路口3,2,1,0,设置链路口3接收中断,链路口2,1,O发送中断;
  (3)设置链路口3通过DMA模式接收128 b数据;
  (4)判断目前加载的DSP,设置相应的链路口,发送接收到的128 b数据;
  (5)判断DSPB,DSPC,DSPD是否加载完成,否则继续通过链路口3接收数据,直到DSP都加载完成;
  (6)加载完成后,DSPA运行自身DSP程序。
  3 系统测试结果
  上述引导设计在某雷达信号处理机中得到验证,通过上位机软件,能灵活地加载引导代码,使得调试更加便捷。测试上位机软件如图4所示。

  修改雷达系统的数字信号处理算法,成功地将算法代码加载到信号处理机中,从而验证引导设计方案正确可行。
  4 结语
  本文以某雷达信号处理机为平台,设计实现了基于CPCI总线的链路口多DSP引导方案,介绍了软件设计流程及引导方案思想,最后成功验证了本引导方案的正确性和可行性。本引导方案不使用FLASH或E2PROM存放代码,使多DSP的软件编写更加灵活,调试更加方便,同时使得硬件电路设计更加简洁。
返回列表