引言
TigerSHARC 128-bit数字信号处理器是继高性能DSP——ADSP-2106x SHARC之后的新一代产品,TigerSHARC将数字信号处理器性能提升到了一个新的高度。2001年,美国ADI公司发布了其高性能TigerSHARC系列DSP的新成员,ADSP-TS101s的有关技术文件。从2002年下半年起,在国内市场上可以订购到ADSP-TS101s的正版芯片。ADSP-TS101S
Tiger SHARC DSP是一款性能极高的静态超标量处理器专为大的信号处理任务和通讯结构进行了优化。该处理器,将非常宽的存储器宽度和双运算模块组合在一起,建立了数字信号处理器新标准。
ADSP-TS101S主要性能特点:
·300MHz的运行速度,3.3ns指令周期;
·6M Bits片内SARAM;
·双运算模块——每个包含一个ALU,一个乘法器,一个移位器和一个寄存器组;
·双整数ALU,提供数据寻址和指针操作功能;
·集成I/O包括14通道的DMA控制器,外部端口,4个链路口,SDRAM控制器,可编程标志引脚,2个定时器和定时器计满引脚等用于系统;
·IEEE 1149.1兼容的JTAG端口用于片上仿真;
·片上仲裁通过共享总线可无缝连接多达8个TigerSHARC DSP。
系统设计要求
该高速图像处理系统主要完成的功能是:实时处理CCD(Charge Coupled Device)连续采集输入的图像数据,并从每一帧图像中提取出其中最长的一条直线。具体要求指标如下:
1)为达到与CCD同步的实时处理,每秒处理25帧图像;
2)图像为320 240阵列,像素为16位精度定点数;
3)从每帧图像中提取其中的直线信息,并给出最长直线的坐标;
ADSP-TS101S的应用分析
该系统的设计难点主要是在数据量大,时间要求短的情况下如何实现图像数据的高速处理。每帧图像的数据量大小为320 240=76.8
Kbit,而按照系统的设计要求,处理每帧图像数据仅有40ms的时间,除去由FPGA中FIFO(输入输出缓存单元)缓存由CCD进入的图像数据时间(20ms),留给系统处理数据的时间仅有20ms。选用时钟为300MHz的TS101芯片,即每个指令周期为3.3ns。结合数据运算量的大小以及整个系统成本的考虑,选用4片DSP组成主处理系统(为提高运算速度及精度,可选用6片甚至8片DSP完成系统功能)。此外,由于数据量大,增加一片64M的SDRAM补充DSP内部存储单元的不足。
硬件应用设计
ADSP-TS101S有两套独立的电源1.2V和3.3V,内部逻辑和模拟电路电源必须满足1.2V的要求,I/O缓冲电源必须满足3.3V的要求。而且需要注意的是DSP供电的顺序是先提供1.2V,然后是3.3V。由于系统芯片引脚复杂性及电路的庞大,本文不再给出详细的电路原理图。系统硬件原理框图如图1所示。
图1 系统硬件原理框图(略)
系统加电后,FPGA从FPGA -FLASH加载程序代码;四片DSP(DSP0~DSP3)上电后分别从 FLASH加载程序,等待图像数据的输入。CCD每隔20ms输入一帧数据(76.8K)至FPGA的FIFO缓存,通过外部DMA方式由DSP0传送至SDRAM,之后通过总线仲裁,数据流平均分成四部分由DSP0~DSP3并行执行。最后计算结果由DSP3通过FPGA送回,由串口输出至显示屏。系统调试过程中,通过JTAG测试访问端口对系统进行调试与仿真。
软件应用设计
为了实现系统的高速性,节省系统的运算时间,如何实现各DSP之间算法执行的并行性是软件设计中应考虑的首要问题。由于图像数据是通过FIFO依次输入的,并非一次性读入,要实现算法的并行执行就转化为数据流如何分配的问题。借助SDRAM,本系统数据流分配图如图2所示。
图2 系统数据流分配图(略)
主程序设计
软件设计采用模块化结构,算法采用现已相当成熟、使用最多的图像处理算法。主程序模块主要有初始化模块、数据接收模块、中值滤波模块、边缘增强模块、边缘细化模块和直线提取模块。系统上电后,对系统进行初始化,初始化主要完成DSP专用寄存器的设定,特别是各中断寄存器的设置以及相关存储单元的清零。主程序流程图如图3所示。
图3 主程序流程图(略)
中断服务程序设计
系统程序设计中,中断服务程序是控制程序执行的一种重要方式。TigerSHARC DSP支持多种类型的中断,它们中的一部分由内部产生,另外一些则由外部产生。TigerSHARC
DSP的大多数中断都是专用的,但也有四个外部中断和一个中断寄存器。
在该系统的设计中,DSP接收FIFO输入的图像数据,就是通过检测外部IRQ0中断引脚来实现的。该中断采用的是边沿触发方式:数据准备好,则FPGA给DSP0的IRQ0引脚一个下降沿,触发外部IRQ中断,进入中断服务程序,并在中断服务程序中设置下一步需要的外部口DMA寄存器,设置完毕进入外部DMA中断服务程序;反之DSP0继续等待,直到有外部中断产生为止。
由于出现中断嵌套,因此服务程序的第一条指令必须专门用来保存状态机的当前状态,所有在中断服务程序中可能用到的寄存器必须入栈保存。由于IRQ0-3中断优先级高于DMA通道0-13中断,因此总是先响应IRQ0中断,再响应外部DMA中断。
外部IRQ中断服务程序如图4所示。
图4 中断服务程序流程图(略)
DMA程序设计
DMA(直接存储器访问)方式是不需要处理器核干预的数据传输机制。TigerSHARC片内的DMA控制器允许将数据传输作为一个后台任务执行,从而将处理器核释放出来,进行其他数字信号处理操作。在该系统设计中,主要用到了两种DMA传输方式:片间链路口DMA和外部口DMA。链路口主要用于4片DSP之间传送批量数据,而外部口DMA主要用于DSP与SDRAM之间批量数据的传输。无论何种DMA方式,编程的关键是设置相应的接收TCB寄存器和发送TCB寄存器。下面分别给出两种方式下用Tiger
SHARC DSP汇编语言编写的DMA 中断寄存器设置方式:
1)链路口DMA
程序段实现功能:用链路口3完成数据的DMA接收。
.section program;
……
xr0=0x90010000;;
xr1=0x00000000;;
IMASKH=xr0;;
//使能全局中断和矢量中断
IMASKL=xr1;;
//关闭所有DMA通道中断
xr0 = IMASKH;;
xr1 = 0x00000001;;
xr0 = r0 or r1;;
//使能DMA11(链路口3DMA的 接收通道)中断
IMASKH = xr0;;
j0 = j31 + dma11_int;;
//设置DMA中断向量
IVDMA11 = j0;;
xr8 = N;;
//数据量
xr9 = lshift r8 by 16;; xr10 = 2;;
//修正值
xr4 = rx_data;;
//接收目的地址
xr5 = r9 or r10;;
//00000000010000000000000000000100
xr6 = 0x00000000;;
xr7 = 0x45000000;;
//01000111000000000000000000000000
xr0 = 0x000004da;;
LCTL3 = xr0;;
//link3控制设置
DC11 = xr7:4;;
//开启link3接收DMA
idle;;
2)外部口DMA
程序段实现功能:通过外部口1完成数据从SDRAM到DSP内存单元的传送。
.section program;
……
xr0 = IMASKL;;
xr1 = 0x0000C000;;
xr0 = r0 or r1;;
IMASKL = xr0;;
// 使能 DMA0和 DMA1
xr4 = N;
// 数据量
xr5 = lshift r4 by 16;;
xr6 = 1;;
// 修正值
xr1 = r6 or r5;;
// 00000000010000000000000000000100
xr2 = 0x00000000;;
xr3 = 0x43000000;;
//01000111000000000000000000000000
xr8 = sdram_data;;
//源地址
xr9 = xr1;;
xr10 = 0x00000000;;
xr11 = 0x83000000;;
xr0 = rx_data;;
//目的地址
DCS1 = xr11:8;;
// 加载源 TCB
DCD1 = xr3:0;
//加载目的TCB
idle;;
结论
本文结合TigerSHARC芯片ADSP-TS101S的主要性能特点,详细介绍了该芯片在高速图像处理系统中的应用,并给出了较详细的软硬件设计原理。通过使用4片ADSP-TS101S的并行处理,该系统很好的完成了系统要求的高速性能。ADSP-TS101S
TigerSHARC DSP芯片以其特有的高性能结构和优化简洁的指令系统,有着非常广阔的应用前景。
|