DSP

DSP 入门教程

2019-07-13 11:55发布

 DSP 入门教程
1、TI DSP 的选型
主要考虑处理速度、功耗、程序存储器和数据存储器的容量、片内的资源,如定时器的数量、
I/O 口数量、中断数量、DMA 通道数等。DSP 的主要供应商有TI,ADI,Motorola,Lucent
和Zilog 等,其中TI 占有最大的市场份额。
TI 公司现在主推四大系列DSP
1)C5000 系列(定点、低功耗):C54X,C54XX,C55X 相比其它系列的主要特点是低功
耗,所以最适合个人与便携式上网以及无线通信应用,如手机、PDA、GPS 等应用。处理
速度在80MIPS--400MIPS 之间。C54XX 和C55XX 一般只具有McBSP 同步串口、HPI 并行
接口、定时器、DMA 等外设。值得注意的是C55XX 提供了EMIF 外部存储器扩展接口,
可以直接使用SDRAM,而C54XX 则不能直接使用。两个系列的数字IO 都只有两条。
2)C2000 系列(定点、控制器):C20X,F20X,F24X,F24XX ,C28x 该系芯片具有大量
外设资源,如:A/D、定时器、各种串口(同步和异步),WATCHDOG、CAN 总线/PWM 发
生器、数字IO 脚等。是针对控制应用最佳化的DSP,在TI 所有的DSP 中,只有C2000 有
FLASH,也只有该系列有异步串口可以和PC 的UART 相连。
3)C6000 系列:C62XX,C67XX,C64X 该系列以高性能著称,最适合宽带网络和数字影
像应用。32bit,其中:C62XX 和C64X 是定点系列,C67XX 是浮点系列。该系列提供EMIF
扩展存储器接口。该系列只提供BGA 封装,只能制作多层PCB。且功耗较大。同为浮点
系列的C3X 中的VC33 现在虽非主流产品,但也仍在广泛使用,但其速度较低,最高在
150MIPS。
4)OMAP 系列:OMAP 处理器集成ARM 的命令及控制功能,另外还提供DSP 的低功耗
实时信号处理能力,最适合移动上网设备和多媒体家电。
其他系列的DSP 曾经有过风光,但现在都非TI 主推产品了,除了C3X 系列外,其他基本
处于淘汰阶段,如:C3X 的浮点系列:C30,C31,C32 C2X 和C5X 系列:C20,C25,C50
每个系列的DSP 都有其主要应用领域.
2、设计中如何得到技术参考资料以及如何得到相关源码
原则是碰到问题就去www.ti.com
1)在TI 网站的搜索中用keyword 搜索资料,主要要注意的就是Application Notes,user guides
比如不知道怎样进行VC5402 的McBSP 编程,搜McBSP 和VC5402 如果不知道如何设计
VC5402 和TLV320AIC23 的接口以及编程,搜TLV320AIC23 和VC5402; 这样可以搜到一
堆的资料,这些资料一般均有PDF 文档说明和相应的源程序包提供,download 后做少许改
动即可
中国DSP 网论坛:http://www.chinadsp.cn/bbs
2)版上发问
3)google 搜
4)再不济,找技术支持,碰运气了
3、如何看待TI DSP 庞杂的技术文档
新手进行DSP 开发学习之时,常常感觉技术文档太多,哪本都有用,哪本都想看,无从下
手。此时原则是只看入门必须的、只看和芯片相关的。根据经验,如下的资料必看不可:
1)讲述DSP 的CPU,memory,program memory addressing,data memory addressing 的资料
都需要看、外设资源的资料可以只看自己用到的部分;
2)C 和汇编的编程指南需要看
3)汇编指令和C 语言的运行时间支持库、DSPLIB 等资料需要看其他的如:Applications
Guide,Optimizing CC++ Compiler User's Guide,Assembly Language Tools User's Guide 等资
料留待入门之后再去看体会会更深一些。
4、如何高效开始TI DSP 的硬件开发
1)根据应用领域选择TI 推荐的DSP 类型
2)参考选定的DSP 之EVM 板,DSK 等原理图,完成DSP 最小系统的搭建(包括外扩内
存空间、电源复位系统、各控制信号管脚的连接、JTAG 口的连接等);
3)根据具体应用需要,选择外围电路的扩展,一般如语音、视频、控制等领域均有成熟的
电路可以从TI 网站得到。外围电路与DSP 的接口可参看EVM 或DSK,以及所选外围电路
芯片的典型接口设计原理图;最好外围电路芯片也选择TI 的,这样的话不管硬件接口有现
成原理图、很多连DSP 与其接口的基本控制源码都有。
4)地址译码、IO 扩展等用CPLD 或者FPGA 来做,将DSP 的地址线、数据线、控制信号
线如IS/PS/DS 等都引进去有利于调试
5、如何高效开始TI DSP 的软件开发
如果你不是纯做算法,而是在一个目标版上进行开发,需要使用DSP 的片上外设,需要控
制片外接口电路,那么建议在写程序前先好好将这个目标版的电路设计搞清楚。最重要的是
程序、数据、I/O 空间的译码。不管是否纯做算法还是软硬结合,DSP 的CPU,memory,program
memory addressing, data mem.ory addressing 的资料都需要看.
1)看CCS 的使用指南
2)明白CMD 文件的编写
中国DSP 网论坛:http://www.chinadsp.cn/bbs
3)明白中断向量表文件的编写,并定位在正确的地方
4)运行一个纯simulator 的程序,了解CCS 的各个操作
5)到TI 网站下相关的源码,参考源码的结构进行编程
6)不论是C 编程还是ASM 编程,模块化是必须的
6、选择C 还是选择ASM 进行编程
记住一条原则,TI 的工程师在不断改进CCS 的C 程序优化编译器,现在C 优化的效率可达
到手工汇编的90%甚至更高。当然有的时候如果计算能力和内存资源是瓶颈,ASM 还是有
优势,比如G.729 编解码。但是针对一般的应用开发,C 是最好的选择。
新手编程则选择C 和汇编混合编程更有利一些
7、选择什么仿真器
一般来说,买个并口的EPP 就够了,价格便宜又稳定
8、关于TI 54X 系列DSP 的bootloader 过程
请详细阅读TI 文档SPRA618A、SPRA571,这些文档对boot 的机制进行了详细说明同时说
明了利用hex500 将*.out 文件转化为*.hex 文件时,需要编写的cmd 文件的写法。
如何选择外部时钟?
DSP 的内部指令周期较高,外部晶振的主频不够,因此DSP 大多数片内均有PLL。但每个
系列不尽相同。
1)TMS320C2000 系列:
TMS320C20x:PLL 可以÷2,×1,×2 和×4,因此外部时钟可以为5MHz-40MHz。
TMS320F240:PLL 可以÷2,×1,×1.5,×2,×2.5,×3,×4,×4.5,×5 和×9,因此外部时钟
可以为2.22MHz-40MHz。
TMS320F241/C242/F243:PLL 可以×4,因此外部时钟为5MHz。TMS320LF24xx:PLL 可
以由RC 调节,因此外部时钟为4MHz-20MHz。
TMS320LF24xxA:PLL 可以由RC 调节,因此外部时钟为4MHz-20MHz。
2)TMS320C3x 系列:
TMS320C3x:没有PLL,因此外部主频为工作频率的2 倍。
TMS320VC33:PLL 可以÷2,×1,×5,因此外部主频可以为12MHz-100MHz。
3)TMS320C5000 系列:
TMS320VC54xx:PLL 可以÷4,÷2,×1-32,因此外部主频可以为0.625MHz-50MHz。
TMS320VC55xx:PLL 可以÷4,÷2,×1-32,因此外部主频可以为6.25MHz-300MHz。
4)TMS320C6000 系列:
中国DSP 网论坛:http://www.chinadsp.cn/bbs
TMS320C62xx:PLL 可以×1,×4,×6,×7,×8,×9,×10 和×11,因此外部主频可以为11.8MHz
-300MHz。
TMS320C67xx:PLL 可以×1 和×4,因此外部主频可以为12.5MHz-230MHz。
TMS320C64xx:PLL 可以×1,×6 和×12,因此外部主频可以为30MHz-720MHz
软件等待的如何使用?
DSP 的指令周期较快,访问慢速存储器或外设时需加入等待。等待分硬件等待和软件等待,
每一个系列的等待不完全相同。
1)对于C2000 系列: 硬件等待信号为READY,高电平时不等待。软件等待由WSGR 寄
存器决定,可以加入最多7 个等待。其中程序存储器和数据存储器及I/O 可以分别设置。
2)对于C3x 系列: 硬件等待信号为/RDY,低电平是不等待。软件等待由总线控制寄存器
中的SWW 和WTCNY 决定,可以加入最多7 个等待,但等待是不分段的,除了片内之外
全空间有效。
3)对于C5000 系列: 硬件等待信号为READY,高电平时不等待。软件等待由SWWCR 和
SWWSR 寄存器决定,可以加入最多14 个等待。其中程序存储器、控制程序存储器和数据
存储器及I/O 可以分别设置。
4)对于C6000 系列(只限于非同步存储器或外设): 硬件等待信号为ARDY,高电平时不
等待。软件等待由外部存储器接口控制寄存器决定,总线访问外部存储器或设备的时序可
以设置,可以方便的同异步的存储器或外设接口。
仿真工作正常对于DSP 的基本要求
1)DSP 电源和地连接正确。
2)DSP 时钟正确。
3)DSP 的主要控制信号,如RS 和HOLD 信号接高电平。
4)C2000 的watchdog 关掉。
5)不可屏蔽中断NMI 上拉高电平。
CCS 或Emurst 运行时提示“Can't Initialize Target DSP”
1)仿真器连接是否正常?
2)仿真器的I/O 设置是否正确?
3)XDSPP 仿真器的电源是否正确?
4)目标系统是否正确?
5)仿真器是否正常?
6)DSP 工作的基本条件是否具备。
建议使用目标板测试。
为什么CCS 需要安装Driver?
中国DSP 网论坛:http://www.chinadsp.cn/bbs
CCS 是开放的软件平台,它可以支持不同的硬件接口,因此不同的硬件接口必须通过标准
的Driver 同CCS 连接。
Driver 安装的常见问题?
请认真阅读“安装手册”和Driver 盘中的Readme。
1)对于SEED-XDS,安装Readme 中的步骤,将I/O 口设为240/280/320/340。
2)对于SEED-XDSPP,安装Readme 中的步骤,将I/O 口设为378 或278。
3)对于SEED-XDSUSB,必须连接目标板,安装Readme 中的步骤,将I/O 口设为A,USB
连接后,主机将自动激活相应的Driver。
4)对于SEED-XDSPCI,安装Readme 中的步骤,将I/O 口设为240,PCI 接口板插入主机后,
主机将自动激活相应的Driver。
5)对于Simulator,需要选择不同的CFG 文件,以模拟不同的DSP。
6)对于C5402 DSK,将I/O 口设为378 或278。
7)对于C6211/6711 DSK,将I/O 口设为378 或278。
8)对于C6201/C6701 EVM,将I/O 口设为0。
Link 的cmd 文件的作用是什么?
Link 的cmd 文件用于DSP 代码的定位。由于DSP 的编译器的编译结果是未定位的,DSP
没有操作系统来定位执行代码,每个客户设计的DSP 系统的配置也不尽相同,因此需要用
户自己定义代码的安装位置。以C5000 为例,基本格式为:
-o sample.out
-m sample.map
-stack 100
sample.obj meminit.obj
-l rts.lib
MEMORY {
PAGE 0: VECT: origin = 0xff80, length 0x80
PAGE 0: PROG: origin = 0x2000, length 0x400
PAGE 1: DATA: origin = 0x800, length 0x400
}
SECTIONS {
.vectors : {} >PROG PAGE 0
.text : {} >PROG PAGE 0
.data : {} >PROG PAGE 0
.cinit : {} >PROG PAGE 0
.bss : {} >DATAPAGE 1
}
如何将OUT 文件转换为16 进制的文件格式?
中国DSP 网论坛:http://www.chinadsp.cn/bbs
DSP 的开发软件集成了一个程序,可以从执行文件OUT 转换到编程器可以接受的格式,使
得编程器可以用次文件烧写EPROM 或Flash。对于C2000 的程序为DSPHEX;对于C3x 程
序为HEX30;对于C54x 程序为HEX500;对于C55x 程序为HEX55;对于C6x 程序为Hex6x。
以C32 为例,基本格式为:
sample.out
-x
-memwidth 8
-bootorg 900000h
-iostrb 0h
-strb0 03f0000h
-strb1 01f0000h
-o sample.hex
ROMS {
EPROM: org = 0x900000,len=0x02000,romwidth=8
}
SECTIONS {
.text: paddr=boot
.data: paddr=boot
}
DSP 仿真器为什么必须连接目标系统(Target)?
DSP 的仿真器同单片机的不同,仿真器中没有DSP,提供IEEE 标准的JTAG 口对DSP 进行
仿真调试,所以仿真器必须有仿真对象,及目标系统。目标系统就是你的产品,上面必须有
DSP。仿真器提供JTAG 同目标系统的DSP 相接,通过DSP 实现对整个目标系统的调试。
DSP 的C 语言同主机C 语言的主要区别?
1) DSP 的C 语言是标准的ANSI C,它不包括同外设联系的扩展部分,如屏幕绘图等。
但在CCS 中,为了方便调试,可以将数据通过prinf 命令虚拟输出到主机的屏幕上。
2)DSP 的C 语言的编译过程为,C 编译为ASM,再由ASM 编译为OBJ。因此C 和ASM 的
对应关系非常明确,非常便于人工优化。
3)DSP 的代码需要绝对定位;主机的C 的代码有操作系统定位。
4)DSP 的C 的效率较高,非常适合于嵌入系统。
为什么在CCS 下编译工具工作不正常?
在CCS 下有部分客户会碰到编译工具工作不正常,常见错误为:
1)autoexec.bat 的路径“out of memory”。修改autoexec.bat,清除无用的PATH 路径。
2)编译的输出文件(OUT 文件)写保护,无法覆盖。删除或修改输出文件的属性。
3)Windows 有问题。重新安装windows。
4)Windows 下有程序对CCS 有影响。建议用一“干净”的计算机。
中国DSP 网论坛:http://www.chinadsp.cn/bbs
在CCS 下,如何选择有效的存储器空间?
CCS 下的存储器空间最好设置同你的硬件,没有的存储器不要有效。这样便于调试,CCS
会发现你调入程序时或程序运行时,是否访问了无效地址。
1)在GEL 文件中设置。参见CCS 中的示例。
2)在Option 菜单下,选择Memory Map 选项,根据你的硬件设置。注意一定要将Enable
Memory Mapping 置为使能。
在CCS 下,OUT 文件加载时提示“Data verification failed...”的原因?
Link 的CMD 文件分配的地址同GEL 或设置的有效地址空间不符。中断向量定位处或其它
代码、数据段定位处,没有RAM,无法加载OUT 文件。解决方法:
1)调整Link 的CMD 文件,使得定位段处有RAM。
2)调整存储器设置,使得RAM 区有效。
为什么要使用BIOS?
1)BIOS 是Basic I/O System 的简称,是基本的输入、输出管理。
2)用于管理任务的调度,程序实时分析,中断管理,跟踪管理和实时数据交换。
3)BIOS 是基本的实时系统,使用BIOS 可以方便地实现多任务、多进程的时间管理。
4)BIOS 是eXpress DSP 的标准平台,要使用eXpress DSP 技术,必须使用BIOS。
DSP 发展动态
1.TMS320C2000 TMS320C2000 系列包括C24x 和C28x 系列。C24x 系列建议使用LF24xx
系列替代C24x 系列,LF24xx 系列的价格比C24x 便宜,性能高于C24x,而且LF24xxA 具
有加密功能。C28x 系列主要用于大存储设备管理,高性能的控制场合。
2.TMS320C3x TMS320C3x 系列包括C3x 和VC33,主要推荐使用VC33。C3x 系列是TI 浮
点DSP 的基础,不可能停产,但价格不会进一步下调。
3.TMS320C5x TMS320C5x 系列已不推荐使用,建议使用C24x 或C5000 系列替代。
4.TMS320C5000 TMS320C5000 系列包括C54x 和C55x 系列。其中VC54xx 还不断有新的器
件出现,如:TMS320VC5471(DSP+ARM7)。C55x 系列是TI 的第三代DSP,功耗为VC54xx
的1/6,性能为VC54xx 的5 倍,是一个正在发展的系列。C5000 系列是目前TI DSP 的主
流DSP,它涵盖了从低档到中高档的应用领域,目前也是用户最多的系列。
5.TMS320C6000 TMS320C6000 系列包括C62xx、C67xx 和C64xx。此系列是TI 的高档DSP
系列。其中C62xx 系列是定点的DSP,系列芯片种类较丰富,是主要的应用系列。C67xx
系列是浮点的DSP,用于需要高速浮点处理的领域。C64xx 系列是新发展,性能是C62xx
的10 倍。
中国DSP 网论坛:http://www.chinadsp.cn/bbs
6.OMAP 系列是TI 专门用于多媒体领域的芯片,它是C55+ARM9,性能卓越,非常适合
于手持设备、Internet 终端等多媒体应用。
5V/3.3V 如何混接?
TI DSP 的发展同集成电路的发展一样,新的DSP 都是3.3V 的,但目前还有许多外围电路
是5V 的,因此在DSP 系统中,经常有5V 和3.3V 的DSP 混接问题。在这些系统中,应注
意:
1)DSP 输出给5V 的电路(如D/A),无需加任何缓冲电路,可以直接连接。
2)DSP 输入5V 的信号(如A/D),由于输入信号的电压>4V,超过了DSP 的电源电压,DSP
的外部信号没有保护电路,需要加缓冲,如74LVC245 等,将5V 信号变换成3.3V 的信号。
3)仿真器的JTAG 口的信号也必须为3.3V,否则有可能损坏DSP。
为什么要片内RAM 大的DSP 效率高?
目前DSP 发展的片内存储器RAM越来越大,要设计高效的DSP 系统,就应该选择片内RAM
较大的DSP。片内RAM 同片外存储器相比,有以下优点:
1)片内RAM 的速度较快,可以保证DSP 无等待运行。
2)对于C2000/C3x/C5000 系列,部分片内存储器可以在一个指令周期内访问两次,使得指令
可以更加高效。
3)片内RAM 运行稳定,不受外部的干扰影响,也不会干扰外部。
4)DSP 片内多总线,在访问片内RAM 时,不会影响其它总线的访问,效率较高。
为什么DSP 从5V 发展成3.3V?
超大规模集成电路的发展从1um,发展到目前的0.1um,芯片的电源电压也随之降低,功耗
也随之降低。DSP 也同样从5V 发展到目前的3.3V,核心电压发展到1V。目前主流的DSP
的外围均已发展为3.3V,5V 的DSP 的价格和功耗都价格,以逐渐被3.3V 的DSP 取代。
如何选择DSP 的电源芯片?
TMS320LF24xx:TPS7333QD,5V 变3.3V,最大500mA。
TMS320VC33: TPS73HD318PWP,5V 变3.3V 和1.8V,最大750mA。
TMS320VC54xx:TPS73HD318PWP,5V 变3.3V 和1.8V,最大750mA; TPS73HD301PWP,
5V 变3.3V 和可调,最大750mA。
TMS320VC55xx:TPS73HD301PWP,5V 变3.3V 和可调,最大750mA。
TMS320C6000: PT6931,TPS56000,最大3A。
软件等待的如何使用?
DSP 的指令周期较快,访问慢速存储器或外设时需加入等待。等待分硬件等待和软件等待,
中国DSP 网论坛:http://www.chinadsp.cn/bbs
每一个系列的等待不完全相同。
1)对于C2000 系列: 硬件等待信号为READY,高电平时不等待。软件等待由WSGR 寄
存器决定,可以加入最多7 个等待。其中程序存储器和数据存储器及I/O 可以分别设置。
2)对于C3x 系列: 硬件等待信号为/RDY,低电平是不等待。软件等待由总线控制寄存器
中的SWW 和WTCNY 决定,可以加入最多7 个等待,但等待是不分段的,除了片内之外
全空间有效。
3)对于C5000 系列: 硬件等待信号为READY,高电平时不等待。软件等待由SWWCR 和
SWWSR 寄存器决定,可以加入最多14 个等待。其中程序存储器、控制程序存储器和数据
存储器及I/O 可以分别设置。
4)对于C6000 系列(只限于非同步存储器或外设): 硬件等待信号为ARDY,高电平时不
等待。软件等待由外部存储器接口控制寄存器决定,总线访问外部存储器或设备的时序可
以设置,可以方便的同异步的存储器或外设接口。
中断向量为什么要重定位?
为了方便DSP 存储器的配置,一般DSP 的中断向量可以重新定位,即可以通过设置寄存器
放在存储器空间的任何地方。注意:C2000 的中断向量不能重定位。
DSP 的最高主频能从芯片型号中获得吗?
TI 的DSP 最高主频可以从芯片的型号中获得,但每一个系列不一定相同。
1)TMS320C2000 系列:
TMS320F206-最高主频20MHz。
TMS320C203/C206-最高主频40MHz。
TMS320F24x-最高主频20MHz。
TMS320LF24xx-最高主频30MHz。
TMS320LF24xxA-最高主频40MHz。
TMS320LF28xx-最高主频150MHz。
2)TMS320C3x 系列:
TMS320C30:最高主频25MHz。
TMS320C31PQL80:最高主频40MHz。
TMS320C32PCM60:最高主频30MHz。
TMS320VC33PGE150:最高主频75MHz。
3)TMS320C5000 系列:
TMS320VC54xx:最高主频160MHz。
TMS320VC55xx:最高主频300MHz。
4)TMS320C6000 系列:
TMS320C62xx:最高主频300MHz。
TMS320C67xx:最高主频230MHz。
TMS320C64xx:最高主频720MHz。
DSP 可以降频使用吗?
中国DSP 网论坛:http://www.chinadsp.cn/bbs
可以,DSP 的主频均有一定的工作范围,因此DSP 均可以降频使用。
如何选择外部时钟?
DSP 的内部指令周期较高,外部晶振的主频不够,因此DSP 大多数片内均有PLL。但每个
系列不尽相同。
1)TMS320C2000 系列:
TMS320C20x:PLL 可以÷2,×1,×2 和×4,因此外部时钟可以为5MHz-40MHz。
TMS320F240:PLL 可以÷2,×1,×1.5,×2,×2.5,×3,×4,×4.5,×5 和×9,因此外部时钟
可以为2.22MHz-40MHz。
TMS320F241/C242/F243:PLL 可以×4,因此外部时钟为5MHz。TMS320LF24xx:PLL 可
以由RC 调节,因此外部时钟为4MHz-20MHz。
TMS320LF24xxA:PLL 可以由RC 调节,因此外部时钟为4MHz-20MHz。
2)TMS320C3x 系列:
TMS320C3x:没有PLL,因此外部主频为工作频率的2 倍。
TMS320VC33:PLL 可以÷2,×1,×5,因此外部主频可以为12MHz-100MHz。
3)TMS320C5000 系列:
TMS320VC54xx:PLL 可以÷4,÷2,×1-32,因此外部主频可以为0.625MHz-50MHz。
TMS320VC55xx:PLL 可以÷4,÷2,×1-32,因此外部主频可以为6.25MHz-300MHz。
4)TMS320C6000 系列:
TMS320C62xx:PLL 可以×1,×4,×6,×7,×8,×9,×10 和×11,因此外部主频可以为11.8MHz
-300MHz。
TMS320C67xx:PLL 可以×1 和×4,因此外部主频可以为12.5MHz-230MHz。
TMS320C64xx:PLL 可以×1,×6 和×12,因此外部主频可以为30MHz-720MHz
如何选择DSP 的外部存储器?
DSP 的速度较快,为了保证DSP 的运行速度,外部存储器需要具有一定的速度,否则DSP
访问外部存储器时需要加入等待周期。
1)对于C2000 系列: C2000 系列只能同异步的存储器直接相接。C2000 系列的DSP 目前
的最高速度为150MHz。建议可以用的存储器有:
CY7C199-15:32K×8,15ns,5V;
CY7C1021-12:64K×16,15ns,5V; CY7C1021V33-12:64K×16,15ns,3.3V。
2)对于C3x 系列: C3x 系列只能同异步的存储器直接相接。C3x 系列的DSP 的最高速度,
5V 的为40MHz,3.3V 的为75MHz,为保证DSP 无等待运行,分别需要外部存储器的速度
<25ns 和<12ns。建议可以用的存储器有:
ROM: AM29F400-70:256K×16,70ns,5V,加入一个等待;
AM29LV400-55(SST39VF400):256K×16,55ns,3.3V,加入两个等待(目前没有更快的Flash)。
SRAM: CY7C199-15:32K×8,15ns,5V;
中国DSP 网论坛:http://www.chinadsp.cn/bbs
CY7C1021-15:64K×16,15ns,5V;
CY7C1009-15:128K×8,15ns,5V;
CY7C1049-15:512K×8,15ns,5V;
CY7C1021V33-15:64K×16,15ns,3.3V;
CY7C1009V33-15:128K×8,15ns,3.3V;
CY7C1041V33-15:256k×16,15ns,3.3V。
3)对于C54x 系列: C54x 系列只能同异步的存储器直接相接。C54x 系列的DSP 的速度为
100MHz 或160MHz,为保证DSP 无等待运行,需要外部存储器的速度<10ns 或<6ns。建议
可以用的存储器有:
ROM: AM29LV400-55(SST39VF400):256K×16,55ns,3.3V,加入5 或9 个等待(目前
没有更快的Flash)。
SRAM: CY7C1021V33-12:64K×16,12ns,3.3V,加入一个等待;
CY7C1009V33-12:128K×8,12ns,3.3V,加入一个等待。
4)对于C55x 和C6000 系列: TI 的DSP 中只有C55x 和C6000 可以同同步的存储器相连,
同步存储器可以保证系统的数据交换效率更高。
ROM: AM29LV400-55(SST39VF400):256K×16,55ns,3.3V。
SDRAM: HY57V651620BTC-10S:64M,10ns。
SBSRAM: CY7C1329-133AC,64k×32;
CY7C1339-133AC,128k×32。
FIFO:CY7C42x5V-10ASC,32k/64k×18。
DSP 芯片有多大的驱动能力?
DSP 的驱动能力较强,可以不加驱动,连接8 个以上标准TTL 门。
调试TMS320C2000 系列的常见问题?
1)单步可以运行,连续运行时总回0 地址: Watchdog 没有关,连续运行复位DSP 回到0
地址。
2)OUT 文件不能load 到片内flash 中: Flash 不是RAM,不能用简单的写指令写入,需要
专门的程序写入。CCS 和C Source Debugger 中的load 命令,不能对flash 写入。OUT 文件
只能load 到片内RAM,或片外RAM 中。
3)在flash 中如何加入断点: 在flash 中可以用单步调试,也可以用硬件断点的方法在flash
中加入断点,软件断点是不能加在ROM 中的。硬件断点,设置存储器的地址,当访问该地
址时产生中断。
4)中断向量: C2000 的中断向量不可重定位,因此中断向量必须放在0 地址开始的flash 内。
在调试系统时,代码放在RAM 中,中断向量也必须放在flash 内。
调试TMS320C3x 系列的常见问题?
1) TMS320C32 的存储器配置: TMS320C32 的程序存储器可以配置为16 位或32 位;数
中国DSP 网论坛:http://www.chinadsp.cn/bbs
据存储器可以配置为8 位、16 位或32 位。
2)TMS320VC33 的PLL 控制: TMS320VC33 的PLL 控制端只能接1.8V,不能接3.3V 或
5V。
如何调试多片DSP?
对于有MPSD 仿真口的DSP(TMS320C30/C31/C32),不能用一套仿真器同时调试,每次只
能调试其中的一个DSP;对于有JTAG 仿真口的DSP,可以将JTAG 串接在一起,用一套仿
真器同时调试多个DSP,每个DSP 可以用不同的名字,在不同的窗口中调试。注意:如果
在JTAG 和DSP 间加入驱动,一定要用快速的门电路,不能使用如LS 的慢速门电路。
在DSP 系统中为什么要使用CPLD?
DSP 的速度较快,要求译码的速度也必须较快。利用小规模逻辑器件译码的方式,已不能
满足DSP 系统的要求。同时,DSP 系统中也经常需要外部快速部件的配合,这些部件往往
是专门的电路,有可编程器件实现。CPLD 的时序严格,速度较快,可编程性好,非常适
合于实现译码和专门电路。
DSP 系统构成的常用芯片有哪些?
1) 电源: TPS73HD3xx,TPS7333,TPS56100,PT64xx...
2)Flash: AM29F400,AM29LV400,SST39VF400...
3)SRAM: CY7C1021,CY7C1009,CY7C1049...
4)FIFO: CY7C425,CY7C42x5...
5)Dual port: CY7C136,CY7C133,CY7C1342...
6)SBSRAM: CY7C1329,CY7C1339...
7)SDRAM: HY57V651620BTC...
8)CPLD: CY37000 系列,CY38000 系列,CY39000 系列...
9)PCI: PCI2040,CY7C09449...
10)USB: AN21xx,CY7C68xxx...
11)Codec:TLV320AIC23,TLV320AIC10...
12)A/D,D/A:ADS7805,TLV2543...
具体资料见www.ti.comhttp://www.cypress.com/
什么是boot loader?
DSP 的速度尽快,EPROM 或flash 的速度较慢,而DSP 片内的RAM 很快,片外的RAM 也
较快。为了使DSP 充分发挥它的能力,必须将程序代码放在RAM 中运行。为了方便的将
代码从ROM 中搬到RAM 中,在不带flash 的DSP 中,TI 在出厂时固化了一段程序,在上
电后完成从ROM 或外设将代码搬到用户指定的RAM 中。此段程序称为“boot loader”。
TMS320C3x 如何boot?
中国DSP 网论坛:http://www.chinadsp.cn/bbs
在MC/MP 管脚为高时,C3x 进入boot 状态。C3x 的boot loader 在reset 时,判断外部中断
管脚的电平。根据中断配置决定boot 的方式为存储器加载还是串口加载,其中ROM 的地
址可以为三个中的一个,ROM 可以为8 位。
Boot 有问题如何解决?
1)仔细检查boot 的控制字是否正确。2)仔细检查外部管脚设置是否正确。3)仔细检查hex
文件是否转换正确。4)用仿真器跟踪boot 过程,分析错误原因。
DSP 为什么要初始化?
DSP 在RESET 后,许多的寄存器的初值一般同用户的要求不一致,例如:等待寄存器,SP,
中断定位寄存器等,需要通过初始化程序设置为用户要求的数值。初始化程序的主要作用:
1)设置寄存器初值。
2)建立中断向量表。
3)外围部件初始化。
DSP 有哪些数学库及其它应用软件?
TI 公司为了方便客户开发DSP,在它的网站上提供了许多程序的示例和应用程序,如MATH
库,FFT,FIR/IIR 等,可以在TI 的网页免费下载。
如何获得DSP 专用算法?
TI 有许多的Third Party 可以通过DSP 上的多种算法软件。可以通过TI 的网页搜索你所需
的算法,找到通过算法的公司,同相应的公司联系。注意这些算法都是要付费的。
eXpressDSP 是什么?
eXpressDSP 是一种实时DSP 软件技术,它是一种DSP 编程的标准,利用它可以加快你开发
DSP 软件的速度。以往DSP 软件的开发没有任何标准,不同的人写的程序一般无法连接在
一起。DSP 软件的调试工具也非常不方便。使得DSP 软件的开发往往滞后于硬件的开发。
eXpressDSP 集成了CCS(Code Composer Studio)开发平台,DSP BIOS 实时软件平台,DSP
算法标准和第三方支持四部分。利用该技术,可以使你的软件调试,软件进程管理,软件的
互通及算法的获得,都便的容易。这样就可以加快你的软件开发进程。
1)CCS 是eXpressDSP 的基础,因此你必须首先拥有CCS 软件。
2)DSP BIOS 是eXpressDSP 的基本平台,你必须学会所有DSP BIOS。
3)DSP 算法标准可以保证你的程序可以方便的同其它利用eXpressDSP 技术的程序连接在一
起。同时也保证你的程序的延续性。
为什么要用DSP?
3G 技术和internate 的发展,要求处理器的速度越来越高,体积越来越小,DSP 的发展正好
中国DSP 网论坛:http://www.chinadsp.cn/bbs
能满足这一发展的要求。因为,传统的其它处理器都有不同的缺陷。MCU 的速度较慢;CPU
体积较大,功耗较高;嵌入CPU 的成本较高。DSP 的发展,使得在许多速度要求较高,算
法较复杂的场合,取代MCU 或其它处理器,而成本有可能更低。
如何选择DSP?
选择DSP 可以根据以下几方面决定:
1)速度: DSP 速度一般用MIPS 或FLOPS 表示,即百万次/秒钟。根据您对处理速度的要求
选择适合的器件。一般选择处理速度不要过高,速度高的DSP,系统实现也较困难。
2)精度: DSP 芯片分为定点、浮点处理器,对于运算精度要求很高的处理,可选择浮点处
理器。定点处理器也可完成浮点运算,但精度和速度会有影响。
3)寻址空间: 不同系列DSP 程序、数据、I/O 空间大小不一,与普通MCU 不同,DSP 在
一个指令周期内能完成多个操作,所以DSP 的指令效率很高,程序空间一般不会有问题,
关键是数据空间是否满足。数据空间的大小可以通过DMA 的帮助,借助程序空间扩大。
4)成本: 一般定点DSP 的成本会比浮点DSP 的要低,速度也较快。要获得低成本的DSP
系统,尽量用定点算法,用定点DSP。
5)实现方便: 浮点DSP 的结构实现DSP 系统较容易,不用考虑寻址空间的问题,指令对C
语言支持的效率也较高。
6)内部部件:根据应用要求,选择具有特殊部件的DSP。如:C2000 适合于电机控制;OMAP
适合于多媒体等。
要了解DSP 芯片的性能,本网中的"DSP 及相关器件"中有介绍。
DSP 同MCU 相比的特点?
1) DSP 的速度比MCU 快,主频较高。
2)DSP 适合于数据处理,数据处理的指令效率较高。
3)DSP 均为16 位以上的处理器,不适合于低档的场合。
4)DSP 可以同时处理的事件较多,系统级成本有可能较低。
5)DSP 的灵活性较好,大多数算法都可以软件实现。
6)DSP 的集成度较高,可靠性较好。
DSP 同嵌入CPU 相比的特点?
1) DSP 是单片机,构成系统简单。
2)DSP 的速度快。
3)DSP 的成本较低。
4)DSP 的性能高,可以处理较多的任务。
如何编写C2000 片内Flash?
DSP 中的Flash 的编写方法有三中:
1.通过仿真器编写:在我们的网页上有相关的软件,在销售仿真器时我们也提供相关软件。
其中LF240x 的编写可以在CCS 中加入一个插件,F24x 的编写需要在windows98 下的DOS
中国DSP 网论坛:http://www.chinadsp.cn/bbs
窗中进行。具体步骤见软件中的readme。有几点需要注意: a.必须为MC 方式; b.F206
的工作频率必须为20MHz; c.F240 需要根据PLL 修改C240_CFG.I 文件。建议外部时钟为
20MHz。d.LF240x 也需要根据PLL 修改文件。d.如果编写有问题,可以用BFLWx.BAT
修复。
2.提供串口编写:TI 的网页上有相关软件。注意只能编写一次,因为编写程序会破坏串口通
信程序。
3.在你的程序中编写:TI 的网页上有相关资料。
如何编写DSP 外部的Flash?
DSP 的外部Flash 编写方法:
1.通过编程器编写:将OUT 文件通过HEX 转换程序转换为编程器可以接受的格式,再由编
程器编写。
2.通过DSP 软件编写:您需要根据Flash 的说明,编写Flash 的编写程序,将应用程序和编
写Flash 的程序分别load 到RAM 中,运行编写程序编写。
对于C5000,大于48K 的程序如何BOOT?
对于C5000,片内的BOOT 程序在上电后将数据区的内容,搬移到程序区的RAM 中,因此
FLASH 必须在RESET 后放在数据区。由于C5000,数据区的空间有限,一次BOOT 的程
序不能对于48K。解决的方法如下:
1.在RESET 后,将FLASH 译码在数据区,RAM 放在程序区,片内BOOT 程序将程序BOOT
到RAM 中。
2.用户初试化程序发出一个I/O 命令(如XF),将FLASH 译码到程序区的高地址。开放数
据区用于其它的RAM。
3.用户初试化程序中包括第二次BOOT 程序(此程序必须用户自己编写),将FLASH 中没
有BOOT 的其它代码搬移到RAM 中。
4.开始运行用户处理程序。
DSP 外接存储器的控制方式
对于一般的存储器具有RD、WR 和CS 等控制信号,许多DSP(C3x、C5000)都没有控制
信号直接连接存储器,一般采用的方式如下:
1.CS 有地址线和PS、DS 或STRB 译码产生;
2./RD=/STRB+/R/W; 3./WR=/STRB+R/W。
GEL 文件的功能?
GEL 文件的功能同emuinit.cmd 的功能基本相同,用于初始化DSP。但它的功能比emuinit
的功能有所增强,GEL 在CCS 下有一个菜单,可以根据DSP 的对象不同,设置不同的初始
化程序。以TMS320LF2407 为例:
#define SCSR1 0x7018 ;定义scsr1 寄存器
#define SCSR2 0X7019 ;定义scsr2 寄存器
中国DSP 网论坛:http://www.chinadsp.cn/bbs
#defineWDKEY 0x7025 ;定义wdkey 寄存器
#defineWDNTR 0x7029 ;定义wdntr 寄存器
StartUp() ; 开始函数
{
GEL_MapReset(); ; 存储空间复位GEL_MapAdd(0x0000,0,0x7fff,1,1); 定义程序空间从0000
-7fff 可读写
GEL_MapAdd(0x8000,0,0x7000,1,1); 定义程序空间从8000-f000 可读写
GEL_MapAdd(0x0000,1,0x10000,1,1); 定义数据空间从0000-10000 可读写
GEL_MapAdd(0xffff,2,1,1,1); 定义i/o 空间0xffff 可读写
GEL_MapOn(); 存储空间打开
GEL_MemoryFill(0xffff,2,1,0x40); 在i/o 空间添入数值40h
*(int *)SCSR1=0x0200; 给scsr1 寄存器赋值
*(int *)SCSR2=0x000C; 给scsr2 寄存器赋值,在这里可以进行mp/mc 方式的转换
*(int *)WDNTR=0x006f; 给wdntr 寄存器赋值
*(int *)WDKEY=0x055; 给wdkey 寄存器赋值
*(int *)WDKEY=0x0AA; 给wdkey 寄存器赋值
}
使用TI 公司模拟器件与DSP 结合使用的好处
1) 在使用TI 公司的DSP 的同时,使用TI 公司的模拟可以和DSP 进行无缝连接。器件与
器件之间不需要任何的连接或转接器件。这样即减少了板卡的尺寸,也降低了开发难度。
2)同为TI 公司的产品,很多器件可以固定搭配使用。少了器件选型的烦恼
3)TI 在CCS 中提供插件,可以用于DSP 和模拟器件的开发,非常方便。
C 语言中可以嵌套汇编语言?
可以。在ANSI C 标准中的标准用法就是用C 语言编写主程序,用汇编语言编写子程序,中
断服务程序,一些算法,然后用C 语言调用这些汇编程序,这样效率会相对比较高
在定点DSP 系统中可否实现浮点运算?
当然可以,因为DSP 都可以用C,只要是可以使用c 语言的场合都可以实现浮点运算。
JTAG 头的使用会遇到哪些情况
1) DSP 的CLKOUT 没有输出,工作不正常。
2)Emu0,Emu1 需要上拉。
3)TCK 的频率应该为10M。
4)在3.3V DSP 中,PD 脚为3.3V 供电,但是仿真器上需要5V 电压供电,所以PP 仿真器盒
上需要单独供电。
4)仿真多片DSP。在使用菊花链的时候,第一片DSP 的TDO 接到第二片DSP 的TDI 即可。
注意当串联DSP 比较多的时候,信号线要适当的增加驱动。
中国DSP 网论坛:http://www.chinadsp.cn/bbs
include 头文件(.h)的主要作用
头文件,一般用于定义程序中的函数、参数、变量和一些宏单元,同库函数配合使用。因此,
在使用库时,必须用相应的头文件说明。
DSP 中断向量的位置
1) 2000 系列dsp 的中断向量只能从0000H 处开始。所以在我们调试程序的时候,要把
DSP 选择为MP(微处理器方式),把片内的Flash 屏蔽掉,免去每次更改程序都要重新烧写
Flash 工作。
2)3x 系列dsp 的中断向量也只能在固定的地址。
3)5000,6000 系列dsp 的中断向量可以重新定位。但是它只能被重新定位到Page0 范围内的
任何空间。
有源晶振与晶体的区别,应用范围及用法
1) 晶体需要用DSP 片内的振荡器,在datasheet 上有建议的连接方法。晶体没有电压的问
题,可以适应于任何DSP,建议用晶体。2)有源晶振不需要DSP 的内部振荡器,信号比较
稳定。有源晶振用法:一脚悬空,二脚接地,三脚接输出,四脚接电压。
程序经常跑飞的原因
1) 程序没有结尾或不是循环的程序。
2)nmi 管脚没有上拉。
3)在看门狗动作的时候程序会经常跑飞。
4)程序编制不当也会引起程序跑飞。
5)硬件系统有问题。
并行FLASH 引导的一点经验-阿哲
最近BBS 上关于FLASH 和BOOT 的讨论很活跃,我也多次来此请教。前几天自制的DSP
板引导成功,早就打算写写这方面的东西。我用的DSP 是5416,以其为核心,做了一个相
对独立的子系统(硬件、软件、算法),目前都已基本做好。下面把在FLASH 引导方面做
的工作向大家汇报一下,希望能对大家有所帮助。本人经验和文笔都有限,写的不好请大家
谅解。硬件环境:
DSP:TMS320VC5416PGE160
FLASH : SST39VF400A-70-4C-EK 都是贴片的, FLASH 映射在DSP 数据空间的
0x8000-0xFFFF
软件环境: CCS v2.12.01
主程序(要烧入FLASH 的程序): DEBUG 版,程序占用空间0x28000-0x2FFFF(片内
SARAM),中断向量表在0x0080-0x00FF(片内DARAM),数据空间使用0x0100-0x7FFF
(片内DARAM)。因为FLASH 是贴片的,所以需要自己编一个数据搬移程序,把要主程
中国DSP 网论坛:http://www.chinadsp.cn/bbs
序搬移到FLASH 中。在写入FLASH 数据时,还应写入引导表的格式数据。最后在数据空
间的0xFFFF 处写入引导表的起始地址(这里为0x8000)。
搬移程序: DEBUG 版,程序空间0x38000-0x3FFFF(片内SARAM),中断向量表在
0x7800-0x78FF(片内DARAM),数据空间使用0x5000-0x77FF(片内DARAM)。搬移程
序不能使用与主程序的程序空间和中断向量表重合的物理空间,以免覆盖。烧写时,同时打
开主程序和搬移程序的PROJECT,先LOAD 主程序,再LOAD 搬移程序,然后执行搬移程
序,烧写OK! 附:搬移程序(仅供参考)
volatile unsigned int *pTemp=(unsigned int *)0x7e00; unsigned int iFlashAddr;
int iLoop; /* 在引导表头存放并行引导关键字*/
iFlashAddr=0x8000;
WriteFlash(iFlashAddr,0x10aa);
iFlashAddr++; /* 初始化SWWSR 值*/
WriteFlash(iFlashAddr,0x7e00);
iFlashAddr++; /* 初始化BSCR 值*/
WriteFlash(iFlashAddr,0x8006);
iFlashAddr++; /* 程序执行的入口地址*/
WriteFlash(iFlashAddr,0x0002);
iFlashAddr++;
WriteFlash(iFlashAddr,0x8085);
iFlashAddr++; /* 程序长度*/
WriteFlash(iFlashAddr,0x7f00);
iFlashAddr++; /* 程序要装载到的地址*/
WriteFlash(iFlashAddr,0x0002);
iFlashAddr++;
WriteFlash(iFlashAddr,0x8000);
iFlashAddr++;
for (iLoop=0;iLoop<0x7f00;iLoop++)
{ /* 从程序空间读数据,放到暂存单元*/
asm(" pshm al");
asm(" pshm ah");
asm(" rsbx cpl");
asm(" ld #00fch,dp");
asm(" stm #0000h, ah");
asm(" MVDM _iLoop, al");
asm(" add #2800h,4,a");
asm(" reada 0h");
asm(" popm ah");
asm(" popm al");
asm(" ssbx cpl"); /* 把暂存单元内容写入FLASH */
WriteFlash(iFlashAddr,*pTemp);
iFlashAddr++; } /* 中断向量表长度*/
WriteFlash(iFlashAddr,0x0080);
iFlashAddr++; /* 中断向量表装载地址*/
中国DSP 网论坛:http://www.chinadsp.cn/bbs
WriteFlash(iFlashAddr,0x0000);
iFlashAddr++;
WriteFlash(iFlashAddr,0x0080);
iFlashAddr++;
for (iLoop=0;iLoop<0x0080;iLoop++) { /* 从程序空间读数据,放到暂存单元*/
asm(" pshm al");
asm(" pshm ah");
asm(" rsbx cpl");
asm(" ld #00fch,dp");
asm(" stm #0000h, ah");
asm(" MVDM _iLoop, al");
asm(" add #0080h,0,a");
asm(" reada 0h");
asm(" popm ah");
asm(" popm al");
asm(" ssbx cpl"); /* 把暂存单元内容写入FLASH */
WriteFlash(iFlashAddr,*pTemp);
iFlashAddr++;
} /* 写入引导表结束标志*/
WriteFlash(iFlashAddr,0x0000);
iFlashAddr++;
WriteFlash(iFlashAddr,0x0000); /* 在数据空间的0xFFFF 写入引导表起始地址*/
iFlashAddr=0xffff;
WriteFlash(iFlashAddr,0x8000);
关于LF2407A 的FLASH 烧写问题的几点说明
TI 现在关于LF24x 写入FLASH 的工具最新为c2000flashprogsw_v112。可以支持LF2407、
LF2407a 、LF2401 及相关的LF240x 系列。建议使用此版本。在http:
//focus.ti.com/docs/tool/toolfolder.jhtml?PartNumber=C24XSOFTWARE 上可以下载到这个工
具。我们仿真器自带的光盘中也有此烧写程序。在使用这个工具时注意:
一,先解压,再执行setup.exe。
二、进入cc 中,在tools 图标下有烧写工具;
1、关于FLASH 时钟的选择,此烧写工具默认最高频率进行FLASH 的操作。根据目标系统
的工作主频重新要进行PLL 设置。方法:先在advance options 下面的View Config file 中修
改倍频。存盘后,在相应的目录下(tic2xx/algos/相应目录)运行buildall.bat 就可以完成修
改了。再进行相应的操作即可。
2、若是你所选的频率不是最高频率,还需要设定你自已的timings.xx 来代替系统默认的最
高频率的timings.xx。例如LF2407a 的默认文件是timings.40。Timings.xx 可以利用
include/timings.xls 的excel 工作表来生成。然后在advance options 下面的View Config file 中
修改相应的位置。存盘后,在相应的目录下运行buildall.bat 就可以完成修改了。
3、对于TMS320LF240XA 系列,还要注意:由于这些DSP 的FLASH 具有加密功能,加密
中国DSP 网论坛:http://www.chinadsp.cn/bbs
地址为程序空间的0x40-0X43H,程序禁止写入此空间,如果写了,此空间的数据被认为是
加密位,断电后进入保护FLASH 状态,使FLASH 不可重新操作,从而使DSP 报废,烧写
完毕后一定要进行Program passwords 的操作,如果不做加密操作就默认最后一次写入加密
位的数据作为密码。
4、2407A 不能用DOS 下的烧写软件烧写,必须用c2000flashprogsw_v112 软件烧写;
5、建议如下:
1)、一般调试时,在RAM 中进行;
2)、程序烧写时,避开程序空间0x40-0x43H 加密区,程序最好小于32k;
3)、每次程序烧写完后,将word0,word1,word2,word3 分别输入自己的密码,再点击
Program password,如果加密成功,提示Program is arrayed,如果0x40-0x43h 中写入的是
ffff,认为处于调试状态,flash 不会加密;
4)、断电后,下次重新烧写时需要往word0~word3 输入已设的密码,再unlock,成功后
可以重新烧写了;
6、VCPP 管脚接在+5V 上,是应直接接的,中间不要加电阻。
7、具体事宜请阅读相应目录下的readme1,readme2 帮助文件。
8.注意*.cmd 文件的编写时应该避开40-43H 单元,好多客户由于没有注意到这里而把FALSH
加密。
如何设置硬件断点?
在profiler ->profile point -> break point
c54x 的外部中断是电平响应还是沿响应?
是沿响应,准确的说,它要检测到100(一个clk 的高和两个clk 的低)的变化才可以。
参考程序,里面好象都要disable wachdog,不知道为什么?
watchdog 是一个计数器,溢出时会复位你的DSP,不disable 的话,你的系统会动不动就reset。
时钟电路选择原则
1,系统中要求多个不同频率的时钟信号时,首选可编程时钟芯片;
2,单一时钟信号时,选择晶体时钟电路;
3,多个同频时钟信号时,选择晶振;
4,尽量使用DSP 片内的PLL,降低片外时钟频率,提高系统的稳定性;
5,C6000、C5510、C5409A、C5416、C5420、C5421 和C5441 等DSP 片内无振荡电路,不
能用晶体时钟电路;
6,VC5401、VC5402、VC5409 和F281x 等DSP 时钟信号的电平为1.8V,建议采用晶体时钟
电路
C 程序的代码和数据如何定位
中国DSP 网论坛:http://www.chinadsp.cn/bbs
1,系统定义:
.cinit 存放C 程序中的变量初值和常量;
.const 存放C 程序中的字符常量、浮点常量和用const 声明的常量;
.switch 存放C 程序中switch 语句的跳针表;
.text 存放C 程序的代码;
.bss 为C 程序中的全局和静态变量保留存储空间;
.far 为C 程序中用far 声明的全局和静态变量保留空间;
.stack 为C 程序系统堆栈保留存储空间,用于保存返回地址、函数间的参数传递、存储局部
变量和保存中间结果;
.sysmem 用于C 程序中malloc、calloc 和realloc 函数动态分配存储空间
2,用户定义:
#pragma CODE_SECTION (symbol, "section name");
#pragma DATA_SECTION (symbol, "section name")
cmd 文件
由3 部分组成:
1)输入/输出定义:.obj 文件:链接器要链接的目标文件;.lib 文件:链接器要链接的库文
件;.map 文件:链接器生成的交叉索引文件;.out 文件:链接器生成的可执行代码;链接器选项
2)MEMORY 命令:描述系统实际的硬件资源
3)SECTIONS 命令:描述“段”如何定位
为什么要设计CSL?
1,DSP 片上外设种类及其应用日趋复杂
2,提供一组标准的方法用于访问和控制片上外设
3,免除用户编写配置和控制片上外设所必需的定义和代码
什么是CSL?
1,用于配置、控制和管理DSP 片上外设
2,已为C6000 和C5000 系列DSP 设计了各自的CSL 库
3,CSL 库函数大多数是用C 语言编写的,并已对代码的大小和速度进行了优化
4,CSL 库是可裁剪的:即只有被使用的CSL 模块才会包含进应用程序中
5,CSL 库是可扩展的:每个片上外设的API 相互独立,增加新的API,对其他片上外设没有
影响
CSL 的特点
1,片上外设编程的标准协议:定义一组标准的APIs:函数、数据类型、宏;
2,对硬件进行抽象,提取符号化的片上外设描述:定义一组宏,用于访问和建立寄存器及其域

3,基本的资源管理:对多资源的片上外设进行管理;
中国DSP 网论坛:http://www.chinadsp.cn/bbs
4,已集成到DSP/BIOS 中:通过图形用户接口GUI 对CSL 进行配置;
5,使片上外设容易使用:缩短开发时间,增加可移植.
为什么需要电平变换?
1) DSP 系统中难免存在5V/3.3V 混合供电现象;
2)I/O 为3.3V 供电的DSP,其输入信号电平不允许超过电源电压3.3V;
3)5V 器件输出信号高电平可达4.4V;
4)长时间超常工作会损坏DSP 器件;
5)输出信号电平一般无需变换
电平变换的方法
1,总线收发器(Bus Transceiver):
常用器件: SN74LVTH245A(8 位)、SN74LVTH16245A(16 位)
特点:3.3V 供电,需进行方向控制,
延迟:3.5ns,驱动:-32/64mA,
输入容限:5V
应用:数据、地址和控制总线的驱动
2,总线开关(Bus Switch)
常用器件:SN74CBTD3384(10 位)、SN74CBTD16210(20 位)
特点:5V 供电,无需方向控制
延迟:0.25ns,驱动能力不增加
应用:适用于信号方向灵活、且负载单一的应用,如McBSP 等外设信号的电平变换
3,2 选1 切换器(1 of 2 Multiplexer)
常用器件:SN74CBT3257(4 位)、SN74CBT16292(12 位)
特点:实现2 选1,5V 供电,无需方向控制
延迟:0.25ns,驱动能力不增加
应用:适用于多路切换信号、且要进行电平变换的应用,如双路复用的McBSP
4,CPLD
3.3V 供电,但输入容限为5V,并且延迟较大:>7ns,适用于少量的对延迟要求不高的输
入信号
5,电阻分压
10KΩ 和20KΩ 串联分压,5V×20÷(10+20)≈3.3V
未用的输入/输出引脚的处理
1,未用的输入引脚不能悬空不接,而应将它们上拉活下拉为固定的电平
1)关键的控制输入引脚,如Ready、Hold 等,应固定接为适当的状态,Ready 引脚应固定接为
有效状态,Hold 引脚应固定接为无效状态
2)无连接(NC)和保留(RSV)引脚,NC 引脚:除非特殊说明,这些引脚悬空不接,RSV 引
脚:应根据数据手册具体决定接还是不接
3)非关键的输入引脚,将它们上拉或下拉为固定的电平,以降低功耗
中国DSP 网论坛:http://www.chinadsp.cn/bbs
2,未用的输出引脚可以悬空不接
3,未用的I/O 引脚:如果确省状态为输入引脚,则作为非关键的输入引脚处理,上拉或下拉为
固定的电平;如果确省状态为输出引脚,则可以悬空不接
产品推荐
白金增强版XDS510 - USB2.0 DSP 仿真器
中国DSP 网论坛:http://www.chinadsp.cn/bbs
白金增强版与其它仿真器的相比的优点:
1, 美观小巧,携带方便,仅一张普通名片大小,外观更加清爽;
2, 采用优质铝壳,抗干扰更有保证,工作更稳定;
3, 电路设计更合理,专门稳压保护电路,使用更安全;
三月包换,三年保修,免去用户的后顾之忧!
本站优惠价850 元市场价1800 元
功能与特点:
• 完全采用USB2.0 标准接口连接计算机,完全即插即用,传输速度可达480Mbps,是
USB1.0 接口传输速度的40 倍以上。兼容USB1.1 协议,兼容任何当前的USB1.1 接口
PC 机。
• 14PinJtag 仿真接口。
• 支持Windows98/ NT/2000/XP 操作系统。
• 支持TI CCS V2.0、V2.1、V2.2 , 支持CCS3.1 集成开发环境,支持c 语言和汇编语

• 实现对F28x/F240x/F24x/F20x 的Flash 可编程。
• 不占用目标系统资源,支持多个DSP 同时调试仿真。
• 宽工作电压范围:1V— 5V,不需独立供电,使用PC 机电源。
• 支持热插拔,我公司的USB2.0 仿真器可在不关闭主机的情况下插拔而不会损坏。
• 设计独特,完全克服目标板掉电后造成的系统死机。
• 无需外接电源,携带方便,仿真传输很快,方便移动开发(高速)。
• 安装简单,运行稳定,具有RTDX 数据交换能力,下载速度比别公司仿真器提高近五倍。
• 自纠错+电磁干扰技术,使系统更稳定可靠,特别适合现场调试。
仿真DSP 范围:
可仿真调试TI 公司:
TMS320C2000 系列:F20X、F24X、F240X、F28XX 等
TMS320C3000 系列:VC32 等
TMS320C5000 系列:54X 、55X 等
TMS320C6000 系列:62XX/67XX、64X 等
OMAP:如1510、5910 等全系列TI DSP 芯片
随机物品:
1. DSP USB2.0 仿真器一个
中国DSP 网论坛:http://www.chinadsp.cn/bbs
2. 14Pin 扁平电缆
3. USB2.0 PC 连接电缆
4. 含各种开发环境、资料驱动光盘一张
5. DSP Emulator 使用说明书
无敌性价比DSP+CPLD+单片机三合一综合开发板(一顶三)
初学者的最佳选择
只需一块普通实验板的价格就能买到
DSP,CPLD,单片机三合一的实验板
您还等什么呢.....
中国DSP 网论坛:http://www.chinadsp.cn/bbs
系统的特点简介:
该系列实验系统具有教学实验和开发两大功能,满足学校课程教学要求的同时,提供基本的
开发功能,根据用户按其实际需要选择的不同DSP 芯片配置相应型号的开发软件。开发软
件支持汇编语言、C 语言和交叉混合编程,并且支持代码级设计,仿真调试时,可以实时观
察CPU 的运行情况,如:特殊功能寄存器、数据存储器、程序存储器等。同时,提供每个
实验的样例测试程序以方便教师教学和同学的实验。提供相关的软、硬件学习速查资料,使
用户以最短的时间,掌握DSP,CPLD,单片机基本的软、硬件技术。
板上资源:
○ DSP 处理器: 100MIPS 高速数字信号处理器(DSP)TMS320VC5402,含16K 字片内存
储器。(注: 标准配置为TMS320VC5402,可选配TMS320VC54X 其它芯片)
○ 外部64K*16 位的SRAM。
○ DSP JTAG 仿真口
○ CPLD:采用Altera 公司的EPM7128STC100 芯片
○ CPLD JTAG 下载口
○ 扩展CPLD 所有IO 引脚
○ 电源稳压电路
○ 单片机:STC89C52RC(不需要写片机,可直接通过串口下载程序)
○ 串口电路
○ 2 位LED 数码管
○ 其它LED 灯和按建
可实验内容:
单片机部分:
1.单灯闪烁实验
实验目的:通过该实验学习I/O 口的基本知识,掌握P1 口单个引脚作为输出口使用的方法,学习软件
延时的编程方法。
2.流水灯实验
实验目的:通过该实验进一步学习I/O 口的知识,掌握P1 口作为输出口使用的方法,学习移位指令的
用法。
3.按钮控制灯的实验
实验目的:通过该实验学习单片机引脚作为输入的使用方法,掌握51 类单片机引脚“准”双向I/O 口的
特性。
4.定时器控制的流水灯实验
实验目的:学习定时/计数器的结构,掌握定时器的使用。
5.计数器实验程序
实验目的:学习51 单片机计数器功能的应用,掌握计数方式编程的方法。
6.用中断方式实现定时器控制的流水灯实验
中国DSP 网论坛:http://www.chinadsp.cn/bbs
实验目的:学习中断的概念,了解使用中断编程的一般方法,掌握采用中断方式进行定时器编程的方
法。
7.外中断实验
实验目的:学习外部中断的概念和编程方法。
8.串行通讯实验
实验目的:学习串行通讯的有关原理,51 单片机串行口的结构、串行口编程的方法。
9.键盘实验
实验目的:学习键盘知识,了解键盘编程的方法,掌握一种编程方法。
10.显示器接口
实验目的:学习LED 显示接口技术,掌握各种显示程序编制的方法。
DSP部分:
1. CCS 软件学习
了解DSP 开发系统的组成;熟悉DSP 开发系统的连接;学会使用CCS 开发环境。
2. 常用指令实验
掌握TMS320C54x 常用指令的用法。
3. 数据存储实验
掌握TMS320C54x 的存储空间分配和相关操作指令的使用方法。
4. I/O 实验
了解I/O 口的扩展,掌握常用操作指令的使用方法。
5. 定时器实验
掌握TMS320C5402 定时器的控制方法。
6.基本算法实验
掌握算法的原理,熟悉CCS 仿真环境。
7. HPI 接口实验
掌握单片机与DSP 的接口通信,通过HPI口,单片机和DSP 可以互相读写访问存储器的内容