ADSP_TS101S(以下简称TS101)是美国ADI公司推出的TigerSHARC系列数字信号处理器中一款高性能的静态超标量处理器,它专为大规模信号处理使命和通讯运用进行了结构上的优化,广泛运用于雷达等高速实时信号处理体系。
将程序代码加载到DSP内部程序空间时,一般选用开发器的JTAG接口将履行文件加载到DSP内存里进行调试;在硬件仿真完结后,又经过JTAG接口将生成的ldr文件烧写到与TS101相连的FLASH里固化。然而在许多情况下,运用开发器加载或固化程序很不便利,乃至无法完结,因而需求开发一种脱离开发器的TS101加载办法。依据这种需求,规划完结了依据USB总线的TS101链路口加载,只需一根USB线缆,即可完结TS1 01的程序在线重加载和固化。
1 Link Port协议
链路口(Link Port)是TS101的一种高速互联接口,它的通讯是经过一个8位的数据总线和3个操控信号进行的,有4组LINK管脚。其间LxC LKIN和LxCLOUT是时钟/应对输入和输出管脚;LxDAT[7:0]-数据输入输出总线;LxDIR是LINK的方向指示信号。Link Port的最简略的衔接办法(如图1所示)用了LxCLKIN,LxCLKOUT,和LxDAT。每个ADSP-TS101 DSP的LxCLKOUT与其它的LxCLKIN相连,两片TigerSHARC101 DSP芯片之间用LxDAT数据总线相连。
Link Port的最小传输单位是8个时钟周期,数据总量为4倍字长(16字节,在时钟的双沿触发)。传输被发送端初始化,只要当接纳端设置LxCLKOUT(关于发送端为LxCLKIN)为高电平,发送才干被初始化为一次传输。LxCLKOUT为高电平意味着接纳端为接纳形式而且接纳缓冲器为空。
2 TS101的软件规划流程及加载引导办法
TS101的软件规划流程如图2所示。其间,链接描绘文件(.LDF)界说了整个体系的存储器装备和程序中数据及代码的详细寄存方位。加载核文件(.DXE)是指加载引导核程序,其巨细为32 bit,放在加载文件的开端部分,其功用是用来完结TS101的正确引导。ADI公司在其DSP集成开发环境Visual DSP++装置目录的ldr子目录下供给了规范加载核文件及相应的源程序(.ASM)和链接描绘文件。一般可直接运用供给的规范加载核文件或对其相应的源程序进行简略修正,从头编译链接生成所需的加载核文件。加载文件是由引导加载器(elfloader)将可履行文件进行必定的格局改变,并在开端方位附加上加载核文件生成的。
加载程序的外部设备能够直接向链路口缓冲写入数据,只需写入速率不超越DSP的主时钟频率即可。此处的外部设备选用计算机的USB总线。鉴于FPGA在数字电路体系规划中具有牢靠性高、规划灵敏、易于开发等长处,本文选用FPGA进行Link Port与USB的接口规划,使USB的输出满意Link Port的协议,以完结DSP的链路口加载。
3 USB总线及其与Link Port的接口
选用FPGA完结依据USB总线的TS101的Link Port加载结构框图如图3所示。
3.1 Link Port发送模块
ADI公司网站上有引荐的完结TS101的Link Port收发协议的VHDL代码,可是比较复杂,鉴于本文只需求运用Link Port的发送功用,且无需缓冲,故依据图1所示的最小Link Port装备编写代码,完结Link Port发送功用。依据FPGA的TS101的Link Port发送模块结构框图如图4所示。
图4 中的FIFO担任对输出数据进行缓冲,当输入数据的速率高于Link Port时钟的频率时,Link Port的数据能够先存在FIFO数据中,当存入必定数量今后,再以Link Port的时钟把数据读出。当输入数据的速率低于Link Port的时钟数率的时分,Link Port的数据相同能够先存在FIFO中,当存入整数倍的4字数据量后,再以Link Port的时钟的数率发送出去。
图4中的操控模块是Link Port发送模块的要害模块,首要担任发生读FIFO的读使能信号和Link Port的发送时钟依据Link Port发送的时序特色,运用状况机来完结数据流的操控。当Link Port没有作业时,坚持等候状况。需求传输数据时,首要查看LxCLKIN是否为高电平,若是,则阐明接纳端为接纳形式而且接纳缓冲器为空,能够初始化一次发送,不然要等候。开端传输数据时,数据首要被写入FIFO中,当判别到FIFO的输出信号EMPTY为高时,将处于默许高电平的LxCLKOUT信号拉低,在经过6个时钟周期的低电平后(在此期间检测LxCLKIN是否一向为高电平),LxCLKOUT拉高构成第一个LINK时钟上升沿,这个时分应该在数据线上发生FIFO内的第一个输出数据。LxCLKOUT下一周期拉低,第2个数据输出,这样经过16个时钟周期今后表明一次4字传输结束。然后检测FIFO中剩下的数据FIFO_RDATA_COUNT,若大于4则持续上面的传输操作,不然,阐明FIFO中只剩最终一个4字,这次传输LxCLKOUT的最终一个时钟上升沿发生今后,不再变低,一向坚持高电平。然后,把本模块中的一切暂时寄存器和FIFO复位。在发生完满足长度脉冲长度的清零信号后状况机从头进入等候状况。
3.2 USB接口模块
USB接口模块选用FPGA操控USB协议解析芯片来完结。其完结框图如图5所示。
本计划中,USB2.0协议解析芯片选用CYPRESS公司的CY7C68013A,它将一个USB外设所需的一切功用集成在一块芯片上。芯片供给了3种传输数据的办法,文中挑选从FIFO(SlaveFIFO)形式。在SlaveFIFO形式下,8051微操控器不在数据的传输通路上,只担任设备的初始化和相应主机的操控传输恳求,高速大批量的数据传输经过外部的主控者经过SlaveFIFO接口直接将数据填充到FX2LP的端点中(或许从里边读出),然后由硬件操控将数据传输给主机。
Slave FIFO的读写办法有两种:同步读写以IFCLK为时钟,IFCLK能够外部输入,也能够运用内部的30 MHz或许48 MHz时钟;异步读写时IFCLK信号无效,只需求供给读写信号即可进行数据读写。本文挑选同步读写。
FPGA选用Xilinx公司的XC3S1000。FPGA在其内部树立2个双口RAM,来缓存收发数据;并与协议解析芯片的各操控信号相连,完结对其的读写操控。文中仅运用这个芯片的接纳逻辑完结加载文件的USB总线传输,发送逻辑只用来做辅佐调试和状况监测。
3.3 LINK口发送模块与USB接口模块之间的接口
USB接口除用于加载TS101外,还可用于TS101正常作业时与PC机的数据传输,故关于不同意义的下行信息,需求依据其功用做不同处理。
上位机向FX2LP发送数据时,是经过将需求发送的数据打包(每包的巨细由固件程序决议),每隔固定一段时间向下发送一包完结的。在这里,每包数据包括512个字节,其间前8个字节用来当帧头,后504个为需求下传的数据。可经过帧头的不同来区别下行信息的不同意义。其详细意义如表1所示。
FPGA轮询每包数据的帧头,假如是TS101与PC机交互数据,则送到双口RAM中;假如是TS101加载数据,则送到LINK口发送模块中;假如是/BMS拉高(低)指令,则经过相应的管脚拉高(低)/BMS;假如是复位TS101指令,则告诉复位逻辑对TS101进行复位,一起复位数据缓冲FIF O。
在完结依据USB总线的TS101的LINK加载时,上位机将DSP加载文件(.ldr文件)打包后,经过USB线缆向FX2LP发送。.ldr文件的巨细不必定为504字节的整倍数,因而最终一包数最终可能有许多0。有必要把这些0去掉,不然可能在加载TS101时导致其死机。为处理该问题,在帧头界说中,用帧头2来区别是否为最终一包数,假如不是最终一包数,上位机打包时,帧头2赋为01F8(即504),假如是最终一包数,则把将有用数据长度赋给帧头2。FPGA不断将TS101加载数据送到LINK口发送模块中,当发现是最终一包数据时,读取有用数据的长度,并发动一个计数器,当计到该长度时,让FIFO读使能失效,则只要ldr文件的有用数据被加载到TS101中。
4 TS101程序在线重加载和固化的完结
首要经过上位机发送/BMS拉高指令,让FPGA将TS101的/BMS管脚拉高,然后发送复位TS101指令,复位TS101和FIFO;之后,发送/BMS拉低指令,让FPGA将TS101的/BMS管脚拉低,最终,将ldr文件打包为TS101加载数据包并向下发送。发送结束后,TS101即可运转该程序。
若要完结TS101程序的固化,则可即将烧写的程序生成为ASCII格局的ldr文件,转化为.dat格局,经过include指令编译到EPROM(FLASH)的烧写程序中,生成为Link加载ldr文件,经过USB总线进行加载。烧写完结后,可经过闪灯或经过USB总线上传状况信息来指示烧写成果。
5 结束语
文中提出的依据USB的TS101链路口加载办法成功运用于某雷达信号处理渠道的程序加载,其功用验证是经过运用本办法加载各种DSP运用程序并进行功用测验来完结的。运用该计划能安稳牢靠的完结TS101程序的重加载,而且能对与之相连的FLASH芯片AT29LV040A进行成功烧写。