您好,欢迎访问三七文档
本此讲座主要讨论内容•数字化设计•模拟混合电路设计•DSPS目标系统设计•DSP外设的设计与使用•系统软件开发•工程应用注意事项(一)数字化设计概述TMS320C542A/DA/DFILTERD/ACONTROLLEREPROMRAMFILTER/MUX一个典型DSPSOLUTION设计设计要素:•数字化要求•模拟混合电路(ADC/DAC)设计•处理需求(DSP运算量)•吞吐量需求•存储器需求(SRAM、ROOM、FLASH等)•通信口需求•其它控制(电源设计、状态控制、时钟控制、多DSP控制、......)(二)模数与数模转换1基带信号采样定理要想连续信号抽取后能够不失真地还原出原信号,则抽取频率必须大于或等于两倍原信号频谱的最高频率。(Nyquist定理)2带通采样定理带通采样时采样频率不一定要满足Nyquist准则,带通采样的采样频率选择方法为:(1)fs2f(BW)(2)fs=4fc/(2NZ-1)其中,NZ=1,2,3,…的最大整数。3量化与量化误差连续信号经量化处理要产生量化误差,对于均匀量化,量化误差的大小为:EundBSNRENEsenelog20677.4)()2*3/(3/12/222222其中,E为FS电平,us为信号有效电平。对于FS正弦输入,量化误差为:ndBSNRe676.1)(4ADC/DAC的选择(1)ADC的种类:逐次比较ADC双线性ADCFLASHADC-ADC(2)ADC选择的标准:分辨率、速度、输入动态范围、POWER等(3)DAC的选择(4)滤波器设计5、DSP与ADC/DAC的接口(1)对于串型ADC/DAC接口一般使用DSP的串口进行数据通信。如C25与11通道的12位ADCTLC2543的接口设计如下:(2)对于并型ADC/DAC接口一般使用DSP的I/O口进行数据通信。如DSP与12位ADCAD678的接口设计如下:(三)目标系统硬件设计1DSP的选择•运算量•价格•外设需求•其他因素……2DSP配置•DATA存储器大小•PROGRAM存储器大小•存储器速度要求•I/O口配置……3、DSP基本系统设计•与模数电路接口•BOOTLOADER设计•扩展存储器设计•时钟设计•中断设计•外设的使用•电源管理•其他…….1)、BOOTLOADER设计•MP/*MC=0(片上ROM有效),复位后程序从FF80开始运行,将跳转到BOOTLOADER代码开始出。•BOOT的流程取决于I/O口FFFF的值(BRS)和INT2•*RS后检测INT2是否有效?有效按HPIboot模式引导,否则,读I/O口FFFFh的BRS,决定其他的引导方式。•BRS决定的引导方式xxxx1000:8bit并口I/O引导xxxx1100:16bit并口I/O引导xx????00:串口引导(详细说明见后)xxxxxx01:8bit并行EPROM引导xxxxxx10:16bit并行EPROM引导xxxxxx11:热引导模式BRS决定的串口引导说明:xx000000:8bit缓冲串口BSP(FSX/CLKX作为输出)xx000100:16bit缓冲串口BSP(FSX/CLKX作为输出)xx010000:8bit缓冲串口BSP(FSX/CLKX作为输入)xx010100:16bit缓冲串口BSP(FSX/CLKX作为输入)xx100000:8bit时分复用串口TDM(FSX/CLKX作为输出)xx100100:16bit时分复用串口TDM(FSX/CLKX作为输出)2)外部存储器接口A22-A19A18A17A16A15A14-A0*PS*DS*IS*MSTRBR/*WA16A15A14-A0*OE*CS*WE下面给出一个扩展外部存储器的例子,重点注意:a、只使用一片128Kx16的RAMb、与内部有效的RAM相同的地址,外部RAM无效c、外部RAM的存取速度不能全速运行时,需要根据速度插入等待状态3)系统时钟设计与控制CLKOUTVCCcrystaloscillatorGNDExternalClock3.3V电路的两种接法:内部振荡器外部晶振两种时钟控制方式a、Hardware-programmablePLL(C541、C542、C543、C545&C546)b、Software-programmablePLL(C541B/C545A/C546A/C548/C549/C5402/C5410/C5420)由时钟模式寄存器控制(CLKMD):软件编程控制时钟举例:(设置CLKOUT=CLKINx3)STM#0h,CLKMD;switchtoDIVmodeTstStatu:LDMCLKMD,AAND#01b,A;pollSTATUSbitBCTstStatu,ANEQSTM#0214fh,CLKMD;SetPLLON/OFFwhen;STATUSisDIVmode;PLLMUL=0010,PLLDIV=0;PLLCOUNT=00101000(41)4)、中断处理a、外部中断引脚连接b、修改中断向量表c、中断服务程序5)外设的使用•计数器的使用•标准SP的使用•缓冲SP的使用•McBSP的使用•TDM的使用•HPI的使用与设计•DMA的使用与设计•其它I/O接口信号线(如XF、BIO等)的使用(四)、目标板系统软件设计1、源程序的编写在编写汇编语句时,应遵循以下规则:语句的开头只能是标号、空格、星号或分号。标号是可选项;如果使用,必须从第一列开始。每个域必须由一个或多个空棵空格来分开。制表符等同于空格。注释是可选项。开始于第一列的注释用星号或分号(*或;)来标明,开始于其它列的注释必须由分号开头。一个源语句可以包含四个域,一般格式如下:[label][:]instruction[;comment]2、汇编编译指令的使用汇编编译指令用来完成以下任务:•将代码和数据汇编进特定的段•为未初始化的变量保留存储器空间•控制展开列表的形式•存储器初始化•汇编条件块•定义全局变量•指定汇编器可以获得宏的特定库•检查符号调试信息1)、程序段定义的汇编指令段定义汇编指令使部分源程序放入适当的段中。.bss在.bss段中为未初始化的变量保留空间.data确认.data段中的代码段。.data段中通常包含了初始化的数据(用.int/.word等定义)。.sect定义初始化了的带命名的段,并将紧接着的代码或数据并入该段。.text该段中包含了可执行的代码。.usect在一个未初始化的有命名的段中保留空间使用格式和举例.mmregs.bssx,20,1.usect“sin-table”,100…….textLD#0,AADDx,A,B…….sect“cal-sin”LD#lk,ASTLA,sin-tableRET.data.word1,2,3,4.int043h,ff08h除.int和.word外还有很多用于常量说明的汇编指令,如.byte/.field/.space/.bes/.fload/.long/.string/.xfload等,请看教程。2)、引用其它文件的汇编指令.copy/.include告诉汇编器开始从其它文件中读源语句。.def确认一个在当前模块中定义的且能被其它模块使用的符号。.global声明一个外部符号,使其它模块在连接的时候可以使用它。如果在当前段定义了该符号,那么该符号就可以被其它模块使用;如果在当前段中没有定义该符号,则是使用了其它模块定义的符号。前一种功能与.def相同,后一种功能与.ref相同。.mlib向汇编器提供一个包含了宏定义的文挡库的名称。当汇编器碰见了一个在当前库中没有定义的宏,就在.mlib确认的宏库中查找。.ref确认一个在当前段中使用但在其它段中定义的符号。3)、条件汇编指令.if/.elseif/.else/.endif这些指令告诉汇编器根据表达式的值条件汇编一块代码。.if表示一个条件块的开始,如果条件为真就汇编紧接着的代码。.elseif是表示如果.if的条件为假,而.elseif的条件为真,就汇编紧接着的代码。.endif结束该条件块。.loop/.break/.endloop这组指令告诉汇编器按照表达式的值循环汇编一块代码。.loopexpression标注一块循环代码的开始。.breakexpression告诉汇编器当表达式为假时,继续循环汇编;当表达式为真时,立刻转到.endloop后的代码去。.endloop标注一个可循环块的末尾。4)、汇编时的符号指令符号指令是使有意义的符号名与常数值或字符串相等同.asg该指令规定一个字符串与一个替代符号相等.asg“10,20,30,40”,coefficients.bytecoefficients.eval计算一个表达式的值并把结果传送到与一个替代符号等同的字符串中.evalx+1,x.set/.equ这两条指令把一个常数值等效成一个符号,存放在符号表中且不能被清除。Cont1.set0190h.intcont1,cont1*2,cont1*4其他符号指令:.label/.struct/.endstruct/.tag5)其他汇编指令.align使SPC对准1-word到128-word的边界。.algebraic告诉编译器文件包含了算术汇编源代码。.end结束编译。.mmregs定义存储器映射寄存器的符号名称。.emsg/.mmsg/.wmsg用来定义自己的错误和警告提示信息。.newblock对局部标号进行复位。.sblock指定几段为一模块。.version决定为之建立指令的处理器。输出列表格式指令:.drlist/.drnolist/.fclist/fcnolist/……3、命令文件的编写命令文件的功能是说明目标文件如何连接到目标板,即装入存储器(或重定位)的方法。命令文件包括:1)、连接文件说明:a.obj/*Firstinputfilename*/b.obj/*Secondinputfilename*/-oprog.out/*Optiontospecifyoutputfile*/-mprog.map/*Optiontospecifymapfile*/2)、存储分配说明3)、段的分配与说明4)、命令文件举例a.objb.objc.obj/*Inputfilenames*/-0prog.out-mprog.map/*Options*/MEMORY/*MEMORYdirective*/{RAM:origin=100hlength=0100hROM:origin=01000hlength=0100h}SECTIONS/*SECTIONSdirective*/{.text:ROM.data:ROM.bss:RAM}(五)、工程应用注意事项电平转换定标流水线冲突指令效率......1、电平转换1)一般DSP有两个电源:CVCC、DVCC2)如果DVCC=3.3V,则DSP不能承受5V电平,不能驱动5VCMOS,但可以驱动5VTTL,3.3VTTL,LVT,ALVC3)电平转换可以使用SN74ALVC164245等2、定点DSP的定标1)一般定点DSP有两种定标表示法:Q、SQ15--S0.15---1≤X≤0.9999695Q5--S10.5---1024≤X≤1023.968752)浮点数(x)转换成定点数(xq):xq=(int)X*2Q3)定点数(xq)转换成浮点数(x):x=(float)xq*2Q4)C54x通过归一化支持定标操作:相关指令EXP、NORM归一化一个数是先求其指数,然后把它调整到最大精度格式。实现方法如下:
本文标题:dsp工程设计讲座
链接地址:https://www.777doc.com/doc-140749 .html