dsp工程设计讲座

上传人:re****.1 文档编号:567671519 上传时间:2024-07-22 格式:PPT 页数:60 大小:1.10MB
返回 下载 相关 举报
dsp工程设计讲座_第1页
第1页 / 共60页
dsp工程设计讲座_第2页
第2页 / 共60页
dsp工程设计讲座_第3页
第3页 / 共60页
dsp工程设计讲座_第4页
第4页 / 共60页
dsp工程设计讲座_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《dsp工程设计讲座》由会员分享,可在线阅读,更多相关《dsp工程设计讲座(60页珍藏版)》请在金锄头文库上搜索。

1、DSP Solutions开发开发制作:DSP技术中心主讲:李玉柏WWW.DSPSOLUTION.COM本此讲座主要讨论内容本此讲座主要讨论内容基于基于DSP的方案设计的设计要素的方案设计的设计要素DSP方案设计步骤方案设计步骤数字化设计数字化设计模拟混合电路设计模拟混合电路设计DSPs目标系统设计目标系统设计系统软件开发系统软件开发工程应用注意事项工程应用注意事项(一)一)DSPDSP方案设计要素方案设计要素 与设计步骤与设计步骤一个典型DSP SOLUTION设计ADCADCDACDAC平滑滤波器平滑滤波器防混迭滤波器防混迭滤波器信号预处理、MUX、程控放大等TMS320VC54xCONT

2、ROL-LER通信口通信口EPROMRAM设计要素: 算法分析及优化 DSP运算量核算及DSP选择 体系结构设计(单DSP结构还是多DSP结构, 并行结构还是串行结构,全DSP结构还是 DSP/MCU混合结构等) 数字化要求 模拟混合电路(ADC/DAC)设计 吞吐量需求 存储器需求(SRAM、ROOM、FLASH等) 通信口需求 其它控制(电源设计、状态控制、时钟控 制、同步控制等)DSP方案设计的基本步骤 第一步:算法分析与优化 一个大型的DSP应用方案设计时,在目标板设计之前应提交下列报告: 需求分析 算法分析和优化分析 运算量的评估 体系结构设计评估 DSP方案比通用CPU和MCU方案

3、的优势分析 开发工具需求 测试与验证方法DSP方案设计的基本步骤 第二步:DSP的选择DSP应用方案的运算量需求 DSP适合处理的领域 DSP的片上存储器资源、价格、外设配置DSP与其他元件和部件的配套性其他一些因素,如购买是否方便、功耗、在线仿真控制、与其他CPU的同步方式等 DSP方案设计的基本步骤 第三步:第三步:DSPDSP配置配置-DSPDSP基本系统设计基本系统设计 选择了DSP后,就可以对DSP的外围电路进行设计。DSP外围电路包括本身的基本引脚连接、总线驱动、时钟控制、引导程序方式控制、存储器配置、通信口配置、I/O口控制、时序设计等,目的是保证DSP的基本工作模式和环境。我们

4、又把对DSP的外围电路进行的设计称为DSP基本系统设计,或者称为DSP最小系统设计。 DSP方案设计的基本步骤 第四步:第四步:模拟数字混合电路设计模拟数字混合电路设计 DSP应用方案是一个数字系统,如果要处理客观世界真实信号,必须有数字化设计。模拟数字混合电路设计一般包括信号调理、模数转换和数模转换、数据缓存等部分。在设计中实现DSP与模拟混合产品的无缝连接、以及保证数据吞吐量是关键。DSP方案设计的基本步骤 第五步:第五步:系统电路设计系统电路设计 为了保证系统功能与指标,需要在系统级进行设计与优化。一个高速处理的数字化系统的主要技术指标包括: 系统通过速率 系统分辨度 系统精度 系统线性

5、误差 系统共模抑制比DSP方案设计的基本步骤 第六步:第六步:系统软件的编写与调试系统软件的编写与调试第七步:第七步:系统测试与验证系统测试与验证 1 1)硬件部件的原理验证)硬件部件的原理验证 2 2)通过)通过DSPDSP的原理验证的原理验证 3 3)软件的仿真与算法验证)软件的仿真与算法验证 4 4)系统硬件功能验证与指标测试)系统硬件功能验证与指标测试 5 5)系统软件的完善)系统软件的完善 6 6)其它测试与验证)其它测试与验证 (二)(二) 数字化设计数字化设计1 基带信号采样定理基带信号采样定理 要想连续信号抽取后能够不失真地还原出原信号,则抽取频率必须大于或等于两倍原信号频谱的

6、最高频率。(Nyquist定理) f (x) F (w) 0 t 0 w f (nT) FT (w) 0 n 0 w2 带通采样定理带通采样定理 带通采样时采样频率不一定要满足带通采样时采样频率不一定要满足Nyquist准则,带准则,带通采样的采样频率选择方法为:通采样的采样频率选择方法为:(1) fs 2 f (BW)(2) fs = 4fc / (2NZ-1)其中,其中,NZ=1,2,3, 的最大整数。的最大整数。 0 fs fc 盲区采样正交采样3 量化与量化误差量化与量化误差 连续信号经量化处理要产生量化误差,对于均匀量化,量化误差的大小为:其中,E为FS电平,us为信号有效电平。对于

7、FS正弦输入,量化误差为:4 ADC/DAC的选择的选择(1) ADC的种类:的种类: 逐次比较ADC 双线性ADC FLASH ADC - ADC(2) ADC选择的标准:选择的标准:分辨率、速度、 输入动态范围、POWER等(3) DAC的选择的选择(4) 滤波器设计滤波器设计5、DSP与与ADC/DAC的接口的接口(1)对于串型ADC/DAC接口一般使用DSP的串口进行数据通信。 如C25与11通道的12位ADC TLC2543的接口设计如下:(2)对于并型ADC/DAC接口一般使用DSP的I/O口进 行数据通信。如DSP与12位ADC AD678的接口设 计如下:( (三三) ) 目标

8、系统硬件设计目标系统硬件设计1 DSP的选择的选择运算量运算量价格价格外设需求外设需求其他因素其他因素2 DSP配置配置 DATA存储器大小存储器大小 PROGRAM存储器大小存储器大小 存储器速度要求存储器速度要求 I/O口配置口配置3、DSP基本系统设计基本系统设计与模数电路接口BOOTLOADER设计扩展存储器设计时钟设计中断设计外设的使用电源管理其他 .1 1)、)、BOOTLOADERBOOTLOADER设计设计MP/*MC=0(片上ROM有效),复位后程序从FF80开始运行,将跳转到BOOTLOADER代码开始出。BOOT的流程取决于I/O口FFFF的值(BRS)和INT2*RS后

9、检测INT2是否有效?有效按HPI boot模式引导,否则,读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缓冲串

10、口BSP(FSX/CLKX作为输入) xx010100:16bit缓冲串口BSP(FSX/CLKX作为输入) xx100000:8bit时分复用串口TDM (FSX/CLKX作为输出) xx100100:16bit时分复用串口TDM (FSX/CLKX作为输出)以EPROM引导为例: 为了保证引导成功,EPROM的数据组织必须遵守BOOTLOADER的规定的数据存放格式。利用DSP的编译工具可以很方便的生成符合引导规定的数据存放格式。这个工具是十六进制转换工具,该工具使用方法如下: HEX500 -e 1000h -boot -i -bootorg 08000H -memwidth 8 fil

11、emane其中最主要的是选项的正确使用。决定引导程序识别的数据格式的主要选项包括: -e VALUE 指定引导程序装入DSP的程序存储器的启始地址,如本例的1000H -boot 转换生成引导表 -i 生成intel格式的EPROM数据格式 -bootorg VALUE 说明引导程序从外部数据存储器引导数据的启始地址,如本例EPROM的启始地址为08000H。 -memwidth VALUE 定义外部数据存储器的字宽,在本例为8位的EPROM。 另外还可以使用-swwsr VALUE来设置插入等待周期;使用-bscr VALUE来设置存储器块大小;使用romwidth VALUE来设置EPRO

12、M大小。 EPROM数据区地址(Hex)内容(Hex)含义8000088位BOOT标识(H)8001AA8位BOOT标识(L)80027FSWWSR(H)8003FFSWWSR(L)8004F8BSCR(H)800500BSCR(L)800600程序入口XPC(H)800700程序入口XPC(L)800810程序入口地址(H)800900程序入口地址(L)800A20程序长度(H)800B00程序长度(L)800C00目标程序入口XPC(H)800D00目标程序入口XPC(L)800E10目标程序入口地址(H)800F00目标程序入口地址(L)8010CODE0程序代码0(H)8011CODE

13、1程序代码0(L).C00ECODEN-2程序代码N-1(H)C00FCODEN-1程序代码N-1(L)C01000结束标记C01100结束标记.FFFE80EPROM启始地址(H)FFFF00EPROM启始地址(L)2)外部存储器接口)外部存储器接口A22-A19A18A17A16A15A14-A0*PS*DS*IS*MSTRBR/*WA16A15A14-A0*OE*CS*WE下面给出一个扩展外部存储器的例子,重点注意: a、只使用一片128Kx16的RAM b、与内部有效的RAM相同的地址,外部RAM无效 c、外部 RAM的存 取速度不能全 速运行时,需 要根据速度插 入等待状态3)系统时

14、钟设计与控制)系统时钟设计与控制 CLKOUT VCC crystal oscillator GNDExternal Clock3.3V电路的两种接法: 内部振荡器 外部晶振两种时钟控制方式 a、Hardware-programmable PLL(C541、C542、C543、 C545 & C546)b、Software-programmablePLL(C541B/C545A/C546ASoftware-programmablePLL(C541B/C545A/C546A/C548/C549/C5402/C5410/C5420)/C548/C549/C5402/C5410/C5420)由时钟模

15、式寄存器控制(由时钟模式寄存器控制(CLKMDCLKMD):):软件编程控制时钟举例:软件编程控制时钟举例: ( (设置设置 CLKOUT = CLKIN x 3)CLKOUT = CLKIN x 3) STM #0h, CLKMD ;switch to DIV mode TstStatu: LDM CLKMD, A AND #01b, A ;poll STATUS bit BC TstStatu, ANEQ STM #0214fh, CLKMD ;Set PLLON/OFF when ;STATUS is DIV mode ;PLLMUL=0010, PLLDIV=0 ;PLLCOUNT=0

16、0101000(41)4)、中断处理)、中断处理 a、外部中断引脚连接外部中断引脚连接 b、修改中断向量表修改中断向量表 c、中断服务程序中断服务程序5)外设的使用)外设的使用计数器的使用标准SP的使用缓冲SP的使用McBSP的使用TDM的使用HPI的使用与设计DMA的使用与设计其它I/O接口信号线(如XF、BIO等)的使用(四)、目标板系统软件设计(四)、目标板系统软件设计1、源程序的编写、源程序的编写在编写汇编语句时,应遵循以下规则:在编写汇编语句时,应遵循以下规则: 语句的开头只能是标号、空格、星号或分号。语句的开头只能是标号、空格、星号或分号。 标号是可选项;如果使用,必须从第一列开始

17、。标号是可选项;如果使用,必须从第一列开始。 每每个个域域必必须须由由一一个个或或多多个个空空棵棵空空格格来来分分开开。制制表表符符等等同于空格。同于空格。 注注释释是是可可选选项项。开开始始于于第第一一列列的的注注释释用用星星号号或或分分号号(* 或或 ;)来标明,开始于其它列的注释必须由分号开头。)来标明,开始于其它列的注释必须由分号开头。一个源语句可以包含四个域,一般格式如下:一个源语句可以包含四个域,一般格式如下: label : instruction ; comment2、汇编编译指令的使用、汇编编译指令的使用汇编编译指令用来完成以下任务:汇编编译指令用来完成以下任务:将代码和数据

18、汇编进特定的段将代码和数据汇编进特定的段为未初始化的变量保留存储器空间为未初始化的变量保留存储器空间控制展开列表的形式控制展开列表的形式存储器初始化存储器初始化汇编条件块汇编条件块定义全局变量定义全局变量指定汇编器可以获得宏的特定库指定汇编器可以获得宏的特定库检查符号调试信息检查符号调试信息1)、程序段定义的汇编指令)、程序段定义的汇编指令段定义汇编指令使部分源程序放入适当的段中。段定义汇编指令使部分源程序放入适当的段中。. .bss 在.bss段中为未初始化的变量保留空间. .data 确认.data段中的代码段。.data段中通常包含 了初始化的数据(用.int/.word等定义)。. .

19、sect 定义初始化了的带命名的段,并将紧接着的代 码或数据并入该段。. .text 该段中包含了可执行的代码。. .usect 在一个未初始化的有命名的段中保留空间使用格式和举例使用格式和举例. mmregs. bss x, 20, 1. usect “sin-table”, 100. textLD #0, AADD x, A, B.sect “cal-sin”LD # lk, ASTL A, sin-tableRET. data. word 1, 2, 3, 4. int 043h, ff08h除.int和.word外还有很多用于常量说明的汇编指令,如.byte/.field/.space

20、/.bes/.fload/.long/.string/.xfload等,请看教程。2 2)、引用其它文件的汇编指令)、引用其它文件的汇编指令. .copy/. .include 告诉汇编器开始从其它文件中读源语句。. .def 确认一个在当前模块中定义的且能被其它模块使用的符号。. .global 声明一个外部符号,使其它模块在连接的时候可以使用它。如果在当前段定义了该符号,那么该符号就可以被其它模块使用;如果在当前段中没有定义该符号,则是使用了其它模块定义的符号。前一种功能与.def相同,后一种功能与.ref相同。. .mlib 向汇编器提供一个包含了宏定义的文挡库的名称。当汇编器碰见了一个

21、在当前库中没有定义的宏,就在.mlib确认的宏库中查找。. .ref 确认一个在当前段中使用但在其它段中定义的符号。3 3)、条件汇编指令)、条件汇编指令. .if /. .elseif/. .else/. .endif 这些指令告诉汇编器根据表达式的值条件汇编一块代码。. .ifif表示一个条件块的开始,如果条件为真就汇编紧接着的代码。. .elseifelseif是表示如果.if的条件为假,而. .elseifelseif的条件为真,就汇编紧接着的代码。. .endifendif结束该条件块。. .loop/. .break/. .endloop 这组指令告诉汇编器按照表达式的值循环汇编一

22、块代码。. .loop expression 标注一块循环代码的开始。. .break break expressionexpression告诉汇编器当表达式为假时,继续循环汇编;当表达式为真时,立刻转到. .endloopendloop后的代码去。. .endloopendloop标注一个可循环块的末尾。4 4)、汇编时的符号指令)、汇编时的符号指令符号指令是使有意义的符号名与常数值或字符串相等同符号指令是使有意义的符号名与常数值或字符串相等同. .asg 该指令规定一个字符串与一个替代符号相等.asg “10, 20, 30, 40”, coefficients.byte coeffici

23、ents. .eval 计算一个表达式的值并把结果传送到与一个替代符号等同的字符串中.eval x+1, x. .set/. .equ 这两条指令把一个常数值等效成一个符号,存放在符号表中且不能被清除。Cont1 .set 0190h .int cont1, cont1*2, cont1*4其他符号指令: .label/.struct/.endstruct/.tag5)其他汇编指令)其他汇编指令. .align 使SPC对准1-word到128-word的边界。. .algebraic 告诉编译器文件包含了算术汇编源代码。. .end 结束编译。. .mmregs 定义存储器映射寄存器的符号名

24、称。. .emsg/. .mmsg/. .wmsg 用来定义自己的错误和警告提示信息。. .newblock 对局部标号进行复位。. .sblock 指定几段为一模块。. .version 决定为之建立指令的处理器。输出列表格式指令:. .drlist/. .drnolist/. .fclist/ fcnolist/3、命令文件的编写、命令文件的编写 命令文件的功能是说明目标文件如何连接到目命令文件的功能是说明目标文件如何连接到目标板,即装入存储器(或重定位)的方法。标板,即装入存储器(或重定位)的方法。命令文件包括:命令文件包括:1)、连接文件说明:)、连接文件说明:a.obj /* Fir

25、st input filename */b.obj /* Second input filename */-o prog.out /* Option to specify output file */-m prog.map /* Option to specify map file */2)、)、 存储分配说明存储分配说明3)、)、 段的分配与说明段的分配与说明4 4)、命令文件举例)、命令文件举例)、命令文件举例)、命令文件举例a.obj b.obj c.obj /* Input filenames */-0 prog.out -m prog.map /* Options */MEMORY

26、/* MEMORY directive */RAM: origin = 100h length = 0100hROM: origin = 01000h length = 0100hSECTIONS /* SECTIONS directive */.text: ROM.data: ROM.bss: RAM(五)、工程应用注意事项(五)、工程应用注意事项电平转换 定标流水线冲突 指令效率 .1、电源设计与电平转换 1)一般DSP有两个电源:CVCC、DVCC 电源设计中提倡使用有两路输出的电源芯片,如TPS73HD301、TPS73HD325、TPS73HD318 等。 复位电路设计结合电源设计。

27、各各种种电电平平的的转转换换3.3 Vcc2.4 Voh2.0 Vih1.5 Vt0.8 Vil0.4 Vol0 Gnd3.3V TTLLVT, LVC, LV5V Vcc4.44 Voh3.5 Vih2.5 Vt1.5 Vil0.5 Vol0 Gnd5V CMOS5V Vcc2.4 Voh2.0 Vih1.5 Vt0.8 Vil0.4 Vol0 Gnd5V TTLStandard TTL 2)如果DVCC=3.3V,则DSP不能承受5V电平,不能驱动5VCMOS,但可以驱动5VTTL,3.3VTTL,LVT,ALVC 3)电平转换可以使用SN74ALVC164245等4)使用省电模式: 省电

28、模式可以使CPU暂时处于休眠状态,这时的功耗比正常模式要低,但能保持CPU的内容。 操作操作/特征特征IDLE1IDLE2IDLE3/HOLDCPU停止工作停止工作YYYY注注CPU时钟停止时钟停止YYYN外设时钟停止外设时钟停止NYYN锁相环(锁相环(PLL)停止工作停止工作NNYN外部地址线处于高阻状态外部地址线处于高阻状态NNNY外部数据线处于高阻状态外部数据线处于高阻状态NNNY外部控制信号线处于高阻状态外部控制信号线处于高阻状态NNNY退出省电模式的方式:置退出省电模式的方式:置/HOLD为高为高NNNY不可屏蔽硬件中断不可屏蔽硬件中断YNNN不可屏蔽软件中断不可屏蔽软件中断YYYN

29、/NMIYYYN/RSYYYN2、定点DSP的定标 1)一般定点DSP有两种定标表示法:Q、S Q15 - S0.15 - -1X0.9999695 Q5 - S10.5 - -1024X1023.96875 2)浮点数(x)转换成定点数(xq): xq = (int)X*2Q 3)定点数(xq)转换成浮点数(x): x = (float)xq*2Q 4)C54x通过归一化支持定标操作: 相关指令EXP、NORM 归一化一个数是先求其指数,然后把它调整到最大精度格式。实现方法如下:3、DSP的流水线冲突 1)C54x采用六级流水线操作 2)一般流水线冲突时DSP会自动插入时延解决冲突(见后)

30、3)有时需要程序员自己调整解决冲突,如: stlm a,brc rsbx sxm nop nop rptb loop-1 ld *ar5+, a . loop: stlm a, st1 ssbx cpl nop nop sub *ar2-, a nop nop ld 27h, a预取指 取指 解码 访问 读 执行STL A, *AR3+ LD #0, A ADD *AR4+, *AR5+, A ; AR3和AR5都指向程序驻留的DARAMSTL A, *AR3+(写操作延迟到下一个周期) LD #0, A(上一条指令的写操作在这个周期执行)ADD *AR4+, *AR5+, A 预取指 取指

31、解码 访问 读 执行本来应该在此取指 实际访问存储器写EB预取指 取指 解码 访问 读 执行写EB读DB读CB4、指令效率的提高 C54x中有一些指令功能差不多,但编写出的程序效率不同,灵活使用,如:MPYR Smem, dst;T*(Smen)dstMACR Smem, dst;(;(Smen)*T+src( MPYR +ADD); srcMACD Smen,pmen,src;pmend PAR (MAC+DELY+LD);(;(Smem)*(pmed); +(src) src;(;(Smem)T;(;(Smem) Smem+1谢谢大家!谢谢大家!联系电话:(联系电话:(028)3201455E-mail:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 幼儿/小学教育 > 幼儿教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号