技术中心新员工培训教材DSP工程◆DSP基本特点◆ADIblackfinDSP介绍◆可视电话DSP系统介绍技术中心新员工培训教材◆DSP基本特点◆ADIblackfinDSP介绍◆可视电话DSP系统介绍技术中心新员工培训教材DSP特点(1)DSP一般属于ModifiedHarvard架构,即它具有两条内部总线:数据总线、程序总线。程序与数据存储空间分开,各有独立的地址总线和数据总线,取指和读数可以同时进行。传统的冯·诺曼(VonNeuman)结构取指令和取数据都访问同一存储空间,需要分时进行,数据吞吐率低。技术中心新员工培训教材DSP特点(2)采用流水作业。每条指令的执行划分为取指令、译码、取数、执行等若干步骤,由片内多个功能单元分别完成。相当于多条指令并行执行,从而大大提高了运算速度。BLACKFIN采用了8级流水线结构技术中心新员工培训教材DSP特点(3)独立的硬件乘法器。乘法指令在单周期内完成,优化卷积、数字滤波、FFT、相关、矩阵运算等算法中的大量重复乘法。DSP除法仍然采用移位减的方法,一般需要16条指令完成,因此除法要尽量避免。如比较A/C和B/D可以转换成比较A*D和B*C。Blackfin包含两个乘法运算单元(MAC),可以在单周期内完成两次16位×16位运算。技术中心新员工培训教材DSP特点(4)零开销循环:处理器在执行循环时,不用花时间去检查循环计数器的值,直接跳回到循环的顶部、并将循环计数器减1。在存在大规模循环的情况下,显著降低算法复杂度。P5=0X20;LSETUP(START,END)LC0=P5START:R5=[P0];END:P0++;Blackfin支持两级零开销循环。技术中心新员工培训教材DSP特点(5)独立的DMA总线和控制器。有一组或多组独立的DMA总线,与CPU的程序、数据总线并行工作,提高数据吞吐能力。Blackfin561处理器片内集成了多条DMA总线,总线宽度高达32位,总线频率高达133Mhz。技术中心新员工培训教材DSP特点(6)大多数DSP使用定点计算。虽然浮点运算精度高,但是对DSP来说,廉价和运算速度更加重要。为了不使用浮点机器而又保证数字的准确,DSP处理器在指令集和硬件方面都支持饱和计算、舍入和移位。定点计算增加了DSP算法设计的难度,降低了代码的可读性。技术中心新员工培训教材定点小数在定点DSP中,小数用Qn来表示,0=n=15,n值代表小数点的位置。例如:B0001,0000,0000,0000,如果是Q15小数,则值为1/8;如果是Q14小数,则值为1/4;如果是Q13小数,则值为1/2;程序员必须时刻了解当前小数点的位置。技术中心新员工培训教材定点小数乘法和整数乘法◆在DSP中,存在两种乘法,一种是16位整数×16位整数,一种是16位小数×16位整数◆如果是16位小数×16位整数,乘法结果必须左移一位(如果是Q15小数)◆blackfin提供小数乘法指令,乘法结果已经硬件左移一位。◆简单小数乘法尽量用移位来实现。如a=a*1.25等效于a+=a2。技术中心新员工培训教材DSP特点(7)DSP的运算能力远远高于普通CPU,DSP的运算能力通常用MIPS或MMAC来标识。MIPS:每秒百万条指令。MMAC:每秒百万次乘加运算。ADIBF533最高主频756Mhz,则最高运算能力756MIPS或1512MMACs(BF533内部集成两个乘加运算单元)技术中心新员工培训教材◆DSP基本特点◆ADIblackfinDSP介绍◆可视电话DSP系统介绍技术中心新员工培训教材Blackfin是ADI公司推出的一类新型的嵌入式处理器,专为满足目前音频、视频、通信应用等方面的计算需求和降低功耗而设计。ADSP-BF533和ADSP-BF561是Blackfin系列中具有代表性的DSP处理器。具有高处理能力、低功耗、丰富的片内资源、丰富的外设接口等特点。技术中心新员工培训教材BF561的强大功能内部集成两个600MHz主频的Blackfin处理器核,运算能力高达2400MMACs。328K片内存储器,丰富的片内寄存器资源。16K程序cache和32K数据cache专用视频处理指令SAA和SIMD(singleinstructionmultipledata)两个16通道DMA控制器和1个片内存储器DMA丰富的外设接口:2*PPI,2*SPORT,SPI,UART,64*GPIO,JTAG...技术中心新员工培训教材存储器片内L1存储器每个核包含:32K程序SRAM(其中16K可配置为cache)64K数据SRAM(其中32K可配置为cache)4KscratchpadSRAM共2×100=200K,速度最快,工作在主频片内L2存储器共享128K,工作在主频/2片外SDRAM最高512M字节,工作在外频技术中心新员工培训教材CACHE16K程序cache和32K数据cache可缓存的内存空间可以灵活配置异步内存空间(与外部I/O设备交换数据的内存空间)最好不要设置为可缓存异步内存空间使用存储器DMA在片外存储器和片内存储器之间传送数据(和CPU同步工作)技术中心新员工培训教材DMADMA:直接存储器存取,不需要CPU干预技术中心新员工培训教材中断技术中心新员工培训教材专用视频指令(以BYTEOP16M(四个8位字节相减)为例)(dest_reg_1,dest_reg_0)=BYTEOP16M(src_reg_0,src_reg_1)如:(r1,r2)=byteop16m(r3:2,r1:0);技术中心新员工培训教材DSP编程(1)经常调用的程序和经常使用的数据要放在片内SRAM中,保证最快的存取速度。这通过section分配内存空间语句来实现。运算量大的关键程序模块必须用汇编语言编写,要尽量使用blackfin的SIMD指令。程序主体架构和运算量一般的程序模块建议用C语言编写,便于维护。在有操作系统的情况下,不建议使用MDMA,因为os一般放在片外,导致cache要经常访问片外,造成片外总线拥塞。中断处理程序执行时间要尽量短,以免影响高实时性任务的执行,一般只设标志位。技术中心新员工培训教材DSP编程(2)堆(heap)和栈(stack)◆heap:动态内存分配空间,用户通过调用calloc()函数来申请。相比全局变量定义,heap动态内存分配具有内存使用效率高、代码结构性好的特点。heap内存空间要使能cache。◆stack:所有函数的局部变量使用的内存空间。由用户在C编译前指定。局部变量频繁被CPU访问,必须放在存取速度最快的内存空间。在blackfinDSP中,一般指定4KscratchpadSRAM内存做为stack区。技术中心新员工培训教材DSP编程(3)不论simulator或emulator模式,VDSP++开发环境都支持文件输入输出操作,调试非常方便。LDF文件为工程中的所有代码、全局变量指定内存起始地址。LDF文件对程序运行效率有很大影响。技术中心新员工培训教材◆DSP基本特点◆ADIblackfinDSP介绍◆可视电话DSP系统介绍技术中心新员工培训教材目前采用的是BF532+BF533的系统架构BF532只完成H.263的编码,支持CIF(352×288)和QCIF(176×144)两种图像格式BF533内嵌uclinux实时操作系统,完成H.263的解码,音频的编解码,协议栈拆、组包,用户界面等功能。马上升级到BF561架构。技术中心新员工培训教材BF532框图ToOsPPI27MHZSPI15MHZSPORT27MHZCurrentrawvideoNextrawvideoISRCommands:bitrate,fps,etc.ReferrenceFrameReconstructedFrameBitStreamsLocalVideo:128x108FromOsCbYCrYH.263(+)ENCODERCIF:352x288QCIF:176x144技术中心新员工培训教材BF532的SPI口通信编码后的码流通过SPI口(DMA)传给BF533的组包程序。每一帧编码完毕后,将本地小画面(128×216)抽值传给BF533的一处固定缓存,由BF533的显示模块送显。编码码流和本地小画面通过增加一个32bit的包头来区分。532和533之间还需要PF引脚的中断通讯来同步。561方案中不再使用SPI口通信,因为两个核共享存储器。技术中心新员工培训教材BF532的SPORT口通信BF533通过SPORT口传送编码控制命令,如强制I帧、宏块刷新、编码结束等。BF532在SPORTDMA的中断处理程序中置标志位,在每一帧编码完成后检查该标志位,判断是否有新命令,有则执行新命令。BF532在中断处理函数里就启动SPORTDMA接收,保证下一组命令的正常接收。技术中心新员工培训教材BF532的PPI视频采集ITU-R656输入模式Activefieldonly模式,只接收第一场的有效行,第二场以及第一场的blank行被硬件自动丢弃。PPIDMA工作在stop模式,即采集完一场有效数据后DMA暂停,等待程序控制下一次DMA启动。技术中心新员工培训教材BF532程序流程系统和外围设备初始化;While(1){等待上一帧图像采集完成;采集下一帧图像;编码;传送编码码流及本地小画面到BF533;判断sport中断标志位,如有新命令则执行;}技术中心新员工培训教材BF533编解码及显示框图框图中没有包含操作系统及应用程序部分。H.263(+)DECODERPPIBUFPPIISRG.7xxCODECYCbCrBT.656DA7171H.263bitstreamsG.7xxbitstreamsSpeechPCM技术中心新员工培训教材BF533视频解码BF533的视频解码模块是533系统中优先级最高的任务,当协议栈收到一帧后,通知操作系统,操作系统唤醒视频解码任务,当视频解码任务完成后,进入阻塞状态,等待操作系统的下一次唤醒。音频编解码是次优先级的任务,必须在视频解码任务完成后才能获得CPU的执行权。实时操作系统和非实时操作系统的一个主要区别就是任务是否可以抢占(preempt)。技术中心新员工培训教材视频解码任务调度while(1){temp=BufRead;BufRead++;if(BufRead=BUFNUM){BufRead=0;}if(BufRead==BufWrite){BufRead=temp;call_os_server(0,0);continue;}*ppbuf=bufpoll[BufRead]._buf;break;}技术中心新员工培训教材模块调用方式视频解码和音频编解码以及显示模块在VDSP++环境下编译,而操作系统和应用程序在linux交叉编译环境下编译,原因:(1)VDSP++的编译效率高于linux交叉编译环境;(2)音视频和显示模块在VDSP++上单独编译有利于该模块的单独调试。因为分开编译,音视频和显示模块的调用接口都以绝对地址的形式提供给uclinux。技术中心新员工培训教材BF533显示模块为保证显示的最高优先级,显示通过中断的方式实现,在显示中断服务程序里完成待显示行象素的填充。显示DMA的源数据缓冲区放在了片内SRAM,保证显示DMA通道的无阻塞。因为片外SDRAM可能存在总线竞争。显示模块占用系统资源约为50MIPS。技术中心新员工培训教材TrimediaDSP的特殊硬件结构(1)5slot结构如上图所示,在一个时钟周期内,Trimedia可同时完成5个操作,其中有三个操作可以是运算操作。相比blackfin的一个时钟周期只能有一个运算操作相比,从理论上速度提高了3倍编解码组的实际研发经验也证明:300M的Trimedia大概