1、TMS320F28XX存储器第四章 存储器4.1 TMS320F28XX系列DSP存储器映射图 存储器的低64k地址映射为240x的数据空间;高64k 映射为24x/240x的程序空间。与24x/240x兼容的代码只能从高64K的地址空间开始执行。因此,Flash的高32k和SARAM的H0区可以运行24x/240x兼容的代码(MC=0),而且对于F2812,如果MC=1,程序可以从外部扩展存储器的ZONE7块开始执行。 外部扩展存储器由5个独立的ZONE(区段)组成。其中的一块ZONE有自己的片选信号,其余的4个ZONE区段使用2条信号线进行片选。每个ZONE区段可以使用自己的时序(等待状态
2、)进行编程,也可以查询或忽略外部READY信号。这样使DSP与外部存储器更容易、更快速的连接。注意:XINTF Zone0 Zone1使用同一根片选信号; Zone6 Zone7使用。Peripheral Frame 1(外设帧1)、Peripheral Frame 2外设帧2和XINTF ZONE1构成一组“被保护的读写外设块”。“保护”模式确保这些块在写操作时也可以访问。因为28x的流水线写操作之后紧跟着一个读操作,对于不同的存储空间,CPU的存储总线将会出现相反的顺序。当用户想要写优先时,这就会引起问题。C28x的CPU支持块保护模式,这样当写操作之后的其他操作时,存储器的那段区域可以被
3、保护起来,这时需要增加额外的时钟来调整操作。模式的选择可以编程获得,也可以选择默认方式,这样可以保护被选择的区域。 对于F2812,重启时如果 XMP/1 则访问XINTF Zone7。XMP/用来选择微处理器和微控制器方式。微处理器方式下,Zone7被映射到存储空间高地址,这样中断向量表指向外部。这种模式下BOOT ROM 无效。微控制器方式Zone7无效,这样中断向量表映射到BOOT ROM。这样可以选择从片内或片外存储空间引导程序。复位时的XMP/状态被保存在XINTCNF2寄存器的XMP/标志位。用户可以在软件中设置这些位来改变BOOT ROM 和 XINTF Zone7的映射。XMP
4、/不影响其他的存储器区段。F2812 的 XINTF不支持I/O空间的扩展。 表 F2812 Flash段地址分配地址范围 程序和数据空间 0x3D 8000 0x3D 9FFF Sector J, 8Kx160x3D A000 0x3D BFFF Sector I, 8Kx16 0x3D C000 0x3D FFFF Sector H, 16Kx16 0x3E 0000 0x3E 3FFF Sector G, 16Kx16 0x3E 4000 0x3E 7FFF Sector F, 16Kx16 0x3E 8000 0x3E BFFF Sector E, 16Kx16 0x3E C000 0
5、x3E FFFF Sector D, 16Kx16 0x3F 0000 0x3F 3FFF Sector C, 16Kx16 0x3F 4000 0x3F 5FFF Sector B, 8Kx16 0x3F 6000 Sector A, 8Kx16 0x3F 7FF6 0x3F 7FF7Boot-to-Flash 入口地址 0x3F 7FF8 0x3F 7FFF 保密位(128-bit)表 F2810 Flash段地址分配地址范围 程序和数据空间 0x3E 8000 0x3E BFFF Sector E, 16Kx16 0x3E C000 0x3E FFFF Sector D, 16Kx16
6、0x3F 0000 0x3F 3FFF Sector C, 16Kx16 0x3F 4000 0x3F 5FFF Sector B, 8Kx16 0x3F 6000 Sector A, 8Kx16 0x3F 7FF6 0x3F 7FF7Boot-to-Flash 入口地址 0x3F 7FF8 0x3F 7FFF 保密位(128-bit)4.2 片内存储器存储器总线(哈佛总线结构) 许多DSP芯片使用多种总线处理存储器、外设和CPU之间的数据。C28x存储器总线包括程序读总线、数据读总线和数据写总线。程序读总线由22位地址线和32位数据线构成。数据读和写总线由32位地址线和32位数据线构成。32
7、位的数据总线使32位的单周期操作成为可能。这种称为“哈佛结构总线” 的多总线的结构使得C28x在单周期实现取址、读写数据。当所有的外设和存储器访问存储器总线时,优先考虑存储器。访问存储器总线的优先级列表如下;最高级: Data Writes Program Writes Data Reads Program Reads最低级: Fetches(仿真时的数据和程序写不会发生在存储器总线上)(仿真时的程序读和取址不会发生在存储器总线上)外设总线为了能在TI DSP系列中移植外设,F2810和F2812采用了外设总线标准来使能外设的连接。外设总线桥将各种总线及处理器“存储器总线” 整合成单一的总线,
8、此总线由16位地址、16/32位数据和一些控制信号构成。F2810和F2812支持2种外设总线,一种为Peripheral Frame 2,只支持16位访问,此类与C240X相兼容;另外一种支持16/32称为Peripheral Frame 1。4.2.1 RAM M0,M1(SARAM) 所有的C28X器件都包含这2块1kx16的SARAM(单口RAM)。复位时,堆栈指针指向M1的起始处。M0与240x系列器件的B0、B1、B2 RAM 相重叠,因此240x器件映射的数据变量可以保存在C28x器件的相同物理空间。像所有的c28x存储器一样,M0M1既可以映射为数据存储器,也可以映射为程序存储
9、器。因此可以用M1M0存储程序代码,也可以存放数据变量。这种分割是在连接器(LINKER)中实现的。C28x器件提供了未定义的存储器映射。这样使用高级语言编程更方便。L0 L1 H0 (SARAM) F2810和F2812包含额外的16Kx16的SARAM(分为4k4k8k)。每块都可以单独访问因此使管道延时最小化。同时,每块都可以被映射为程序空间和数据空间。4.2.2 FLASH F2812包含128kx16的片内flash存储器和2kx16片内OTP存储器。其中Flash分为4个8kx16段和6个16kx16段。用户可以单独的对其中任意一段进行擦写、编程和验证,而不必更改其他的段。特殊的存
10、储管道技术使Flash模块发挥更大的性能。这些Flash/OTP映射到程序空间和数据空间,所以可以用来存放应用程序或数据。 而F2810包含64kx16的片内flash存储器和2kx16片内OTP存储器。NOTE:因为OTP存储器的一部分保留为TI测试使用,所以用户使用的OTP不应超过1kwords。4.2.3 BOOT ROM Boot ROM是出厂时的引导程序。引导模式信号使引导软件知道上电时使用的是何种引导模式。通常用户可以从外部扩展引导或下载新程序,也可以选择片内FLASH引导程序。Boot ROM也包含标准的表,如数学算法中的SIN/COS函数。4.2.4 Security(保密性)
11、 F2812 F2810 提供较高性能的保密性以确保用户的程序被非法读出。用户可以烧写128bit的密码到片内flash。Csm模块用来保护FLASH/OTP L0/L1SARAM等,保密特性防止非法用户经由JTAG口查看存储器内容,从外部运行代码或尝试运行输出保密内容的非法软件。为了是使能保密模块,用户必须写入正确的128-bit密码值,这些密码值必须与FLASH内存储的密码相一致。4.3 外部存储器接口 XINTF(扩展接口 仅F2812)(P24) 扩展异步接口由19位地址信号、16位数据信号和3位片选信号构成。这些片选信号可以映射5段扩展Zones,分别为Zone0、Zone1、Zon
12、e2、Zone6、Zone7。Zone0和Zone1共使用一条片选信号线,Zone6和Zone7也共使用一条片选信号线。可以通过编程设定每个Zone的等待状态、选通信号建立和维持时间, ? 。这些功能使DSP可以实现和扩展存储器和扩展外设的接口。 (P34) 外部接口不是复用异步总线。与C240x的相似。外部接口映射为下图五个部分。notes: 1 XINTF Zone7 由XMP/和 MP/MC模式位(XINTCNF2寄存器)决定。而Zones 0,1,2,6总有效。2 每个zone 可以单独编程等待、建立和维持时限,每个zone可以单独的选择(),这样使DSP与外部存储器更容易、更快速的连
13、接。3 zone0和zone1的片选由一个信号,连接任何外部存储器被同时映射为Zone0和Zone14 zone6和zone7的片选由一个信号,连接任何外部存储器被同时映射为Zone0和Zone1 就是说若MP/MC=0,Zone7被屏蔽,但Zone6仍有效。5 F2810也有XCLKOUT信号输出外部接口的控制和定时操作由下表的寄存器控制:名字地址大小(x16) 祥解XTIMING00X00 0B202XINTF Timing 寄存器,可以用2个16位或1个32位寄存器访问Zone0XTIMING10X00 0B222XINTF Timing 寄存器,可以用2个16位或1个32位寄存器访问Z
14、one1XTIMING20X00 0B242XINTF Timing 寄存器,可以用2个16位或1个32位寄存器访问Zone2XTIMING60X00 0B2C2XINTF Timing 寄存器,可以用2个16位或1个32位寄存器访问Zone6XTIMING70X00 0B2E2XINTF Timing 寄存器,可以用2个16位或1个32位寄存器访问Zone7XINTCNF20X00 0B342XINTF Configuration(配置) 寄存器,可以用2个16位或1个32位寄存器访问Zone0XBANK0X00 0B381XINTF BANK 控制寄存器XREVISION0X00 0B3A
15、1XINTF 修订寄存器定时寄存器 XINTF 信号时序可以配合特殊的外部设备需要,例如建立、维持选通信号的时间来避免竞争及最优化总线效率。每个Zone的定时参数都可以设定。这样编程者可以根据所要访问的存储器或外设类型最优化总线效率。所有的XINTF定时值都是以XTIMCLK为基准,XTIMCLK的频率是SYSCLKOUT的一半,如下图所示: XTIMCLK与SYSCLKOUT的关系图XTIMING寄存器的参数定义如下:BIT名字操作复位描述1:0XWRTRAILR/W1,1此2位定义在XTIMCLK中的写操作滞后周期,若X2TIMING=0 表示从0,1,2,3;若X2TIMING=1 表示
16、从0,2,4,6;4:2XWRACTIVER/W1,1,1此3位定义XTIMCLK中写操作有效的等待周期,X2TIMING=0 表示从0,1,2,3,4,5,6,7;若X2TIMING=1 表示从0,2,4,6,8,10,12,14;注:1 如果 USEREADY=0(使用XREADY),则XWRACTIVE必须=1 2 若有效周期默认为1个周期,则总的有效周期则为1XWRACTIVE 6:5XWRLEADR/W1,1此2位定义在XTIMCLK中的写操作超前周期,若X2TIMING=0 表示从1,2,3;若X2TIMING=1 表示从2,4,6;8:7XRDTRAILR/W1,1此2位定义在X
17、TIMCLK中的读操作滞后周期,若X2TIMING=0 表示从0,1,2,3;若X2TIMING=1 表示从0,2,4,6;11:9XRDACTIVER/W1,1,1此3位定义XTIMCLK中读操作有效的等待周期,X2TIMING=0 表示从0,1,2,3,4,5,6,7;若X2TIMING=1 表示从0,2,4,6,8,10,12,14;注:1 如果 USEREADY=1(使用XREADY),则XWRACTIVE必须=1 2 若有效周期默认为1个周期,则总的有效周期则为1XWRACTIVE 13:12XRDLEADR/W1,1此2位定义在XTIMCLK中的读操作超前周期,若X2TIMING=
18、0 表示从1,2,3;若X2TIMING=1 表示从2,4,6;14USEREADYR/W11时,XREADY被用来更进一步拓展XRDACTIVE和XWRACTIVE定义的最小操作的有效周期0时,XREADY无效15READYMODER/W11 XREADY输入信号为异步;0时输入信号为同步17:16XSIZER/W1,1外部总线宽度:Bit 17 Bit 161 1 16-Bit1 0 保留1 1 保留0 0 保留这些位必须设定为1,1。其他状态为保留,若使用啃引起XINTF的错误操作21:18ReservedR0保留22X2TIMINGR/W1此位是timing寄存器的超前,有效,滞后值的
19、比例因子,0,比例值为1:1,0,比例值为2:1。上电和重启的默认值为2:1模式。31:23ReservedR0访问XINTF的最小时间设定如下:1 当没有使用XREADY 最小的选通信号为Lead=1,Active=0,trail=0 因此不允许设L=0,A=0,T=0 (可以设定L=1,A=0,T=0;L=1,A=1,T=0;L=1,A=0,T=1等)2 当使用XREADY 最小的选通信号为Lead=1,Active=1,trail=0 因此不允许设L=0,A=0,T=0(可以设定L=1,A=1,T=0;L=1,A=1,T=1等)对于非法的设定没有电路可以检测。XINTCNF2寄存器位定义
20、位类别名字复位描述1:0R/WWrite BufferDepth0,02R/WCLKMODE Mode13R/WCLKOFF04RReserved15RReserved07:6RWLEVEL0,08R/WMP/MC Mode9R/WHOLD010RHOLDS输入信号11RHOLDAS输入信号15:12XReserved018:16R/WXTIMCLK0,0,1XBANK 寄存器位定义位类别名字复位描述2:0R/WBANK5:3R/WBCYC14:6X保留15R/W保留XREVISION 寄存器XREVISION 寄存器包含一组特殊的数来识别产品中XINTF的版本。对F2812而言,此寄存器的配
21、置如下:位名字类别复位描述15-0REVISIONR0x0004当前的XINTF版本。内部使用。测试用。待于改进。4.4 等待状态发生器 存储器空间各区段的等待状态表区域等待状态描述M0 & M1 (SARAM) 0-等待 Peripheral Frame 00-等待 包括Flash寄存器Peripheral Frame 1 0-等待(Write)2-等待(Read)如果外设输入产生ready信号则时钟周期增加等待Peripheral Frame 20-等待(Write)2-等待(Read)外设不能增加浮点的时钟周期L0 & L1 (SARAM )0-等待 OTP编程时最小0-等待经由Flas
22、h寄存器编程 Flash编程时最小0-等待经由Flash寄存器编程 H0 (SARAM)0-等待 Boot-ROM0-等待 XINTF编程时最小1-等待经由XINTF寄存器编程外部存储器可以增加时钟周期不可能为0-等待机会来临抹头就跑典型症状:因为害怕失败,所以不敢尝试新的、更高一层的工作。病理分析:这是何惠最为懊悔的一件事了。当兵当出彩来的她,年底面临一个好机会。总经理找她谈话,告诉她将有机会竞争一个部门主任的职位,而且总经理亲口告诉她,有资格竞争的人不超过4个,而那3个人谁也没有何惠更了解这个部门的工作,总经理说:如果你上,还是有很大机会的。话都说到这份上了,换了谁都能明白,总经理对她寄予
23、厚望,这个职位就应该是她的了。可何惠思前想后,到最后居然回绝了总经理,因为她认为自己还是做具体的业务比较合适,做管理工作没有经验,怕干不好让领导失望。就这么个理由,阿惠把加薪晋级的大好机会拱手送给了别人。实用处方:当仁不让 客气什么没有人天生就会做一个新的工作,经验都是在做的过程当中学习和积累出来的,因为害怕失败就放弃机会,没有比这更没出息的了。你的上级领导也会失望的,不是因为你没做好工作,而是因为你连尝试的意愿都没有。假如你真的努力做了,即使没有达到领导的预定目标都没什么关系,至少你努力过了。而拒绝机会意味着什么?意味着你胆怯、没有勇气,这是不是职场大忌?人生是一条连续的线条,也是从出生到死
24、亡走过的一条轨迹。其中可能掀起过巨大的波澜,也可能沉入过低谷。决定这一切的关键因素,是各人的心态。主要包括以下几个方面:1、好奇心 从新生命的降临到18周岁成年之前,一般人的好奇心是比较高的。也有一些人因为父母给的爱不够,初期教育的失败,导致心灵被阻滞,好奇心比常人弱。成年之后,保持好奇心需要靠自己,只有这样才能有强烈的求知欲,为人生成功奠定基础。保持好奇心只需要看淡挫折,看透挫折,不怕挫折,及时忘记挫折.想开了,再大的痛苦,睡一个好觉,第二天一切可以重新开始。2、激情 保持好奇心,树立合理的人生目标,就会产生激情。可惜,大部分成年人都激情不够。原因也就是好奇心减弱、没有明确目标,本着及时行乐
25、的态度过日子。3、诚实 很多人都喜欢和诚实的人打交道,却常常忘记检讨自己是否诚实。说话躲躲闪闪,做人畏畏缩缩,内心阴暗,不敢面对自己,斜着眼睛面对他人。希望别人欣赏自己,却违心地不欣赏他人,就是内心不诚实的体现。4、友善 如果不能很好地理解每一个人不过是地球上60亿个生命之一,不能保持一种与他人和平共处的理念,基本上从日常言行中可以表现出各种各样的不友善。每个人都可以观察到周围人的这种心态,却常常不易看见自己的内心,可悲的是,从没有人会来告诉你,哪怕是你的父母不也会。5、合作 对于好奇心、激情、诚实、友善这四个方面打分不高的人,别人常常是不太喜欢和他(她)合作的。而如果缺乏合作的心态,人生想获得成功,唯一的办法可能就是“出家”,去独善其身。所以,真正健康的心态应该包含合作的心态。无论过去的生活造就了怎样的心态,不过,从今天开始,如果认识透了,就可以重新开始塑造一种健康的心态。根据本人的经验,一到两年时间就足矣。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1