打印

关于TMS320VC33系列资料讲解

[复制链接]
4154|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一、VC33的电源设计

这里主要结合实际项目来讲解VC33的最小系统设计,这一讲为电源电路设计,主要分为一下几个部分进行:
DSP系统需要的电源种类
DSP系统电源供电的特殊要求:上电次序
数字/模拟混合系统电源处理方法
电源电路设计及器件选型
电源在PCB设计时的一些注意事项
1、给TI DSP供电
TI DSP有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:     5V                 3.3V/1.8V             1A/1A                   EN


         TPS767D301:     5V                 3.3V/可调             1A/1A                   EN


        单路输出        
        TPS76333:           5V                      3.3V                  150mA                 EN


        TPS76801:           5V                      可调                     1A                EN、PG


        TPS75701:           5V                      可调                     3A                EN、PG


        TPS75501:           5V                      可调                     5A                EN、PG


我在做VC33设计中用到的电源器件是双路输出的TPS767D318。实际中的连接电路大家可以参照Datasheet。


6、电源在PCB时的注意事项
数字地、模拟地分开,单点连接
强烈推荐采用多层板,为电源和地分别安排专用的层
同层上的多个电源、地用隔离带分割
每个电源引脚附近放置10~100nF旁路滤波电容,以平滑电源的波动
在PCB四周均匀分布一些4.7~10uF大电容
旁路电容一般采用瓷片电容

相关帖子

沙发
huangfeng33|  楼主 | 2014-9-29 20:30 | 只看该作者
二、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、晶振Crystal Oscillator
将晶体、振荡器和负载电容集成在一起,其输出直接为一方波时钟信号。
4、锁相环电路PLL
用于对输入时钟信号进行分频或倍频的电路。
TMS320C3x 的时钟,既可以在XOUT 和XIN 之间外接无源晶体利用片内振荡器得到,也可以利用外部时钟来提供。虽然使用片内的振荡器比较方便而且成本也较低,但由此得到的时钟频率不是很稳定,精确度不高。因此采用了外部有源晶振,晶振的时钟信号输入到DSP 芯片的EXTCLK 引脚。这时 DSP 芯片的XIN 引脚应该接地。
VC33 片内有一个锁相环(PLL)电路。PLL 把由片内振荡器产生的时钟或由外部时钟源产生的时钟视作参考时钟,然后把这一参考时钟乘以一个比例系数后,再为芯片系统提供驱动时钟。因此,时钟源的频率可以比CPU 的频率低。PLL 的倍频系数及功耗状态由引脚CLKMD0、CLKMD1 决定,共有四种模式。设计中将这两引脚接高电平,在12Mhz 的外部时钟下可得到 60Mhz的CPU 运行频率。
VC33的基本设计部分到这里就讲完了,下一讲为VC33的存储器结构及其扩展。

使用特权

评论回复
板凳
huangfeng33|  楼主 | 2014-9-29 20:30 | 只看该作者
三、 VC33的存储器结构及其扩展
VCC存储器结构

(一)存储器结构
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
--------------------------------------------------------------------------------
040h                                                                        1000h   引导1   400000h   引导2
                  外部存储空间(8M-64K)                     外部存储空间(8M-4K)
7FFFFFh                                                                  7FFFFFh
--------------------------------------------------------------------------------
800000h                                                                    800000h
                    RAM2(16K)                                                        RAM2(16K)
803FFFh                                                                    803FFFh
--------------------------------------------------------------------------------
804000h                                                                     804000h
                RAM3(16K)                                                        RAM3(16K)
807FFFh                                                                    807FFFh
--------------------------------------------------------------------------------
808000h                                                                     808000h
            外围总线存储器映射                                            外围总线存储器映射
                   寄存器(16K)                                                    寄存器(16K)
8097FFh                                                                    8097FFh
--------------------------------------------------------------------------------
809800h                                                                     809800h
                   RAM0(1K)                                                           RAM0(1K)
809BFFh                                                                    809BFFh
--------------------------------------------------------------------------------
809C00h                                                                    809C00h      
         RAM1(1K)                                                中断陷阱分支指令
                                                                                                  809FC1h         63
809FFFh                                                                    809FFFh
  --------------------------------------------------------------------------------
80A000h                                                                    80A000h
               外部存储空间(8M-40K)                    FFF000h  引导3   外部存储空
FFFFFFh                                                           FFFFFFh      间(8M-40K)
总之,微处理器方式和微计算机引导方式最大的差异在于是否允许引导,如果不引导,则为微处理器方式,否则就为微计算机引导方式。在大多数情况下,程序总是放在外部ROM中的,为了实现程序的高速运行,必须将用户程序由外部ROM装载到DSP内部的高速RAM中,所以必须采用微计算机引导方式,但引导成功后,为了避免中断向量的搬迁,可通过DSP的I/O口引脚将工作方式切换到微处理器方式。
在实际中,大家可直接置为引导方式,当然做板时也可以用跳线来选择是处理器方式还是引导方式。


使用特权

评论回复
地板
huangfeng33|  楼主 | 2014-9-29 20:31 | 只看该作者
VCC存储器扩展

隔了一段时间了,不知道大家前面的知识消化了没有,这一节我们一起来学习一下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存储器芯片的数据总线为MD[j]
DSP外部存储器接口的地址总线为DA[k]
存储器芯片的地址总线为MA[l]
数据总线可以等价交换时:i不等于j
地址总线可以等价交换时:k不等于l
注意了:SRAM的数据总线和地址总线可以等价交换,而FLASH的则不能。



使用特权

评论回复
5
huangfeng33|  楼主 | 2014-9-29 20:32 | 只看该作者
四、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)输入/输出定义:-l     rts30.lib
                                    -o    DEMO1.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
-stack  400h
-heap   400h
-l   rts30.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文件了

使用特权

评论回复
6
huangfeng33|  楼主 | 2014-9-29 20:37 | 只看该作者
由于VC33的资料很少,将VC33的BootLoader讲得很详细的几乎没有,大家很多看了的都不明白怎么回事,我将介绍VC33 BootLoader的详细步骤,大家按照这个步骤来就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文件
-o led.hex                               //输出hex文件
-map led.mxp                         //输出mxp文件
-i                                             //设置为Intel格式的hex文件
-boot                                      
-bootorg 0
-cg 10f8h                               //设置全局控制寄存器
-romwidth 8                           //ROM字宽
-memwidth 8                          //Flash字宽
-e 0x8001af                            //程序入口地址
可以看出,输入的是led.out文件,输出的文件有led.hex和led.mxp。这里几乎是固定的写法,我们仅仅需要做的是查看程序的入口地址,然后改过来就可以了。
如何查看程序入口地址?
在led工程文件中,执行Project—>Option—>linker,输入生成的map文件名led.map

接下来,我们led工程中打开led.map文件

可以看到,led程序的入口地址为80002e,所以只需要将上述hex.cmd中最后一项改为-e 80002e就行了。
第二步:将out文件转化为hex文件。
使用命令提示符,输入命令进行如下操作:

这时我们看led工程中已经生成了led.hex文件了。
第三步:将hex文件转化为bin文件。
接着第二步输入如下命令:
[size=13.333333969116211px]  
4.jpg (5.42 KB, 下载次数: 1)
下载附件
2013-6-27 09:35 上传



回车后:
这时我们看到已经生成了led.bin文件了。
第四步:最后一步就是将bin文件烧到Flash中,以实现自启动。
下面的一个工程文件包含一个完整的Flash烧写程序,Flash型号为29LV800BA,如果大家的Flash型号也是这个或兼容的,可以下载运行,当出现“Please Input your file:”的提示时输入“led.bin”,烧写完毕出现提示“OK”。



使用特权

评论回复
7
huangfeng33|  楼主 | 2014-9-29 20:38 | 只看该作者
六、 VC33的流水线操作透析
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周期中没有任何一条指令处于被执行的状态。

使用特权

评论回复
8
zhangmangui| | 2014-9-29 21:53 | 只看该作者
老片子了啊  

使用特权

评论回复
9
huigoushang| | 2014-9-30 16:01 | 只看该作者
太详细了 顶起~

使用特权

评论回复
10
G21372| | 2014-9-30 16:17 | 只看该作者
如果遇到了跳转和资源竞争等特殊情况,那么流水线操作就有可能不能完全处于重叠

使用特权

评论回复
11
shibalihuandao| | 2014-9-30 16:53 | 只看该作者
这么详细 资料太棒了

使用特权

评论回复
12
zgsxhzac| | 2014-9-30 17:05 | 只看该作者
弄个文件比较好下载

使用特权

评论回复
13
sishangcine| | 2014-9-30 17:33 | 只看该作者
为了保护DSP器件,应在内核电源与I/O电源之间加一肖特基二极管

使用特权

评论回复
14
heibaiyinjiag| | 2014-9-30 17:51 | 只看该作者
这里主要结合实际项目来讲解VC33的最小系统设计

使用特权

评论回复
15
long009| | 2014-11-30 13:50 | 只看该作者
谢谢分享

使用特权

评论回复
16
413526602| | 2015-12-2 14:12 | 只看该作者
谢谢分享!!1

使用特权

评论回复
17
bnnkyw| | 2015-12-15 23:25 | 只看该作者
谁有这个片子的开发工具,或则最新的CCS能支持该片子吗

使用特权

评论回复
18
upcwangwenju21| | 2016-1-7 22:17 | 只看该作者
确实是老片子了,呵呵。国防科大有VC33,不是做广告。

使用特权

评论回复
19
wangpangzi5578| | 2016-10-13 14:04 | 只看该作者
LZ想问您一下,我现在有这个片子,程序可以烧进FLASH 屏蔽MAX706S 的时候可以正常运行,启动了系统就运行不了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

506

主题

2446

帖子

8

粉丝