00H局部空间0范围配置:
(LAS0RR; 00h) Local Address Space 0 Range
Bit 0 Memory Space Indicator. Value of 0 indicates Local Address Space 0 maps into PCI Memory space. Value of 1 indicates Local Address Space 0 maps into PCI I/O space.
Bits 27:4 Specifies which PCI Address bits to use for decoding a PCI access to Local Address Space 0. Each bit corresponds to a PCI Address bit. Bit 27 corresponds to address bit 27. Write 1 to all bits that are to be included in decode and 0 to all others (used in conjunction with PCIBAR2). Default is 1 MB.
用于设置局部空间0的地址范围,默认是为FF00000h,即1M空间,本例设置为16K=4000h或214位,所以LAS0RR应为FFFC000h
14H局部空间0基址地址配置:
(LAS0BA; 14h) Local Address Space 0 Local Base Address (Remap)
Bit 0 Space 0 Enable. Value of 1 enables decoding of PCI addresses for Direct Slave access to Local Address Space 0. Value of 0 disables decoding.
Bits 27:4 Remap PCI Address to Local Address Space 0 into Local Address Space. Bits in this register remap (replace) PCI Address bits used in decode as Local Address bits.
用于设置局部空间0的基址地址,当电脑通过PCI地址访问到局部空间0时,此基址地址LAS0BA将替换PCI地址在局部空间0的地址范围以上的位。例如:本例中空间0的地址范围为16K,LAS0RR=FFFC000h,假设PCI地址为PCI_Address,则局部地址Local_Address =PCI_Address&(~LAS0RR) +LAS0BA。本例中LAS0BA设置为24001H
28H局部空间0总线特性配置:
(LAS0BRD; 28h) Local Address Space 0 Bus Region Descriptors
此寄存器主要是用来设置传输的一些特性,如:传输总线宽度,传输位顺序等等,根据系统设定的不同而不同
3CH片选0的配置:
PCI9052包含了提供4个片选控制信号到局部总线的能边。这就免除了附加地址译码电路在PCI卡上。使用此功能,用户必须配置好每个片选的地址空间。
有4个片选X基寄存器。这些寄存器控制4个片选引脚在PCI9052上。例如片选0基地址寄存器控制CS0#(引脚130),片选地址寄存器控制CS1#(引脚131),等等。
片选X基寄存器有3个服务目的:
1、允许或不允许片选功能在PCI9052中。如果允许,片选信号在地址线上的地址正好位于由相关基寄存器指定的范围时有效。如果不允许,片选信号将无效。
2、用来设置片选信号有效的地址范围。
3、用来设置地址的起始值。
对于编程片选X基寄存器,有3个规则必须遵守,如下所示:
1、范围必须是2的幂次方;
2、基地址必须是范围的整倍数;
3、如果多个片选X基寄存器被使用,相互之间不能覆盖。
当Y位用来允许和不允许片选信号。X位被用来决定长度和CS#引脚的基地址。对于编程基和长度,X位可以如下设置。
在Y位之上的第一个1为此设备的长度或范围。范围的大小是2的多少次幂,此指数决定了在基寄存器的哪位置1来表示范围。从Y位开始计,Y位为指数1,第2位为指数2,以此类推。
基地址由范围位之上的第一个置1位决定。基地址必须是范围的倍数。
(CS0BASE; 3Ch) Chip Select 0 Base Address
Bit 0 Chip Select 0 Enable. Value of 1 indicates enabled. Value of 0 indicates disabled.
Bit 31:28 Reserved.
下面详细描叙了怎样使用片选X基寄存器的处理方法
1、范围用16进制描叙,转换成2的指数,范围必须是2的指数(例如21,22,23,216等等)。
2、设置片选X基寄存器去决定范围。用范围的指数去设置片选X基寄存器。在二进制表示法的片选基寄存器中从Y位开始向左数(Y位为第1位)直到范围的指数位,并将该位置1,仅此位置1。
3、决定基地址,基地址必须是范围的倍数。
4、计算出基地址为范围的倍数值。
基地址/范围=基地址倍数
5、转换基地址的倍数为二进制。
6、在片选X基寄存器中从范围位开始算起向左计数倍数位,并将该位置1。
例如:假设一个16K SRAM的设备必须连在局部总线并且片选必须被提供。基地址假设为24000h,存储器映射如下:
1、将16进制的地址空间范围转换成2的指数形式
例:16K=4000h或214位
2、设置片选X基寄存器的范围值,设置第14位为1。
例:范围为4000h基地址为24000h的片选X基寄存器设置如下:
基地址的设置方法:
1、确定基地址(如24000h);
2、算出基地址为范围的倍数,用16进制进行计算;
例: 24000h/4000h=9h
3、将倍值转换成2进制(例1001b);
4、将倍值填在范围的设置位之后,如范围的设置位为第14位,倍值为9h (1001b),则实际基寄存器设置如下:
那么片选范围为4000h,基地址为24000h的完全结果为如下: