PCI总线目标控制器的设计

发布者:明理厚德最新更新时间:2012-11-07 来源: 21ic 关键字:PCI  目标控制器  状态机 手机看文章 扫描二维码
随时随地手机看文章

0 引言

  PCI(Peripheral Component Interconnect)总线是微型计算机中处理器/存储器与外围控制部件、扩展卡之间的互联接口。PCI总线规范是互联机构的协议,以及电气和机械配置的规范,是当今高性能微型计算机事实上的总线标准。[1]

  PCI总线控制器为PCI总线和用户设备提供操作接口,协调PCI总线信号和用户设备接口信号,使用户设备能够按照PCI总线的规范进行数据的传输。本文设计了一个适用于CMOS图象处理的PCI目标控制器,具有较强的通用性。

1 控制器的顶层设计

  PCI总线目标设备在总线传输中处于被动地位,它不会申请对总线的使用权。当PCI总线上的某一主设备发起对本地资源的访问时,整个控制逻辑的建立和数据传输的过程都是通过目标控制器实现的。


图1 目标控制器顶层结构

  PCI系统中,目标设备在地址周期内响应总线主设备的传输要求,并配合主设备完成整个数据传输。图1为目标控制器的详细结构图。

  本设计将目标控制器按照功能分为几个功能模块实现,即命令解码器、状态机、FIFO类型目标接口和寄存器型目标接口。命令解码模块和状态机构成目标控制器的控制部分,PCI主设备发起某类型的操作,目标控制器在地址周期内解析相应的地址和命令信息。在解析地址确定为本次操作的目标设备后,目标控制器会启动目标设备状态机根据当前解码的信息进行一系列的控制操作。FIFO类型通道用于大批量的数据传输,可将本地存储器块挂接在该类型的数据通道上;寄存器类型接口用于数据量小的数据传输,该接口的后面可以挂接配置寄存器和一些本地功能设备的控制/状态寄存器块。这样,PCI总线上的主设备既可以访问到本地的存储器设备也可以访问本地的寄存器。下面从目标控制器的数据路径和控制路径分别进行论述。

2 控制模块实现

  目标控制器的控制由两部分完成,命令解码器和目标状态机。命令解码器解码来自PCI总线上的地址命令信息作为目标状态机的输入,状态机鉴于此输入执行相应的操作。

  (1)命令解码器:PCI总线主设备在地址周期内通过命令数据线(C/BE#)设置不同的编码可以发起以下的操作,I/O读写、存储器读写、配置读写、存储器行读/多行读和存储器写及使无效。

  (2)目标状态机[3]:对于PCI总线上传来的信号,状态机根据命令解码器的解码信息来控制总线控制器进行相应的操作。如果地址信息不正确或者本地的设备正忙于存取数据,状态机会向PCI总线上发起本次操作的主设备回应目标丢弃或目标重试。目标状态机的具体设计,如图2所示。


图2 目标设备接口状态机[page]

  状态机共分为10个状态,下面对每个状态的意义及状态跳转条件的详细说明:

  目标空闲(idle):当PCI总线有新的命令但控制器正忙于未完成的数据传输或寄存器配置时,状态机跳转到check_abort;控制器空闲但寄存器内有记录的未完成的读操作,状态机跳转到check_addr;PCI总线上有数据传输要求而又未出现上面的两种情况,状态机跳转至cmd_start。

  启动命令解码(cmd_start):满足放弃条件如奇偶校验错误、强制放弃等条件时,状态机跳转至start_abort;不满足放弃条件,若目标设备没有突发传输能力,状态机跳转至start_single,若目标设备有突发传输能力且主设备发起的是写命令,状态机跳转至start_multiple,如果目标设备有突发传输能力且主设备发起的是延迟读命令,状态机跳至start_retry;上述情况均未发生,状态机跳转至start_wait_rd1。

  检查地址匹配(check_addr):满足放弃条件如奇偶校验错误、强制放弃等条件时,状态机跳转至start_abort;如果地址与之前的请求地址一致,对目标设备进行延迟读,状态机跳转至start_multiple;如果地址不一致状态机跳转至start_retry。

  放弃条件检测(check_abort):满足放弃条件如奇偶校验错误、强制放弃等条件时,状态机跳转至start_abort;不满足条件,状态机转至start_retry。

  读等待状态1(start_wait_rd1):如果FIFO中有了待传输的数据,状态机跳转至start_wait_rd2;否则一直等待在状态start_wait_rd1。

  读等待状态2(start_wait_rd2):FIFO中已经有了所要读取的数据,状态机跳转至start_multiple。

  目标设备放弃(start_abort):一直维持该状态直到主设备声明传输结束,状态机转至idle。

  单数据传输(start_single):如果主设备声明最后一个数据传输,状态机跳转至idle;如果主设备继续对该目标设备进行读写操作,状态机跳转至start_retry。

  数据突发传输(start_multiple):如果剩下最后一个字节传输,状态机跳转到idle;如果地址信息无效或地址越界,状态机跳转到start_retry;如果接收FIFO几乎满了而PCI主设备继续往其中写入数据,状态机跳转到start_retry;其它情况状态机保持start_multiple状态不变。

  重试(start_retry):一直维持该状态直到主设备声明传输结束,状态机转至idle。

3 数据通路实现

  目标控制器的数据通路具体可通过两种类型的目标接口实现:寄存器型目标接口和FIFO型目标接口。

  3.1 寄存器型目标接口

  每个PCI功能拥有64个配置双字的单元[1](前16个双字的格式和用法由PCI规范预定),保留用于实现配置寄存器。本地可以有一些功能设备,这些设备都有相应的控制/状态寄存器,PCI总线上的主设备要对这些控制寄存器进行编程,进而控制相应的功能设备完成特定功能。两类寄存器可以归为一个数据通道实现,寄存器型目标接口就为本地的功能设备提供了这样一种接口,使得PCI总线上的主设备可以通过它来访问功能设备的寄存器。由于PCI总线主设备的访问目标是一些寄存器,所以该接口无需支持突发传输,主设备每一次访问最多只涉及到32位的数据传输。

  3.2 FIFO型目标接口

  FIFO型的目标通道主要用于大量的数据传输,可以将本地的存储器挂接在该接口上,这样PCI总线主设备可以通过FIFO型目标通道访问到本地的存储器,针对PCI主设备对本地存储器的读和写操作,设置了两个异步FIFO,读FIFO和写FIFO。其结构如图3

  命令解码器和目标状态机组成了该接口的控制单元。FIFO型目标接口由地址解码器、读写控制单元和读/写异步FIFO四部分组成,在控制部件的协调控制下,共同完成PCI总线上的其它主设备对本地存储器的数据存储或读取。

  读写控制单元:主要用于目标延迟读的控制,存储并比照前后数据传输请求的地址和命令信息,声明本次传输请求是否为有效的延迟读请求。

  读/写FIFO:异步FIFO,用于缓存PCI主设备到本地存储器的读写数据。

  地址解码器:解码PCI总线上的地址信息,识别对FIFO型目标接口的访问。对于地址解码器的实现,在最初PCI系统分配地址时,FIFO型的目标接口被分配到某一段地址区内,通过地址翻译将其映射到本地的系统中[4]。


图3 FIFO型目标接口逻辑结构

  对PCI主设备发起的写操作,数据会先以PCI时钟写入接口内的写FIFO,同时PCI控制器会通知本地存储器控制器有数据写入。本地存储器控制器待FIFO中达到一定数据量时以自己的时钟读取FIFO中的数据存入本地存储器,如果FIFO读空,存储器会暂停等待直到FIFO中有新的数据写入,才进行读取。

  对PCI主设备发起的读本地存储器的操作,为了提高读数据的效率,设计中根据不同数据传输的特点,把读操作划分为两个类型,即立即读和延迟读。

  (1)立即读:在PCI总线主设备发起读操作后,一直占用PCI总线等待,PCI总线控制器向本地存储器请求对应的数据,直到本地存储器将数据写入读FIFO中,PCI控制器读取FIFO中数据开始PCI总线上的数据传输。这种读类型一般适用于进行数据量小的传输且本地存储器可以在较短的时间内将要求的数据送到PCI总线。

  (2)延迟读:PCI总线主设备的读请求到达PCI目标总线控制器时,控制器锁存地址和命令信息,并回应主设备让它重试。同时PCI目标总线控制器向本地存储器请求数据,本地存储器将数据写入总线控制器中的FIFO中。此时如果PCI总线上的主设备重试先前的数据传输请求,PCI目标控制器就可以响应请求将数据发送到PCI总线上。这个过程中,PCI总线主设备在收到重试回应后就会释放PCI总线,允许其它的主设备占用总线进行数据传输,这样从而提高了总线的利用率。图4给出了PCI主设备突发读时采用延迟读的仿真结果图


图4 突发读时仿真波形

4 结束语

  本文基于PCI2.2总线规范完成了通用PCI目标控制器的RTL级设计。经验证设计完全实现了目标控制器的功能,目前已通过了FPGA原型验证并应用到CMOS图象传感器的数据传输中。在后续的开发中,可以考虑在控制器内部加入电源管理模块,进一步降低PCI目标控制器的功耗。

  本文的创新点:该设计方案将目标控制器整体分为控制逻辑和数据通道两部分,并根据目标设备的不同类型,在数据通道内实现不同的目标接口,并引入了立即读和延迟读机制实现数据传输,使整个设计取得了较高的效率。

参考文献

  [1] Tom Shanley, Don Anderson 著. 林辉等译. PCI 系统结构. 电子工业出版社, 2000.

  [2] 沈涵飞, 甘萌. PCI总线目标控制器的设计与实现[J]. 计算机工程与设计. 2004, 25 (11):2101~2104

  [3] 施少敏,马彦恒. 基于接口芯片PCI9030的PCI总线接口卡的设计[J]. 微计算机信息. 2006,11-2: 295~297

  [4] Tinoosh Mohsenin. Design and Evaluation of FPGA-Based Gigabit-Ethernet/PCI Netword Interface Card. Master Degree Dissertation of Rice 

University. 2004:71~74

  [5] Janick Bergeron, Writing Testbenches-Functional Verification of HDL Models. Boston, Kluwer Academic Publisher, 2000.

关键字:PCI  目标控制器  状态机 引用地址:PCI总线目标控制器的设计

上一篇:现场总线和组态软件技术在污水处理项目的应用
下一篇:WorldFIP总线控制系统组态软件的开发

推荐阅读最新更新时间:2024-05-02 22:25

一个经典的按键扫描程序
按键是比较复杂。可以用状态机表示。 每10mS执行一次键盘扫描任务 0、无键,若有键进入状态1 1、第一次检到有键。若有键进入状态2,同时将键值送缓冲区。 若无键进入状态0。 2、若有键则计时,按键超过300ms进入状态3,同时将键值送缓冲区。 若无键进入状态1。 表示第一次按键后如果长按键则300ms后认为有一次按键。 3、若有键则计时,按键超过200ms则将键值送缓冲区。 若无键进入状态1。 表示长按键则以后每200ms后认为有一次按键。 void KeyScan() //每10mS执行一次键盘扫描任务 { switch(KeyState) { case 0: if(Ke
[单片机]
基于PCI总线的实时图像识别与跟踪平台设计
在没有红外探测器或其它图像采集设备的条件下,可以先开发基于PCI总线的图像处理平台,由计算机模拟图像的生成并完成图像的高速传输,以缩短系统开发周期,使系统灵活、实用、便于进行功能扩展。采用美国TI公司的新一代高性能浮点数字信号处理器TMS320C6701(以下简称C6701)研制了实时图像识别与跟踪处理平台,利用不变矩进行图像识别,采用质心跟踪方案,获得了很好的实验效果。充分发挥了C6701强大的数字信号处理能力,并为后续的研究提供了很好的软硬件平台基础。 1 C6701数字信号处理器简介 C6701芯片内有8个并行处理单元,分为相同的两组。采用甚长指令字VLIW结构,使C6701成为高性能的数字信号处理芯片。其单指令字长为32
[嵌入式]
一种基于PCI IP核的码流接收卡的设计
前言     随着数字化广播电视技术的迅速发展和基于MPEG-2标准的图像压缩和复用技术的完善,利用PC对大容量信息的处理变得日益重要,如基于PC的软复用器的实现,使得通过PC接收DVB(数字视频广播)码流已逐渐成为一项不可替代的多媒体数据接收技术。因此,设计基于PC平台的DVB 码流接收卡是数字广播电视发展的需要。 由于DVB-ASI信号的平均传输速率为270 Mbps,而DVB传输流又要求保证接收的实时性,因此本文选择了PCI总线。33MHz、32位的PCI总线的数据传输速率最高可达133MBps, 完全可以满足高速实时传输的需求。选择了Altera公司的PCI编译器软件包来实现PCI接口控制电路。该软件包为PCI接口提供了一
[嵌入式]
Silicon Labs推出业界最齐全的PCI Express定时芯片
中国,北京 - 2012 年 2 月 1 日 -高性能模拟与混合信号IC领导厂商 Silicon Laboratories (芯科实验室有限公司, NASDAQ: SLAB)今日宣布扩展其PCI Express(PCIe)时钟发生器和时钟缓冲器产品组合,为业界提供范围最广的时钟解决方案,以满足PCIe Gen 1/2/3标准的严格要求。Silicon Labs扩展的PCIe定时产品组合包括现用Si5214x时钟发生器和Si5315x时钟缓冲器,此两款产品针对功耗和成本敏感型PCIe应用;同时还包括针对FPGA和SoC设计应用的Si5335网络定制时钟发生器/缓冲器,这些设计要求支持多种差分时钟格式,同时还需符合PCIe标准。
[模拟电子]
Silicon Labs推出业界最齐全的<font color='red'>PCI</font> Express定时芯片
学海拾贝状态机思路在单片机程序设计中的应用
状态机思路在单片机程序设计中的应用 状态机的概念   状态机是软件编程中的一个重要概念。比这个概念更重要的是对它的灵活应用。在一个思路清晰而且高效的程序中,必然有状态机的身影浮现。   比如说一个按键命令解析程序,就可以被看做状态机:本来在A状态下,触发一个按键后切换到了B状态;再触发另一个键后切换到C状态,或者返回到A状态。这就是最简单的按键状态机例子。实际的按键解析程序会比这更复杂些,但这不影响我们对状态机的认识。   进一步看,击键动作本身也可以看做一个状态机。一个细小的击键动作包含了:释放、抖动、闭合、抖动和重新释放等状态。   同样,一个串行通信的时序(不管它是遵循何种协议,标准串口也好、I2C也好;也不管它是有线的、还
[单片机]
学海拾贝<font color='red'>状态机</font>思路在单片机程序设计中的应用
PCI驱动程序开发实例(1)
引 言   PCI总线广泛使用在计算机中,一方面是因为该总线的数据吞吐量大,另一方面是因为该总线与具体的处理器无关。PCI硬件设备资源的分配不是硬件设计所决定的,而是由Windows操作系统根据PC机中所有硬件设备对资源的占有统一分配的。这就要求设计设备驱动程序以跨越操作系统的边界,对物理硬件进行操作。   1 DSP芯片中集成的PCI接口特点   1.1 PCI接口的内部结构   DM642片内集成一个主/从模式的PCI接口,它相当于专用的PCI接口芯片,这样可以不必深究PCI总线规范,将工作重点放在系统功能的实现上。DSP可以通过这个接口实现与PCI主机的互连。   从图1可以看出,PCI接口的内部结构包括7个部分:
[模拟电子]
<font color='red'>PCI</font>驱动程序开发实例(1)
PCI Express体系结构概述
虽然PCI总线取得了巨大的成功,但是随着处理器主频的不断提高,PCI总线提供的带宽愈发显得捉襟见肘。PCI总线也在不断地进行升级,其位宽和频率从最初的32位/33MHz扩展到64位/66MHz,而PCI-X总线更是将总线频率提高到533MHz,能够提供的最大理论带宽为4263MB。但是PCI总线仍无法解决其体系结构中存在的一些缺陷。PCI总线面临着一系列挑战,包括带宽、流量控制和数据传送质量等。 PCI总线的最高工作频率为66M,最大位宽为64b,从理论上讲,PCI总线可以提供的最大传输带宽为532MB。然而PCI总线作为一个共享总线,在其上的所有PCI设备必须要共享PCI总线的带宽。同时由于PCI总线的协议开销,导致PCI总线可以
[嵌入式]
基于PCI总线加密卡硬件设计
摘要:介绍基于PCI总线加密卡的硬件组成部分。该加密卡汲取了现代先进的加密思想,实现了高强度加密功能。 关键词:加密卡 PCI总线 PCI9052 ISP 单片机 加密是对软件进行保护的一种有效手段。从加密技术的发展历程及发展趋势来看,加密可大体划分为软加密和硬加密两种。硬加密的典型产品是使用并口的软件狗,它的缺点是端口地址固定,容易被逻辑分析仪或仿真软件跟踪,并且还占用了有限的并口资源。笔者设计的基于PCI总线的加密卡具有以下几个优点:第一,PCI总线是当今计算机使用的主流标准总线,具有丰富的硬件资源,因此不易受资源环境限制;第二,PCI设备配置空间采用自动配置方式,反跟踪能力强;第三,在PCI扩展卡上易于实现先进的加密算法
[应用]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved