PCI 总线学习笔记
转载请注明出处:http://blog.csdn.net/lg2lh/article/details/8042008
PCI的基本协议这里就不介绍了,由于一般的芯片协议都是集成好的,我仅仅须要大体了解即可,不须要做芯片,我感觉就不须要太了解协议。
这里解说是基于PLX 的9054(9052)芯片为基础的,本人仅仅是入门,望批评指正。

一、地址映射与传输数据
上图中间部分是9054的内部结构图,9054实际上充当了一个“桥”的作用,即所谓的“桥片技术”。9054的作用事实上是把LOCAL总线端管理的一片地址,和PCI总线端管理的一片地址一一相应起来,即所谓的地址映射,而PCI总线与PC机的CPU管理的内存地址又是一一相应的,这样就实现了桥:CPU
地址 <=> PCI 地址 <=> LOCAL 地址。
一般系统PCI地址是CPU地址一部分,关于PCI地址与系统地址关系能够看还有一篇转载博文http://blog.csdn.net/lg2lh/article/details/8041029。
上面仅仅是说了LOCAL总线与PCI总线以及CPU总线的相应关系,可是PCI技术的实际作用是进行传输数据。由内部结构图能够看出,9054内部没有什么存储单元,仅仅有几个FIFO。那系统是怎么进行传输数据的呢,大家都知道一段地址相应了一段存储空间,由上面地址映射能够知道,PCI芯片9054实际就是把LOCAL总线地址管理的外部存储空间的数据传输到PCI总线地址相应的内存空间中,及CPU的内存空间。或者是将内存中的传输数据到LOCAL总线管理的外部地址空间中去。Local端地址总线管理的存储空间一般由我们的控制芯片如FPGA或MCU提供。
二、PCI9054的基本知识
PCI9054的引脚主要分为3部分:PCI总线接口,LOCAL总线接口,及串行EEPROM总线接口。
LOCAL总线的数据宽度为32位,时钟可达50Mhz。以下介绍三种总线的作用,接口图例如以下图所看到的。

PCI总线接口:负责与PC机PCI总线通信,要接至PCI板卡的金手指处,对32位系统,金手指一共120跟信号线,A,B两面各60根,1-62,当中50,51处,无金手指引脚,共60根。
LOCAL总线接口:主要负责LOCAL端地址数据管理,与外围CPLD或MCU相连。
串行EEPROM总线接口:主要负责PCI9054的全部的寄存器配置,将寄存器配置烧写至EEPROM,PCI设备上电后载入EEPROM内容,完毕PCI9054的寄存器配置。主要包含:PCI配置寄存器,PCI本地配置寄存器,执行时间寄存器,DMA配置寄存器,I2O信息寄存器(消息队列寄存器?)。
PCI9054的PCI总线与LOCAL总线传输数据主要有三种模式:主模式,从模式,DMA模式。
而LOCAL总线的控制也有三种模式,M,C,J模式。当中经常使用C模式:地址数据总线非复用模式。
三、PCI9054的寄存器之间的关系
前面第一节讲到了PCI总线与LOCAL地址映射,以及PCI地址与PC机内存空间映射,一般PC机就觉得PCI地址就是内存空间地址,所以解决的就是把LOCAL总线管理的地址空间与内存空间地址相应起来,以下讲一下怎样通过9054寄存器配置映射关系。
要明白,是通过PLX_MON这个软件按要求配置好各寄存器内容,然后将数据烧写到EEPROM中,共17字。
首先看一下PCI9054寄存器主要有哪些,前面已说主要有五部分:PCI配置寄存器,PCI本地配置寄存器,执行时间寄存器,DMA配置寄存器,I2O信息寄存器(消息队列寄存器)
1、 PCI配置寄存器:主要用来配置与PCI总线相关的寄存器,比如,设备ID,供应商ID,类别代码,版本,系统供应商ID,子系统ID等。PCI设备ID为9054,供应商ID为10B5,类别代码0680。相应寄存器例如以下:

主要介绍一下最后四个寄存器,这四个主要完毕LOCAL端总线相关的寄存器在PCI总线的映射,以及LOCAL总线管理的地址空间在PCI总线上的映射。这四个寄存器都是由系统进行配置的,无法通过EEPROM配置。当中PCIBAR0,PCIBAR1,比較好理解,就是把LOCAL总线配置寄存器,DMA寄存器,执行寄存器映射到相应的内存空间去,配置的值就是他们在内存空间的起始地址。
以下介绍PCIBAR2,PCIBAR3寄存器,后面会提到LOCAL总线管理了两部分地址空间,space0和space1。PCIBAR2,PCIBAR3就是把这两部分映射到PCI总线地址上,即把这两个空间映射到PC机的内存空间。PCIBAR2的配置值就是LOCAL总线端space0空间映射到PCI内存空间的起始地址,PCIBAR3的配置值则是LOCAL总线端space1空间映射到PCI内存空间的起始地址。而LOCAL总线端SPACE0和SPACE1在local端的实际地址及范围,则是由LOCAL配置寄存器决定。以下介绍LOCAL端配置寄存器。
2、 LOCAL配置寄存器

SPACE0相应的寄存器。
LAS0RR:SPACE0基地址寄存器。这个寄存器与PCI总线的PCIBAR2寄存器相互相应,即LOCAL端的FPGA(MCU)就是通过訪问这个地址来訪问PCIBAR2所指的PCI内存空间。
若此时LAS0RR设为0x80000001,而PCIBAR2设置值是0XE7000000.则对于PCI空间0XE7000000的訪问就会映射到对本地空间0x80000001的訪问。映射图例如以下。

LAS0BA:SPACE0空间的地址范围,在EEPROM的设置值是实际范围的补码。
LAS1RR, LAS1BA与上面两个同样,仅仅是用来映射SPACE1空间起始地址和范围的,不再赘述。
3、 DMA配置寄存器

4、 寄存器配置方法
最后介绍一下EEPROM配置字,配置字有长载入模式和额外长载入模式,当中长载入模式共17个长字,额外长载入模式则22个长字。当中LAS1RR, LAS1BA这两个寄存器是在额外长载入模式中配置的。对PLX9054最重要的配置就是完毕对PCI寄存器和LOCAL寄存器的配置。17长字与22长字详细载入内容例如以下表。



PCI 总线学习笔记的更多相关文章
- PCI总线学习
PCI总线概述: 因为不实际操作了,所以就写一些方法论上的东西,纪念一下. PCI总线有三个非常显著的优点: 1. 在计算机和外设传输数据时具有更好的性能. 2. 能够尽量独立于具体的平台. 3. 可 ...
- openrisc 之 Wishbone总线学习笔记——接口信号定义
这部分内容就是copy下来的,网上到处都有.先看看接口啥样子,在详细说明 接口定义copy http://blog.csdn.net/ce123/article/details/6929897.百度文 ...
- openrisc 之 Wishbone总线学习笔记——总线互联
一,总线命名规范 1,wishbone总线接口信号都是高电平有限 2,wishbone接口信号都是以 _i ,或者是 _o 结束.i表示输入, o表示输出. ()表示该信号为总线信号,总线位宽可以大于 ...
- openrisc 之 Wishbone总线学习笔记——总线特性
特性: 一,互联方式: 支持点到点.共享总线.十字交叉(Crossbar)和基于交换结构(Switch fabric)的互联. 二,数据操作方式:单次读/写操作.块读/写操作,读改写(RMW,Read ...
- CAN总线学习笔记
1.CAN总线信息包的格式 问题: 1.CAN总线的初始化要初始化哪些东西? 2.处理器如何与CAN总线之间进行连接? 硬件连接 关于CC2底盘CAN通信的协议格式 备注: 设备地址为01 功能码
- 004:ZYNQ_AXI总线学习笔记(1)
1. WHAT IS AXI? AXI是一种高级可扩展接口,是ARM AMBA的一部分. 2. WHAT IS AMBA? AMBA是高级微控制器总线架构,开放的片内互联总线标准. 3.A ...
- 基于I2C总线的MPU6050学习笔记
MPU6050学习笔记 1. 简述 一直想自己做个四轴飞行器,却无从下手,终于狠下决心,拿出尘封已久的MPU6050模块,开始摸索着数据手册分析,一步一步地实现了MPU6050模块的功能,从MPU60 ...
- 【转】PCI学习笔记
1.PCI设备编号 每一个PCI device都有其unique PFA(PCI Fcntion Address) PFA由 bus number.device number.functi ...
- 系统虚拟化学习笔记——PCI设备
内容摘自<系统虚拟化:原理与实现> PCI 总线架构 PCI总线是典型的树结构.把北桥中host-PCI桥看做根,总线中其他PCI-PCI桥,PCI-ISA桥(ISA总线转PCI总线桥)等 ...
随机推荐
- Linux命令之chown
chown 更改文件全部者和组 语法: chown [OPTION] [OWNER][:[GROUP]] FILE chown [OPTION] --reference=RFILE FILE 描写 ...
- 用 Asterisk 搭建自己的免费 VoIP 服务器
原文 http://www.yaoblog.info/?p=5021 1. 这里以 Debian 为例子,安装 Asterisk apt-get update apt-get install aste ...
- Spring mvc之提交表单
表单内容: <body> <form action="user/login"> <table> <tr> <td>用户名 ...
- perl 调用方法 子例程说明
Perl does not provide any special syntax for class definitions Perl 不提供任何特殊的语法对于类的定义 A package is si ...
- 内嵌W5100的网络模块WIZ812MJ--数据手册
1.简介 WIZ812MJ是一款内嵌了W5100(TCP/IP硬件芯片,内置PHY).MAG-JACK(带变压器的RJ45)和其他胶连逻辑的网络模块.它可以当作一个组件使用,而且不需要为W5100和变 ...
- python手记(27)
#!/usr/bin/env python #-*- coding: utf-8 -*- import cv2 import numpy as np fn="test2.jpg" ...
- Server Tomcat v7.0 Server at localhost was unable
在eclipse启动tomcat时遇到超时45秒的问题: Server Tomcat v7.0 Server at localhost was unable to start within 45 se ...
- eclipse导入myeclipse的web项目没法识别问题解决方法
1.进入项目目录,找到.project文件,打开. 2.找到<natures>...</natures>代码段. 3.在第2步的代码段中加入如下标签内容并保存: <nat ...
- TCP与UDP在socket编程中的区别 (网络收集转载)
http://blog.chinaunix.net/uid-26421509-id-3814684.html 一.TCP与UDP的区别 基于连接与无连接 对系统资源的要求(TCP较多,UDP少) ...
- java之redis篇(spring-data-redis整合) (转)
redis的知识:官网 1,利用spring-data-redis整合 项目使用的pom.xml: <project xmlns="http://maven.apache.org/PO ...