DSP核心板使用手册_第1页
DSP核心板使用手册_第2页
DSP核心板使用手册_第3页
DSP核心板使用手册_第4页
DSP核心板使用手册_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DSP关键板使用手册一.功能阐明简述:该DSP关键板配置DSP5402芯片、IS61LV6416RAM芯片、AM29LV160DBFLASH芯片、AD7822BRADC芯片、9708ARUDAC芯片、并配置接插件可扩充外围器件。重要硬件配置:芯片型号数据线地址线阐明主处理器:DSP芯片TMS320VC5402PG10016位20位Mbsp总线、HPI总线逻辑电路控制:CPLD芯片XilinxXC95144PQ100100管脚储存器:SRAM芯片IS61LV6416-10T16位16位64Kx16bit储存器:FLASH芯片AM29LV160DB16位20位16MbitAD芯片AD7822BR8位DA芯片TxDAC97088位运放芯片TLC2274高速CMOS运放2.2MHz缓冲芯片LVTH16245A16位5v、3.3v混合电压三态缓冲电源芯片BM11173.3v/1.8v电压输出二.电原理框图阐明1.电路样板实际电路板样图1.1、1.2所示,该板为四层电路板,大小为10.7mmx16.8mm。使用外接+5v、-5v、GND三口插座电源,电路板关键器件为TI企业的DSP芯片5402,可以稳定工作在100MHZ频率。图1.1关键板正面照图1.2关键板侧面照2.电原理框图如图2所示,其中双向箭头线表达的是数据总线,单向箭头线表达的是地址总线或者控制总线(注:AD接口、DA接口处的数据总线例外,这两处数据总线单向传播)图2.电原理框图三.电原理图阐明本章节将分别阐明各个模块的电原理图原理图使用PROTELDXP软件绘画(压缩包“DSP关键板.rar”),项目文献中包括:system.SchDoc总体框图power.SchDoc电源部分原理图DSP.SchDocDSP芯片部分原理图RamFlash.SchDoc储存芯片部分原理图CPLD.SchDocCPLD芯片原理图boardIO.SchDoc板载外围器件原理图buffer.SchDoc缓冲器件原理图ADDA.SchDocAD/DA原理图interface.SchDoc关键板接口原理图capacitor.SchDoc板载滤波电容原理图PCB1.PcbDocPCB版图1.电源部分power.SchDoc:图3.10电源部分A 如图3.10所示,关键板的电源部分A由一种4芯插座以及两个LM1117电压转换芯片构成。可通过外接5V、GND电源供电,通过LM1117转换成3.3V以及1.8V两种直流电压给关键板上的芯片供电。此外,4芯插座中第23针为-5V,给关键板上的AD7822芯片以及TxDAC9708芯片供应负电压。图3.11电源部分B 如图3.11所示,关键板的电源部分B由TPS767芯片构成(该模块目前没有使用)。可以替代LM1117芯片进行电压转换工作。该芯片是DC-DC电压芯片,输入电压为5V,输出电压为3.3V和1.8V两种规格。 2.处理器部分DSP.SchDoc:图3.2处理器部分 处理器部分如图3.2所示,主芯片为DSPTMS320VC5402,使用JTEG调试方式。JTEG插座表达为14芯双排插座,通过74HC244芯片连接至DSP芯片上。晶振可以使用有源4脚晶振或者无源两脚晶振。3.逻辑控制电路CPLD.SchDoc:图3.3逻辑控制电路CPLD95144 如图3.3所示,关键板的逻辑控制电路由Xilinx的CPLD芯片95144PC100构成。该芯片使用JTEG下载方式进行逻辑编程。 CPLD完毕如下几种功能:对DSP外围读写信号IOSTRB、MSTRB、PS、DS、IS、R/W进行译码,生成IOR、IOW、ROMR、ROMW、RAMR、RAMW信号线,控制板上IO、RAM、ROM的读写。对DSP数据地址进行译码,给板上各个资源分派地址空间。内部设定寄存器,对板子的某些功能进行设置占有一部分IO地址,进行简朴外围器件的扩展,板上目前拥有拨盘开关、按钮、8位LED外围器件。(注:有关CPLD的功能在第四章节会有详述)4.储存器RamFlash.SchDoc:图3.4DSP外部储存器 如图3.4所示,关键板的储存器由两片IS61LV6416SRAM芯片以及一片AM29LV160DBFLASH芯片构成。由于5402芯片使用哈佛构造,因此片外RAM空间和片外ROM空间在地址以及读写信号上两者是分离的。如图所示:左上角的SRAM芯片构成了DSP的外部ROM空间;左下角的SRAM芯片以及右上角的FLASH芯片构成了DSP的外部RAM空间,可以由CPLD内部的寄存器来设置DSP的外部RAM空间挂载在SRAM上还是FLASH上。5.ADDA部分ADDA.SchDoc:图3.5ADDA部分 如图3.5所示,AD芯片采用AD7822芯片,8bit转换,理论最高采样速度为2MSPS。采用3.3V单电源供电。前置放大器由三级TLC2274运放串联构成,可以通过量程选择开关,选择串联的环节,即可以选择输入电压的范围,共有两档: (a)-3.3V~3.3V (b)0~3.3V DA芯片采用TxDAC9708芯片,8bit转换,理论转换速度125MSPS。采用+5v、-5v双电压供电。输出电压幅度范围为-3.3v~3.3v。6.外部接口部分interface.SchDoc:图3.6外部接口部分 由于关键板需要与外围器件配合工作,因此外部原则接口必不可少。如图3.6所示,关键板具有4个双针插座,并排列于pcb板的上方。按照图中的次序,左上角为MbSP接口;左下角为HPI接口;中间为DSP高位地址、IO使能线以及部分外围控制线接口;右边为数据接口以及中断接口。7.缓冲器部分Buffer.SchDoc:图3.7缓冲器部分 由于板上芯片资源较多,因此需要设置缓冲器来进行驱动,增强系统的驱动能力。如图3.7所示:从左至右依次为DSP数据缓冲器、外部接口数据缓冲器、DSP地址缓冲器、DSP控制信号缓冲器、外部接口HPI缓冲器。 阐明:由于使用LVTH16245作为外扩接口与关键板的缓冲器件。因此关键板上的外扩接口可以使用TTL3.3V以及TTL5V两种电压原则。四.CPLD内部逻辑阐明: 关键板的工作除了依托DSP芯片以外,CPLD的工作也必不可少。CPLD的功能已经在3.3小节中描述,程序压缩包为“关键板CPLD.rar”,下面将详细阐明CPLD怎样实现这些功能。1.译码部分图4.1译码部分 如图4.1所示,该图表达CPLD译码DSP数据线,完毕地址译码的模块。CPLD使用DSP高位地址线A12~A15进行部分译码,0000h~7FFFh地址留给外部接口使用。8000h~FFFFh地址留给板上资源使用。 其中,FFF8地址用作内部状态寄存器、FFF9地址用作FLASH高位地址寄存器、FFFA地址用作LED状态寄存器、FFFB地址用作外部状态读取寄存器、FFFC地址用作DA睡眠模式寄存器。 EFF8地址表达AD启动转换端、EFF9地址表达AD使能选择端、EFFA地址表达DA使能端。 IFDCE以及BDCE端用作板上缓冲器的使能,当STATE2为0时,DSP访问IO端口时,IFDCE有效;当STATE2为1时,DSP访问IO端口时,BDCE有效。STATE2状态位通过内部状态寄存器可以进行设置。 IOS0~IOS7表达DSP外部IO空间使能端。当地址为0000~0FFF时,IOS0有效;当地址为1000~1FFF时,IOS1有效;当地址为~2FFF时,IOS2有效;以此类推,当地址为7000~7FFF时,IOS7有效。2.控制信号线部分图4.2控制信号线部分 如图4.2所示,该图表达CPLD对DSP提供的控制线进行逻辑控制,产生出可供板上资源使用的控制信号线。 其中,IOOESTRB、IOWESTRB表达IO读写脉冲信号。IOWE、IOOE表达IO读写电平信号;RAMOE、RAMWE表达RAM读写信号(SRAM与FLASH共用);RAM1CE表达DSP程序空间使能,连接至第一片SRAM的使能端;RAM0CE以及FLASHCE都表达DSP数据空间使能,由STATE0状态位进行控制,当STATE0为0时,DSP访问数据空间,访问的是FLASH空间,当STATE0为1时,DSP访问数据空间,访问的是第二片SRAM空间。3.内部寄存器部分图4.3内部寄存器部分 在4.1小节中已经阐明:FFF8~FFFC地址保留为CPLD内部寄存器,如图4.3所示,该图即表达CPLD内部寄存器。FFF8地址表达CPLD内部状态寄存器,使用了数据线低三位,从低到高分别为STATE0、STATE1、STATE2位。STATE0位决定了DSP数据空间挂载的地方。当该位为0时,DSP挂载FLASH作为数据空间、当该位为1时,DSP挂载SRAM作为程序空间。STATE1位决定了DSP中断来源,当该位为0时,DSP中断来源于关键板的板上按钮;当该位为1时,DSP中断来源于关键板的外部中断接口。STATE2位决定了DSP与否可以访问外部IO数据接口。当该位为0时,DSP不能访问外部IO数据接口,当该位为1时,DSP可以访问外部IO数据接口。FFF9地址表达FLASH高位地址寄存器,使用了数据线低四位,从低到高分别为FLASHADD16~FLASHADD19。(阐明:由于板上FLASH地址线是20位,而DSP地址线是16位。因此FLASH的高四位地址线是挂载在CPLD上。由DSP向该寄存器写的数据来决定FLASH高四位地址线的电平)。FFFA地址表达板上LED数据地址。使用了数据线低八位,从低到高分别为LED0~LED7。DSP向该地址写入数据,就可以控制板上LED灯的状态。0表达发亮、1表达熄灭。4.中断部分图4.4中断部分 如图4.4所示,通过STATE1状态位可以选择DSPNMI、INT0、INT1、INT2的信号来源。当STATE1位为0时,DSP的中断信号来源于板上的按钮,当STATE1位为1时,DSP的中断信号来源于板上的中断接口。HPI口简朴控制图4.5HPI口控制部分 如图所示,CPLD对于HPI缓冲器进行了数据读写上的使能控制。其中IFHDCE连接至HPI数据缓冲的使能端。五.试验板使用阐明1.一般调试环节在JTEG调试环境下,使用CCSIDE环境进行仿真。a.接好电源连线,关闭电源电压输出。b.接上JTEG插头。c.打开电源,板上电源指示灯发亮。d.打开ccs软件。选择硬件仿真。e.正常工作,进入ccs环境。进行软件的编写与调试。2.自举加载环节在脱离JTEG调试环境的状况下,使用板子上自加载程序进行工作,环节如下:接好电源连线,关闭电源电压输出。打开电源,板上电源指示灯发亮。正常工作,LED灯最低位闪烁。3.DSP自加载阐明1、自举加载简介Bootloader(自举加载程序,也称引导装载程序)是在出厂前固化在DSP芯片内ROM中的一段程序代码,其重要功能是在上电或复位时将顾客程序从外部加载至程序存储器(片内RAM或扩展的RAM)中。TI企业的TMS320C5402系列DSP提供了五种自举加载模式:主机接口HPI、并行口、原则串行口、8位串行EEPROM及I/O口自举引导方式。在'C5402的五种自举加载方式中,并行自举加载是最常用的一种。欲加载的各代码段寄存在字宽为8位或16位的外部存储器中,在自举加载时,通过外部并行接口总线将这些代码从数据存储空间传送到程序存储空间。2、并行自举加载流程DSP上电复位后,首先检查其MP/MC引脚,假如该引脚为高电平,阐明DSP被设置为微处理器工作方式,即从外部程序存储器0FF80h地址开始执行顾客程序;若该引脚为低电平阐明DSP被设置为微计算机工作方式,即从片内ROM的0FF80h起执行程序。'C5402DSP片内4KROM掩膜了TI设计的几段程序,其中包括bootloader自举加载程序(寄存在0F800h地址)。在片内ROM的0FF80h处有一条分支跳转指令(BD0F800h)。当DSP上电复位后(MP/MC=0),该跳转指令使程序跳转到0F800h,并从此开始执行bootloader自举加载程序。Bootloader自举加载程序首先开始执行某些初始化工作,初始化的内容重要包括:①关闭所有可屏蔽中断(INTM=1);②将片内DARAM映射至程序/数据存储空间(OVLY=1);③将程序、数据及I/O存储空间均设置为7个等待状态(SWWSR=07FFFh)初始化完毕后,根据外部设定的条件,选择不一样的自举加载方式,判断条件是有先后次序的,其流程如下图所示。本试验平台重要提供8位,16位的自举加载功能,当根据判断条件选择了并行加载方式时,其加载的流程如下图所示。处理3、自举加载表的建立自举加载表就是寄存在DSP外部空间,加载时读至DSP程序空间,根据一定格式组织在一起的欲加载的程序。因此,自举表内容不仅包括了欲加载的各段代码,并且包括各段代码长度、各代码段寄存的目的地址、程序入口地址等信息。自举加载表可由hex500格式转换器自动生成。Hex500实际为一通用程序,它将公共目的文献格式——COFF文献转换成多种EPROM或FLASH的编程格式。因此,在使用hex500工具之前,首先必须对DSP的汇编语言、C语言或两者的混合编程语言进行汇编、编译、链接,生成COFF格式的.out文献,然后再通过设置合适的选项生成顾客所规定的自举表。详细hex500工具的使用请参见SPRU102“TMS320C54xAssemblyLanguageToolsUser'sGuide”下面详细说一下8位并行加载的操作环节:首先请下载“8位并行加载”文献包,其中包括下面文献:FLSHPROG.cFlash烧写程序文献flashprog.cmdFlash烧写程序命令文献HEX500.EXEHEX转换工具HEXBIN.EXEBIN转换工具hex.cmdHEX工具的命令文献然后,请执行下面环节:(假设需要的自启动的工程叫led.prj)1、启动ccs,打开led.prj,选择project->BuildOptions;选中Compiler页面,在ProcessorVersion中填入548;选中Linker页面,在MapFilename中填入map文献名(如led.map)。2、重新编译工程文献led.prj,生成led.out和led.map。3、打开led.map文献,找到ENTRYPOINTSYMBOL:XXXXaddress:XXXX记住address的值。4、修改hex.cmd文献,打开该文献,将-e后的参数值改为前一环节中address的值。5、在命令行中输入“hex500hex.cmd”命令,生成led.hex。6、在命令行中输入“HexBin”命令,生成led.bin。选项InputHEXfilename:led.HEXOutputBinfilename:[led.BIN]:HEXfileformat<I>ntel /<M>otorola /<T>ektronix<X>TISDSMAC /<S>traightHEX /<D>MD16HEX [I]:Unusedbyteswillbe<1>00<2>FF[1]:Wait…INTELHextoBinaryconverterConvertcomplete7、修改flash烧写程序FLSHPROG.c,详细语句如下(红色位置的需要修改):(1)“#defineFlashMap1BaseAddr0x4000”FlashMap1BaseAddr定义了flash烧写的基地址,试验板从0x4000开始为flash地址,一般修改为0x4000。(2)“fp=fopen("E:\\MyBootLoader\\led.bin","rb");”需要修改led.bin的文献位置。(3)“WriteByte(0xbffe,0x0040); WriteByte(0xbfff,0x0000);”根据FlashMap1BaseAddr的值修改数据空间0xfffe和0xffff地址的值,0xfffe为高8位值,0xffff为低8位值。8、将led.bin文献通过FLSHPROG.c程序,烧入flash中。(其中flashprog.cmd要根据FLSHPROG程序空间分派状况做部分修改)4.板上自举加载程序压缩包“测试程序.rar”内包具有自举加载程序项目以及测试程序。主程序请察看附录。

附录1.外扩原则接口信号排列次序J9.外扩地址线以及信号线:DSPA0DSPA1DSPA2DSPA5GNDIOS0IOS1IOS2IOS3IOS4IOS5IOS6IOS7NCNCNCRESETNCIOSTRBNCGNDIOOEIOWENCVCC5VXFMSCIAQHOLDAIACKCLKOUTTOUTNCNCJ10.外扩数据接口D0D1D2D3D4D5D6D7D8D9D10D11D12D13D14D15GNDNCNCNCNCNCREADYHOLDBIOINT0INT1INT2INT3NMINCNCNCNCJ8.外扩HPI接口HD0HD1HD2HD3HD4HD5HD6HD7GNDGNDHCSHASHBILHCNTL0HCNTL1HDS1HDS2HR/WNCNCJ7.外扩MBSP接口VCC3.3VNCNCBCLKR0BFSR0BDR0BCLKX0BDX0BFSX0NCNCBCLKR1BFSR1BDR1BCLKX1BFSX1BDX1NCNCGND2.DSP自加载程序flashprog.c#include<stdio.h>#defineFlashMap1BaseAddr0x4000voidWriteIsOver(void);voidEraseChip(void);voidWriteWord(unsignedint,unsignedchar);main(){ FILE*fp; int*ptr1=(int*)0x2600; int*ptr2=(int*)0x2601; int*ptr=(int*)0x2602; unsignedinti; intcodelengthstart,codelengthend,codelength; EraseChip();fp=fopen("D:\\MyBoot~1\\Led.bin","rb"); if(fp==NULL) { exit(0); } fseek(fp,0,SEEK_END); codelengthend=(int)ftell(fp); fseek(fp,0x0,SEEK_SET); codelengthstart=(int)ftell(fp); codelength=codelengthend-codelengthstart; for(i=0;i<codelength/2;i++) { fread(ptr1,1,1,fp); fread(ptr2,1,1,fp); *ptr=(int)((*ptr1&0xff)<<8)+(int)((*ptr2)&0xff); WriteWord(i,*ptr); } WriteWord(0xbfff,0x4000);}voidEraseSector(unsignedintSectorAddr){ *(volatileunsignedchar*)(FlashMap1BaseAddr+0xaaa)=0xaa; *(volatileunsignedchar*)(FlashMap1BaseAddr+0x555)=0x55; *(volatileunsignedchar*)(FlashMap1BaseAddr+0xaaa)=0x80; *(volatileunsignedchar*)(FlashMap1BaseAddr+0xaaa)=0xaa; *(volatileunsignedchar*)(FlashMap1BaseAddr+0x555)=0x55; *(volatileunsignedchar*)(FlashMap1BaseAddr+SectorAddr)=0x30; WriteIsOver();}voidEraseChip(void){ *(volatileunsignedchar*)(FlashMap1BaseAddr+0x555)=0xaa; *(volatileunsignedchar*)(FlashMap1BaseAddr+0x2aa)=0x55; *(volatileunsignedchar*)(FlashMap1BaseAddr+0x555)=0x80; *(volatileunsignedchar*)(FlashMap1BaseAddr+0x555)=0xaa; *(volatileunsignedchar*)(FlashMap1BaseAddr+0x2aa)=0x55; *(volatileunsignedchar*)(FlashMap1BaseAddr+0x555)=0x10; WriteIsOver();}voidWriteWord(unsignedintAddr,unsignedcharVal){ *(volatileunsignedchar*)(FlashMap1BaseAddr+0x555)=0xaa; *(volatileunsignedchar*)(FlashMap1BaseAddr+0x2aa)=0x55; *(volatileunsignedchar*)(FlashMap1BaseAddr+0x555)=0xa0; *(volatileunsignedchar*)(FlashMap1BaseAddr+Addr)=Val; WriteIsOver();}voidWriteIsOver(void){ unsignedinti; unsignedcharLastToggleBit,CurrentToggleBit; LastToggleBit=(*(volatileunsignedchar*)FlashMap1BaseAddr)&0x40; CurrentToggleBit=(*(volatileunsignedchar*)FlashMap1BaseAddr)&0x40; for(i=0;;i++) { LastToggleBit=CurrentToggleBit; CurrentToggleBit=(*(volatileunsignedchar*)FlashMap1BaseAddr)&0x40; if(LastToggleBit==CurrentToggleBit)break; }}3.已烧录程序ledtest.c#include<stdio.h>#include"c5402regs.h"#include"c5402devregs.h"voidinitchip(void);voidinitInterruptVec(void);voidopenInterrupt(intintmask);voidcloseInterrupt(intintmask);voidinitTIMER(intisTIMER0,intTCRvalue,intPRDvalue);voiddelay(inttimecount);voiddacout(intdavalue);intadcin(void);interruptvoidmyIrqtimer(void);interruptvoidmyInt0(void);interruptvoidmyInt1(void);interruptvoidmyInt2(void);staticintledmask;staticintleddat;staticintleddatflag;staticinthtimercount;voidmain(){ initchip(); initInterruptVec(); ledmask=0xFF; leddat=~1; leddatflag=1; htimercount=100; initTIMER(1,0x03CF,0xFFFF); openInterrupt(TINT0EN); openInterrupt(INT0EN); openInterrupt(INT1EN); openInterrupt(INT2EN);}voidinitchip(void){ SWWSR|=0xAFFF; SWCR&=0xFFFE;}voidinitTIMER(intisTIMER0,intTCRvalue,intPRDvalue){ if(isTIMER0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论