基于ADSPBF533并行外围接口的高速数据通信张传胜杨波周永彬杨俊王跃科湖南长沙国防科技大学机电工程与自动化学院(410073)摘要:文章针对ADSP-BF533的PPI(并行外围接口)的高速通信进行了讨论,介绍了PPI的特点及其典型应用电路,提出用DMA的方式对PPI进行高速数据吞吐,描述了PPI及DMA的相关寄存器并给出了设置的具体实例,实现了低功耗下的高速数据传输。关键词:ADSP-BF533,并行外围接口,直接内存访问HighSpeedCommunicationBasedonADSPBF533’sParallelperipheralInterfaceZhangChuanshengYangBoZhouYongbinYangJunWangYueke(CollegeofMechatronicsEngineeringandAutomation,NationalUniversityofDefenseTechnology,ChangshaHunan410073,China)Abstract:Inthisarticle,thehighspeedcommunicationbasedonPPIinterfaceisdiscussed.Firstly,PPI’scharacteristicanditstypicalcircuitsareintroduced.Secondly,theregistersofPPIandDMAaredescribed.Atlast,afaithfulexampleisprovided,whichcanprovidehighdataratecommunicationwithlowpowerconsumptionKeywords:ADSPBF533,PPI,DMA1ADSPBF533简介ADSPBF533是美国AD公司和Intel公司于2003年4月联合推出的一款定点DSP,是目前Blackfin系列中速度最高的产品,RISC指令结构,运作高效,具有十分优异的性能[1]。该DSP具有600M的主频,双16bit的MAC(乘加器)和两个40bit的ALU(算术逻辑单元),4个8bit的视频处理单元,8个算术寄存器,10个地址寻址单元。DSP集成了148KByte电压调节器JTAG接口事件控制器L1指令存储器L1数据存储器核心/系统总线接口DMA控制器引导ROMMMU看门狗单元实时时钟异步串口定时器1、2、3PPI/GPIO接口同步串口1、2SPI接口外部扩展存储器:SDRAM、FIFO、FLASH图1BF533的功能框图张传胜,1976年生,机电工程与自动化学院仪器系在读博士研究生。电话07314575380,Email:karwes@163.com研究方向:数字信号处理,扩频通信。国防科工委“十一五”民用航天预先研究,项目编号C1320063102的片内RAM,并具有丰富的外部接口,如SDRAM、通用并行数据口、SPI、PPI、同步和异步串口等。与此同时,芯片内部设计了看门狗和多种定时器,充分满足软件工程的稳定性设计要求。BF533的内部结构及外部接口如图1所示。BF533的功耗很低,25度的环境温度条件下,主频在600M下全速运行时功耗仅在280mw附近。同时,BF533可以动态地控制电压输入,内核电压可以工作在0.7V~1.2V下,在运算量低时通过降低DSP内核电压,调整运行频率,可以进一步降低功耗,十分适合于移动产品的设计。作者在开发掌上高速通信设备时,需要在严格控制设备功耗和体积的同时,要求数据吞吐量达到20M字/秒以上,于是采用ADSPBF533作为核心DSP,利用其PPI接口的DMA传输功能,很好地完成了设计和调试。2PPI接口特点及其典型电路PPI接口是BF533新推出的一种外部接口,全称为并行外围接口(ParallelperipheralInterface),是数据高速传输专用的半双工双向通道,速度可以达到66M字/秒。该接口包括16位的数据传输线、三个同步信号和一个时钟信号。与其它DSP通用并行数据口的区别在于:(1)不需要地址线配合,直接与DMA通道整合,读写数据时自动地址增减。由于去掉了地址线,减少了电路设计时地址线布线的面积。而且,由于PPI接口具有专门的DMA传输通道,DSP内核可以在数据传输的同时进行高速数据处理,大大提高了DSP的效率。(2)具有帧同步信号,不产生读信号和写信号。其它DSP每读写一个数据都会产生一个读写信号,而PPI提供的三个同步信号均是帧同步信号,每帧数据传输前产生一个高电平的同步信号。这些同步信号配置灵活,可根据设计要求配置为0、1个或者3个同步信号。(3)时钟信号配置灵活。时钟作为输入信号,既可直接由外部时钟源提供,也可以由DSP自身系统时钟分频输出后再作为输入时钟。该时钟信号决定PPI传输的速度,这就增强了接口速度的灵活性。其它DSP的并行数据接口也具有DMA通道,但是DMA速度一般不可调节,如果有严格的速度和时序要求时,必须外部接上FIFO等缓冲设备,对于低功耗和体积受限的掌上设备而言是很不利的。由于PPI口具有独立的时钟和同步信号,该接口可以直接连接AD、DA、视频编解码器以及其它通用外设设备,并保证时钟严格同步。(4)数据传输宽度可以灵活设定,可设置为8位、10位~16位等8种数据宽度。PPI的16位数据线中高12位与BF533的PF4~PF15(Programflag,可编程标志)复用,低4位是专用数据线PPI0~PPI3。当数据带宽不足16位时,未被复用的管脚可以作其它用途使用,这一点是相当灵活的。因此,使用PPI接口,可以节省空间,降低功耗,对于掌上设备的高速通信而言具有特别的意义。图2是外设设备为DA或者AD时进行数据发送和接收的典型电路。将DA和AD直接与BF533的PPI接口相连,时钟由外部晶振或者内部同步串口时钟分频产生。PPIx表示PPI数据总线的宽度。PPI_FS1为同步信号,对于一些不需要同步的DA和AD而言,这个信号可以不进行电路连接,但是在BF533中要对其寄存器进行配置,否则数据无法正常传输。 AD转换器同步信号时钟同步信号DA转换器时钟PPI_FS1PPIxPPI_CLKPPI_FS1PPIxPPI_CLKADSP-BF533ADSP-BF533 8-16位的数据总线 8-16位的数据总线图2BF533与DA、AD通过PPI口相连当外设不是DA和AD,而是视频编解码器时,典型的电路如图3所示。此时,三个同步信号均需要启动,作为水平、垂直和场同步信号。数据总线宽度仍然可以灵活调整,当工作在ITU656模式下时,数据宽度典型值是8和10。PPI_FS1PPI_FS2PPI_FS3PPIxPPI_CLK水平同步信号垂直同步信号场同步信号时钟时钟水平同步信号垂直同步信号场同步信号PPI_FS1PPI_FS2PPI_FS3PPIxPPI_CLK视频显示视频数据源ADSP-BF533ADSP-BF533 8-16位的数据总线 8-16位的数据总线图3BF533与视频设备通过PPI口相连3PPI与DMA相关寄存器描述PPI接口的读写是通过其和DMA的寄存器的设置进行操作的。PPI的相关寄存器主要有:(1)PPI配置寄存器(PPI_CONTROL),完成PPI的使能、时钟极性、数据宽度、DMA的配合总线宽度、传输方向等方面的设置。(2)PPI计数器(PPI_COUNT),用于统计从PPI口进入和输出的数据的个数。发射的时候设置为DMA传输数据的总数减1,接收时设置为DMA传输数据的总数。(3)帧同步信号配置(PPI_FRAME,与定时器复用,即TIMER1_CONFIG和TIMER2_CONFIG),在只使用一个同步信号时其它同步信号不用设置,并且可执行其它复用的功能。后两种寄存器相对简单,在后文的例程中有相关配置。这里重点描述PPI控制配置寄存器,如图4所示。图4PPI配置寄存器由于PPI接口专为高速设备优化设计,其不支持直接读写端口,必须通过DMA的方式将数据送至端口传送或者由端口直接DMA到内存之中。BF533的DMA控制器的主要寄存器有:(1)DMA控制寄存器(DMA0_CONFIG),用于设置DMA传输的方向、数据宽度、中0000000000000001514131211109876543210PORT_EN(PPI通道使能)0-不使能1-使能PPI_DIR(PPI方向)0-PPI处于接收模式(输入)1-PPI处于发射模式(输出)XFR_TYPE[1:0](传输模式)00~10:ITU-656模式11-GPIO模式0POL(时钟极性)00:均不翻转01:PPI时钟翻转,同步信号不翻转10:PPI时钟不翻转,同步信号翻转11:全部翻转DLEN(数据长度)000:8位001~111:10位到16位SKIP_EO(跳过奇偶位)0:跳过奇位单元数据1:跳过偶位单元数据SKIP_EN(跳过奇偶位使能)0:不使能1:使能DMA32(32位DMA数据宽度)0:不使能1:使能PACK_EN(数据压缩使能)0:不使能1:使能PORT_CFG[1:0](传输模式)00:GP模式,1个同步信号01:GP模式,3个同步信号11:在接收模式有效,仅需1次同步,无需持续同步FLD_SEL(视频场信号选择)ITU-656模式时,0:场1,一个同步信号1:场1和2,三个同步信号GP接收模式时,作为帧同步信号使用0:外部帧同步1:PPI内部时钟自同步断以及使能控制等内容。(2)DMA起始地址寄存器(DMA0_START_ADDR)。当发射数据时,将该起始地址后的内容通过PPI口发射出去。当接收数据时,将PPI口收到的数据写入到该起始地址后的内存区中。(3)DMA长度寄存器(DMA0_X_COUNT、DMA0_Y_COUNT)。当进行一维DMA时,可以只设置DMA0_X_COUNT的长度;当传输视频信号时,如果设置DMA0_Y_COUNT,可以进行视频数据的二维DMA传送。(4)DMA0_X_MODIFY,DMA的步进量寄存器,反映了DMA总线的宽度。1为1个字节(8位),2为2个字节(16位),4为4个字节(32位)(5)DMA0_IRQ_STATUS,DMA的中断标志寄存器,在DMA中断处理程序中需要对其进行中断标志清除。(2)(3)(4)(5)的寄存器设置较为简单,这里重点描述(4)中的寄存器,如图5所示。图5DMA控制寄存器DMA_EN位为通道使能,当其为1时启动DMA,为0时表示DMA未启动或者已经结束。如果正在DMA中将其设置为0,则DMA被强行结束,未传输的数据丢失。DI_EN中断使能位决定DMA一次传输完毕后是否产生中断,WNR决定DMA用于发送或者接收,WD_SIZE决定DMA传送数据的带宽位数。对于FLOW流程控制,当其设置为0时,DMA在传输完毕后立即停止,将DMA_EN位改写为0,使DMA处于不使能状态;当其设置为1时,处于自动缓冲模式(AutoBufferMode),一次DMA结束后自动重复前一次DMA操作。使用PPI接口,进行DMA操作顺序有比较严格的要求,需按照以下操作顺序进行:(1)按照设定的模式配置DMA的寄存器,包括DMA的控制寄存器、起始地址寄存器、长度寄存器、步进量寄存器等。(2)将DMA的相关通道中断打开,设置好中断入口地址。(3)将DMA的通道使能,启动DMA传输;(4)配置PPI的寄存器,包括PPI_COUNT,PPI_FRAME,PPI_CONTROL;在某些情况下,前两者可以使用默认设置。(5)将PPI使能,启动PPI接口。(6)DMA传输完毕产生中断,在中断处理程序里面清理中断标志及重新设置DMA和PPI的寄存器。4程序实例以下给出一个PPI接口传输的例程,该段程序的功能为将一段内部地址空间存储器的数00000000000000101514131211109876543210FLOW[2:0]-流程控制0x0-DMA完毕后停止0x1-自动缓冲模式DI_EN:中断使能0-DMA完毕