《dsp工程设计讲座精编版》由会员分享,可在线阅读,更多相关《dsp工程设计讲座精编版(39页珍藏版)》请在金锄头文库上搜索。
1、本此讲座主要讨论内容,数字化设计 模拟混合电路设计 DSPS目标系统设计 DSP外设的设计与使用 系统软件开发 工程应用注意事项,(一) 数字化设计概述,TMS320C,542,A/D,A/D,FILTER,D/A,CONTROLLER,EPROM,RAM,FILTER/MUX,一个典型DSP SOLUTION设计,设计要素:,数字化要求 模拟混合电路(ADC/DAC)设计 处理需求(DSP运算量) 吞吐量需求 存储器需求(SRAM、ROOM、FLASH等) 通信口需求 其它控制(电源设计、状态控制、时钟控制、多DSP控制、.),(二)模数与数模转换,1 基带信号采样定理 要想连续信号抽取后能
2、够不失真地还原出原信号,则抽取频率必须大于或等于两倍原信号频谱的最高频率。(Nyquist定理),2 带通采样定理,带通采样时采样频率不一定要满足Nyquist准则,带通采样的采样频率选择方法为: (1) fs 2 f (BW) (2) fs = 4fc / (2NZ-1) 其中,NZ=1,2,3, 的最大整数。,3 量化与量化误差,连续信号经量化处理要产生量化误差,对于均匀量化,量化误差的大小为:,其中,E为FS电平,us为信号有效电平。对于FS正弦输入,量化误差为:,4 ADC/DAC的选择,(1) ADC的种类: 逐次比较ADC 双线性ADC FLASH ADC - ADC (2) AD
3、C选择的标准:分辨率、速度、 输入动态范围、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的接口设 计如下:,(三) 目标系统硬件设计,1 DSP的选择 运算量 价格 外设需求 其他因素,2 DSP配置 DATA存储器大小 PROGRAM存储器大小 存储器速度要求 I/O口配置,3、DSP基本系统设计,与模数电路接
4、口 BOOTLOADER设计 扩展存储器设计 时钟设计 中断设计 外设的使用 电源管理 其他 .,1)、BOOTLOADER设计,MP/*MC=0(片上ROM有效),复位后程序从FF80开始运行,将跳转到BOOTLOADER代码开始出。 BOOT的流程取决于I/O口FFFF的值(BRS)和INT2 *RS后检测INT2是否有效?有效按HPI boot模式引导,否则,读I/O口FFFFh的BRS,决定其他的引导方式。 BRS决定的引导方式 xxxx1000:8bit并口I/O引导 xxxx1100:16bit并口I/O引导 xx?00:串口引导(详细说明见后) xxxxxx01:8bit并行EP
5、ROM引导 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-A19 A18
6、A17 A16 A15 A14-A0 *PS *DS *IS *MSTRB R/*W,A16 A15 A14-A0 *OE *CS *WE,下面给出一个扩展外部存储器的例子,重点注意: a、只使用一片128Kx16的RAM b、与内部有效的RAM相同的地址,外部RAM无效 c、外部 RAM的存 取速度不能全 速运行时,需 要根据速度插 入等待状态,3)系统时钟设计与控制,CLKOUT VCC crystal oscillator GND,External Clock,3.3V,电路的两种接法: 内部振荡器 外部晶振,两种时钟控制方式 a、Hardware-programmable PLL(C5
7、41、C542、C543、 C545 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=00101000(41),4)、中断处理 a、外部中断引脚连接 b、修改中断向量表 c、中断服务程序,5)外设的使用,计数器的使用 标准SP的使用 缓冲SP的使用 McBSP的使用 TDM的使用 HP
8、I的使用与设计 DMA的使用与设计 其它I/O接口信号线(如XF、BIO等)的使用,(四)、目标板系统软件设计,1、源程序的编写 在编写汇编语句时,应遵循以下规则: 语句的开头只能是标号、空格、星号或分号。 标号是可选项;如果使用,必须从第一列开始。 每个域必须由一个或多个空棵空格来分开。制表符等同于空格。 注释是可选项。开始于第一列的注释用星号或分号(* 或 ;)来标明,开始于其它列的注释必须由分号开头。 一个源语句可以包含四个域,一般格式如下: label : instruction ; comment,2、汇编编译指令的使用,汇编编译指令用来完成以下任务: 将代码和数据汇编进特定的段 为
9、未初始化的变量保留存储器空间 控制展开列表的形式 存储器初始化 汇编条件块 定义全局变量 指定汇编器可以获得宏的特定库 检查符号调试信息,1)、程序段定义的汇编指令,段定义汇编指令使部分源程序放入适当的段中。 .bss 在.bss段中为未初始化的变量保留空间 .data 确认.data段中的代码段。.data段中通常包含 了初始化的数据(用.int/.word等定义)。 .sect 定义初始化了的带命名的段,并将紧接着的代 码或数据并入该段。 .text 该段中包含了可执行的代码。 .usect 在一个未初始化的有命名的段中保留空间,使用格式和举例,. mmregs . bss x, 20,
10、1 . usect “sin-table”, 100 . text LD #0, A ADD x, A, B .sect “cal-sin” LD # lk, A STL A, sin-table,RET . data . word 1, 2, 3, 4 . int 043h, ff08h,除.int和.word外还有很多用于常量说明的汇编指令,如.byte/ .field/.space/.bes/.fload/.long/.string/.xfload等,请看教程。,2)、引用其它文件的汇编指令,.copy/.include 告诉汇编器开始从其它文件中读源语句。 .def 确认一个在当前模块
11、中定义的且能被其它模块使用的符号。 .global 声明一个外部符号,使其它模块在连接的时候可以使用它。如果在当前段定义了该符号,那么该符号就可以被其它模块使用;如果在当前段中没有定义该符号,则是使用了其它模块定义的符号。前一种功能与.def相同,后一种功能与.ref相同。 .mlib 向汇编器提供一个包含了宏定义的文挡库的名称。当汇编器碰见了一个在当前库中没有定义的宏,就在.mlib确认的宏库中查找。 .ref 确认一个在当前段中使用但在其它段中定义的符号。,3)、条件汇编指令,.if /.elseif/.else/.endif 这些指令告诉汇编器根据表达式的值条件汇编一块代码。.if表示一
12、个条件块的开始,如果条件为真就汇编紧接着的代码。.elseif是表示如果.if的条件为假,而.elseif的条件为真,就汇编紧接着的代码。.endif结束该条件块。 .loop/.break/.endloop 这组指令告诉汇编器按照表达式的值循环汇编一块代码。.loop expression 标注一块循环代码的开始。.break expression告诉汇编器当表达式为假时,继续循环汇编;当表达式为真时,立刻转到.endloop后的代码去。.endloop标注一个可循环块的末尾。,4)、汇编时的符号指令,符号指令是使有意义的符号名与常数值或字符串相等同 .asg 该指令规定一个字符串与一个替代
13、符号相等 .asg “10, 20, 30, 40”, coefficients .byte coefficients .eval 计算一个表达式的值并把结果传送到与一个替代符号等同的字符串中 .eval x+1, x .set/.equ 这两条指令把一个常数值等效成一个符号,存放在符号表中且不能被清除。 Cont1 .set 0190h .int cont1, cont1*2, cont1*4 其他符号指令: .label/.struct/.endstruct/.tag,5)其他汇编指令,.align 使SPC对准1-word到128-word的边界。 .algebraic 告诉编译器文件包
14、含了算术汇编源代码。 .end 结束编译。 .mmregs 定义存储器映射寄存器的符号名称。 .emsg/.mmsg/.wmsg 用来定义自己的错误和警告提示信息。 .newblock 对局部标号进行复位。 .sblock 指定几段为一模块。 .version 决定为之建立指令的处理器。 输出列表格式指令:.drlist/.drnolist/.fclist/ fcnolist/,3、命令文件的编写,命令文件的功能是说明目标文件如何连接到目标板,即装入存储器(或重定位)的方法。 命令文件包括: 1)、连接文件说明: a.obj /* First input */ b.obj /* Second
15、input */ -o prog.out /* Option to specify output file */ -m prog.map /* Option to specify map file */,2)、 存储分配说明,3)、 段的分配与说明,4)、命令文件举例,a.obj b.obj c.obj /* Input */ -0 prog.out -m prog.map /* Options */ MEMORY /* MEMORY directive */ RAM: origin = 100h length = 0100h ROM: origin = 01000h length = 0100h SECTIONS /* SECTIONS directive */ .text: ROM .data: ROM .bss: RAM ,(五)、工程应用注意事项,电平转换 定标 流水线冲突 指令效率 .,1、电平转换 1)一般DSP有两个电源:CVCC、DVCC 2)如果DVCC=3.3V,则DSP不能承受5V电平,不能驱动5VCMOS,但可以驱动5VTTL,3.3VTTL,LVT,ALVC 3)