资源描述
2021/7/231第六节 TigerSHARC外围DMA和TS101硬件设计参考2021/7/232上节回顾 TigerSHARC 外口总线 SDRAM协议 多片DSP接口;Host接口;EEPROM接口;Link口;2021/7/233本节内容 TigerSHARC IOP的最后一部分:DMA控制器;TS101硬件设计参考2021/7/234PART 1Direct Memory Access (DMA)2021/7/235DMA 控制器主要内容 DMA介绍 DMA特点 DMA 通道优先级 DMA 传输类型 传输控制块(TCB)DMA控制和状态寄存器 链式DMA 和中断2021/7/236ADSP-TS101S Block DiagramJTAGPORTSDRAMCONTROLLER6LINKPORTSLINKPORTCONTROLLERCONTROL/STATUS/BUFFERSL138L283L338L083INPUT FIFOOUTPUTBUFFEROUTPUT FIFOHOSTINTERFACEMULTI-PROCESSORINTERFACECLUSTERBUSARBITORData64EXTERNALPORT32CNTRLDMA ControllerIABPCBTBIR QADDRFE TCHINTEGERKALUINTEGERJALU3232M0 ADDRM1 ADDRM2 ADDRM0 DataM2 DataM1 Data323232128128128IO ADDR32Program SequencerData Address GenerationMemoryBlockM0MemoryBlockM1MemoryBlockM2InternalMemoryCoreIO ProcessorADDR32 x 3232 x 32DABMultiplier ALU XRegisterFile Shifter 6464646464646412812812812864DAB128128Multiplier ALU YRegisterFile Shifter 646464646464Comp Block XComp Block Y2021/7/237DMA 介绍 没有DMA的系统CPURAMDMAControllerROMRAMPeriphHOSTDMA用于IO传输:产生源地址;产生目的地址;控制总线数据操作;内部总线外部总线CPUROMRAMPeriphHOST 使用 DMA的系统2021/7/238SDRAMSRAMI/OHostInterfaceTiger SHARCLink Port connectionUregsMemUregsMemTiger SHARCBoot PROMDMA 介绍 TS101 DMA操作的源和目的;2021/7/239DMA 特点 TS101的DMA 传输可以由本地DSP、总线上其他DSP或者Host启动;每个TS101内部共用14 DMA通道;DMA 操作可以被暂停和重新启动;DMA 操作之前必须要配置TCB块,加载TCB块时启动DMA工作;DMA 长度寄存器为16bit,当DMA传输时,计数值递减;当0时DMA结束;如果启动是长度设置为0,则本次DMA操作的长度为 0 x10000 words.DMA 传输和内核传输可能会同时争抢内部总线,在一定时间内会造成总线暂停;由于内部总线带宽相对外部总线带宽非常高,因此冲突被降低到最小化。2021/7/2310DMA 优先级2021/7/2311Channel 3Channel 2Channel 0Channel 1Channel 0Channel 3Channel 2Channel 0Channel 3Channel 2Channel 1Channel 1DMA 1 selectedDMA 0 selectedDMA 优先级DMA 共有14个通道,优先级排列如下:2 Auto DMA channels(13-12)4 Receive Link 3-0 channels(11-8)4 Transmit Link 3-0 channels(7-4)4 External Port 3-0 channels(3-0)目前情况下,外总线DMA通道的优先级为:30轮询:The DMA priority bit separates rotation into two priority sets-high(with bit set)and low.2021/7/2312DMA 传输类型TS101允许的DMA传输类型:内存 外存 内存 其他 TigerSHARCs的内存和寄存器 内存 主机 内存 Link Port 内存 Boot Prom/FLASH 外存 外设(Flyby transfer)外存 Link Port I/O 外部主设备=内存(via Auto DMA)外部主设备=Link Port I/O(via Auto DMA)Link Port 输入=Link Port 输出外部设备可以通过4个边沿触发的DMAR信号申请DMA;2021/7/2313DMA 传输类型DMA传输类型可以分成如下几种:内存 外口(Cluster Bus)这类DMA可以进行双向传输,需要设置两个DMA控制块(TCB).发送TCB、接收TCB;Auto DMA 寄存器 内存.只需要设置一个接收 TCB.数据输入端是固定地址的两个寄存器;外设只向一个地址连续写入数据,TS101内部根据TCB设置将寄存器数据写入对应的内存地址;内存或者外存 Link ports.只设置发送TCB;Link ports 内存或者外存.只设置接收TCB;每个Link口分配有两个DMA通道;Link port Link port.只设置接收TCB;Flyby 传输2-D(2维)DMA传输;DMA chaining(链式DMA传输)2021/7/2314Host InterfaceSDRAMSRAMI/OTiger SHARCMemTiger SHARCTiger SHARCTiger SHARCDMA 传输类型-外口 内存 外口(Cluster Bus)MemMemMem2021/7/2315SDRAMSRAMI/OHost InterfaceLink兼兼容设备容设备Link Port connectionsTiger SHARCTiger SHARCLink兼兼容设备容设备MemoryMemoryDMA 传输类型-Link Port 内存或者外存 Link ports2021/7/2316SDRAMSRAMExternalbus masterHost InterfaceTiger SHARCTiger SHARCTiger SHARCTiger SHARCMemoryDMA 传输类型-Auto DMA AutoDMA transfers 从外总线到内存 2021/7/2317 Flyby transfers 从外存到外部IO设备;SDRAMSRAMI/OHost InterfaceTiger SHARCLink Port connectionsTiger SHARCTiger SHARCTiger SHARCDMADMA 传输类型-Fly-by2021/7/2318链式DMA and 2-Dimensional 链式DMA操作使得一个DMA操作结束后,自动启动下一个DMA操作;链式DMA操作由:链表组成,相连的两个DMA链可以是同一个DMA通道也可以是不同的DMA通道。2021/7/23192维DMA DMA控制器可以按照2维存储器的方式进行访问,而且每个DMA通道都可以配置成2维DMA;2维DMA需要设置X方向的起始地址、长度和步进,以及Y方向的起始地址、长度和步进。2维DMA通用用于矩阵数据的访问,例如:作矩阵转置处理;对图象数据作处理;2021/7/2320DMA控制块TCBTCB:Transmit Control Block:是一个用来控制一个DMA通道工作的寄存器组;每个DMA通道对应1个或2个TCB。TCB的寄存器为带地址映射的寄存器;通过对这些寄存器的编程设置,完成对DMA的操作;每个TCB是连续地址的4个寄存器;访问方式必须是QuadWord访问;外口DMA的TCB:2个 DCSx=源地址TCB registers DCDx=目的地址TCB registersx=(e.g.,0,1,2 or 3)Example:DCS0=xr3:0;/external port 0 DMA sourceDCD0=xr7:4;/external port 0 DMA destinationLink Ports和AutoDMA 只有1个TCB DCx=源TCB registersx=413;Example:DC9=xr3:0;/link 1 rx DMA2021/7/2321TCB DI DMA起始地址寄存器(可能是源地址,也可能是目的地址)DX-X(1维)16bit地址步进量和16bit的传输长度(单位是Word);DY-Y(2维)16bit地址步进量和16bit的传输长度(单位是Word);DP 链指针和DMA控制寄存器TCB内的每个寄存器都不能独立访问,必须4字访问;DMA控制块TCBTCB 寄存器组共寄存器组共128bit,共四个独立的寄存器;,共四个独立的寄存器;31 0DI RegisterDX RegisterDY RegisterDP Register127 962021/7/232231 0ADDRESS POINTERDMA控制块TCB_DI DI 寄存器:32-bit 地址寄存器 可以是内存地址;外存地址;Link口缓冲寄存器地址2021/7/2323DMA控制块TCB_DXDX 寄存器a)16-bit 步进(低16bit)and 16-bit 长度(高位)或者b)16-bit 步进(低16bit)and 16-bit 一次X维的传输长度countX Count X Modify31 16 15 0Y Count Y Modify31 16 15 0DY 寄存器寄存器:只有在只有在2维维DMA的模式下才使用;是的模式下才使用;是Y方向的步进和方向的步进和长度;长度;当计数器值递减至当计数器值递减至0时,时,DMA传输接收;传输接收;-Count 表示 32-bit words的数量;-16bit宽,最大支持64KWord的DMA长度;2021/7/2324DMA Control Chaining Pointer31 22 21 0DMA-TCB DP 寄存器:-两个部分a)bits 23 31:专用于DMA控制;b)Bits 0-22:专用于链式DMA控制,链表地址;2021/7/2325DP寄存器1 Bits 0-14:CHPT 下一个TCB的首地址的Bit162,Bit1、0为0(四字对齐)Bits 15-16:MS 链式TCB表的存储位置,内部存储空间(block0、1、2)的片选,只能在内存;Bits 17 21:CHTG 该链的DMA通道;Bits 22:CHEN 链式DMA使能;2021/7/2326DP寄存器2Bits 23:DRQ DMA申请使能(DMAR3:0)Bits 24:INT 中断使能:0=不使能,1=使能Bits 25-26:LENDMA单位长度01=normal,10=double word11=quad wordBits 27:2DDMA二维DMA使能Bits 28:PRDMA申请总线优先级0=normal1=highBits 29-31:TYDMA设备类型000 DMA disabled001 I/O link ports010 Internal memory011 Reserved100 External memory101 External I/O device110 Boot EPROM111 Reserved2021/7/2327DMA-TCB 寄存器的使用TCB寄存器有三种加载方式:DSP程序将4字对齐的内存或寄存器中的数据协议TCB寄存器组;链式加载TCB:DMA控制器根据每一个TCB中DP寄存器中的Bit014的地址,自动加载下一个链的TCB。外部设备直接写TCB寄存器。一旦向TCB加载正确的参数后,DMA自动开始运行。注意:向TCB的TY域写入000时,会清除该通道的所有状态寄存器位;向一个已经激活的TCB再次写入时,会造成硬件错误中断;2021/7/2328DMA操作的寄存器设置要求 操作要求 外口接收、发送TCB中的长度、数量和DMAR使能设置必须匹配;Boot EPROM DMA LEN=1(normal),Link口DMA LEN=3(quad)Link发送 TY=2(int memory)或 4(ext memory)Link接收 TY=1(link)或 2(int memory)或4(ext memory)Auto DMA TY=2(int memory)Link和Auto DMA中必须设置DMA Request项;地址、步进量、长度的设置一定要和LEN设置相对应;2021/7/2329DMA 寄存器设置要求 2要求:外DMA的TY设置:2021/7/2330状态和控制寄存器 DMA的状态和控制寄存器:DSTAT DCNT DCNTST(DCNT的设置寄存器)DCNTCL(DCNT的清除寄存器)2021/7/2331状态寄存器DSTAT-64-bit寄存器,表示所有DMA通道的状态;DSTAT:不能采用NormalWord访问,必须 Long 或者 Quad Word 访问;DMA状态寄存器的bit定义:Bits 0-2Name:CH0Description000 通道不使能;001正在传输010传输结束011Reserved100TCB初始化错误101非法的TCB设置110Reserved111DMA地址错误其他13个DMA通道的定义相同:2021/7/2332控制寄存器 1 DMA 控制寄存器:DCNT 32bit控制寄存器,每通道1bit;DCNTST用于设置32bit的控制寄存器;DCNTCL用于清零的32bit控制器;在DCNTST中设置一位,可以暂停传输;对DCNTCL中设置一位,可以清楚对暂停的限制;2021/7/2333控制寄存器2 控制寄存器ResPA13PA12ResResPA11PA10PA9PA8ResResPA7PA6PA5PA4PA3PA2PA1PA031-18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0Pause bit for channel#0=Continue transferring data1=Pause channel#data transfer after current word transfer(if started)2021/7/2334链式DMA 链式DMA允许多个DMA联系进行传输;每个DMA可以使用 不同属性底块;TCB中采CNEN位来使能链式DMA;TCB中DP寄存器的CHPT位,指向存放下一个DMA链的TCB参数的首地址;DMA控制器从该地址,自动加载下一个DMA的参数到TCB。TCB 1Chain PointerTCB 2Chain Pointer2021/7/2335链式DMA Single TCB TransferSingle TCB Transfer Dual TCB transferDual TCB Transfer Dual TCB transferSingle TCB Transfer*Single TCB transferDual TCB Transfer*Special setup via core required Only one block transfer of this type can occur without setting up DMA process again2021/7/2336链式DMA插入 DMA插入:在正在进行链式DMA过程中,插入一个DMA链;基本过程如下:通过 DCNT寄存器暂停当前DMA;将当前TCB中的原来的CHPT设置到要插入的DMA链的TCB中;DSP内核改写当前DMA的TCB,更新其中的CHPT(指向新的DMA链);通过DCNT寄存器恢复当前DMA传输;当前DMA继续传输,结束后启动新的DMA;2021/7/2337原来的DMA链(or loop)TCB1 A:新插入的DMA链;TCB 1Chain PointerTCB 2Chain PointerTCB 1Chain PointerTCB 2Chain PointerTCB 1AChain Pointer链式DMA插入 DMA链的插入过程示意图2021/7/2338DMA 中断每个DMA通道分配有独立的中断向量;使能DMA中断,需要在DCTL寄存器和IMASK寄存器中设置;中断使能后,DMA通道在Count0,并且完成当前传输时,发送中断;此时的Count0必须是由于DMA通道实际传输造成Count值递减所制;内核设置Count为0时(即刚启动了一个64K长的DMA传输),不产生中断;TS101内核锁存DMA通道的中断于ILAT寄存器中;TCB中设置了INT有效,就会在该次传输后产生中断;可以设置链式DMA在中间链的TCB中INT无效,只有最后一个TCB中INT有效,则只在链式DMA结束后才产生一次中断;2021/7/2339PART IITS101 的硬件设计参考2021/7/2340TS101硬件设计参考主要内容 复位 时钟 电源 加载 JTAG调试 总线连接 Link口设计2021/7/2341复位电路 TS101的复位输入信号:/Reset;复位模式:上电复位;复位逻辑很特殊,一般参用CPLD编程输出;自动加载程序;普通复位;外部输入普通复位模式的Reset信号;自动加载程序;内核复位;设置SQCTL寄存器的SQRST位;只复位内核部分,不复位IOP,不自动加载;2021/7/23422021/7/2343时钟电路 TS101的时钟输入:SCLK、LCLK;要求两个输入为同源同相时钟;对时钟的Jitter有严格要求:100ps;时钟驱动要注意:一个驱动芯片不要输入两种时钟;驱动与器件之间采用点对点连接;所有设备的连线要尽量等长;2021/7/23442021/7/2345电源电路的设计 电源输入:IO电源:3.3V数字电源;内核电源:1.2V数字电源;锁相环电源:1.2V模拟电源;电源上电顺序:要求1.2V比3.3V先上电;去耦电容:两种电源都要有较多的去耦电容,0.1uf和10uf两种;2021/7/2346模拟电源的滤波:用1.2V数字电源通过滤波电路产生;2021/7/2347功耗分析 功耗分成两部分:内核功耗:1.2VIdd;IO功耗:3.3VIdd_io;Idd最大值1.546A;Idd典型值:1.513A;64bit总线时,典型电流:0.137A3.3V;典型功耗:1.5131.2 0.1373.3=2.26W2021/7/2348加载电路的设计 加载方式:(由BMS信号控制)EPROM Boot(BMS0);复位后,DSP自动读取EPROM中数据,加载到DSP内存中;DMA 通道0,默认启动256字的接收DMA;加载有协议控制,256字是加载头,后面的是真正的程序数据,根据握手协议读入DSP内存的特点地址中;Host Boot(BMS1);复位后,DSP的AutoDMA自动启动接收256字的DMA;Host可以写AutoDMA加载DSP的程序;Host也可以通过直接写DSP的内存地址将DSP的数据写入DSP的相应地址中;2021/7/2349 Link Boot(BMS1)TS101可以通过Link被其他带有Link口的设备加载;TS101的4个Link口都具有加载能力;上电复位后,TS101的4个Link口都默认启动了256字的接收DMA;可以构成Link网络加载;No Boot(BMS1,BM1)DSP上电复位后从外部存储器读取程序指令,并开始允许;2021/7/2350JTAG调试接口 JTAG接口:一种国际标准的芯片调试接口;可以用于访问DSP的所有内部资源、控制DSP的程序运行等;是调试DSP程序的一种基本手段;ADI的开发系统通过JTAG口与DSP连接,可以在VDSP界面下调试DSP程序;JTAG口可以采用菊花链的形式,通知调试多个DSP设备;2021/7/23512021/7/23522021/7/2353总线连接 数据总线的连接 32bit和64bit的问题;高低32bit分别对应了WRH和WRL信号;地址总线的连接 32bit数据总线:地址总线使用A0;64bit数据总线:地址总线不使用TS101的A0,将TS101的A1连接存储(或外设)的A0;SDRAM空间使用A15A0(或者A31A16)的地址,其中最高两位连接SDRAM的Bank0、1;Bug:Page1K时,A15不能用于Bank1;2021/7/2354总线连接 所有关键的控制信号线都加上拉电阻;不使用的控制信号也要上拉;多DSP总线连接的时候,必须有唯一一个ID号为0;其他所有DSP的ID号不能重复;单DSP系统,DSP的ID0;2021/7/2355Link口设计 几个要点:Link信号线要尽量等长;阻抗匹配;两个相连接的Link口的时钟信号要交叉连接;Link驱动的方向控制;2021/7/23562021/7/2357下课 个人观点供参考,欢迎讨论
展开阅读全文