TMS320VC33系列讲座资料开发技巧.docx
- 文档编号:12823400
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:35
- 大小:397.46KB
TMS320VC33系列讲座资料开发技巧.docx
《TMS320VC33系列讲座资料开发技巧.docx》由会员分享,可在线阅读,更多相关《TMS320VC33系列讲座资料开发技巧.docx(35页珍藏版)》请在冰豆网上搜索。
TMS320VC33系列讲座资料开发技巧
TMS320VC33系列讲座资料
第一讲VC33的电源设计
这里主要结合实际项目来讲解VC33的最小系统设计,这一讲为电源电路设计,主要分为一下几个部分进行:
DSP系统需要的电源种类DSP系统电源供电的特殊要求:
上电次序
数字/模拟混合系统电源处理方法电源电路设计及器件选型电源在PCB设计时的一些注意事项
1、给TIDSP供电,TIDSP有5类典型电源引脚:
CPU核电源引脚,I/O电源引脚PLL电路电源引脚
Flash编程电源引脚(仅C2000系列DSP有)模拟电路电源引脚(仅C2000系列DSP有)
2、上电次序,CPU内核先于I/O上电,后于I/O掉电(TMS320F281X例外,刚好相反)
CPU内核与I/O供电应尽可能同时,二者时间相差不能太长(一般不能>1s,否则会影响器件的寿命或损坏器件)为了保护DSP器件,应在内核电源与I/O电源之间加一肖特基二极管
3、数字与模拟部分单独供电最后通过磁珠接在一点即可4、电源电路设计主要的考虑因素
用哪种类型的电源器件:
转换效率、成本和空间,输入电压,输出电压(输出电压是否可调、输出电压的路数)输出电流:
控制/状态:
EN控制、PowerGood状态
5、电源器件选型,这里列出一些常用的LDO,供大家在设计时选择
双路输出输入电压输出电压输出电流辅助功能
TPS767D318:
5V3.3V/1.8V1A/1AEN
TPS767D301:
5V3.3V/可调1A/1AEN
单路输出
TPS76333:
5V3.3V150mAEN
TPS76801:
5V可调1AEN、PG
TPS75701:
5V可调3AEN、PG
TPS75501:
5V可调5AEN、PG
我在做VC33设计中用到的电源器件是双路输出的TPS767D318。
实际中的连接电路大家可以参照Datasheet。
6、电源在PCB时的注意事项:
数字地、模拟地分开,单点连接,强烈推荐采用多层板,为电源和地分别安排专用的层。
同层上的多个电源、地用隔离带分割,每个电源引脚附近放置10~100nF旁路滤波电容,以平滑电源的波动。
在PCB四周均匀分布一些4.7~10uF大电容。
旁路电容一般采用瓷片电容
第二讲VC33的复位监控及时钟电路设计
一、复位监控电路设计:
为了使系统被复位信号正确地初始化,复位信号的脉冲宽度必须至少10个H1周期以上(即当C3x运行于33.33MHz时需要600ns)。
上电之后,系统的振荡器达到稳定工作状态需要20ms,甚至更长时间。
一般上电复位时,在复位引脚上置一个100ms~200ms的低电平脉冲是比较合适的。
简单的复位电路可以采用分离器件组合而成。
我的设计中采用了MAXIM公司的集成微处理器监控复位电路MAX706s,减少了监控电路的元器件和复杂性,并同时实现了复位功能。
与由分离器件组装的电路比较起来,提高了系统的可靠性和精确度。
MAX706s是可工作在3.3V下的uP监控电路,能够实现四个方面的功能:
①在电路上电、掉电及异常时产生一个长达200ms的复位信号;
②有一个独立的看门狗,当1.6s以上没触发看门狗输入WDI时,看门狗输出信号WDO变低;
③有一个1.25V的电压门槛检测器,用于掉电报警、电池欠压或监控高于2.93V的电压;
④一个低电平有效的手动输入MR,用以实现手动复位功能。
大家设计复位电路时直接根据Datasheet来就可以了。
MAX706s的第7脚复
位输出连接到DSP芯片的复位输入引脚,看门狗输入由CPLD中的逻辑控
制,SW-WDT开关可选择是否启用电路的看门狗功能。
在调试系统的程序
时,不将看门狗输出连接到MR脚,更易于程序的调试。
(强烈建议DSP系统中用CPLD)
二、时钟电路设计:
在讲时钟电路设计前,先讲几个基本的概念。
别小看这几个概念,很多人都没有弄清楚的。
1、晶体Crystal:
晶体谐振器的简称,是一种压电石英晶体器件,具有一个固有的谐振频率,在恰当的激励作用下,以其固有频率振荡。
2、振荡电路Oscillator,为晶体提供激励和检测的电路。
3、晶振CrystalOscillator将晶体、振荡器和负载电容集成在一起,其输出直接为一方波时钟信号。
4、锁相环电路PLL用于对输入时钟信号进行分频或倍频的电路。
TMS320C3x的时钟,既可以在XOUT和XIN之间外接无源晶体利用片内振荡器得到,也可以利用外部时钟来提供。
虽然使用片内的振荡器比较方便而且成本也较低,但由此得到的时钟频率不是很稳定,精确度不高。
因此采用了外部有源晶振,晶振的时钟信号输入到DSP芯片的EXTCLK引脚。
这时DSP芯片的XIN引脚应该接地。
VC33片内有一个锁相环(PLL)电路。
PLL把由片内振荡器产生的时钟或由外部时钟源产生的时钟视作参考时钟,然后把这一参考时钟乘以一个比例系数后,再为芯片系统提供驱动时钟。
因此,时钟源的频率可以比CPU的频率低。
PLL的倍频系数及功耗状态由引脚CLKMD0、CLKMD1决定,共有四种模式。
设计中将这两引脚接高电平,在12Mhz的外部时钟下可得到60Mhz的CPU运行频率。
第三讲
一、存储器结构:
VC33的总存储器空间是16M32位字。
程序、数据和I/O空间都包含在这16M字地址空间中,允许在RAM或ROM中保存表、系数、程序代码或数据。
这样,存储器利用最大并且可根据需要定位存储器空间,但应注意片内可供用户使用的存储空间只有RAM,片内的ROM在芯片出厂时已固化了引导程序,用户不能对其修改。
VC33中可供用户使用的片内RAM共4块,RAM0和RAM1均为1K×32位,RAM2和RAM3各位16K×32位,4块RAM的总容量为34K×32位。
存储器还有一块64×32位的高速缓冲器(Cache)<这个以后单独做专题讲>,供指令快速译码使用,另有一块4K×32位的ROM,存放引导程序。
大家注意了:
上述RAM和Cache的位置是固定的,但ROM、中断向量以及被引导的外部程序的起始地址在16M空间中的位置是由用户设定的存储器工作方式决定的。
大家看下面的关系
(a)微处理器方式(b)微计算机引导方式
--------------------------------------------------------------------------------
0h中断矢量、复位向量、陷阱矢量0h存放引导程序的片内ROM
03Fh和保留单元(64)FFFh
--------------------------------------------------------------------------------
040h1000h引导1400000h引导2
外部存储空间(8M-64K)外部存储空间(8M-4K)
7FFFFFh7FFFFFh
--------------------------------------------------------------------------------
800000h800000h
RAM2(16K)RAM2(16K)
803FFFh803FFFh
--------------------------------------------------------------------------------
804000h804000h
RAM3(16K)RAM3(16K)
807FFFh807FFFh
--------------------------------------------------------------------------------
808000h808000h
外围总线存储器映射外围总线存储器映射
寄存器(16K)寄存器(16K)
8097FFh8097FFh
--------------------------------------------------------------------------------
809800h809800h
RAM0(1K)RAM0(1K)
809BFFh809BFFh
--------------------------------------------------------------------------------
809C00h809C00h
RAM1(1K)中断陷阱分支指令
809FC1h63
809FFFh809FFFh
--------------------------------------------------------------------------------
80A000h80A000h
外部存储空间(8M-40K)FFF000h引导3外部存储空
FFFFFFhFFFFFFh间(8M-40K)
总之,微处理器方式和微计算机引导方式最大的差异在于是否允许引导,如果不引导,则为微处理器方式,否则就为微计算机引导方式。
在大多数情况下,程序总是放在外部ROM中的,为了实现程序的高速运行,必须将用户程序由外部ROM装载到DSP内部的高速RAM中,所以必须采用微计算机引导方式,但引导成功后,为了避免中断向量的搬迁,可通过DSP的I/O口引脚将工作方式切换到微处理器方式。
在实际中,大家可直接置为引导方式,当然做板时也可以用跳线来选择是处理器方式还是引导方式。
VC33存储器的扩展。
这里我们主要以异步存储器为主。
下面是异步存储器接口控制信号。
片选:
PAGE[3:
0]
读/写控制:
STRB、R/W,等待就绪:
RDY.注意的问题:
a、硬件信号的正确连接;b、时序的相互匹配
1、SRAM的扩展:
常用的SRAM:
CY7C1021V33-12ZC(64K×16位、3.3V、12ns)
CY7C1041V33-12ZC(256K×16位、3.3V、12ns)IS61LV25616AL-10T(256K×16位、3.3V、10ns)
我用到的就是第三种,实际中我用两片SRAM扩展为32位的。
其他的信号线不用我教了吧,呵呵,这个大家都会连。
2、FLASH的扩展:
FLASH的基本操作:
a、读FLASH存储单元数据;b、读FLASH状态信息;
c、扇区擦除;d、整片擦除;e、写数据到FLASH存储单元中
常用FLASH:
SST39VF400A-70-4C-EK(256K×16、3.3V、70ns)Am29LV800B(1M×8位/512K×16位、3.3V、70ns)注意Bootloader的定位就可以了。
片选接PAGE1。
技巧提示:
数据、地址线在PCB布线时的等价交换DSP外部存储器接口的数据总线为DD[i],存储器芯片的数据总线为MD[j].。
DSP外部存储器接口的地址总线为DA[k]。
存储器芯片的地址总线为MA[l]。
数据总线可以等价交换时:
i不等于j
地址总线可以等价交换时:
k不等于l。
注意了:
SRAM的数据总线和地址总线可以等价交换,而FLASH的则不能。
第四讲VC33中CMD文件的写法
呵呵,又来了哦!
前段时间忙着本科生的毕业设计,没时间写,今天我们的讲课又开始咯。
做好准备了吗:
-)前面主要讲了一下DSP的硬件设计,让大家大致了解了一下。
从今天开始,我将向大家介绍VC33的软件设计。
这一讲向大家介绍VC33中CMD文件的写法。
所谓CMD文件就是Command文件,即连接命令文件。
1、段。
一般来讲,通用目标文件格式(COFF)一般有三种:
*.obj、*.lib和*.out。
1)汇编语言中的段
1>未初始化段
.bss——定义变量存放空间
.usect——用户自定义未初始化段
2>已初始化段
.text——可执行的指令码
.data——初始化数据或表格
.sect——用户自定义段
.asect——类上
2)C语言中的段
1>未初始化段
.bss——定义变量存放空间、存放全局、静态变量
.stack——存放C中的栈
.system——存放C中的堆(heap)
.const——存放特殊的常数、字符
2>初始化段
.text——指令代码
.cinit——存放全局/静态变量执行初始化的常数数据
.switch——存放C中switch语言产生的表格
明白了吗?
呵呵。
慢慢来:
-)
2、CMD文件
1)输入/输出定义:
-lrts30.lib
-oDEMO1.out
这两项可由菜单设置。
2)MEMORY命令——指令存储空间
格式如下:
MEMORY
{
PAGE0:
name1[atlr]:
Origin=C1,l=C2
PAGE1:
……
……
}
举个例子:
MEMORY
{
RAM0:
O=800000h,l=8000h//片内RAM0
RAM1:
O=809800h,l=800h//片内RAM1
RAM_EX:
O=A00000h,l=1000h//片外SRAM
}
3)SECTIONS——描述“段”定义在哪个物理地址
格式如下:
SECTIONS
{
name:
[propertry,propertry,……]
}
其中propertry属性是什么?
1>load——定义段存放在何处
load=(或>)800100h
2>run——定义段在何处运行
run=(或>)800300h
举个例子:
SECTIONS
{
.text:
>RAM
.bss:
>RAM
.stack:
>RAM_EX
}
注意:
伪指令MEMORY和SECTIONS只能大写!
下面给出一个完整的CMD文件。
-w
-stack400h
-heap400h
-lrts30.lib
MEMORY
{
RAM:
o=800000h,l=8000h
RAM1:
o=809800h,l=800h
SRAM:
o=1000h,l=3efffh
FLASH:
o=400000h,l=3fffffh
}
SECTIONS
{
.text:
>RAM
.data:
>RAM
.bss:
>RAM
.cinit:
>RAM
.stack:
>RAM1
.const:
>RAM
}
大家会了吗?
总之,CMD它是用来分配rom和ram空间用的,告诉链接程序怎样计算地址和分配空间。
其实要是在支持BIOS的DSP中,根本不用写CMD文件,直接利用图像配置界面自动生成的CMD文件即可。
但是像2407和VC33不支持BIOS的DSP,只能手写CMD文件了。
第5讲
由于VC33的资料很少,将VC33的BootLoader讲得很详细的几乎没有,大家很多看了的都不明白怎么回事,我将介绍VC33BootLoader的详细步骤,大家按照这个步骤来就OK了^_^。
我们的目的是自启动点亮LED灯,那么我们得有两个工程文件,一个为led.mak,另一个为flash.mak,这里可以视flash工程文件为一个工具,仅仅将led工程中的某种文件导入到flash中,然后掉电重启后由flash装入RAM中运行,实现自启动。
所以我们需要做的只是要生成某种文件即bin文件。
先说明一下大体的步骤。
1、在led工程中编写hex.cmd文件;2、通过hex30工具将.out文件转化为.hex文件;3、通过hexbin工具将.hex文件转化为.bin文件。
下面给出具体的操作:
第一步:
我们首先要明白hex.cmd文件里面包含哪些内容,我们应该怎么来写。
下面是一个完整的hex.cmd文件。
led.out//输入coff文件
-oled.hex//输出hex文件
-mapled.mxp//输出mxp文件
-i//设置为Intel格式的hex文件
-boot
-bootorg0
-cg10f8h//设置全局控制寄存器
-romwidth8//ROM字宽
-memwidth8//Flash字宽
-e0x8001af//程序入口地址
可以看出,输入的是led.out文件,输出的文件有led.hex和led.mxp。
这里几乎是固定的写法,我们仅仅需要做的是查看程序的入口地址,然后改过来就可以了。
如何查看程序入口地址?
在led工程文件中,执行Project—>Option—>linker,输入生成的map文件名led.map
接下来,我们led工程中打开led.map文件
可以看到,led程序的入口地址为80002e,所以只需要将上述hex.cmd中最后一项改为-e80002e就行了。
第二步:
将out文件转化为hex文件。
使用命令提示符,输入命令进行如下操作:
这时我们看led工程中已经生成了led.hex文件了。
第三步:
将hex文件转化为bin文件。
接着第二步输入如下命令:
回车后:
这时我们看到已经生成了led.bin文件了。
第四步:
最后一步就是将bin文件烧到Flash中,以实现自启动。
下面的一个工程文件包含一个完整的Flash烧写程序,Flash型号为29LV800BA,如果大家的Flash型号也是这个或兼容的,可以下载运行,当出现“PleaseInputyourfile:
”的提示时输入“led.bin”,烧写完毕出现提示“OK”。
完整的Flash烧写程序
第六讲
VC33有两个特点:
流水线操作、并发I/O和CPU操作。
流水线操作是体现VC33高性能的主要特征。
任何一条指令都要经过取指令、译码、读操作数、执行等4个过程,对同一条指令不能同时进行上述4个过程的操作,但可以对不同的指令同时进行这4种操作,即每一个CPU周期中,有4条指令分别处于取指令、译码、读操作数和执行阶段。
这种作业方式就称为流水线操作。
流水线作业不仅提高了运算和处理速度,同时也减少了总线拥挤的现象,提高了CPU的吞吐量。
VC33流水线结构的四个主要单元和他们的功能如下:
(1)取指令单元(F):
从寄存器中取指令字并更新程序计数器(PC)。
(2)译码单元(D):
译码指令字并产生地址。
而且,在间接寻址中译码单元控制ARn寄存器的修改,当发生栈操作时(PUSH/POP)修改栈指针。
(3)读操作数单元(R):
从存储器或寄存器中读操作数。
(4)执行单元(E):
从存储器或寄存器中读出操作数后,执行相应的操作,并向目的地址写结果。
上面这个图说明了流水线的结构,其中X、Y、W、Z代表具体的指令。
我们从图中可以看出,在第m个周期,这四个阶段完全处于并行状态,即完全重叠在一起,从而进入了正常的流水线作业过程。
流水线操作中,DMA可能也要工作,这时,优先级顺序由高到低为:
执行、读操作数、译码、取指令、DMA。
尽管DMA控制器的优先级最低,但可以通过合适的数据结构使DMA与CPU的冲突最少甚至消除,这时因为DMA有它自己的数据和地址线。
我们可以看到,流水线操作真正工作是在第m个周期,即完全重叠。
但是如果遇到了跳转和资源竞争等特殊情况,那么流水线操作就有可能不能完全处于重叠,这种冲突往往导致一个或几个CPU周期中没有任何一条指令处于被执行的状态。
第七讲DSP系统应用中FLASH在线编程方法-
摘要:
介绍了在TI公司TMS320VC33DSP应用系统中,通过JTAG口对DSP外部FLASH存储器实现在线编程的方法,给出了DSP系统加电后的自动装载运行。
FLASH存储器是一种高密度、非易失性的电可擦写存储器,存储量大,使用方便,适用于低功耗、高性能的系统。
在高速DSP应用系统中,为了充分发挥DSP性能,在加电后需要将用户代码装载到高速RAM存储器中运行。
下面介绍SST29LE020型FLASH存储器的烧写方法,以及如何实现TMS320VC33上电后用户程序的自举引导(Bootload)。
1SST29LE020的特点及操作
SST29LE020是SST公司生产的一种256K×8FLASH,它有10万次以上的擦写寿命,其内部分为2048个页面,每个页面128字节,页面写周期为5ms。
如果页面中一个数据需要改变,则这个分区的所有数据必须重新装入。
FLASH支持软件数据保护功能(SoftwareDataProtection),当执行三字节DSP写指令时,保护功能将自动加上,任何后续的写操作必须带上三字节DSP写指令。
SST29LE020的读操作与传统EPROM读操作一致;在进行数据编程操作时,它支持内部定时(InternalTimer)、数据查询(Data#Polling)、跳变位(ToggleBit)三种方式,以测试内部编程操作是否完成。
FLASH软件擦除指令为6字节加载指令,该指令执行后,最多等待20ms整个芯片便被擦除,即将FLASH每个数据位都恢复为1状态的全FF状态。
SST29LE020软件指令序列可在SST公司的数据手册上查到,在FLASH编程之前,需对FLASH进行擦除,擦除操作需要六个总线周期。
FLASH页面写操作在使用内部定时方式时的流程如图1所示。
2TMS320VC33简介
TMS320VC33是美国TI公司推出的TMS320C3X系列的32位浮点数字信号处理器,它是在TMS320C31浮点DSP的基础上开发的一个价格更低的DSP,该产品具有高速、低功耗、低成本、易于开发等显著优点。
TMS320VC33采用内部1.8V,外部3.3V供电,因而它的功耗比原有型号TMS320C31的功耗降低了大约一个整量级,而且能支持高达150M/FLOPS的运行速率。
其主要特性如下:
CPU是32bit的高性能CPU:
可进行16/32b整数和32/40b的浮点操作;内含8个扩展精度寄存器;有2个地址发生器、8个辅助寄存器和2个辅助寄存器算术单元(ARAU)。
片内存储器为32bit指令字、24bit地址线、34K×32b(1.1Mb)的双静态RAM。
外围接口具有启动程序装载功能;内含5倍频的锁相环(PLL)时钟发生器;片内存储器可映射外设,其中包括一个串行口、两个32bit定时器和一个DMA;具有四个内部译码页选,可大大简化TMS320VC33与I/O及存储器的接口。
3TMS320VC33程序引导功能
TMS320VC33具有两种存储器映射方式,即MP(MicroprocessorMode)方式和MC/BL(Microcomputer/BootloaderMode)方式,两种方式下中断向量的位置不同。
常用的是MC方式。
在该方式下,MCBL/MP引脚接高电平,内部ROM被映射到000~FFF之间。
这段ROM中今有器件生产厂家固化的引导程序(BootLoader),该引导程序可以将DSP实时运行的程序和数据从外部低速ROM或串行口装入到高速RAM中。
TMS320VC33复位后即运行内部固化的引导程序,引导程序通过查询四个中断引脚来确定装入方式。
这些引脚为低电平有效,查询顺序依次为INT3、INT0、INT1、INT2;当INT3有效时,为串行装入方式;当INT0有效时,从外部地址0x001000处装入(BOOT1);当INT1有效时,从外部地址0x400000处装入(BOOT2);当INT2有效时,从外部地址0xfff000处装入(BOOT3)。
TMS320VC33具有四个快速页选信号
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TMS320VC33 系列 讲座 资料 开发 技巧