基于TS201的信号处理软件设计

2014-03-19 14:45朱启强
网络安全与数据管理 2014年22期
关键词:信号处理寄存器中断

朱启强

(中国电波传播研究所,山东 青岛 266107)

0 引言

TS201是美国ADI公司生产的一款高性能数字信号处理器,主频高达600 MHz,24 MB内存,集成双运算单元、4条独立128 bit宽内部总线、14个DMA通道控制器和一个SDRAM控制器;具有64 bit外部总线接口及4个Link接口。TS201处理器因其运算速度快、内存容量大、接口丰富、扩展能力强等特点被广泛应用到现代雷达、无线通信、图形图像处理等信号处理系统中[1-2]。

目前,基于TS201的硬件设计文章较多,如参考文献[3-5]均是关于硬件系统设计的,而有关软件设计却很少。如何利用好TS201处理器的各种资源进行应用软件的优化设计,对于实现系统功能、提高软件运行效率及稳定性是至关重要的。本文结合具体项目,对如何正确利用处理器的各种资源及其优化设计进行了分析,并在实际项目的信号处理软件设计中进行了应用,验证了设计方法的正确性。

1 系统及算法介绍

在某探测系统中共使用4片TS201处理器用于完成信号处理功能。4个处理器之间通过Link口互联,每个处理器外挂256 MB的SDRAM,并通过FPGA与3个光纤接口连接。

处理器的任务是通过光纤接口完成对基带数据的接收,并通过Link口将数据分发到不同的处理器;在不同的处理器上同时对基带数据进行实时处理,最后将处理结果合成并进一步处理后通过光纤接口输出。信号处理算法包括通道校准、波束合成和脉冲压缩,在处理器中实现这些算法所涉及的运算包括FFT、复数向量乘法、复数矩阵乘法、复数向量加法以及IFFT等,用到的处理器资源包括Link口、存储器、中断、定时器等。

2 软件设计

2.1 Link口数据传输

2.1.1 Link口初始化

处理器之间的数据传输均是利用Link口进行的,在处理器复位之后,首次使用Link口传输数据之前必须先对其初始化。Link口初始化主要包括收、发Link口之间握手、数据位模式选择和传输时钟频率设置。握手是发送Link口在初始化时将一信号置成高电平,向接收Link口表明收发已连接;Link口数据线由4对LVDS信号线组成,可以使用4对同时传输,也可以只使用1对数据线传输,分别称为4位传输模式和1位传输模式;Link口的数据传输时钟频率由处理器的核心频率分频得到,分频系数可以为1、1.5、2和4。初始化步骤如下:

(1)设置发送Link口功能无效;

(2)使能发送Link口,并设置传输模式为4位,分频系数为1.5;

(3)等待2 500个时钟周期以上;

(4)设置接收Link口无效;

(5)使能接收Link口,传输模式与发送设置相同。

实际探测项目中的系统时钟频率为50 MHz,处理器的核心时钟频率为600 MHz,由系统时钟经过锁相环12倍倍频得到。Link口时钟频率经过分频之后可以为600 MHz、400 MHz、300 MHz和150 MHz,考虑到稳定性问题,这里选用400 MHz作为Link口的时钟频率。

Link口初始化时的握手需要两个处理器程序同步运行,这就需要上位机的参与。由于上位机同步不是十分精确,一旦同步出现问题,Link口初始化就会失败,数据传输就会出现错误。

为了解决同步问题,可以采用另外一种Link口初始化方式。这种初始化方式是利用软件设置寄存器强制接收Link口处于接收状态,而不再需要硬件握手,即发送Link口和接收Link口初始化不再有联系,可以分别独自初始化。发送Link口初始化步骤如下:

(1)设置发送Link口无效;

(2)使能发送Link口,并同时设置4位传输模式和发送时钟频率。

接收Link口初始化步骤如下:

(1)设置接收Link口无效,同时设置接收控制寄存器中RINIF和RINIV位为1;

(2)等待2 500个时钟周期以上;

(3)使能接收Link口,并设置传输模式与发送设置相同。

2.1.2 Link口传输配置

处理器为每个Link口配备了两个DMA通道控制器,专门用于Link口发送和接收数据。每个DMA通道都有一个配置块(TCB),配置块包含若干寄存器。利用Link口DMA通道进行一维发送或者接收数据时需要配置3个寄存器:DI、DX和DP。

DI寄存器用于存储发送数据时的源地址或者接收数据时的目的地址,可以是内存也可以是外存。DX低16 bit表示源地址或者目的地址的增量,高16 bit用于存储传送数据的长度,由于只有16 bit,因此启动一次DMA所能传送数据的最大长度为65 536,如果传送的数据长度大于65 536,需要分多次进行传输。在DP中需要进行的设置为:源地址或者目的地址是内存还是外存,一次读取或者存放数据的宽度(单位为字,必须设置成4),以及DMA结束中断是否打开。数据宽度设置成4后,地址增量也必须设置成4。发送数据时DMA一次读取4个字,并通过Link口发送给接收方,接收DMA接收到4个字后将其写入到目的地址,源地址和目的地址都会自动增加4,为下次数据传输做好准备。每发送一次数据,发送方和接收方都会将数据长度减去4,当数据长度为0时表明发送和接收都已完成。如果DMA结束中断被使能,那么在发送结束和接收完成后都会收到DMA完成中断。由于Link口DMA通道采用4字操作,因此传送数据的长度必须为4的整数倍,且至少应为4。源地址和目的地址必须4字对齐。

2.2 中断设计

在TS201处理器中有很多中断源,有硬件中断也有软件中断,经常用到的中断源包括4个Link口请求中断,8个Link口DMA通道发送或者接收完成中断,4个外部端口DMA通道发送或者接收完成中断,4个外部中断,4个定时器中断,其中2个中断优先级较低,另外两个中断优先级较高。

利用这些中断之前必须先要编写中断服务程序,并与中断源进行关联。

在用DMA进行数据传输时,必须等到本次DMA完成才能启动下一次DMA,否则DMA通道将会阻塞,导致无法正常传输数据。可以在DMA完成中断服务程序时设置一个标志,通过该标志来判断DMA是否已经完成。

当Link口接收缓冲满时会发起一个请求接收中断,可以根据该中断进行数据接收。

外部中断可由外设发起,处理器收到外设中断后与外设进行通信。

向定时寄存器中写入定时值,并启动定时器,定时器按一定时钟周期对定时值循环减一,当减到零时就会产生一个定时中断。

Link口请求中断是电平触发方式,外部中断可设置成沿触发也可设置成电平触发,其他中断均为沿触发。在本系统中有3个外部中断源通过复用连接到处理器的中断信号IRQ2上,同一时刻可能有两个或者3个中断产生,如果将该中断的触发方式设置成沿触发,势必会造成中断丢失。为了解决这个问题可以将中断设置成电平触发方式,一旦中断产生只有处理器响应之后并由处理器自己撤销已经响应的中断;没有响应的中断会继续产生,处理器退出前一个中断服务程序之后会继续响应下一个中断,并进行撤销处理,直到处理完所有的中断。

Link口请求中断的触发方式固定为电平触发,一旦此中断产生,处理器就必须马上响应,否则频繁的中断产生会耽误处理器的正常运行。对Link口请求中断的响应就是启动DMA接收由Link发送来的数据。需要特别注意的是,配置完Link口DMA接收通道后,到DMA启动有一定时间延迟,而请求中断只有在DMA启动后才会自动撤销。所以在配置完DMA通道后需要再等待约1 μs才能进行其他处理,否则,请求中断会再次产生,造成中断重入错误。

每个中断都有自己的优先级,低优先级的中断可以被高优先级的中断打断,进入中断嵌套,低优先级中断不能打断高优先级的中断。特别是对于电平触发的中断,如果不能及时处理,中断会持续不断地产生,不但影响处理器的正常运行,低优先级的中断也将一直无法进入。

2.3 存储器访问

很多系统对信号处理的实时性要求较高,在硬件资源一定的情况下,就需要通过优化软件设计来满足实时性要求。下面以通道校准算法为例来介绍使用存储器的优化方法。

通道校准算法可分解成两次FFT运算和一次向量乘法运算。在实现本系统的信号处理算法时调用了第三方函数库,其FFT函数原型如下:

ez_c2fft_f(A,BUF,TW,twstr,N,C)

其中,A、C、BUF和twstr均为复数向量地址指针,分别指向4片存储区域,可以使用内存,也可以使用外存,但处理器访问外存时的速率远低于内存。因此,为了提高运算速度,这4片存储区域应尽量选择内存。

处理器的内存为24 Mbit,被平均分成了6块,通过交叉点开关分别与处理器内部的4条总线相连。由于TS201处理器采用了超级哈佛结构和静态超标量处理,并支持单指令多数据(SIMD)模式,使处理器每周期可同时执行4条指令和6个浮点运算[6-7];4条内部总线可同时访问不同的4片内存,访问宽度为128 bit。因此,在FFT运算时为其分配的存储区满足如下要求时将会大大提高运算效率:(1)存储区位于内存;(2)存储区被分配在不同的存储块内;(3)存储区首地址4字对齐。

在通道校准时需要用到通道校准系数,通道校准系数在标校工作状态下求出,但由于其数据量较大,必须先搬移到外存,在通道校准时再搬移到内存使用。有4个DMA通道可以用于内存与外存之间数据的搬移操作。在配置DMA通道时,DP寄存器中的LEN可以被配置成单字、双字或者4字,当配置成4字时,数据传输效率最高,源地址和目的地址也必须按4字对齐。

2.4 定时器操作

TS201处理器提供两个通用定时器,存储初始定时值的寄存器为64 bit宽,但配置时必须按32 bit进行访问。两个定时器都是减法定时器,设置完定时值并启动定时器后,定时器在每个定时时钟周期对初始值进行减一操作,直到减到零为止,然后重新载入初始定时值并再次按定时时钟周期进行减一操作。每当定时器减到零时就会产生定时中断。定时器的时钟频率为处理器核心时钟频率的一半,本系统设计中定时器的时钟频率为300 MHz,一个定时器最大定时时间很长,但只配置定时器低32 bit时最大定时约14.3 s。不再使用定时器时要及时关闭定时器。

使用定时器可以测试一段代码的运行时间。在要测试代码段的开始设置定时器初始值,然后启动定时器,并读取定时器的当前计数值,在代码段运行结束时,再次读取定时器的计数值,两次计数值的差值除以计数时钟频率300 MHz,便是代码段的运行时间,单位为μs。还可以用定时器监测某个事件是否在规定的时间内完成。在事件开始之前设置好定时值,并启动定时器,如果事件正常完成就关闭定时器;如果事件超时,就会收到定时器定时完成中断,先关闭定时器,然后进行相应的超时处理。

3 结论

本文结合具体项目和实际工作经验,对TS201处理器的各种资源进行介绍,提出了利用这些资源进行软件优化设计的方法。利用该方法设计的信号处理软件已成功应用到某探测项目中,实现了项目提出的各种功能,充分满足了系统实时性要求,程序运行稳定,验证了本文所提出的基于TS201软件设计方法的正确性。本文也为同类软件设计的工程师提供了经验和重要参考价值,能有效提高所设计软件的实时性和稳定性,同时节省了开发时间和成本。

[1]Analog Devices,Inc.ADSP-TS201 TigerSHARC processor hardware reference[EB/OL].[2014-07-01].Revision1.1,December 2004.

[2]王菲,汪学刚.ADSP-TS201的系统设计及外部总线接口技术[J].现代电子技术,2007(11):53-55.

[3]冼友伦,卢护林,苏涛.基于FPGA的多通道高速实时信号处理系统设计[J].电子技术应用,2008,34(9):21-24.

[4]顾颖,张雪婷,张飚.基于ADSP-TS201S的通用雷达信号处理机的设计[J].现代雷达,2006,28(6):49-51.

[5]宋思盛,肖开健.基于TS201的通用并行信号处理板设计[J].火控雷达技术,2008,37(2):65-68.

[6]李冬仙,王斌,吴瑛.短波宽带阵列信号源的设计与实现[J].电子技术应用,2008,34(3):52-54.

[7]张泽云,赵宏生,徐朝阳.基于ADSP-TS201S的雷达信号处理研究[J].舰船电子对抗,2011,34(3):46-48.

猜你喜欢
信号处理寄存器中断
STM32和51单片机寄存器映射原理异同分析
Lite寄存器模型的设计与实现
基于FPGA的中断控制器设计*
《信号处理》征稿简则
《信号处理》第九届编委会
《信号处理》征稿简则
《信号处理》第九届编委会
移位寄存器及算术运算应用
跟踪导练(二)(5)
千里移防,卫勤保障不中断