Freescale MPC8641D 开发笔记

2019-04-14 21:47发布

一、前言          不得不承认,要从多年的DSP开发转向PPC的开发似乎这个角度有点大。以前习惯了的数字信号处理、数据采集之类的在这里似乎消声匿迹了。但是从长远来看用PPC来进行数字信号处理似乎是个潮流和方向。就MPC8641D的浮点计算能力来看几乎是TMS320C6416定点处理能力的10倍。用PPC+FPGA的信号处理构架正悄然兴起。陌生归陌生,但是单纯的从硬件开发的角度来说,难度也不是很大,虽然我从未接触过PowerPC的开发。赶鸭子上架,没办法一点一点积累吧。要在段时间按内将硬件搞定,必须速读文档资料。当然最好不要去拜读中国人自己写的那些,那是浪费时间。 二、片上底层        最为简单的当然是分成两部分来架空这款CPU,第一就是e6000核,其二就是片上外围。 我想不管什么公司的牛X CPU芯片,他总是带有标准的工业接口和一些标准协议接口。外围接口嘛,不就是把数据倒腾进去,然后倒腾出来吗。当然也会加一些控制功能模块,比如看门狗啊、定时器、中断管理器、DMA管理器等等比较通用的模块。各种类型的CPU不同之处就在于CPU,片上总线形式,片上外围大同小异。飞思卡尔公司芯片当然也不会例外,不然他产品卖给谁呢?  1. IIC接口   : 两线接口,SCA/SDA,用于设备之间的数据交换。比如微控制器、实时时钟、A/D转换器、LCD。    Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远 2. UART:MPC8641D包含两个异步串行收发器,四线: TXD,RXD,CTS,RTS,包含16比特FIFO。每个UART都由MPX提供时钟。 Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远 软件可编程波特率产生器,由Platform 时钟除以1~(2**16-1).起始位、停止位和奇偶校验位。与PC16450兼容。 3. MPX层次模块(MCM) Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远 4. DDR 控制器 支持2个完全可编程DDR SDRAM控制器,支持绝大部分的JEDEC存储器。  Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远     5.可编程中断控制器(PIC) Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远    12个外部中断源: IRQ[0:11];   内部中断源:  PIC自身产生的中断:全局定时器A,B;内部处理器中断(IPI)、消息寄存器、共享消息寄存器  3中可编程中断输出:外部中断int0、int1.任何PIC中断源能够编程产生INT0、int1中断请求;紧急中断cint0、cint1;IRQ_OUT 支持两个处理器:中断能够路由到处理器核0和1 处理器核初始化控制 处理器硬件复位控制 可编程PIC复位 支持外围中断控制器链接,类似于8259中断控制器。 旁路模式(PIC 禁止)     二、LCB功能介绍 LBC允许以不同的时序要求与不同的存储器实现对口连接。   . SDRAM 机制为与SDRAM接口提供接口,采用Bank插入,背靠背页模式获得高性能数据传输。内部PLL为总线生成时钟。   . GPCM为简单,低性能存储器以及地址映射设备提供接口。本身不支持突发传输导致了其较低的性能,由于这个原因,CPCM控制器通常      用于上电引导与低性能存储器外围接口。  .UPM支持刷新定时器,外围总线地址复用,可编程控制信号(行地址,列地址,地址选通等)的产生,这使得可用用最少的逻辑胶合与DRAM,突发SRAM,以及大多数的外围进行接口。控制器定义了如何在读,写,突发读,突发写过程中对外围信号的控制。刷新定时器用于用户自定义刷新行为。 Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远    任何存储器片选信号都能够分配到三种类型存储器中的任何一种类型,通过BANK的基地址寄存器选择位的设定BRn[MSEL]. 如果BANK匹配出现,响应的的机制(GPCM,SDRAM,UPM)将会占据外围信号的控制权直到数据传输结束。 12.4.1  基本结构       以下的章节对LBC的基本架构进行描述。 12.4.1.1  地址以及地址空间校验  当响应的地址屏蔽写到ORn寄存器中的时候, 定义的基地址写到BRn寄存器当中。每当有局部总线访问要求是,内部转换地址就与每个BANK进行比较。通过比较地址的搞19位地址线,地址被译码。如果在相应的BANK的存储器控制器中发现匹配的地址,那么在BRn和ORn 中定义的属性被用于控制存储器访问。如果在多于一个的bank中都得到匹配,那么最低数字编码的bank将会掌控存储器访问。 12.4.1.2 外部地址锁存使能型号LALE   局部总线是地址和数据总线的复用形式出现的,因此,LBC必须在地址和数据相位进行区分。LALE信号为高电平的时候表征的是在LAD[31:0]上出现的是地址信号。当LALE为低电平的时候表征总线是个双向的数据信号。 任何地址相位都会初始化LALE为高电平,可以通过编程设置他们之间的提前量为1~4个总线时钟周期。 为保证外围地址锁存有足够的保持时间,LALE要比数据线要先变化到低电平。默认情况下,LALE提前2个Platform Clock周期。比如,如果LBC运行在666mhz,那么一个额外的地址保持时间3ns将会用于地址线的保持。但是当LCRR[CLKDIV]=2的时候(时钟比率为4)并且LCLK频率超过100MHZ的时候,缩短的LALE的宽度将不会满足最小的锁存宽度要求。这时候,LBCR[AHD]=1增加一个Platform Clock 周期到LALE,并且将同时以相同的程度减少地址的保持时间。在666Mhz并且LCRR[CLKDDIV]=2(时钟比率为4),LALE的周期将会是4.5ns,1.5ns的保持时间。如果既要求较长的保持时间,同时也要求较长的LALE脉冲周期,那么地址相位能够通过ORn[ED]、LCRR[EADC]、LBCR[AHD]进行扩展。 对于三个不同类型的存储器控制器而言LALE的变化频率是不同的。GPCM,LCSn的每次有效都被认为是一次独立访问,相应的在每次访问前LALE都会有效。比如GPCM驱动一个8比特宽度端口时,GPCM将会驱动LCSn以及LALE信号32次以满足32字节缓存的线性传输。SDRAM控制器却只用驱动LALE一次便可以进行突发传输,所以通过32比特的端口进行32字节的缓存线性传输的时候,SDRAM控制器只需对LALE驱动一次。在UPM模式下,这就给UPM RAM的编程方式有较大的关系了。典型情况下,UPM一次访问将会使用LALE一次,但是也可能有效LALE好几次,同时改变LA[31:27]的状态。一般情况下,当使用GPCM和SDRAM的时候,在LALE相位中有足够的地址线用于覆盖整个地址空间的时候没有必要使用LA[31:27]。UPM有可能要求LA[31:27],如果LBC产生自身突发地址序列。 下图展示了LBC是如何掌控一次较大数据量的传输的。GPCM执行32字节写操作,起始地址位于0X5420. 请注意,LA[27:31]在LALE有效范围内仅仅监视LAD[27:31],但是在数据相位,只有LAD[0:7]HE 榴弹炮【0】被有效数据和校验位分别驱动。 数据传输遵循的是大端模式(Big_Endian Mode)。 Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远   12.4.1.3 数据传输标志(TA)     LBC内部的三个类型存储控制器都会产生内部传输标志信号TA,允许LAD[0:31]的数据要么被抽样(读操作)或者被改变(写操作)。数据抽样/改变总是出现在LBC有效TA后的总线周期末尾。在LBC调试模式下,TA同时在MDVAL信号上是对外可见的。GPCM、SDRAM控制器根据时序参数自动产生TA信号;而UPM只有在UPM行为设置了UTA RAM字以后才能产生TA信号。 12.4.1.4 数据缓冲控制(LBCTL) 存储器控制器提供了一个数据缓冲器控制信号。当GPCM,UPM控制的BANK在访问的时候被激活。设置ORn[BCTLD]可以禁止掉该信号。访问SDRAM控制的BANK将不会激活LBCTL信号。在GPCM模式下LBCTL可以进一步通过LBCR[CBTLC]配置为一个额外的LWE#或者LOE#信号。 如果LBCTL配置为一个数据缓冲控制信号(LBCR[BCTLC]=00),那么它在存储控制器操作的第一个周期的上升沿被置高,与LALE一样。如果是写操作,LBCTL将在整个周期中保持高电平。如果是读操作,LBCTL将会随LALE的低电平一起被置低,这样Memory才能驱动总线。如果背靠背的读操作处于悬置状态,LBCTL被置高一个总线时钟周期在下一个传输开始之前以使得总线在下一个地址驱动以前恢复状态。 12.4.1.5 原子操作 通过设置BRn[ATOM],LBC支持一下原子操作: 。 RAWA(写-读) 12.4.1.6 校验产生和检查(LDP) 通过对BRn[DECC]可以对任何BANK设置校验。BRn【DECC】=01:用LDP[0:3]对没字节产生一般校验。BRn[DECC]=10:进行read-modify-write(RMW)校验。LBCR[EPAR]决定校验的方式:奇、偶校验。 12.4.1.7 总线监视器 该监视器用于保证每个总线周期都是以一种合理的方式结束。当一个传输开始的时候,总线监视器开始从LBCR[BMT]倒计数直到数据传输完成标志在总线上出现为止。这时候它重新加载超时值并且恢复倒计时知道数据传输完成,如果没有数据传输那么它将处于闲置状态。设置LTEDR[BMD]禁止总线监视错误校验。但是总线就爱你是仍然处于激活状态并且能产生一个UPM陷阱或者终结GPCM访问过程。不要将LBCR[BCM]设置过低非常重要;要不一般的操作过程中大量的超时将会出现,特别是在SDRAM访问过程中,造成不完整的数据传输。除了复位值0X00(响应的最大超时为2048个总线周期),LBCR[BMT]在任何条件下都不能设置在0X05以下(40个总线周期超时)。 12.4.2 GPCM  GPCM使用最少的最简单的逻辑胶合与SRAM,EPROM,FEPROM,ROM存储器以及外围设备进行连接。GPCM包含两个基本的寄存器组:BRn以及ORn。 下图描述了了一个个8比特宽度SRAM和LBC的连接。位写使能信号LWE#对存储器的每个字节写入有效。同时输出使能信号LOE#的输出使得外围胶合逻辑得到精简。在系统复位的时候,全局片选有效以提供引导ROM的片选信号LCS0#. Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远    用户可以配置ORn【ACS】指定地址线和LCS#间的建立时间。 Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远 12.4.2.1 时序配置 如果BRn[MSEL]选择了GPCM,该存储周期的属性将在ORn中进行设定,这些属性包括CSNT,ACS,XACS,SCY,TRLX,EHTR,以及SETA域的设定。 12.4.2.2片选有效时间 在GPCM模式下,LCSn#工作模式可以选择: a)与存储器地址同时出现(这里指的是外部锁存的地址信号,而不是指LAD[0:31]上的时序。也就是说,片选在LALE期间是不会出现的)。 b)1/4时钟周期延时 c)1/2时钟周期延时 d)一个时钟周期延时(LCRR[CLKDIV]=2,ORn[XACS]=1 e) 2个时钟周期延时,ORn[XACS]=1 f )三个时钟周期,ORn[XACS]=1,ORn[TRLX]=1 12.4.2.2.1 可编程等待状态设置 GPCM支持内部产生传输标志。允许有0~30个等待状态加到访问过程当中,通过ORn[SCY] 和ORn【TRLX】来设定。不产生传输标志使能,如果ORn[SETA]=0.如果LGTA#在计数器完成前被拉高2个总线周期或者更长时间。那么目前的存储周期通过LGTA#终结。另外也可以通过等待状态计数器的完成来终结本次存储器周期。无论ORn【SETA】的设置,等待状态在同等方式下延长了LOE#,LWEn#的有效周期。当TRLX=1,存储控制器插入的等待状态数目是ORn[SCY]周期的两倍等于2XORn[SCY],最大为30个等待状态。 12.4.2.2.2 片选和写使能时序 Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远 如上图所示,LCSn#是和锁存地址同时出现的。根据数据的传输方向,数据的选通是靠LOEn和LWEn提供的。ORn[CSNT]在写周期控制正确的选通,当该属性有效的时候,选通信号在正常情况的1/4周期有效。比如,当ACS=00且CSNT=1,LWEn#提前1/4周期出现。  12.4.2.2.3 放松时序 ORx【TRLX】用于存储系统放松信号之间的时序,设置TRLX=1有以下的影响: .在地址和控制信号之间增加一个总线周期(当ACS!=00) .由SCY指定的等待状态数量将会翻倍,最大到30个等待状态。 .读操作中的保持时间将会被扩展 .LCSn#信号在写操作时将提前一个周期无效(ACS!=00) .LWE#[0:3]在写操作时提前一个周期无效 Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远   当TRLX和CSNT在写操作中被设置,LWE[0:3]选通信号将会提前一个周期无效。   Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远   12.4.2.2.4 输出使能时序  LOE#的时序仅受TRLX影响。在总线时钟的上升沿起作用。LOE#在LCSn有效后的总线上升沿有效或者与LCSn一起有效(XACS=1,ACS=1X).相应的,LOE#也可以通过设置TRLX=1与LCSn一起被延时。LOE#和LCSn一起在总线时钟的上升沿失效。 12.4.2.2.5 读操作扩展保持时间 在读操作过程中,慢速设备将会花更长的时间用于禁止其总线驱动器将会选择ORn【TRLX,EHTR】的一些组合选项以满足时序的要求。任何一个在读操作后的操作都可以通过ORn[TRLX,EHTR]来指定延时时间,除了已存在的转换时间周期外。最后的总线转换周期将会被LBC自动插入,无论ORn【EHTR】的设置是如何的。   Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远 Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远 12.4.2.3 外部访问终结(LGTA#)  在GPCM模式下支持用外部异步终结信号LGTA#实现终结操作,在LCSn#有效期间LGTA#有效,它将转换成内部传输标志信号TA,TA将终止当前的GPCM过程(无论ORn【SETA】是么样的设置)。LGTA#至少要持续一个总线周期才能有效。请注意因为LGTA#要被同步的(被LCLK采样),总线终结将会才2个周期后才能生效,因此在读周期,在LOE#失效以前外围设备必须被一直驱动。用户可以通过设置ORn【SETA】选择传输标志是内部还是外部(LGTA)生成。即使ORn[SETA]=0(设置为内部生成终结信号),LGTA#有效也将会终结一个访问,但是这是唯一的方法如果ORn[SETA]=1. Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远    12.4.2.4 启动片选操作 启动片选操作使得在系统初始化完成以前为引导ROM存储器进行地址译码,LCS0#是引导片选信号输出;他和在系统复位后其他的外围片选信号是不同的。当核开始在系统复位后访问存储器时,LCS0#在每个局部总线访问时都是有效的直到BR0或者OR0配置完成。 该片选信号提供一个可编程的端口宽度,这个参数在复位时进行配置。注意该片选信号不支持写保护。在首次写入OR0以后,引导片选信号可以被硬件复位所重新启动。图12-25描述了BOOT BANK的存储控制器的初始值。 Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远 12.4.3  SDRAM 机制 LBC为局部总线提供一个SDRAM接口。该机制为PC133和JEDEC兼容的SDRAM提供控制功能和信号。 12.4.3.1 支持的SDRAM配置 总线端口的SDRAM应该具有同样的端口容量和时序要求。下图表示了LBC和32位SDRAM设备的连接。 Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远 12.4.3.6 SDRAM地址复用 低位地址总线连接到存储设备的地址端口,存储控制器复用了行列以及内部bank选择线。bank选择线根据LSDMR[BSMA]的设置来设定。 Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远 注意在一般的操作中(读和写),全部的32比特地址包括行地址和列地址都产生在了LAD[0:31],但是地址/数据信号是复用的,这表明地址必须被外部信号LALE锁存。所有的SDRAM设备地址信号需要连接到锁存的地址位和突发地址为LA[27:31].这其中除了A10,这是专门用于连接LSDA10。 12.4.4 用户可编程机制(UPMs) UPM是用于连接宽范围Memory设备的接口。UPM的核心是一个内部RAM阵列,他用于指定驱动在外部存储器控制信号(LCSn,LBS[0:3],LGPL[0:5])上的逻辑值。在RAM阵列中的每个字以1/4外部总线时钟的节拍控制着存储器访问进程。如果LGPL4,LGTA,LUPWAIT,LPBSE信号被用着输入和输出信号,一个弱上拉是必须的。 Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远 以下事件初始化一个UPM周期:  1 . 任何一个内部着被要求访问一个映射到UPM的片选空间的进程  2. UPM刷新定时器完成并要求一次新的传输,比如DRAM刷新  3. 在UPM周期内总线监视超时错误 RAM阵列包含64个32比特数据,信号时序生成器加载RAM字以驱动通用信号线,字节选择信号,片选信号灯。如果UPM从RAM中读到WAEN字,外部LUPWAIT信号被抽样并且被存储器控制器同步同时目前的要求被冻结。 12.4.4.1 UPM 请求 一个存放到RAM中的专门方式与每个可能的UPM请求相关。一个内部设备对于存储器访问的要求初始化下列方式中的一个: . 单读方式(RSS) . 突发周期读(RBS) . 单写方式(WSS) . 突发周期写(WBS) .UPM刷新定时器请求方式初始化一个刷新定时器方式(RTS) .当另一个UPM范例正在运行而要初始化一个例外的条件范例的时候例外就会出现(EXS) 12.4.4 用户可编程机 UPM 是简易接口,用于连接宽范围内的存储器类型。UPM的中心是一个内部的RAM阵列,它驱动外部存储器控制器信号(LCSn,LBSn[0:3],LGPL[0:5])在时钟周期下的逻辑值。   下列事件初始化UPM周期: · 任一内部设备请求外部访问映射到由UPM服务的片选的地址空间 · UPM刷新定时器过期并且请求一个事务,如DRAM刷新 · 正常UPM周期中发生的总线监控器超时错误使UPM转向执行一个异常序列 每一个RAM阵列都包含64个32位字。信号时序发生器从RAM阵列中装入RAM字,驱动通用信号线:字节选和片选。如果UPM在WAEN置位时读取RAM字,那么外部LUPWAIT信号将被存贮器控制器采样并同步,当前请求被冻结。 ----------------------------------------------------------------------- 一个UPM包含有64 word的RAM,每个WORD为32bit,,每个LCLK为一个WORD指定的行为输出。而每个word可以指定控制信号(LCSn,LBSn,LGPL)四个状态的变化。这样的话,RAM可以最多使用64个LCLK的时序来完成一次数据的传输。 未完待续。。。。   12.5 初始化应用信息 12.5.1 与外围设备接口 12.5.1.1 复用的地址数据线和非复用地址信号线 为了节省局部总线上的信号线数量,地址线,数据线在32比特总线上复用。一个外部锁存需要用于分离和重建原始地址。LALE用于提供正确的时序控制标准的逻辑锁存。LAD信号能够被直接连接到存储器/外围的数据信号。局部总线的传输开始于一个地址相位,LBC驱动LAD进行地址传输,并拉高LALE信号。该信号能够用于锁存地址信号,接下来LBC过渡到数据相位阶段。 LBC支持端口宽度为8,16,32比特。对于小于32比特的设备,传输必须被拆散。出于这个原因,LA[30:31]被驱动为非复用信号。对于8比特设备,LA[31:30]被利用;对于16比特宽度设备LA[30]被利用起来。32比特的设备则不用这两个信号。 另外,LBC支持突发传输。在自然32字节突发传输中,LA【27:29】是突发传输地址。为了最简地址相位的数量,在突发传输中无论设备什么时候要求使用最低5位地址线时候,这些信号被独立的驱动并且应该被利用起来。其他的地址A[0:26]应该通过锁存而重构得到: Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远  12.5.1.2 局部总线的外围层次 对于SRAM,SDRAM而言为获得较高的总线速率,给出存储器/外围设备的层次连接关系图: Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远        复用的地址数据线总线同时驱动了快速SDRAM,同步SRAM数据信号线、地址锁存器件加上用于慢速存储器的缓冲器的地址信号线。其他存储器或者外围都隐藏在缓冲器和锁存器的后边。系统设计者需要仔细考量整个设计的负载情况以取保IO时序能够满足。 12.5.1.3 超高速总线的外围层次 为在局部总线上获得尽可能高的总线速度,建议进一步减少直接连接到总线上的设备的数量。这种情况下往往只有一个同步SRAM或者SDRAM连接到一个BANK上同时不使用独立的锁存器或者总线收发器,取而代之的是同时具备缓冲和锁存能力总线分离器(demultiplexer)。 Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远 例如TI公司的74ALVCH32973ZKER就是16位的总线分离器(demultiplexer): Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远   12.5.1.3 GPCM时序 在这样一种情况下,系统包含的存储层次包好了高速的同步存储器(SDRAM,同步SRAM)以及低速的异步存储器(FLASH EPROM和外围),GPCM控制的存储器应该用缓冲器加以隔离以减少总线上的容性负载。但这些缓冲器必须对时序的影响应该加以考量。 Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远 为了计算慢速外围/存储器地址建立时序,有几个参数必须要加以考虑:地址锁存的传输延时,缓冲器的延时以及外围的地址建立时间。一般情况下2个传输延时大约为3~6ns,所以对于一个133Mhz总线频率来说,LCS#应该在3个总线周期以后到达。 对于数据时序,只需考虑缓冲延时加上实际数据建立时间即可。 Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远  12.5.2 总线周转时间(bus turnaround) 因为局部总线中使用了复用的地址、数据线,那么在总线周转过程中必须对一些特殊情况加以考虑,以下是几种必须考虑的情况: 1. 读周期后的地址相位 2.地址相位后的读数据相位 3.对校验的保护存储空间的读-调整-写周期 4.带额外地址周期的UPM周期 在下面的情况中总线不需要改变方向,所以不需要特别的给以留意: 1.在第一个节拍后的连续突发操作 2.地址相位后的写数据相位 3.写之后的地址相位 12.5.2.1 Address phase after previous read 一个读周期中,存储器/外围驱动总线并且总线收发器驱动LAD。在数据被采样以后,外围设备的输出驱动器必须被禁止。这可能要花点时间,对于慢速设备而言GPCM的EHTR属性或者UPCM的可编程性都应该保证这些设备都已经停止驱动总线,在LBC存储控制器结束总线周期的时候。 这种情况下,在前一个周期结束以后,LBCTL变高并且改变总线收发器的方向。LBC插入一个总线周转周期以避免竞争。这时候外围设备已经将其数据信号至于高阻状态从而避免竞争的出现。 12.5.2.2 地址相位后的读数据相位 在地址相位期间,LAD驱动地址线并且LBCTL为高,在同一方向驱动总线收发器。在地址相位结束以后,LBCTL变低并且改变总线收发器的方向。在Tdis(LB)时间后LBC将LAD信号置为高阻。在Ten(LB)以后LBCTL有它新的状态,因为这是个异步输入,收发器在Ten时间后开始驱动这些信号。系统设计者必须保证:Ten(LB)+Ten(transceiver)>Tdis(LB)以避免总线冲突。 12.5.3 接口不同宽度的端口设备 LBC支持8位,16位,32位数据端口。但是总线要求数据传输端口的宽度必须是一定的。一个32位的端口必须接在D[0:31]上,一个16位宽度的端口必须接在D[0:15]上,而一个8比特的端口必须接在D[0:7]上。局部总线总是尝试在所有的总线周期传输最大数量的数据。 Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远     Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远   Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远  12.5.4 与SDRAM接口 12.5.4.1 局部总线接口到SDRAM的能力 多个LCSn信号意味着可以同时支持多个SDRAM设备。这意味着如果LCS0保留用于GPCM连接FLASH存储器的话,LCS1~7都可以用于SDRAM的连接。如果多个片选信号配置用于SDRAM的连接的话,那么每个SDRAM都必须拥有相同的端口宽度以及时序参数,这就意味着所有的选项寄存器ORn都必须完全一样。所有的SDRAM都共享SDRAM模式寄存器LSDMR,以及LSRT和MPTPR。  刷新周期=LSRTxMPTPR[PTP]/system Frequency 12.5.4.2 SDRAM支持最大数量 Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远  数据端口宽度是可编程的,但是一下的理智使用了局部总线的所有32比特总线宽度。32比特宽度要去4个SDRAM设备(每个8比特宽度)并行连接到LBC。如果128Mbit设备利用的,1个片选提供128Mb/设备X4=64MB.如果4个片选编程用于SDRAM接口,这就有256MB。如果256Mb的SDRAM用于接口,那么总共有512MB的存储空间。相应的接口4片512Mb的SDRAM,那么有1GB的存储空间。 12.5.4.3 SDRAM机制的限制 12.5.4.3.1 bank选择复用的情况下最大行数目的分析 LSDMR[BSMA]用于复用BANK选择地址。BSMA域和相应的地址复用关系如下: 000 LA12-LA13 001 LA13-LA14 ..... 111 LA19-LA20 注意LA12是LAD12的锁存值。 BANK选择的最高地址信号可以和LA[12:13]复用,这限制了行地址信号为LA[14:31].对于一个32位的端口(最大的局部总线的宽度),LA[30:31]未连接,最大的行宽度是【14:29】。局部总线SDRAM支持15个行,这对所有的设备都满足了。 12.5.4.3.2 bank选择信号 基于页插入方式允许bank信号和高阶的地址线复用以为将来的升级预留足够的空间。举例,用户可以将LA[14:15]与bank选择信号复用,而降LA16留给地址信号以获得更大的存储空间。系统设计者可以设计一个板卡,它既可以满足目前SDRAM设备又可以与将来的新的设备兼容,而不用重新设计板卡。 12.5.4.3.3 128MB SDRAM接口 Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远  硬件连接关系: Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远   Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远   那么SDRAM的组织关系是这样的: . 32比特端口以:4x8x32Mbit组成 .每个设备拥有4个BANK,13行,10列地址线。 那么逻辑地址应该是: Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远  在地址相位,SDRAM地址端口应该是出现这样的信号: Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远 即在LA[17:29]出现的是逻辑地址中的行地址信号A[5:17],LA[15:16]出现的是bank选择信号,也就是逻辑地址中的A[18:19]. 在读/写命令中端口地址配置是这样的: Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远   LA[20:29]代表的是逻辑地址中的列地址线A[20:29],LA[15:16]仍然是bank选择信号。 以下为配置寄存器列表: Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远 12.5.4.3.5  512MB SDRAM接口  该例子使用MT48LC644A2FB实现512MB的存储空间扩展。 . 32比特端口8X4X64Mbx2片选信号 . 每个设备4个BANK,13根行地址线,11根列地址线。  逻辑地址分配如下: Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远  下面的参数: COLS=100,11 列地址线                         ROWS=100,13地址线 在地址相位空间,SDRAM地址端口设置如下: Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远  因为内部bank选择线设置的为与LA[15:16]复用,LSDRM[BSMA]设置为011. 在读写命令下的地址端口设置为: Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远  图12-41显示的是寄存器的配置。PSRT,MPTPR为显示,但是应该根据期间的刷新要求进行设定: Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远  12.5.4.3.6 8  SDRAM 时序 为了在总线上获得超高速速度,容性负载必须加以考虑: Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远  为了实现一个 2同步存储bank,1个地址锁存,1个复用地址数据总线缓冲负载的系统,一般情况下,4个6.5pF的容性负载可以满足。对于一个一般的负载30pf可以使用。 Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远  建立时间保持时间计算:
地址线TOF(飞行时间):板级延时
数据线TOF(飞行时间):板级延时
时钟偏移(飞行时间):LBC端时钟和存储器设备端时钟的偏移。局部总线PLL反馈机制必须用于控制这个偏移去控制时序裕度:
1.地址建立时间裕度=周期时间-局部总线地址CTQ-SDRAM地址输入建立时间TOF+时钟偏移
2.地址保持时间裕度=局部总线地址输出保持时间+地址TOF-SDRAM地址输入保持时间-时钟偏移
3.SDRAM数据输入建立时间裕度=时钟周期-局部总线数据CTQ-SDRAM数据输入建立时间-数据TOF+时钟偏移
4.SDRAM数据输入保持时间裕度=局部总线数据输出保持时间+数据TOF-SDRAM数据输入保持时间-时钟偏移
5.SDRAM数据输出建立时间裕度=周期时间-SDRAM数据CTQ-局部总线数据输入建立时间-数据TOF-时钟偏移
6.SDRAM数据输出保持时间裕度=SDRAM数据输出保持时间+数据TOF-局部总线数据输入保持时间+时钟偏移 为了提高时序的裕度,PLL用于产生一个外部的时钟,他用于减小局部时钟和存储器之间的时间偏差。 Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远  
12.5.4.4 SDRAM 校验支持
与老式DRAM技术不同,SDRAM设备典型的以X4,X8,X16,X32组织的。没有一种主流的设备支持校验操作。为了在局部总线上实现错误保护,一个额外的SDRAM利用上了。 Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远      三、 DDR/DDR2接口     3.1  与DIMM的接口       DIMM(Dual Inline Memory Module,双列直插内存模块)与SIMM相当类似,不同的只是DIMM的金手指两端不像SIMM那样是互通的,它们各自独立传输信号,因此可以满足更多数据信号的传送需要。同样采用DIMM,SDRAM 的接口与DDR内存的接口也略有不同,SDRAM DIMM为168Pin DIMM结构,金手指每面为84Pin,金手指上有两个卡口,用来避免插入插槽时,错误将内存反向插入而导致烧毁;DDR DIMM则采用184Pin DIMM结构,金手指每面有92Pin,金手指上只有一个卡口。卡口数量的不同,是二者最为明显的区别。DDR2 DIMM为240pin DIMM结构,金手指每面有120Pin,与DDR DIMM一样金手指上也只有一个卡口,但是卡口的位置与DDR DIMM稍微有一些不同,因此DDR内存是插不进DDR2 DIMM的,同理DDR2内存也是插不进DDR DIMM的,因此在一些同时具有DDR DIMM和DDR2 DIMM的主板上,不会出现将内存插错插槽的问题。 Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远 不同针脚DIMM接口对比
为了满足笔记本电脑对内存尺寸的要求,SO-DIMM(Small Outline DIMM Module)也开发了出来,它的尺寸比标准的DIMM要小很多,而且引脚数也不相同。同样SO-DIMM也根据SDRAM和DDR内存规格不同而不同,SDRAM的SO-DIMM只有144pin引脚,而DDR的SO-DIMM拥有200pin引脚。此外笔记本内存还有MicroDIMM和Mini Registered DIMM两种接口。MicroDIMM接口的DDR为172pin,DDR2为214pin;Mini Registered DIMM接口为244pin,主要用于DDR2内存。 Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远 144pin SO-DIMM笔记本内存   Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远 200pin SO-DIMM笔记本内存   Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远 172pin SO-DIMM笔记本内存   3.2 DIMM 原理图 (三星DDR2内存条)  3.2.1 240pin DIMM Edge connector Freescale MPC8641D 开发笔记(邓治彬) - Bibby - 静以致远   3.2.2   240芯 DIMM接口定义   Front Pin Symbol Pin Symbol Pin Symbol Pin Symbol 1 VREF 31 DQ19 61 A4 91 VSS 2 VSS 32 VSS 62 VDDQ 92 DQS5# 3 DQ0 33 DQ24 63 A2 93 DQS5 4 DQ1 34 DQ25 64 VDD 94 VSS 5 VSS 35 VSS 65 VSS 95 DQ42 6 DQS0# 36 DQS3# 66 VSS 96 DQ43 7 DQS0 37 DQS3 67 VDD 97 VSS 8 VSS 38 VSS 68 PAR_IN 98 DQ48 9 DQ2 39 DQ26 69 VDD 99 DQ49 10 DQ3 40 DQ27 70 A10/AP 100 VSS 11 VSS 41 VSS 71 BA0 101 SA2 12 DQ8 42 CB0 72 VDDQ 102 NC 13 DQ9 43 CB1 73 WE# 103 VSS 14 VSS 44 VSS 74 CAS# 104 DQS6# 15 DQS1# 45 DQS8# 75 VDDQ 105 DQS6 16 DQS1 46 DQS8 76 S1# 106 VSS 17 VSS 47 VSS 77 0DT1 107 DQ50 18 RESET# 48 CB2 78 VDDQ 108 DQ51 19 NC 49 CB3 79 VSS 109 VSS 20