datasheet
超过460,000+ 应用技术资源下载
pdf

基于ARM的PCI北桥设计与验证

  • 1星
  • 日期: 2014-03-05
  • 大小: 4.23MB
  • 所需积分:1分
  • 下载次数:0
  • favicon收藏
  • rep举报
  • 分享
  • free评论
标签: 基于ARM的PCI北桥设计与验证

PCI(Peripheral Component Interconnect)总线以其高性能、低成本、开放性、独立于处理器、软件透明等众多优点成为当今最流行的计算机局部总线。在嵌入式系统领域中,许多IP都是基于PCI总线设计的。本文阐述一种以ARM9作为CPU的嵌入式系统的PCI北桥设计与验证。 首先介绍基于ARM的嵌入式系统结构,并深入研究PCI2.2总线行为规范。在此基础上提出一种基于ARM处理器的PCI总线北桥的设计方案,整个设计主要分为主设备接口模块,目标设备接口模块,配置寄存器模块和集成总线仲裁器三大部分。对于主设备接口模块和目标设备接口模块,论文主要从数据通路和控制路径的实现两方面进行阐述。对于集成的总线仲裁器,设计采用两优先级的循环优先算法,通过一组设备编号寄存器实现了PCI总线上的仲裁,此外,论文对跨时钟域的信号同步和PCI配置寄存器也作了较为详细的描述,最终采用自顶向下的方法实现了整个设计。 在验证部分,引入了基于平台的验证思路,通过搭建验证平台,可以高效地实现验证。论文重点讨论了验证平台的搭建和行为模型的建立,并介绍了一种命令总线,通过打包各个验证点控制验证流程。此外,为提高验证的自动化程度,论文对验证所使用的脚本也进行了描述。通过此验证平台和脚本,提高了整个验证系统的可移植性和可重用性。 论文最终完成了PCI北桥的RTL级的功能描述,并使用仿真软件完成对设计的仿真验证。设计通过验证并成功实现在基于ARM的集成处理器,达到预定的功能设计要求,并具有良好的性能,最后对后续开发进行了探讨。

湖南大学 硕士学位论文 基于ARM的PCI北桥设计与验证 姓名:孙晓宁 申请学位级别:硕士 专业:微电子学与固体电子学 指导教师:胡锦 20080311 硕十学位论文 摘要 PCI(Peripheral Component Intefconnect)总线以其高性能、低成本、开放性、 独立于处理器、软件透明等众多优点成为当今最流行的计算机局部总线。在嵌入 式系统领域中,许多IP都是基于PCI总线设计的。本文阐述一种以ARM9作为 CPU的嵌入式系统的PCI北桥设计与验证。 首先介绍基于ARM的嵌入式系统结构,并深入研究PCI2.2总线行为规范。 在此基础上提出一种基于ARM处理器的PCI总线北桥的设计方案,整个设计主 要分为主设备接口模块,目标设备接口模块,配置寄存器模块和集成总线仲裁器 三大部分。对于主设备接口模块和目标设备接口模块,论文主要从数据通路和控 制路径的实现两方面进行阐述。对于集成的总线仲裁器,设计采用两优先级的循 环优先算法,通过一组设备编号寄存器实现了PCI总线上的仲裁,此外,论文对 跨时钟域的信号同步和PCI配置寄存器也作了较为详细的描述,最终采用自顶向 下的方法实现了整个设计。 在验证部分,引入了基于平台的验证思路,通过搭建验证平台,可以高效地 实现验证。论文重点讨论了验证平台的搭建和行为模型的建立,并介绍了一种命 令总线,通过打包各个验证点控制验证流程。此外,为提高验证的自动化程度, 论文对验证所使用的脚本也进行了描述。通过此验证平台和脚本,提高了整个验 证系统的可移植性和可重用性。 论文最终完成了PCI北桥的RTL级的功能描述,并使用仿真软件完成对设计 的仿真验证。设计通过验证并成功实现在基于ARM的集成处理器,达到预定的 功能设计要求,并具有良好的性能,最后对后续开发进行了探讨。 关键词:PCI;ARM处理器;总线功能模型 耋卓ii 萋iil;| |囊耄:圭 垂茎。主 垂垂i耋 蓁爹;i 瑟萎。萋 羹蓄;璧 囊薹.霉 霪霪:亏 蠹{;蓁 蓁乒:黉 羹;.妻 蕊霎;羹 硕1掣啦霪■ 硕士学位论文 第1章绪论 1.1课题背景及来源 PCI(Peripheral Component Interconnect)是由Intel, compag, IBM, NCR, DEII等100多家成员支持的一种PC局部总线标准。PCI局部总线标准的制定主 要目的是为了实现一种将周边设备与处理器高速结合起来的总线结构,以便适应 用户对于数据率越来越高的要求【l】。PCI总线规范是互联机构的协议,以及电气 和机械配置的规范,是当今高性能微型计算机事实上的总线标准【2】。 随着PCI局部总线规范的不断更新,国外越来越多的厂商和组织已经或正在 开发基于PCI总线的产品,这些产品可以分为两大类:IP核以及成品芯片。IP核 大部分是PCI控制器,而成品芯片主要是北桥和南桥芯片,如Intel公司、威盛电 子(VIA Technologies)、华邦电子(Winbond Technologies)生产的多种型号的北 桥和南桥芯片,而国内公司鲜有相关产品问世。 本课题负责完成基于ARM架构的PCI北桥的设计及验证。PCI北桥的设计 是通过中央控制器面向ARM应用环境,具有一定的通用性,对国内公司自主开 发PCI总线相关产品具有借鉴意义。 1.2国内外相关领域的研究进展 1.2.1 PCI总线发展 1991年下半年,Intel公司首先提出了PCI的概念,并联合IBM、Compaq、 AST、HP、DEC等1 00多家公司成立了PCI集团,其英文全称为:Peripheral Component Interconnect Special Interest Group(外围部件互连专业组),简称 PCISIG。PCI是一种先进的局部总线,已成为局部总线的新标准,并在嵌入式计 算机和工业控制计算机方面具有广泛的应用前景【3】。 PCI总线是一种不依附于某个具体处理器的局部总线。从结构上看,PCI是 在CPU和原来的系统总线之间插入的一级总线,具体由一个桥接电路实现对这一 层的管理,并实现上下之间的接口以协调数据的传送。管理器提供了信号缓冲, 使之能支持10种外设,并能在高时钟频率下保持高性能。PCI总线也支持总线主 控技术,允许智能设备在需要时取得总线控制权,以加速数据传送【41。 最早提出的PCI总线工作在33MHz频率之下,传输带宽达到了133MB/s (33MHz×32bits/8),比ISA总线有了极大的改善,基本上满足了当时处理器的发 展需要。随着对更高性能的要求,1993年提出此了64bit的PCI总线,后来又提 基于ARM的PCI北桥设计与验iIl{ 出把PCI总线的频率提升到66MHz,目前广泛采用的是32bits、33MHz的PCI 总线。 PCI总线是独立于CPU的系统总线,采用了独特的中间缓冲器设计,可将显 示卡、声卡、网卡、硬盘控制器等高速的外围设备直接挂在CPU总线上,打破了 瓶颈,使得CPU的性能得到充分的发挥。可惜的是,由于PCI总线只有133MB/s 的带宽,对付声卡、网卡、视频卡等绝大多数输入/输出设备也许显得绰绰有余, 但对于胃口越来越大的3D显卡却力不从心,并成为了制约显示子系统和整机性 能的瓶颈。因此,PCI总线的补充——AGP(加速图形接口,Accelerated Graphics Port)总线就应运而生了。 1993年以来,由于PCI总线在高性能、低成本、开发性等方面的优势,使其 得到迅速普及和发展。这一冲击波大大地激发了制造商和用户,他们开始考虑如 何将PcI的成果用于嵌入式计算机产品,使其模块化、坚固、易用、生命周期更 长。 Intel于1 996年7月正式推出了AGP接口,这是显示卡专用的局部总线,是 基于PCI 2.1版规范并进行扩充修改而成,工作频率为66MHz,1X模式下带宽为 266MB/S,是PCI总线的两倍。后来依次又推出了AGP2X、AGP4X,现在则是 AGP8X,传输速度达到了2.1GB/S【5】。 1.2.2 ARM处理器 ARM(Advanced RISC Machine)公司是专门从事基于RISC技术芯片设计开 发的公司,作为知识产权供应商,本身不直接从事芯片生产,靠转让设计许可由 合作公司生产各具特色的芯片,世界各大半导体生产商从ARM公司购买其设计 的ARM微处理器核,根据各自不同的应用领域,加入适当的外围电路,从而形 成自己的ARM微处理器芯片进入市场【6】【71。 ARM处理器目前包括以下几个系列的处理器产品以及其他厂商实现的基于 ARM体系结构的处理器:ARM7,ARM9,ARM9E,ARMl0E,SecurCore以及 Intel的Xscale和StrongARM。 ARM7系列处理器是低功耗的32位RISC处理器,它主要用于对功耗和成本 要求比较苛刻的消费类产品。其最高主频可以达到1 30MIPS。ARM7系列处理器 支持16位的Thumb指令集,使用Thumb指令集可以以16位的系统开销得到32 位的系统性能。 ARM9系列处理器使用ARM9TDMI处理器核,其中包括了1 6位的Thumb 指令集。 ARM9E系列处理器使用单一的处理器内核提供了微控制器、DSP、Java应用 系统的解决方案,从而极大地减小了芯片的大小以及复杂程度,降低了功耗,缩 2 硕士学位论文 短了产品面世时间。ARM9E系列处理器提供了增强的DSP处理能力,非常适合 那些需要同时使用DSP和微控制器的场合。其中的ARM926EJ.S包含了Java技 术,可以通过硬件直接运行JaVa代码,提高系统运行JaVa代码的性能。 ARMl0E系列处理器有高性能和低功耗的特点。它所采用的新的体系使其在 所有ARM产品中具有最高的MIPS/MHz。ARMl0E系列处理器采用了新的节能 模式,提供了64位的读取/写入(10ad/store)体系,支持包括向量操作的满足 IEEE754的浮点运算协处理器,系统集成更加方便,拥有完整的硬件和软件可开 发工具【8】【9】。 SecurCore系列处理器提供了基于高性能的32位RISC技术的安全解决方案。 SecurCore系列处理器除了具有体积小,功耗低,代码密度大和性能高等特点外, 还具有它自己的优势,即提供了安全解决方案的支持。SecurCore系列处理器具有 以下特点: 支持ARM指令集和Thumb指令集,以提高代码密度和系统性能; 采用软内核技术,以提供最大限度的灵活性,以及防止外部对其进行扫描探 测: 提供了安全特性,抵制攻击; 提供了面向智能卡和低成本的存储保护单元(MPu); 可以集成用户自己的安全特性和其他的协处理器。 到目前为止,ARM微处理器及技术的应用几乎已经深入到各个领域: 1、工业控制领域:作为32的RISC架构,基于ARM核的微控制器芯片不但 占据了高端微控制器市场的大部分市场份额,同时也逐渐向低端微控制器应用领 域扩展,ARM微控制器的低功耗、高性价比,向传统的8位/16位微控制器提出 了挑战。 2、无线通讯领域:目前已有超过85%的无线通讯设备采用了ARM技术,ARM 以其高性能和低成本,在该领域的地位日益巩固。 3、网络应用:随着宽带技术的推广,采用ARM技术的ADSL芯片正逐步获 得竞争优势。此外,ARM在语音及视频处理上行了优化,并获得广泛支持,也对 DSP的应用领域提出了挑战。 4、消费类电子产品:ARM技术在目前流行的数字音频播放器、数字机顶盒 和游戏机中得到广泛采用。 5、成像和安全产品:现在流行的数码相机和打印机中绝大部分采用ARM技 术。手机中的32位SIM智能卡也采用了ARM技术。 除此以外,ARM微处理器及技术还应用到许多不同的领域,并会在将来取得 更加广泛的应用【10】。 基于ARM的PCI北桥设计与验证 1.2.3 PCI北桥的实现 PCI北桥为PCI总线和用户设备提供操作接口,协调PCI总线信号和用户设 备接口信号,使用户设备能够按照PCI总线的规范进行数据的传输【11】。 目前实现IP设计主要有两种方式:采用厂商提供的专用集成电路(ASIC) 芯片和使用可编程器件CPLD/FPGA,两种方法各有缺点。厂商提供的芯片经过 严格的测试,有很高的可靠性,现在PCI专用接口芯片市场上主要有AMCC公司 的S59XX系列和PLX公司的PCI90XX系列。用户使用这些芯片时无需对PCI 规范十分了解,只要根据厂商提供的用户手册结合自身的实际需要进行合理的配 置,就可以完成PCI北桥的设计。这种方式的缺点是专用芯片的价格较高,而用 户可能只用到芯片的部分功能,造成资源浪费,同时由于接口固定,降低了设计 的灵活性【12】【1 31。 使用可编程逻辑器件来实现PCI北桥,能够将控制器逻辑和用户逻辑集成在 一块CPLD/FPGA芯片上,不需要使用另外的芯片来转换逻辑,降低了成本。同 时当功能需要修改或升级时,能方便地实现,提高了设计的灵活性。使用这种方 式实现PCI北桥,可以购买可编程逻辑器件厂商的PcI控制器模块,但这需要支 付一定的授权费用,同时由于各家的IP都是针对自己的器件设计,当需要更换器 件时,同时需要更换IP和修改设计。 这样,我们最终选择自己设计PCI北桥模块。自己设计PCI北桥优点在于灵 活性和低成本,可以根据用户的功能需求进行优化设计,根据系统的要求,可以 灵活设置实现PCI总线功能,有效利用器件的逻辑资源(在本设计中我们略去了 64位数据操作和双地址周期等部分系统不需要的功能,同时集成了PCI总线仲裁 器)。本课题PCI北桥I汀L(Register Transition Layer)级功能描述后,可以使用 FPGA芯片加以实现。这样FPGA既可以单独作为最终的产品使用,也可以作为 半定制ASIC的前端验证方法【14儿1 51。 1.3课题研究内容及论文安排 pCI总线规范较为复杂,本课题在深入研究PCI v2.2规范的基础上实现了PCI 北桥的设计。此外,课题还对ARM集成处理器的系统结构及应用做了细致的研 究。最终采用自顶向下的集成电路设计方法完成ARM集成处理器环境下的PCI 北桥的设计。 另外,本课题还对集成电路的功能验证方法进行了较为深入的研究,并基于 总线功能模型的验证思想,搭建了对PcI北桥的验证平台,完成对PCI北桥的功 能验证。本验证平台具有良好的可复用性。 论文内容的安排大致如下: 4 硕士学位论文 第一章:绪论。介绍论文的研究背景及课题的来源和意义。 第二章:ARM集成处理器系统分析。分析ARM集成处理器的内部结构,举 例说明ARM集成处理器的应用。 第三章:PCI2.2标准总线规范。对PCI v2.2总线规范做详细研究,在此基础 上建立整个设计。本章是课题设计的技术标准。 第四章:PCI北桥的设计。本章是论文的重点,将PCI北桥细化分为若干功 能模块一目标设备接口模块,主设备接口模块,集成总线仲裁器以及BIOS ROM 配置接口模块,分别对各功能模块的设计进行详细的描述,并且对跨时钟域的信 号同步的问题做了深入的讨论。 第五章:PCI北桥的验证。本章内容是整个设计不可或缺的一部分,着重介 绍了验证平台的搭建与行为模型的建立,在该验证平台的基础上,介绍了自动化 脚本语言的设置,最终给出了验证流程和结果分析。 结论:在总结本论文完成情况的基础上,指出论文方向的展望与设想。 1.4本章小节 本章介绍了该课题的来源背景和国内外相关领域的研究进展,以下对该课题 研究设计展开描述。 基于删的PCI北桥设计与验证 第2章ARM集成处理器系统分析 这一章着重对ARM集成处理器和系统应用做详细阐述。 2.1概述 ARM既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称, 还可以认为是一种技术的名字(在本论文中我们把ARM理解为一个微处理器软 核,通过AMBA总线连接外设控制器构成嵌入式系统)【1 61。目前,ARM微处理 器及技术的应用几乎已经深入到各个领域,在工业控制,无线通讯,网络应用, 消费类电子产品,成像和安全产品等各领域,ARM处理器都有出色的表现,应用 范围十分广泛。 ARM处理器采用RISC架构,一般具有如下特点: 1、体积小、低功耗、低成本、高性能; 2、支持Thumb(16位)/ARM(32位)双指令集,能很好的兼容8位/1 6位 器件; 3、大量使用寄存器,指令执行速度更快; 4、大多数数据操作都在寄存器中完成; 5、寻址方式灵活简单,执行效率高; 6、指令长度固定。 2.2 ARM处理器模式 ARM处理器共有7种运行模式,如表2.1所示 表2.1 ARM处理器的7种运行模式 处理器模式 描述 用户模式(User,usr) 正常程序执行的模式 快速中断模式(FIQ,nq) 外部中断模式(IRQ,irq) 特权模式(Supervisor,sve) 用于高速数据传输和通道处理 用于通常的的中断处理 供操作系统使用的一种保护模式 数据访问中止模式(Abort,abt) 用于虚拟存储及存储保护 未定义指令中止模式(Unidenned,und) 用于支持通过软件仿真硬件的协处理器 系统模式(System,sys) 用于运行特权级的操作系统任务 处理器模式可以通过软件控制进行切换,也可以通过外部中断或异常处理过 程进行切换。大多数的用户程序运行在用户模式下,这时应用程序不能够访问一 6 基于ARM的PCI北桥设计与验证 2.4 ARM异常中断 在ARM体系中通常有以下三种方式控制程序的执行流程: ·在正常程序执行过程中,每执行一条ARM指令,程序计数器寄存器(PC) 的值加四个字节;每执行一条Thumb指令,程序计数器寄存器(PC)的 值加两个字节。整个过程按顺序执行。 ·通过跳转指令,程序可以跳转到特定的地址标号处执行,或者跳转到特 定的子程序处执行。其中,B指令用于执行跳转操作;BL指令在执行跳 转操作的同时,保存子程序的返回地址;Bx指令在执行跳转操作的同时, 根据目标地址的最低位可以将程序状态切换到Thumb状态;BLX指令执 行3个操作,跳转到目标地址处执行,保存子程序的返回地址,根据目 标地址的最低位可以将程序状态切换到Thumb状态。 · 当异常中断发生时,系统执行完当前指令后,将跳转到相应的异常中断 处理程序处执行。在当异常中断处理程序执行完成后,程序返回到发生 中断的指令的下一条指令处执行。在进入异常中断处理程序时,要保存 被中断的现场,在从异常中断处理程序退出时,要恢复中断现场。 ARM体系中的异常中断如表2.3所示。各种异常中断具有各自的寄存器组, 当多个异常中断同时发生时,可以根据各异常中断的优先级选择响应优先级最高 的异常中断。 表2.3 ARM体系中的异常中断 异常中断名称 复位 (Reset) 含义 产生复位异常中断,程序跳转到复位异常中断处理程序执行。 通常在系统加电,系统复位及软复位的情况下 未定义指令 (undenned instruction) 当ARM处理器或者系统中的协处理器认为当前指令未定义 时,产生未定义的指令异常中断 软件中断 (software interrupt S WI) 指令预取中止 (Prefech Abort) 这是一个由用户定义的中断指令。可用于用户模式下的程序 调用特权操作指令 如果处理器预取的指令地址不存在,或者该地址不允许当前 指令访问,产生指令预取中止异常中断 数据访问中止 (Data Abort) 如果数据访问指令的目标地址不存在,或者该地址不允许当 前指令访问,产生数据访问中J卜异常中断 外部中断请求 (IRQ) 快速中断请求 (FIQ) 当处理器的外部中断请求引脚有效,而且CPSR寄存器的I 控制位被清除时,产生外部中断请求异常中断 当处理器的外部快速中断请求引脚有效,而且CPSR的F控 制位被清除时,产生快速中断请求异常中断 8 硕:}:学位论文 2.5 ARM集成处理器 在我们的设计中,采用ARM9软核作为ARM集成处理器,通过PCI北桥的 后端逻辑控制整个嵌入式系统。ARM集成处理器通过PCI北桥与其他外设进行 通信(其详细结构如图2.1)。外围设备控制器主要包括DMA控制器、存储器控 制器、中断控制器、UAI汀等,同时还集成了PCI北桥,使该ARM集成处理器 可以挂接在PCI总线上作为PCI系统的中央处理器或协处理器。 由该集成处理器的结构图可以看出,处理器有许 硕士学位论文 第3章PCI2.2标准总线规范 PCI总线协议定义了PCI总线信号、总线操作、电气规范、机械规范、配置 空间及PCI BIOS等内容,这里就与设计相关的内容进行介绍,更多的内容可以 参阅相关协议。 3.1 PCI总线信号 对于从设备的PCI接口至少需要47条信号线,而主控设备的PCI接口至少 需要包括49条信号线,它们包括数据线、地址线、接口控制线等【1引。主设备PCI 接口信号如图3.1。左边为必选信号,右边为可选信号,其中末尾的撑表示低电平 有效。 馐毒 地址/数 据、命令 总线 厂:煮; 接口控制 信号 ‘蠡; (‘黧. 仲裁信号 ≤薰: 系统信号 (:=: 报错信号 PCI设备 接口信号 簿s抛≤ /c删【7.4】。 N l PAR64 64位扩展 .REQ6删. 1 ACK64拌7 .CLKRUN群. PME拌 3.3Vaux 时钟控制 )电源管理 TDI TDO TCK TMS TRST撑 INTA拌 7 INTB撑 INTC撑 中断请求 INTD群 、●Lr/、L厂 图3.1 PCI主设备接口信号 3.1.1信号类型说明 下面的信号是从所有设备的角度进行定义的,对于总线仲裁器等中央资源, REQ撑是输入信号,GNT撑是输出,其他的PCI信号和主控设备或从设备的方向一 样。接口信号类型由信号名称后的符号表明,符号的含义如下: (1)IN Input,标准输入信号。 基于删的PCI北桥设计与验证 (2)oUT Output,有极性输出,标准的有源驱动器。 (3)T/S Tri.State,是一种双向三态输入/输出引脚信号,无效时是高阻态。 (4)S/T/S Sustained Tri.State,每次有且只有一个单元拥有并驱动的低电平 有效双向三态信号。驱动一个S/T/S信号到低的单元在释放该信号浮空之前必须 将它驱动到高至少一个周期(以给总线预充电)。在前一个拥有者使其三态(高阻) 之后一个周期之内,一个新的单元不能开始驱动S/T/S信号。为在下一个单元来 驱动该信号之前维持无效状态,要求有一个提拉电阻,并且必须由中央资源(系 统板)提供。 (5)O/D漏极开路信号。 3.1.2信号功能描述 3.1.2.1系统信号 CLK(IN):为所有PCI上的传输及总线仲裁提供时序,其频率范围0~33MHz 或0~66MHz,这一频率也称为PCI的工作频率。对于PCI信号,除RST群、INTA群、 INTB撑、INTC撑、INTD}}之外,其余信号都在CLK的上升沿有效(或采样)【19j。 RST{5f(IN):异步复位信号。用于使PCI确定的寄存器,配置寄存器,主设 备,目标设备,顺序发生器和信号置于一个初始固定的状态。无论何时,在RST #有效期间,所有PCI信号必须驱动到它们的起始状态。REQ#和GNT#都必须 是三态(在复位期间,它们不能是高也不能是低)。 3.1.2.2地址/数据和命令信号 AD[3 1:0】 (T/S):地址、数据多路复用的输入/输出信号,一个总线交易由 一个地址期和一个或多个数据期构成。在FRAME撑第一次有效时,是地址期, AD【31:0】包含有一个物理地址,对于配置空间和存储器空间,这是一个双字地址, 对于I/O空间,这是一个字节地址;在IRDY≠}和TRDY拌同时有效时,是数据期, AD【7:O】包含最低字节数据,而AD【3l:24】包含最高字节数据。PCI局部总线支持 突发方式的读写。 C/BE【3:0】撑 (T/S):总线命令和字节使能多路复用信号线。在交易的地址期 内,C[3:O】撑上传输的是总线命令;在交易的数据期内,它们传输的是字节使能信 号,并在整个数据期中有效,用来确定AD[31:O】线上哪些字节为有效数据。BE【O】撑 应用于字节0(最低字节),BE【3】撑应用于字节3(最高字节)。 PAR (T/S):AD【31:O】和C/BE【3:0】群上的数据奇偶校验。通常PCI单元都需 要奇偶校验,PAR与AD【3 1:O】有相同的时序,但延迟一个时钟,在地址段后一个 时钟,PAR稳定并有效;对于数据段,在写传输中,PAR在IRDY#有效后一个 时钟稳定并有效,而在读传输中,PAR在TRDY#有效后一个时钟稳定并有效。 12 硕士学位论文 一旦PAR有效,它必须保持有效直到当前数据段完成后一个时钟。在地址期和写 数据期,总线主设备驱动PAR;在读数据期,目标设备驱动PAR。 3.1.2.3接口控制信号 FRAME撑 (S/T/S):周期构成。由当前总线主设备驱动,表示当前设备一次 交易的开始和持续时间。FRAME撑的有效,说明总线传输的开始;在FRAME拌维 持有效时,说明总线传输继续进行;当FRAME群是无效状态时,说明传送的最后 一个字节正在进行。 IRDY撑(S/T/S):主设备准备好信号。说明传输的启动者完成当前数据传输 的能力,该信号的有效表明发起本次传输的设备能够完成当前数据期的交易。在 读操作中,IRDY#有效说明总线主设备已准备好接收数据。在写操作中,IRDY #说明AD[3l:O】上已有有效数据。在IRDY#和TRDY#都有效的时钟期间完成 数据传输。如果IRDY群和TRDY撑有一个无效,将插入等待周期。 TRDY撑(S/T/S):目标设备准备就绪信号。由当前被寻址的目标驱动,在写 操作中,TRDY#有效说明目标设备已准备好接收数据。在读操作中,TRDY#说 明AD[31:0】上已有有效数据。在IRDY#和TRDY#都有效的时钟期间完成数据 传输。在IRDY#和TRDY#都有效之前,需插入等待周期。 STOP拌(S/T/S):停止数据传输信号。由目标设备驱动,当该信号有效时, 说明目标设备要求主设备终止当前的数据传送。 LOCK拌 (S/T/S):锁定信号。对LOCK#的控制必须由LOCK#的拥有协议 与GNT#来完成。一个对桥的原始操作可能需要多个传输才能完成,对此设备的 操作是排它性的,而此时,对于未被锁定的桥,其非互斥访问仍可以进行。 IDSEL撑(IN):初始化设备选择信号。在配置读写操作中,用以作片选信号。 DEVSEL群 (S/T/S):设备选择信号。该信号有效时,表示驱动它的设备已 将其地址解码为当前操作的目标设备。DEVSEL#说明了总线上是否有目标设备 被选中,如果一个主设备启动一个交易并且在6个CLK时钟周期内没有检测到 DEVSEL}}有效,它必须假定目标设备没有反应或者地址不存在,从而实施主设备 缺省。 3.1.2.4错误反馈信号 PERR拌(S/T/S):数据奇偶校验错误报告信号。该信号报告除特殊周期之外 的其它数据传输过程中的数据奇偶校验错误。PERR拌维持三态,并在检测到传输 数据中的奇偶错误后,在数据结束后两个时钟,由接收数据的单元驱动PERR# 有效,并至少持续一个时钟周期。和所有的S/T/S信号一样,在被释放三态之前, PERR#必须驱动到高电平一个时钟周期,对数据奇偶错误信息被丢失或错误反馈 延时没有特殊条件。 基于ARM的PcI北桥设计与验证 SERR撑(O/D):系统错误报告信号。该信号用于反馈地址奇偶错误、特殊 周期命令中的数据奇偶错误和将引起重大事故的其它灾难性系统错误。SERR#是 单纯的漏极开路信号,由反馈错误的单元驱动,在一个PCI时钟周期内有效。SERR #与时钟同步,并满足所有信号的建立与保持时间。SERR#释放到无效状态,则 是由系统设计者所提供的一个小提拉电阻实现(同S/T/S信号)【20】【21】。 3.1.2.5仲裁信号(只对总线主设备) REQ# (S/T/S):申请。向仲裁器说明该设备想占用总线。这是一个点对点 信号。每个总线主设备都有自己的REQ#。 GNT# (S/T/S):允许。仲裁器向申请设备说明其对总线的操作已被允许。 这是一个点对点信号,每个总线主设备都有自己的GNT#。 3.1.2.6中断信号 INTA# (o/D):中断A,用于单一功能设备请求一次中断。 INTB# (O/D):中断B,用于多功能设备请求一次中断。 INTC# (O/D):中断C,用于多功能设备请求一次中断。 INTD# (0/D):中断D,用于多功能设备请求一次中断。 多功能设备的任何一种功能都能连到任何一条中断线上。中断引脚寄存器决 定该功能用哪一条中断线去请求中断。如果一个设备只用了一条中断线,则这条 中断线就被称为INTA#,如果该设备用了两条中断线,那么它们就被称为INTA #和INTB#,依次类推。对于多功能设备,可以是所有功能用一条中断线,也 可以是每种功能有自己的一条中断线,还可以是上述两种情况的综合。 3.1.2.7 64位总线扩充引脚 AD[63:32】(S/T/S):地址数据复用引脚提供32个附加位。在一个地址段, 传输64位地址的高32位;如无高32位地址,这些引脚就被保留。在数据段期间, 当REQ64#和ACK#都有效时,传输64位数据中的高32位。 C倍E[7:4】(S/T/S):总线命令和字节允许复用引脚。在一个地址段,C[7:4】 上传输有效总线命令,否则被保留;在数据段,当REQ64#和AcK64撑都有效时, BE【7:4】#是字节使能,指示对应的字节通道上的数据有效。 REQ64# (S/T/S):请求64位传输。当其被当前总线主设备有效驱动时, 说明该总线主设备想做64位传输。REQ64#与FRAME#有相同的时序。 AcK64#(s/T/s):应答64位传输。在当前操作所寻址的目标设备有效该信 号时,说明目标设备能够进行64位传输,ACK64#和DEVSEL≠}有相同的时序。 PAR64(S/T/S):高双字奇偶校验。是AD【63:32】和C/BE【7:4】#的奇偶校验。 当REQ64#有效且C/BE【7:4】上有DAC命令时,第一个地址段后一个时钟周期 14 硕士学位论文 PAR64有效,DAC命令的第二个地址段后的那一个时钟周期PAR64也有效。对 于数据段,当REQ64#和ACK64均有效时,读操作中,TRDY#有效后,PAR64 稳定且有效,写操作中,IRDY#有效后,PAR64稳定且有效。 3.2总线仲裁 在任意时刻,一个或多PCI总线主设备可能要求使用PCI总线,执行数据传 送到另一个pCI设备。每个发出请求的主设备有效其REQ群输出,通知总线仲裁 器,它正在请求使用总线。PCI主设备都是通过一对独立的REQ群/GNTjli}信号连接 到仲裁器。仲裁器是一个独立器件,但它通常都集成到PCI芯片组中,特别是集 成到主/PCI或PCI扩展总线桥芯片中。当多个设备同时申请使用总线时,应有一 定的算法来确定总线使用权的分配,并且算法应该保证对于各个PCI主设备的公 正,至于如何实现则与具体的仲裁算法有关【2引。 正常的总线工作中,设备通过对仲裁器有效REQ拌来表明需要使用总线,而 仲裁器通过有效相应的GNT撑来实现总线使用权的分配。如果系统设计者实现总 线停靠,那么当没有未决的总线主设备请求时总线仲裁器应该选择一个默认的设 备有效其GNT}≠信号,将总线使用权分配给此设备。当仲裁器在主设备上停放总 线,并且总线空闲时,主设备必须使能其AD[31:O】、C/BE群【3:0】,以及PAR信号 输出驱动器,这保证了在总线空闲过程中总线不会漂移。如果仲裁器没有停放总 线,仲裁器应该在总线空闲阶段驱动AD总线、C/BE≠}线和PAR信号。 3.3 PCI总线的配置空间与地址空间 3.3.1配置空间 3.3.1.1配置空间的功能 当机器第一次上电时,配置软件必须扫描在系统中的不同总线,确定什么设 备存在和它们有什么配置要求。为了实现这个过程,每个PCI功能必须实现由PCI 规范定义的一组配置寄存器。依赖其操作特性,功能还可以实现由PCI规范定义 的其他要求的或可选的配置寄存器。另外,规范保留许多附加的配置单元,以实 现功能指定的配置寄存器。 配置软件读取设备配置寄存器的子集,以确定功能的出现及类型。在确定设 备出现后,软件访问功能的其他配置寄存器,确定设备要求的存储器和I/O空间。 然后它编程设备的存储器和I/O地址译码器,分配给其他系统设备的存储器或I/O 地址一定要保证不重叠。 如果功能表示使用PCI中断请求引脚,配置软件利用路由信息对它编程,指 出功能的PCI中断请求引脚通过系统路由到什么系统中断请求线;如果设备具有 基于ARM的PCI北桥设计与验证 总线主设备能力,配置软件能够读取两个配置寄存器,确定它要求多快访问PCI 总线(它具有什么仲裁优先权),和它希望保持所有权多久,系统配置软件能够利 用这种信息,编程总线设备的延迟定时器寄存器和PCI总线仲裁器,提供优化的 PCI总线供设备使用。 3.3.1.2配置空间的设置 PCI系统必须有自己唯一的配置空间。除了主/PCI桥之外,每个PCI功能必 须实现PCI配置空间,PCI配置寄存器驻留其中。每个PCI功能拥有64个配置双 字的单元,保留用于实现配置寄存器。第一个16双字的格式和用法由PCI规范 预定义,这个区域称为设备的配置首部区(或首部空间)【231。目前规范定义了三 种首部格式,称为首部类型O、l和2。 (1)首部类型1为了PCI.PCI桥而定义。 (2)首部类型2为了PCI.CardBus桥而定义。 (3)首部类型0为了用于除PCI.PCI桥和CardBus桥之外的所有设备。下 面以类型O为例,给出配置空间首部的定义,如图3.2,其详细的寄存器描述见 附录B。 D吖iceID / Vendor lD , Stalus Register VendorID , BIST CIass Code Header Type Latencv Timer Revision ID / Cache Line Size , B硒eAddress0 / B嬲eAddr嚣s 1 / B鹳eAddress2 / B越eAddress 3 , B髂eAdd佗ss4 , Ba∞Add陀ss 5 / C耻dBus CIS Pointeo / Subsy妣m ID Subsystem Vendor ID / Exp肌sion RoM B舔e Address / Reserved Capabilities POinter / Max Lat Reseryed Min Gnt Intemlpt Pin / IntemJpt Line / 图3.2 PCJ配置寄存器首部格式 16 硕士学位论文 3.3.2地址空间 除开配置空间,PCI总线定义了两种地址空间:内存地址空间、I/O地址空间。 PCI总线的编址是分布式的,每个设备都有自己的地址译码,从而省去了中央译 码逻辑。PCI支持正向和负向两种风格的地址译码。所谓正向译码,就是每个设 备都监视地址总线上的访问地址是否落在它的地址范围,因此速度较快。而负向 译码是指该设备要接受未被其它设备在正向译码中接受的所有访问,因此此种译 码方式对于像标准扩展总线这类设备是很重要。这是因为这类设备必须响应一个 很零散的地址空间,但无论是正向译码的’设备还是负向译码的设备,都对保留的 总线命令发出DEVSEL撑响应信号。 (1)IO地址空间 在IO地址空间,全部32位AD总线都被用来提供一个 完整的字节地址。在Io访问的地址周期内,AD【3 1:2】寻址设备的双字空间,AD[1:0】 来定位双字中的哪一个字节。AD[1:0]要与c/BE撑[3:0】表示的字节使能配合定位具 体字节。例如当C/BE撑【0]有效时,那么AD【l:0】必须为00;如果C/BE拌[3]有效时, AD[1:0】就应当为1l。在具体访问中,当从设备地址译码后,都要检查字节使能 信号是否与AD[1:O】相符,如果二者矛盾,从设备会中断传输。 (2)内存地址空间 存储器访问的地址周期内,AD[32:2】寻址双字空间, AD[1:0】定义了在数据周期内地址的更新方式。AD【1:O】为0时,地址更新采用线 性寻址模式,即在每个数据周期后,地址会自动加l。AD【1:0】为2时,地址更新 采用缓存行打包寻址模式,即在地址更新时如果下一个地址超越缓冲行边界,则 地址自动跳到下个缓冲行的相同的起始地址开始传输,该模式在2.2版本以后的 规范中已经不支持。 3.4 PCI总线数据传输协议 PCI上的基本总线传输机制是突发传输,突发传输是一个地址期后面跟有两 个或两个以上数据期的传输方式,主设备在数据传输中只需要通过一次仲裁就可 以完成整个传输过程。总线主设备在地址期内给出起始地址和传输类型,所有从 设备会锁存地址并进行译码以确定数据传输的目标设备。目标设备在以后的数据 周期内会以锁存的地址作为起始地址,每个数据期后自动更新。并不是所有的设 备都支持突发传输,对于不支持突发传输的设备,它在第一个数据期后会回应主 设备停止传输,这样主设备需要再次申请总线进行未完成的传输【241。 3.4.1 PCI总线的传输控制 PCI总线上的所有的数据传输基本上都是由以下三条信号线控制的【25】: (1)FRAME撑由主设备驱动,指定一个数据传输的起始和结束; (2)IRDYj6}由主设备驱动,允许插入等待周期; 基于ARM的PCI北桥设计与验证 (3)TRDY撑由从设备驱动,允许插入等待周期。 当数据有效时,数据资源需要无条件设置XRDY≠f信号(写操作作为IRDY≠}, 读操作作为TRDYj6f),接收方可以在适当的时间发出它的xRDY群信号。FRAME拌 信号有效后的第一个时钟上升沿是地址周期的开始,此时传送地址信息和总线命 令,在下一个时钟上升沿处,开始一个(多个)数据期。当IRDY鼯和TRDY撑同 时有效时,所对应的时钟上升沿处,数据开始在主从设备之间传送。在此期间, 可由主设备或从设备分别利用IRDY群和TRDY撑的无效而插入等待周期。一旦主 备设置了IRDY撑信号,将不能改变IRDY群和FRAME挣,直到当前的数据期完成为 止。而一个从设备一旦设置了TRDY撑信号或STOP撑信号,就不能改变DEVSEL撑、 TRDY撑或STOP≠},直到当前的数据期完成。也就是说不管是主设备还是从设备, 只要承诺了的数据传输就必须进行到底【2引。 当到最后一次数据传输时,主设备应撤消FRAME群信号而建立IRDY群信号 表明主设备已做好了最后一次数据传输的准备,直到从设备发出TRDY捍信号后, 就说明最后一次数据传输已完成。FRAME{||}和IRDY}}信号均撤消,总线回到了空 闲状态。一般来说,PCI总线的传输一般遵循如下管理规则: (1)FRAME群和IRDY群定义了总线的忙/闲状态,当其中一个有效时总线是 忙,两个都无效时总线处于空闲状态。 (2)一旦FRAME撑信号被设置为无效,在同一传输期间不能重新设置。 (3)除非设置IRDY撑信号,一般情况下不能设置FRAMEj6}信号无效。 (4)一旦主设备设置了IRDY群信号,直到当前数据期结束为止主设备不能 改变IRDY群信号和FRAME{f|}信号的状态【27j。 3.4.2 PCI总线读写 总线设备开始驱动有效数据到总线上时必须有效其准备信号(主设备 IRDY撑,目标设备TRDY撑),如果它还没有准备好接收或发送数据,则一定要保 持准备信号为无效状态。设备一旦表示准备好,那么在接下来的数据周期内它不 能改变总线上的控制信号。如主设备发起数据传输,有效IRDY掣后,那会一直有 效直到下一个数据周期完成【2引。 (1)总线上的读操作 如图3.3所示,总线上一次突发读操作中有关信号的 变化情况。从图中可看出,一旦FRAME群信号有效,地址期就开始,在时钟上升 沿2处由从设备采样地址和命令信息。地址周期后是数据周期,在此期间AD【3 1:0】 线上传的是数据,而C/BE【3:o]≠f线上的信息指出数据线上的哪些字节是有效的, 即哪几个字节是当前要传输的。 硕士学位论文 CLK FRA~正# AD C,BE# IRDY# TRDY# DEVSEL群 /±ml\/n—n一-一\/n~PJt一\/D~P一1一\ √ ’o 图3.3 总线突发读操作 总线上的从设备解码地址和命令确定出目标设备,目标设备驱动DEVSEL拌 和TRDY撑,但要保证TRDY群在DEVSEL群之后出现。发起传输的主设备在确保自 己做好进行数据传输的准备后有效IRDY拌信号,数据的真正传输是在IRDY群和 TRDY撑同时有效的情况下进行的,设备在二者同时有效的时钟上升沿采样数据, 这两个信号的其中之一无效时就表示需插入等待周期。这说明一个数据周期可以 包含一次数据传输和若干个等待周期。见图3.3中时钟4、6、8处各进行了一次 数据传输,而在时钟3、5、7处插入了等待周期。 在读操作中的地址期和数据期之间AD线上要有一个交换期,这需要由从设 备利用TRDY拌强制实现,也就是TRDY拌的发出必须比地址的稳定有效晚一拍。 但在交换期过后有DEvSEL拌信号时,从设备必须驱动AD线。在时钟7处,尽管 是最后一个数据期,但由于主设备因某种原因不能完成最后一次传输(具体表现 是此时IRDY群无效),故FRAME拌不能撤消,只有在时钟8处IRDY撑变为有效后 FRAME撑信号才撤消。 . (2)总线上的写操作。如图3.4所示,表示总线突发写的操作时序。总线上 的写操作与读操作类似,也是通过FRAME群信号有效表示地址周期的开始,且在 时钟上升沿2处采样地址和命令。整个数据周期也与读操作基本相同,不再详细 说明。只是在第三个数据周期中由从设备连续插入了三个等待周期,时钟5处传 输双方均插入了等待周期。 最后一个数据周期是由FRAME{6}的无效和IRDY撑的有效表示的。见图3.4, 主设备在时钟沿5之后无效FRAME撑,此时IRDY撑有效,这样表明接下来传输的 是最后一个数据。写操作和读操作的不同点就是在写操作中地址期与数据期之间 没有交换周期,这是因为在此类操作中数据和地址是有同一个设备主设备发出的。 19 甚于删的PCI北桥设计与验初F CLK FRAME群 AD |阳| f c,B麟——÷2£(匹X委0<二j巫巫二二>‘:卜一 一一一一]]|ii嘻—F—I}}{÷ir DEVsE瑚—————苛]i }广÷l一 图3.4总线突发写操作 上述的读/写操作均是以多个数据期为例来说明的。如果是一个数据期时, FRAME}}信号在没有等待周期的情况下,应该在地址期过后撤消。 3.4.3 PCI总线传输的终止 无论是主设备还是从设备都可以提出终止一次PCI总线传输的要求。双方均 无权力单方面实施传输中止,需要互相配合。不过有一点是肯定的,那就是传输 的最终停止控制要由主设备完成,这是因为传输的结束必须满足系统的要求并且 是有次序的,这只有主设备才能做到。同时所有传输的结束标志是FRAME群信号 和IRDY拌信号均已撤消而进入总线空闲状态【291。 (1)由主设备提出的终止。主设备是通过撤消FRAME群信号并有效IRDY撑 信号来提出终止请求的。实际上这样做的目的就是告诉从设备现在己进入了最后 的数据期。此后IRDY存一直保持有效直到出现TRDY撑信号,完成最后一个数据 的传输,接着IRDY撑便撤消从而达到完全终止的条件(FRAME撑和IRDYjfj}同时无 效),结束传输进入总线空闲状态。 主设备在以下两种情况下提出终止传输的要求:主设备己做完要做的事;当 主设备的GNT{fj}信号无效,并且其内部的延时计数器己满,从而不得不终止传输, 即所谓的超时。究其超时的原因不是从设备产生的访问延时,就是要做的操作太 长。 (2)由从设备提出的终止。如果从设备希望终止一次传输,就应向主设备发 出STOP群信号以示请求,只要STOPj||}信号一旦有效,就必须保持到FRAMEjfj}信 号撤消为止,在此期间IRDYjfj}和TRDY拌间的关系与STOP拌和FRAME拌问的关系 是互相独立的,也就是说在目标设备要求终止传输的操作中,数据的传输可有可 无,具体情况取决于当时IRDY拌和TRDY撑的状态。但有一点应说明,当从设备 20 硕士学位论文 发出STOP群信号同时又使TRDY撑信号无效时,则表明从设备将不再传输任何数 据,这也意味着,主设备在此时不必等待最后一次的数据传输而使整个操作结束。 从设备之所以要求终止当前的操作可能基于以下两种理由:首先,由于死锁、 某些非PCI资源处于非空闲状态及该设备处于互斥访问的锁定状态等原因,使得 当前从设备无法进行正常的传输,不得不要求终止相应的传输操作,也就是说从 设备目前尚无数据传输,通常把这种情况也称为重试。其次,另一种情况下的终 止,通常称为断开。是由于从设备在八个时钟周期内不能对主设备做出响应,因 而只好要求停止传输。但断开往往不会发生在第一周期,也就是说一般在进行了 一些数据传输之后才会发生。 对于大多数从设备都要求能实现重试功能,而其它终止方式可作为可选项。 对于那些不支持互斥访问、不能检测死锁条件和不会陷入需要它们拒绝的一个访 问之中的设备,也可将重试作为选项,但对于主设备要能够处理从设备以任何方 式提出的终止请求。 3.5 PCI总线的中断 3.5.1 PCI中断的分配 单功能PCI设备是一个物理设备,包含一个功能(即逻辑设备)。如果单功 能设备产生中断请求,设备必须将中断请求信号连接到设备(器件或插卡)的 INTA群引脚。单功能PCI设备必须只使用INTA_ff来产生中断请求。另外,设计者 必须将这一连接信息硬连线到设备的只读中断引脚配置寄存器。 多功能PCI设备是物理设备,包含两个到八个PCI功能。设备设计可以在一 个多功能设备上最多实现四个中断引脚:INTA{6}、INTB存、INTC撑和INTD撑。设 备中的每个功能只允许使用这些中断引脚的一个来产生请求。每个功能的中断引 脚寄存器指明,设备的内部中断请求信号连接到设备的哪一个中断引脚,如果设 备实现一个引脚,它必须是INTA撑。如果设备实现两个引脚,它们必须是INTA撑 和INTB拌。设备中的所有功能都可以连接到一个引脚INTA群,或每个功能都可以 连接到一个特定的引脚。 对于一个平台来说PCI设备、插槽和中断路由设备(如果没有路由设备,就是 中断控制器)之间的连接情况是固定的,平台起动软件(在BIOS中)应该包含这 些连线的信息,对于专门设计的芯片应包含一个软件可编程的中断路由设备。平 台在启动的时候编程路由设备,以优化的方式将系统的中断资源分配给每个PCI 设备,并将最后分配的结果写入每个逻辑设备的中断线寄存器,通过寄存器设备 可以知道自己的中断引脚连接了系统的哪个IRQ线。 PCI中断请求信号是漏极开路的,连接到同一个PCI中断请求信号线的多个 21 基于ARM的Pcl北桥设计与验证 设备能够无损坏的同时有效它,结果是该信号线被驱动到低电平。系统板设计者 必须在每个信号线上提供一个上拉电阻使它们的原始状态是无效的。 3.5.2 PCI中断的处理 当中断控制器检测一个或多个输入有效时,它有效其输出到处理器。处理器 在下一个指令边界识别中断。处理器自动保存在被中断的程序中的位置。然后, 产生一个中断确认交易。交易沿PCI总线传递,中断控制器优先处理未决的请求, 然后向处理器提供当前未决的最高优先级中断有关的向量。处理器通过中断向量 最终取得中断服务程序的起始地址来执行【3们。 如果共享信号线的设备同时发出中断,程序会查询不同设备的中断未决位, 以确定设备是否正在产生请求。如果产生请求,对应设备的中断服务程序就运行, 其请求被服务,同时服务中断的操作清除设备的中断请求。如此继续直到该信号 线上的全部中断已经被服务,信号线上的上拉电阻自动无效它为止。 3.6本章小结 本章主要详细介绍了PCI2.2总线的规范,分析其传输模式和工作模式,更多 的内容可以参阅相关协议。 硕士学位论文 第4章PCI北桥的设计 本设计从PCI的系统功能要求出发,将PCI的北桥功能细化为各个功能子模 块,采用自顶向下(Top.down)的设计方法实现了对PCI北桥的设计,这种方法 可以大大降低设计的复杂度‘311。本设计从PCI目标设备接口控制器(Target interface controller)和主设备接口控制器(Host interface controller)两大通路考 虑实现PCI北桥的实现,另外还集成了PCI总线仲裁器的设计。 4.1整体设计 PCI北桥为ARM集成处理器提供了PCI接口,使处理器可以工作在PCI总 线的系统中。PCI北桥作为一个中间枢纽,完成处理器到PCI总线目标设备和PCI 总线其它主设备到本地资源的数据访问【321。基于对PCI总线规范和整个系统的理 解,提出了总体设计方案如图4.1所示 图4.1 PCI北桥结构 4.1.1中央控制单元 PCI北桥后端通过中央控制单元(Central Control Unit)与ARM处理器相连, 接收ARM处理器的指令并将其转化为PCI命令控制PCI北桥。中央控制单元主 要通过命令通道和数据通道完成对PCI北桥的控制(如图4.2所示),命令通道传 输PCI命令信号,其命令编码符合PCI规范(见表4.1),数据通道分为寄存器型 (Reg Data Interface)和存储器型(Mem Data Interface),分别用于传输小数据量 23 数据和大数据量数据。 基于ARM的PCI北桥设计与验证 图4.2 中央控制单元结构 对于数据通道,寄存器型数据通道一次只需传输一个数据,可以直接与北桥 内部的寄存器进行通信,而对于存储器型数据通道,由于一次传输需要传输多个 数据,所以在控制单元内置一个接收FIF0和发送FIFO用以暂存数据。 表4.1 命令通道的命令编码 命令编码 命令类型 命令编码 命令类型 0000 中断应答 1010 配置读 0001 专用周期 10l l 配置写 0010 I/o读 1100 存储器多行读 0011 I/o写 11 Ol 双地址周期 01 10 存储器读 11 10 存储器行读 01 1 1 存储器写 l1 1 l 存储器写+使无效 4.1.2时钟同步 在我们的设计中,PCI北桥工作在ARM处理器和PCI总线设备之间,是ARM 处理器和PCI总线设备之间的桥梁,由于ARM处理器和PCI设备工作在不同的 主频时钟下,ARM处理器发出的控制信号与PCI总线信号工作在不同的时钟域 之下,因此PCI北桥需要处理好不同时钟域下异步信号的同步问题。 4.1.2.1信号从低速时钟到高速时钟的同步 ARM处理器和PCI总线上的主设备都可以访问PCI北桥的内部配置寄存器, 但是两者使用的时钟是不同的,ARM处理器的主频高于PCI总线的时钟频率。 配置寄存器的采样时钟使用本地的快速时钟,而PCI总线上的主设备则是工作在 低速时钟的,如此,PCI主线上的一个读写操作可能引起配置寄存器上多个连续 的读写操作,需要对主设备读写信号处理后控制配置寄存器的读写。以读信号为 例,如图4.3所示: 24 硕士学位论文 山ci r- CCU _c> ccu cLK I > 图4.3写信号采样电路 读控制的时序图如图4.4,从中可以看出,当输入信号(图中为read pci)从 低电平变为高电平时,输出控制信号(图中为read ccu)也变为高电平有效,但 输出信号的高电平有效时间只能保持在一个时钟周期之内,当时钟采样到高电平 有效输出信号时,自动将其拉低到低电平,输入信号若想继续有效输出高电平, 必须先将自己拉低为低电平,再拉高到高有效电平。 l I I I I I 图4.4低速时钟到高速时钟跨时钟域读控制时序 4.1.2.2信号从高速时钟到低速时钟的同步 ARM处理器发出的控制信号是工作在处理器主频下的单时钟信号,因此存在 这种可能,ARM处理器发出的控制信号还没有被PCI总线时钟采样,就被本地 处理器撤销。 图4.5 高速时钟到低速时钟的跨时钟域同步 如图4.5所示,两个同步触发器级联分别工作在处理器主频和PCI总线时钟 设计所实现的配置寄存器(其详细描述见附录)。 功能设备都必须实现PCI配置空间。每个功能设备有256个字节的配置空间,而 些配置寄存器的值来确定设备类型和它所具有的功能。PCI规范规定,每个PCI 硕十学位论文 4.2配置寄存器 每个PCI设备中都会有配置寄存器的存在,系统上电时,配置软件会扫描这 前64个字节PCI规范做了详细的定义,称为配置首部空间【341。以下着重介绍本 1供应商ID配置寄存器 该g罐唰强荀前锈强妻霎i塑鋈止鬣豁剥。鞘篇罐摧堵寮;蘩翼穆黝螂蓁勰强 ~鎏雾曩篓i雾i蠹引篓酾~释翻徭;号囊凳嚆蛾淡濯崾淄罐皑眨婴堕蒂篓霎奏蠹;弦 簪趸拦蓁霎上个有效墓薹;“搿吲醛矫一舱薹鋈i露型; 擎葬堑l翻蓁雾萄婺萋 羹一秘|霎骥理霉叁篱壁即r耢; 萝篇崩谢翼稿㈡:|囊基需毅始霹髫黼l鋈能舞晶 蹦h赫掂笺 S触发器受两个时钟域信号的 控制,高速时钟域控制信号负责有效电平 信号的产生,低速时钟域控制信号负责 有效电平信号的撤消。由此可知,当高速 时钟产生有效信号后,只要还没有被低 速时钟采样,即使高速撤消有效信号,也 依然可以保证有效电平信号传输到低速 时钟域上,由此保证了系统的可靠性。 以 上说明了PCI北桥的后端中央控制单元和整个PCI北桥的同步问题。PCI 北 桥核心部分根据数据访问类型和具体应用设备的不同,由两类接口和配置寄存 器组成,另外还集成了一个内部的PCI总线仲裁器。这些功能模块中,主设备接 口 模块实现本地处理器或主设备到PCI总线上目标设备的数据传输功能;目标设 备 接口实现PCI总线上其它主设备到本地资源的数据传输功能,这两个接口模块 实 现了PCI北桥的主要功能。此外,还有配置寄存器接口用以实现对PCI内部功 能 寄存器的配置。下面我们重点阐述各个功能模块的具体实现。 2 基十ARM的PCI北桥设计与验证 9延时定时器 对于需要执行猝发操作的总线主设备而言,这个寄存器是必须的。延时定时 器确定了~个时间段,它表明当总线主设备启动~个处理过程,那么他将在这个 延迟定时器计时超时以前一直保有总线的控制权。在启动处理过程之后,延迟定 时器将会在每个PCI时钟的上升沿自动减1。 10基地址寄存器 基地址寄存器在PCI设备功能实现上是相当重要的,它被用来存放PCI设备 映射的内存地址或者使用的10空间的首地址。 ll Min Gnt寄存器 这个寄存器是主设备专用的。其中存储值的意义是主设备在启动一次数据传 输任务之后需要保持多久的总线所有权。 12 Max Lat寄存器 这个寄存器是主设备专用的。这个寄存器中的存储值表示设备要求以多快的 速度访问PCI总线。 本设计除了实现首部空间外,另外增加两个8位和一个16位的配置寄存器。 Retry Count寄存器(地址48h)和Trdy Count寄存器(地址49h)是两个8位寄 存器。这两个寄存器的设置都是为了避免设备一直占用PcI总线,形成死锁。 对Retrv Count寄存器编程设定某一数值,当PCI总线上的目标设备出现异 常情况应回应总线主控制器重试数据传输,如果重试的次数超过这一编程值,北 桥就放弃重试。这样可以避免北桥在目标设备出现致命错误时一直重试传输,浪 费总线资源。 同样的,对Trdy Count设定某一数值来限定PCI总线上的从设备插入的等待 周期数,当PCI总线被寻址的目标设备由于数据没有准备好时,需要插入等待周 期,当插入等待周期数超过这个编程值时,北桥应放弃该目标设备,这样避免PCI 总线从设备一直插入等待周期而占用总线资源不放。 PACR寄存器(地址46h)是一个16位的寄存器,是用来对PCI北桥集成的 仲裁器的进行编程控制的,该寄存器规定了PCI总线主设备的优先级顺序。 4.3目标设备接口 当PCI总线上的某一主设备发起对本地资源的访问时,整个控制路径的建立 和数据传输的过程都是通过目标通道模块实现的。本节将系统讲述PCI北桥的目 标设备接口实现。 4.3.1目标设备接口的功能及整体设计 PCI主设备发起某类型的操作,目标通道在地址周期内解析相应的地址和命 28 硕十学位论文 令信息。在解析地址确定为本次操作的目标设备后,目标通道模块会启动目标设 备状态机根据当前解码的信息进行一系列的控制操作13 5。。图4.7为目标设备接口 的详细结构图。 本设计将目标设备接口按照功能分为几个模块实现,即地址命令解析模块、 状态机、FIFO型目标接口、寄存器型目标接口和配置寄存器块。为了满足不同的 应用要求,设计将数据路径分成了三种类型即FIFO型目标接口、寄存器型目标 接口和内部配置寄存器块。FIFO类型目标接口用于大批量的数据传输,可将本地 存储器块挂接在该类型的数据通道上;寄存器型目标接口用于数据量小的数据传 输,可以挂接一些寄存器块作为其它模块的控制/状态寄存器;内部配置寄存器块 是PCI北桥的配置空间的寄存器,完成北桥的基本配置。配置寄存器模块的实现 参见4.5节,本节不做过多描述。 图4.7 目标设备接口结构 4.3.2目标设备接口的控制实现 目标接口的控制由两部分完成,命令解码器和目标状态机。命令解码器解码 来自PCI总线上的地址命令信息作为目标状态机的输入,状态机鉴于此输入执行 相应的操作。 4.3.2.1命令解码器 PCI总线主设备在地址周期内通过命令数据线(C/BE群)设置不同的编码可 以发起以下的操作,I/O读写、存储器读写、配置读写、存储器行读/多行读和存 储器写使无效,命令解码器的解码情况如表4.2所示。需要注意的是,对于存储 基十ARM的I,CI北桥设计1j验证 器行读/多行读和存储器写使无效这两个命令,目标接口将其分别转化为存储器读 和存储器写命令来实现其对应的操作。 表4.2 PCI总线命令解码 C/BE拌[3:O】 0000 命令类型 中断应答 命令解码器 响应 C/BE群[3:0】 1000 命令类型 保留 命令解码器 响应 000l 专用周期 响应 100l 保留 响应 001 0 I/O读 响应 101 0 配置读 响应 001 1 I/o写 响应 101 1 配置写 响应 0100 保留 忽略 1 100 存储器多行读 转为 存储器读 01 01 保留 忽略 1 1 01 双地址周期 忽略 01 10 存储器读 响应 l l 10 存储器行读 转为 存储器读 01 1 1 存储器写 响应 11 11 存储器写+ 使无效 转为 存储器写 4.3.2.2目标状态机 对于PCI总线上传来的信号,状态机根据命令解码器的解码信息来控制北桥 进行相应的操作。如果地址信息不正确或者本地的设备正忙于存取数据,状态机 会向PCI总线上发起本次操作的主设备回应目标丢弃或目标重试【3 61。目标状态机 的具体设计,如图4.8所示。 图4.8 目标设备接口状态机 图4.8所示为PCI北桥作为目标设备时的状态机流程,其中包括两个独立的 状态机流程,分别处理FIF0型目标接口和寄存器型目标接口的访问,如图4.9 硕上学位论义 (a)寄存器型目标接口 (b)FIFO型目标接口 图4.9 目标接口状态流程 其中(a)为寄存器型目标访问,(b)为FIFO型目标接口的访问流程。 状态机共分为10个状态,下面对每个状态的意义及状态跳转条件的详细说明: idle:目标通道空闲。当PCI总线有新的命令但北桥正忙于未完成的数据传 输或寄存器配置时,状态机跳转到check abort;北桥空闲但寄存器内有记录的未 完成的读操作,状态机跳转到check addr;PCI总线上有数据传输要求而又未出 现上面的两种情况,状态机跳转至cmd satart。 cmd start:启动命令解码。满足放弃条件如奇偶校验错误、强制放弃等条件 时,状态机跳转至start abort:不满足放弃条件,若目标设备没有突发传输能力, 状态机跳转至start single,若目标设备有突发传输能力且主设备发起的是写命令, 状态机跳转至start multiple,如果目标设备有突发传输能力且主设备发起的是延 迟读命令,状态机跳至start retry;上述情况均未发生,状态机跳转至 start—wait_rd 1。 check addr:检查地址匹配。满足放弃条件如奇偶校验错误、强制放弃等条 件时,状态机跳转至start abon;如果地址与之前的请求地址一致,对目标设备 进行延迟读,状态机跳转至start multiple;如果地址不一致状态机跳转至 start—retry。 check abort:检查放弃条件是否满足。满足放弃条件如奇偶校验错误、强制 放弃等条件时,状态机跳转至start abort;不满足条件,状态机转至start retry。 start wait rdl:FIFO类型目标设备的等待读。如果FIFO中有了待传输的数 据,状态机跳转至start wait rd2;否则一直等待在状态start wait rdl。 start wait rd2:FIFO类型目标设备等待读。FIFO中已经有了所要读取的数 据,状态机跳转至start multiple。 start—abort:北桥回应放弃。一直维持该状态直到主设备声明传输结束,状态 机转至idle。 基于AR^4的PCI北桥设计jj验证 start single:单数据传输。如果主设备声明最后一个数据传输,状态机跳转 至idle;如果主设备继续对该目标设备进行读写操作,状态机跳转至stan—retry。 start multiple:数据突发传输。如果剩下最后一个字节传输,状态机跳转到 idle;如果地址信息无效或地址越界,状态机跳转到start retry;如果接收FIFO 几乎满了而PCI主设备继续往其中写入数据,状态机跳转到start retry;其它情 况状态机保持start multiple状态不变。 start retry:北桥回应重试。一直维持该状态直到主设备声明传输结束,状态 机转至idle。 目标设备通道通过状态机的状态和当前数据传输的情况产生控制信号,协调 完成PCI总线上的数据传输,PCI总线上的传输控制信号也是这样产生的。 DEVSEL拌:只要状态机没有处在idle或者start abon状态下,信号就有效。 TRDY群:状态机处于start sigle或start multiple状态下,信号有效。 STOP群:状态机处于start abort或start retry状态下,信号有效。 4.3.3寄存器型目标接口 由于本地有一些嵌入的功能设备,这些设备都有相应的控制、状态寄存器。 PCI总线上的主设备要对这些控制寄存器进行编程,进而控制嵌入的功能设备完 成相应的功能。寄存器型目标接口就为PCI总线主设备提供了这样一种接口,使 其可以访问嵌入功能设备的寄存器。由于PCI总线主设备的访问目标是一些寄存 器,所以该接口无需支持突发传输,主设备每一次访问最多只涉及到32位的数据 传输。 该目标接口的控制路径由上一节中的命令解码器和状态机来实现,在接口内 需要有一个地址解码器解码PCI主设备传来的地址以响应对目标寄存器的访问。 另外,本地的目标设备有可能在数据传输过程中出现一些错误或异常情况,需要 向PCI总线主设备发送中断来报告这种异常情况。寄存器型目标接口在内部实现 一个中断控制器,它占用目标寄存器的地址零,其它的外部寄存器使用剩余的地 址。 在本设计中,最多支持32个中断源向PCI总线主设备发出中断,同时也引 入了中断屏蔽机制。本地目标设备可以有效int req对中断控制器内部的寄存器进 行置位,32个中断位中如果相应的中断使能位int en对应有效,中断控制器会有 效inta n向PCI总线主设备声明中断。如果某一中断位被置位而中断使能位为无 效,则该中断位不会促发中断。PCI主设备可以通过对中断寄存器的读来查询中 断源,向该寄存器中写1来清除中断请求【3 7。。 4.3.4 FIFo型目标接口 ’ FIFO型的目标通道主要用于大量的数据传输,在本设计中本地内存挂接在该 32 硕士学位论文 接口上,这样PCI总线主设备可以通过FIFO型目标通道访问到本地的存储器。 由于是对存储器的访问,数据访问量大,需要考虑到访问的效率。针对PCI主设 备对本地存储器的读和写操作,设置了两个异步FIFO,读FIFO和写FIFO【3 81。 PCI主设备发起的写操作,数据会先以PCI时钟写入接口内的写FIFO,同时 PCI北桥会通知本地存储器控制器有数据写入。本地存储器控制器待FIFO中达到 一定数据量时以自己的时钟读取FIFO中的数据存入本地存储器,如果FIFO读空, 存储器会暂停等待直到FIFO中有新的数据写入。对于PCI主设备发起的读本地 存储器的操作,为了提高读数据的效率,设计中根据不同数据传输的特点,把读 操作划分为两个类型,即立即读和延迟读。 4.3.4.1立即读 立即读就是在PCI总线主设备发起读操作后,一直占用PCI总线等待,PCI 北桥向本地存储器请求对应的数据,直到本地存储器将数据写入读FIFO中,PCI 北桥读取FIFO中数据开始PCI总线上的数据传输。这样PCI总线上的主设备在 数据未到达总线之前一直是空闲的,但它也一直占用总线,降低了总线的利用率。 所以这种读类型一般适用于进行数据量小的传输且本地存储器可以在较短的时问 内将要求的数据送到PCI总线,因为PCI规范规定目标设备不能无限制的插入等 待周期,必须在16个PCI时钟周期内提供第一个数据。 4.3.4.2延迟读 针对立即读总线利用率低的缺点,设计中引入了延迟读。PCI总线主设备的 读请求到达PCI北桥时,北桥锁存地址和命令信息,并回应主设备让它重试。同 时PCI北桥向本地存储器请求数据,本地存储器将数据写入北桥中的FIFO中。 此时如果PCI总线上的主设备重试先前的数据传输请求,PCI北桥就可以响应请 求将数据发送到PCI总线上。这个过程中,PCI总线主设备在收到重试回应后就 会释放PCI总线,允许其它的主设备占用总线进行数据传输,这样从而提高了总 线的利用率。需要注意的是,重试读的过程中,PCI北桥一定要对重试的地址和 命令信息进行核对,保证FIFO中的数据是主设备要求的数据。 这样看来,立即读和延迟读貌似一样的读操作,其实不然,延迟读还有一个 特性。当执行延迟读时,PCI bus主设备发起重试的读操作,但由于某种原因它给 出的地址和命令信息不能跟先前第一次读时的地址和命令吻合,这种情况下就会 产生错误。FIFO中已经存有至少一条数据项,可它不是重试读操作要求的数据, 如果PCI bus主设备一直没有提供前后吻合的地址和命令,PCI22会一直向主设 备回应重试,这样就形成死锁。为了打破这种死锁,目标设备会在32768个PCI 时钟周期后(大约1ms)丢弃FIFO中的数据,重新接收访问。如果访问的存储 器是不可预取的,还会有一个问题。不可预取的存储器数据没有正确传到PCI bus 基十ARM的PCI北桥设计与验证 主设备,而是在FIFO中暂存时被丢弃,这是一种错误情况需要声明错误。相反, 如果从可预取的存储器中读取数据而中间在FIF0中暂存时丢弃掉,这时不会产 生错误,因为存储器中的数据并没有遭到破坏。 4.3.4.3 FIFO型目标接口内部设计 通过对FIFO型目标通道的详细分析,最后确定该类型的目标接口的结构设 计如图4.10所示。 命令解码器和目标状态机组成了该接口的控制部件。FIF0型目标接口由地址 解码器、读写控制单元和读/写异步FIFO四部分组成,在控制部件的协调控制下, 共同完成PCI总线上的其它主设备对本地存储器的数据存储或读取。 地址解码器:解码PCI总线上的地址信息,识别对FIFO型目标接口的访问p 9|。 读写控制单元:主要用于目标延迟读的控制,存储并比照前后数据传输请求 的地址和命令信息,声明本次传输请求是否为有效的延迟读请求。 读/写FIFO:异步FIF0,用于缓存PCI主设备到本地存储器的读写数据。 图4.10 FIFO型目标接口结构 4.3.4.4数据顺序问题 PCI主设备向PCI22发起新的传输,PCI22向后端处理器示意一个新的PCI 命令,如果处理器此时正忙于从接收FIFO读取数据或者向发送FIFO中写入数据 就不会对此做出应答,PCI22则对来自PCI bus上的命令回应以重试。如果PCI22 在等待一个重试读并且发送FIFO中已经准备好要读的数据,此时某个PCI bus 主设备向PCI22中写入数据是允许的。这种情况下,对于目标设备,它在完成PCI 34 硕士学位论文 bus读操作后才可以接收写入的数据。通常情况下,同一个PCI bus主设备在未完 成当前的读操作前是不会再发起别的传输的,但对于不同的主设备,一个主设备 可以在PCI22等待另一个主设备重试读时请求总线并在获得授权后向PCI22发起 写操作。所以,要保证数据的一致性,系统软件有责任保证对于正在读取的同一 存储块,不能同时有对它的写操作。 4.3.5地址映射的实现 对于FIFO型目标接口和寄存器型目标接口中地址解码器的实现,本设计中 引入了地址翻译转换机制,增加了系统地址分配映射的灵活性。以FIFO型目标 接口为例,在最初PCI系统分配地址时,FIFO型的目标接口被分配到某一段地址 区内。所有来自PCI总线其它主设备的访问,地址如果落入该地址区内,PCI主 设备就可以通过该目标接口访问到挂接其上的本地资源如本地的存储器。由于存 储器也可以工作在本地的系统中,具有本地系统分配给自己的地址范围,如果在 整个PCI系统中,PCI主设备和本地的处理器对存储器的地址分配不一致,那本 地的存储器必须对两个地址空间做出正确响应。 设计中引入地址翻译,将PCI上总线地址转换为本地的地址。FIFO型目标接 口的基地址由配置空间的基地址寄存器(nf0 target bar)给出,增加一个地址翻 译寄存器(10cal bar)来指出地址翻译窗口的大小和翻译后地址的所在(即本地 地址)。图4.11给出了地址翻译的过程。 地址O PCI地址空间 '●一●一●一 术地地址空间 本地地址窗l:】 地址O local baf nfo-target.jlar 地址翻涕窗{:::j 图4.11地址翻译 由nfo target bar和local bar两个寄存器建立PCI地址和本地地址一一对应 的映射关系,本地地址对PCI总线上的主设备是透明的。图中虚线框所圈定的地 址区,如果有PCI主设备访问地址落入该区域内,PCI北桥不会对该访问做出响 应。 这样,通过引入地址翻译机制,使得PCI总线系统不用关心本地资源的地址 硕士学位论文 请求传输信号,等待北桥进行下一步的PCI总线数据传输。 在状态机的控制下,PCI北桥进行请求PCI总线,向PCI总线发送或锁存数 据,对接收到的数据进行校验等一系列的操作。同时北桥会一直向本地的主设备 报告主设备接口内FIFO的空满状态及数据传输的异常情况,本地主设备可以根 据报告的信息采取下一步操作。 4.4.2主设备接口的控制实现 主设备接口的控制逻辑是由一些寄存器和主设备状态机一起实现的。寄存器 存储本地主设备发起PCI传输的控制信息,状态机根据这些控制信息以及内部 FIFO的空满状态和异常情况信息完成对整个数据传输过程的控制14叭。 主设备接口的控制寄存器共有4个,它们分别存储了PCI数据传输所需要的 起始地址、命令、传输双字数量和字节使能。 主设备状态机的实现较为复杂,图4.13为状态机的具体设计。 图4.13主设备状态机 状态机分为lO个状态,下面对各个状态的意义及跳转条件做详细说明: idle:主设备通道空闲。首先一般情况下PCI北桥的命令配置寄存器编程有 主设备能力,当本地主设备请求发起数据传输,此时如果PCI总线空闲且PCI北 桥得到仲裁器的总线授权,那么状态机跳转到stan frame;如果本地主设备请求 传输时,总线忙或者PCI北桥未得到授权,状态机则跳转到wait4bus:其它情况 保持在idle状态不变。 wait4Bus:等待总线授权。如果总线空闲并得到PCI仲裁器授权,状态机跳 37 基于ARM的PCI北桥设计与验证 转到start frame,否则保持在wait4bus状态。 start frame:开始数据传输。如果主设备传输到最后一个双字,状态机跳转 到frame last,否则跳转到frame burst。 frame burst:数据突发传输。PCI北桥作为主设备选定某目标设备的时间片 耗尽,目标设备中断传输,数据传输还剩2个双字未完成,失去总线所有权,本 地主设备强制中断,如果出现上述情况之一,状态机跳转到frame last,否则保 持frame burst状态。 frame last:最后一个双字传输。如果目标设备放弃,状态机跳转到 target abort state;如果主设备选定某目标设备的时间片耗尽,状态机跳转到 master abort state;如果数据传输正常完成,状态机跳转至end op;如果目标设 备中断数据传输,状态机跳转至retry bus op;如果主设备占用总线的时间片用 尽,但此时总线所有权已经收回,状态机同样跳转至retry bus op;其它情况下 状态机保持frame last状态。 master abort state:主设备放弃。状态机在下一个时钟上升沿跳转到end op。 target abort state:目标设备放弃。状态机在下一个时钟上升沿跳转到end op。 end op:数据传输完成。状态机在下一个时钟上升沿跳转到idle。 retry bus op:重试总线操作。如果主设备已经完成预定的数据量传输或主设 备出现错误,状态机跳转到end op,否则状态机跳至wait req。 wait req:如果主设备出现错误,状态机跳转到end op,否则状态机跳至 wait4bus。 根据状态机所处的状态,会产生很多控制信号来协调完成本地主设备发起的 PCI总线操作。下面列举PCI总线读写操作的主要控制信号的有效条件: 请求使用PCI总线(REO拌):状态机在idle状态下,本地主设备发出使用主 设备通道的请求;或者状态机在retry bus op状态下且下个状态为wait req。 传输开始(FRAME撑):状态机进入start frame或frame burst状态。 主设备准备好(IRDY群):状态机进入frame burst或frame last状态。 4.4.3主设备接口的数据通路 主设备接口的数据通路具体就是指两个异步FIFO,FIFO作为发送和接收PCI 数据的缓存,而它们的溢出或读空并非由主设备接口内的状态机处理。PCI北桥 会将读写FIFO的空满状态通告给本地的主设备,有本地主设备保证FIFO不会出 现异常情况。 本地主设备读PCI总线上的目标设备时,读FIFO提供三个状态标志表明当 前FIFO的数据量,即为空、几乎空(还有一个数据)和数据量常数标记。本地 主设备在完成指定数量的数据传输或者出现错误时停下来,如果想一次读取超过 38 硕士学位论文 FIFO深度的数据量,那么本地主设备必须保证FIFO处在非满的状态,否则就会 出现错。因为主设备的状态机不允许在PCI总线上插入等待周期,这样再次取来 的数据会覆盖掉原数据。所以本地主设备在进行读传输时要提供恰当的传输字节 数信息。 对应的,本地主设备写PCI总线上的目标设备时,写FIFO同样提供三个状 态标志:满、几乎满(还有一个空间)和数据量常数标记。本地主设备必须保证 写FIFO处在非满的情况下才可以向FIFO中写入数据。 PCI北桥提供给本地主设备FIF0的空满状态信息的同时,也为本地主设备提 供了相应的控制信号force term,本地主设备可以根据FIFO的状态使用该信号来 控制数据传输的进程。当FIFO即将写满或者读空时,本地主设备可以有效该信 号暂停数据传输,等主设备处理完FIF0中的数据后再进行PCI数据传输。 正常情况下,对于主设备通道,如果传输过程中总线的所有权丢失且数据传 输的时间片也已经耗尽,PCI北桥则停止当前的传输交出正在使用的总线,主设 备通道会在某个时刻重新申请总线继续未完成的数据传输,这个过程对于本地主 设备是透明的。但如果总线所有权丢失但主设备占用总线的时间片未耗尽,主设 备会继续数据传输直到时间片耗尽交出总线。如果本次传输是memory写使无效, 主设备只在缓冲行的边界(由Cache Line Size寄存器指定)才停止数据传输。而 在PCI总线上的目标设备一侧,它在进行数据传输过程中有可能回应主设备通道 断开或者重试,根据4.3.2节中状态机的设计,主设备状态机自动处理PCI目标 设备回应的重试和断开。对重试PCI北桥将发起同一地址的操作,对断开PCI北 桥发起相邻的下一个地址的操作。 4.4.4主设备通道数据传输异常处理 本地主设备使用主设备通道发起PCI总线数据传输时,有可能在传输的过程 中出现异常情况。PCI北桥将对向本地主设备报告以下6中异常情况: 奇偶校验错误:主设备通道在数据传输中监测到奇偶校验错误或者目标设备 向其报告了PERR拌。 系统错误:目标设备向PCI北桥报告了SERR撑。 主设备放弃:由于在6个时钟周期内无目标设备应答,PCI北桥声明主设备 放弃。 目标设备放弃:目标设备向PCI北桥声明了目标设备放弃。 主设备重试终止:目标设备回应重试次数超过了配置寄存器Retry Count中 的值,主设备通道放弃重试。 目标设备等待终止:目标设备插入等待周期数超过了配置寄存器TRDY —Count中的值,终止目标设备继续插入等待周期。 39 基于ARM的PCI北桥设计与验证 对于以上列出的六种错误情况,PCI北桥通过错误向量pcl—err—vec[5:O】保存 这些错误源,如果出现异常情况北桥会有效中断信号向本地主设备报告错误,本 地主设备可以通过查询错误向量来定位具体的异常情况。而本地设备对于这些错 误的回应由具体的应用来决定,如果有奇偶校验错误,本地主设备设备一般会重 试传输交易。如果进行的是读取操作,本地主设备一般会清空接收缓存。同时本 地主设备也可以通过force term信号停止当前的数据传输。 4.5仲裁器 仲裁器接收PCI总线上的多个主设备的总线请求信号,采用特定的算法对这 些请求信号进行仲裁,并最终有效其中一个主设备的授权信号,得到授权的设备 就可以使用PCI总线进行数据传输。在PCI北桥内部就集成了一个PCI总线仲裁 器,由配置空间的PACR寄存器的来确定集成仲裁器工作状态,包括各设备的优 先级别,停靠机制等。 4.5.1仲裁机制 在任意时刻,一个或多个PCI总线主设备可能要求使用PCI总线。每个发出请 求的主设备有效其REQ#输出,通知总线仲裁器它正在请求使用总线,仲裁器需 要根据各个请求的优先级及当前的总线状态来决定让哪个设备获得总线并有效其 GNT#。如图4.14所示 图4.14 PCI总线仲裁机制 PCI的总线访问基于总线传输而非时间片的,与其它总线仲裁机制不同,PCI 总线仲裁器主要有一下一些特点: 1 PCI仲裁是隐式仲裁。即当前主设备正在执行数据传送时,允许PCI总线仲裁 的发生。仲裁器取回当前主设备的GNT而授予下次交易的主设备,但直到总线空 闲(Frame和IRDY均无效)时,下一次交易主设备才能取得总线所有权。 2规定在当前主设备传送数据期间,只允许发生一次仲裁。此后即使有更高优 先级的主设备发出请求,PCI仲裁器也不予进行仲裁,直至当前授权主设备占用 硕士学位论文 总线。 3总线停放机制。当总线上没有未决的总线主设备请求时,总线仲裁器通过有 效某一主设备的GNT指定缺省主设备所有者,当停放设备要求访问PCI总线,它 可以直接启动数据传送,不必有效其REQ,提高总线效率。 4为提高总线效率,防止某一主设备长时间无效占用总线,PCI仲裁器引入了 时间控制机制。若被总线授权的主设备在总线空闲后的l 6个PCI时钟内未启动交 易(有效Frame),可认为该主设备功能错误,仲裁器取回当前主设备的GNT并重 新进行仲裁。 4.5.2算法机制 仲裁器的设计主要在仲裁策略的选择上,要采用较为公平的算法使得总线上 的每个设备都能使用总线,同时也要注意到效率,让经常使用总线或者比较关键 的设备有更多的机会申请到总线。基于这样的考虑,在仲裁策略上采用了优先级 循环的算法。考虑到各总线设备使用总线频率不同,将总线主设备分为高低优先 级两个组。仲裁策略如图4。15所示: , ., , 、 图4.15仲裁策略 将5个主设备分为两组,设备0和2在高优先级组,其它在低优先级组。PCI 总线系统最初有一个优先级传递序列,比如由高到低是设备O、2、4、O、2、1、 0、2、3重复循环,这5个设备将按照序列中出现的顺序由高到低排列优先级, 即为设备0、2、4、1、3。仲裁器开始工作时按照优先级传递序列向下搜索,当 前使用总线的主设备的下一个主设备将得到最高优先级,由该最高优先级设备开 始按照优先级传递序列排出新的优先级序列。比如,当前设备2使用总线,那么 设备4将得到最高优先级,优先级顺序由高到低依次为设备4、0、2、1、3。 按照上面的算法,处在高优先级组的设 而处在低优先级组的设备得到最高优先级的几率为1/9。这种分组优先级循环的 算法既考虑到所有主设备访问总线的要求,又照顾到总线的效率。 41 硕士学位论文 AT25080,AT25640,AT25256或者AT25P1024。我们在设计中使用AT25P1024, 接口可以自动检测使用的EEPROM的地址线位数,支持8、l 6、24和32位的地 址线。为了使接口正确检测到EEPROM,在ROM的地址0需存储以下编码: 表4.5地址0存储编码 地址线 地址0存储编码 8 bits l 100l001 16 bits 1101100l 24 bits 11 10l001 32 bits 1 1 l l 100l 4.6.1 EEPROM地址映射 EEPROM的地址映射如下图所示,BIOS程序分布在20h以上的空间内(其 内部地址映射如图4.1 7)。对于本地ARM处理器,可以直接访问ROM,而对于 PCI总线主设备的访问,接口自动将PCI地址转换为EEPROM的地址,如对ROM 偏移地址Oh的访问转换为对偏移地址20h的访问,对ROM偏移地址8h的访问 转换为对偏移地址28h的访问,以此类推。 T叩 bit3l Vital Pmduct D砒a bitO VPDB私e 20h lCh 18h BiosROMCOde VPD Base Adress PoiIltcr (Bits【3l:7】) 0 ①i乜16) Reserved=00000000h Reserved (Bits【15:O】) 14h Max_Lat 10h (Bits【3l:24】) OCh O Base Addrcss Control Min.Gnt (Bits【23:16】) Vendor ID (Bits[15:0】) C孤dbllS Pointer(Bits【30:o】) 08h Subsys自锄ID(Bits[3l:16】) Subsystem VendorID(Bits【15:0】) 04h Ooh Cl嬲s Code(Bits【31:8】) Device ID(Bits【3l:16】) Revision (BitS【15:8】) PMI Par锄s (Bits[7:O】) 1lXXl00l BoOnoad area 图4.18 EEPRoM地址映射 4.6.2关键产品信息 PCI22支持关键产品信息(VPD),在BIOS ROM接口中实现了一系列的VPD 45 基于ARM的PCI北桥设计与验证 控制寄存器(配置空间的4Ch到50h),接口实现了这些寄存器与外部EEPROM 的VPD数据区的32位的数据通信。表4.6是VPD控制寄存器的详细描述: 表4.6 vPD控制寄存器 偏移地 址 寄存器 启动 装载 Backend PCI 可读写 可读写 复位值 详细描述 4Ch 4Dh Capability ID No Next Item Ptr No 4Fh.4Eh VPD Address No R R R/W R R R/W 03h 指明设备具有vPD能力 00h 读返回零 0000h Bits 14:0一EEPROM地址 位的第16:2位,即访问 RoM的VPD区的片内地 址,Bits 32:17即ROM基 地址来自RoM可装载区 的VPD基地址指针,Bits l:O一直为零。 注:如果EEPROM使用8、 16或者24位寻址,则地 址的组成需要作相应的 调整。 53h.50h VPD Data No R/W R/W 0000h 32位的VPD数据寄存器 4.6.3基地址控制 在从BIOS ROM中装载参数时,基地址控制可以对PCI22配置空间中的6个 基地址寄存器进行配置,每个目标设备的基地址寄存器都对应的四位控制信息。 基地址控制如表4.7所示。 目标设备0是寄存器类型的设备,可配置分配到I/O空间或者memory空间, 并且是不可预取的。(如果分到I/O空间,则分给该设备的地址空间不会超过256 个字节。)目标设备1~5是FIFO型的设备,只能分到memory空间,且可配置为 可预取。这六个设备的隐藏位都可以根据需要进行配置。 目标设备0是寄存器类型的设备,可配置分配到I/O空间或者memory空间, 并且是不可预取的。(如果分到I/O空间,则分给该设备的地址空间不会超过256 个字节。)日标设备1~5是FIF0型的设备,只能分到memory空间,且可配置为 可预取。这六个设备的隐藏位都可以根据需要进行配置。 硕士学位论文 位 【3l: 24】 【23: 20】 【1 9: 16】 【15: 12】 【ll:8】 【7: 4】 【3: O】 表4.7 目标设备基地址控制 目标设备 位功能 保留 目标设备5 保留 可预取 0 隐藏 目标设备4 memory空间 可预取 O 隐藏 目标设备3 memory空间 可预取 0 隐藏 目标设备2 memory空间 可预取 0 隐藏 目标设备l memory空间 可预取 0 隐藏 目标设备0 memory空间 0 0 隐藏 I/O或者memory空间 4.7本章小结 本章着重对PCI北桥的设计详细讲解,按照功能对北桥进行模块化设计。总 体上分为主设备接口、目标设备接口和配置寄存器模块和集成的PCI总线的仲裁 器,此外还对后端中央控制单元和跨时钟域的信号同步做了分析。下一章我们将 对PCI北桥的验证进行分析。 47 基于ARM的PCI北桥设计与验证 第5章PCI北桥的验证 专用集成电路不断增加的复杂性对于功能验证和测试工作提出了更高的要 求。为了保证专用集成电路的设计成功,必须在投片之前对电路的逻辑功能进行 充分的验证。验证的精确程度直接影响成片后芯片能否正常的完成设计需求的功 能,关系到项目的成败。根据统计,在目前的专用集成电路的开发周期中,功能 验证的工作量和投入的力度已经占到项目总投入的60%~70%,功能验证已经成 为整个设计过程中最重要的一个环节。 在前面的设计中,已经使用Verilog硬件描述语言完成了PCI北桥的I汀L (Register Transition Layer,寄存器传输级)设计。下面需要对设计进行I玎L级 的功能验证,确保前面的设计达到预期的功能要求。 5.1验证方法及工具 在集成电路设计行业发展的过程中出现了多种设计方法,在对本设计的功能 验证中采用了基于平台仿真的验证方法。基于平台的验证是指在软件环境下模拟 硬件电路工作的实际情况,从而在映射成实际电路之前,完成对硬件电路设计的 功能测试,从而缩减芯片的开发成本,提高芯片投片一次性成功的概率M引。 基于平台的验证出发点是设计需求,根据设计需求分析出需要测试的功能, 包括模块子功能和系统功能,建立测试模型。测试模型描述了在实际的情况下, 芯片接收到的外部信号激励,以及应该产生的响应。根据测试用例设计软件的仿 真条件,在仿真环境中模拟出芯片的实际工作条件。将待测的I汀L模型和仿真环 境放在仿真器上仿真,检查I汀L模型在各种实际激励下的反应,并根据仿真过程 中出现的问题修改代码【43|。 模拟PCI北桥的工作环境就要架构一个系统级的验证平台,这个平台中包含 了模拟各功能设备的总线功能模型,待验证的PCI北桥和测试用例。为了提高整 个验证过程的自动化,在验证中对测试用例的调度使用了perl语言编写了脚本程 序,验证使用的代码编辑工具为Debussy6.1,仿真器为Mentor公司工作站版的 Modelsim5.7f。 在使用仿真工具进行仿真验证时,使用perl语言编写的脚本来组织调度验证 过程中用到的各种工具,以及控制仿真的过程,这样大大提高了验证的自动化, 使验证和代码调试更加快捷方便。下面是验证过程中使用到的部分perl脚本【44】 程序: 撑Variable declare 撑when ARGV<1,display USAGE and exit l if(@ARGV<1){ print¥USAGE; 群Print help inf-ormation exit 1; > else{ 群Analyze eVery argument f.0r(¥argIndex 2 0;¥argIndex<=¥拌ARGV;¥argIndex+=1){ ¥一=¥ARGV[¥argIndex】; if(/^一help¥I^-h¥/) ¥ShowHelp; if(/^-一Version¥I^一v¥/) ¥ShowVersion; if(/^~clean¥/) ¥CleanTemp; j6}InVoke Debussy if(/^-·debussy¥l^-d¥/) ¥run—debussy; 撑Select simulator if(/^一simulator¥I^.s¥/){ ¥simulator 2¥ARGV[¥argIndex+1】; ¥argIndex=¥argIndex+1; ); 群Run compilation only if(/^--compile¥I^一c¥/) ¥run—compile; 拌Run simulaton if(/^-一run¥f^一r¥/) ¥run_sim; 撑Unknown argument. die”\nUnexpected argument to prune script:¥一\n\n”; )撑for loop end > 撑Tasks used 49 雉于ARM的PCI北桥设计与验证 如上述代码所示,通过运行脚本的不同选项,可以进行不同的工作。当运行 上述脚本的-h或者一help选项时,显示帮助信息;运行脚本的.v或者一version选 项时,显示版本信息;运行上述脚本的.d或者一debussy选项时,打开Debussy查 看代码编辑;运行上述脚本的.s或者一simulation选项时,采用选定的工具进行仿 真(可选工具为ModelSim,VCS,NCVerilog等);运行上述脚本的一r或者--run 选项时,采用默认的ModelSim工具进行仿真;运行上述脚本的.c或者一compile 选项时,只编译所有代码;运行上述脚本的一clean选项时,清除运行各种工具后 产生的临时文件。 5.2验证平台架构 验证平台要使用行为模型真实的模拟PCI北桥在实际工作过程中所处的环境 【451。在验证过程中,生成测试数据并将其输出到待验证的北桥中,监测模型对激 励的响应过程,并报告结果【461。基于对PCI工作环境的理解,验证平台的架构如 图5.1所示。 <=二=>PCIB吣 Kcv o o ’ 一一一一一a吼m柚dB略 图5.1 验证平台架构 图5.1中,验证平台模拟了PCI北桥(DuT,Design Under Test)的工作环境。 验证系统的由几大模型搭建而成,PCI22设计(DUT,Design under Test)和两个 基于ARM的PCI北桥设计与验证 FIFO中必须已经准备好足够的数据和相应的字节使能、突发长度等信息,然后 Master Model才向PCI总线上发送地址和命令。在读命令接收数据时,当接收 FIFO中的数据将要溢出时,Core Master可以向后端发出FIF0将满信号。该功 能模型可以处理目标重试、断开、放弃和用时耗尽等情况,并且可以重新尝试发 起正常中断的传输,设置状态寄存器中相应的位,能够插入等待周期,锁定PCI 总线,发起PCI总线命令,在地址/数据周期插入奇偶校验。 6.Core Target FIFO:该模型是后端ARM微处理器作为PCI目标设备进行 总线大数据量数据传输的行为模型,主要应用与PCI总线的突发读写操作,其功 能部分类似与总线平台中的Slave Model,Core Target FIFO同样具有独立的发 送和接收FIFO。在PCI总线主设备发起PCI读命令前,Core—Ta唱eI—FIFO的发送 FIFO由Test Bench通过命令总线写入主设备要读取的数据,PCI总线主设备发起 PCI写命令时,由PCI总线主设备往接收FIFO中写入数据,Test Bench可以通过 命令总线读取数据以作比对。Core TargeI—FIFO可以处理突发读或写、插入等待 周期、回应目标放弃/重试/断开。该功能模型可以对所有的PCI总线命令做出相 应的回应,包括特殊周期和保留命令。 7.Core Target Register:该模型该模型是后端ARM微处理器作为PCI目标 设备进行总线小数据量数据传输的行为模型,主要应用与PCI总线的IO读写操 作,其功能部分类似与总线平台中的Slave Model。其中主要是包含一个寄存器 堆栈,PCI总线主设备可以通过对应的寄存器地址单一读写该寄存器堆栈。 Core Target Register可以处理插入等待周期,回应目标放弃/断开。该功能模型可 以对所有的PCI总线命令作出相应的回应,包括特殊周期和保留命令。 8.PCI BkdC堙:该行为模型可以作为后端主设备的行为模型来访问DUT内 部配置寄存器。PCI总线主设备和后端ARM处理器模型均可以访问该寄存器堆 栈,不过二者通过两套地址对其进行访问。 9.PCI CardbusCstschg:该模型可以用来驱动和监测Cardbus Status Changed Notmcation/Wakeup接口的信号。 各行为模型的细节如上介绍,在实际操作中,并不是每个模型都同时参与工 作,不同的验证点可能需要不同的行为模型,可以根据需要测试的验证点调用相 应的模型,通过配置参数完成对各个模型的设置。 5.2.2测试模型 Test Bench是验证平台的控制调度中心,该模块协调控制各个行为模型共同 完成对PCI北桥特定功能点的验证。 Test Bench调用一系列的任务来启动某个命令,通过命令总线定位到一个行 为模型并促使此模型完成一系列的操作,这个过程结束后控制权交还Te吼一Bench 52 基于ARM的PCI北桥设计与验证 厂——弋.厂]厂]. cIk 厂]厂]厂]厂]厂]『]厂]厂] new cmd masteLrnodeI_busy厂——-、厂——————————————一 targeLmodeLbusy 一厂———] mmooddeeLL娜删dd—r———薯■豳_,)<巫延二!堕y■堕l×鳓二/:I一j匝砸二西/——l_/(二巫巫至二巫/p■—●—■■啊■豳_l wabnd妒伯d悖■eJsans协■■—■豳■墨鲞啊■豳/√■至匦/亟i三晡垂圣面亘,,×/7■—-■■■—豳●圜×豳:豳豳亘圈篱!■亟■暖垂豳豳亘豳■/豳豳I一豳豳/豳髓!豳至圈堕■圈匦圈—/■盈■曩—■■■—■圈囊一__ 啪d-data—豳豳黼豳圈■霸圜■豳——■■圈豳豳圜豳圈■■■■■反业/■—■ 脚d-byte-en■————■圈圈——■—曩■—■—■——_/<砸堕匦/一 图5.2 命令总线数据传输举例 5.3验证流程 Test Bench作为整个平台的控制中心将调用一系列的任务来启动某个命令, 通过命令总线(图5.1中虚线所示)定位到一个功能模型并促使此模型完成一系 列的操作,这个过程结束后控制权交还Test Bench由它再启动下一个命令直到整 个验证完成。一般情况下,Test Bench预先装载一块存储区做为PCI传输交易的 数据源,再设置好一系列参数如传输突发长度、等待状态等,然后Test Bench启 动一个数据传输命令给主设备,主设备接到命令后发动一系列的操作直到传输完 成或被目标设备终止。在这个过程中,Test Bench会监测设备忙和传输终止状态, 读取目标设备接收的数据并验证数据是否和主设备传输的数据一致。同时 TesI—Bench还会读取设备的状态寄存器,来验证传输的整个过程是否正确完成, 状态位是否正确置位。如果数据比对或者读取状态寄存器失败,Test Bench会打 印信息到标准输出。与此同时,PCI总线时序监测器和协议检查器通过采样PCI 总线信号来验证所有信号是否满足时序要求和总线规范定义。如果出现错误,这 些模块会输出警告信息到日志文件中,Test Bench也会打印相应信息到标准输出。 典型的一个验证任务一般是先对一块存储器初始化,然后进行一系列的PCI 总线读写,在传输发起设备和目标设备都进行数据和状态的验证。每一个行为模 型都有一个‘‘busy”信号得输出,Test Bench监测这个信号判断该模型是否完成 了指定的操作,来决定是否对选定的功能模型发送下一个命令。在整个验证过程 中,TesI—Bench串行执行每个功能并不断检测各个模型的“busy"信号,只有当 每个模型均“不busy’’时,Test Bench发出下一条指令,每个模型在执行指令时 基十ARM的PCI北桥设计与验证 Test Bench就是通过很多类似上述的验证任务的组合完成整个功能验证。为 了方便验证任务的调度,将任务进行了打包,总共打包为验证平台初始化、功能 模型配置、本地处理器配置PCI北桥和PCI数据传输验证等4个任务包。下面是 对验证任务的调度: (1)验证初始化: 系统复位低电平脉冲持续300ns,在主模块与目标模块中,设置PCI总线数 据传输的延迟时间。 (2)功能模型配置: 初始化PCI北桥内的首部配置空间,对设备号、设备类型、命令寄存器等寄 存器赋值,分配各数据通道的地址空间。 (3)本地处理器配置控制器: CCU功能模型读取所有配置寄存器的内容,并存储结果。 对配置空间中的寄存器进行写操作,并读回检查。 清除所有配置寄存器内容,通过读取检测,然后写入配置寄存器最初的数值。 (4)PCI数据传输验证: 调用任务使CCU模型向PCI总线上的PCI Slave模型发起各种类型的数据传 输,验证PCI北桥的主设备能力。 调用任务使PCI Master模型向Embedded Unit Registers模型发起各种类型的 数据传输,验证PCI北桥的寄存器型目标通道。 调用任务使PCI Master模型向Local Memory模型发起各种类型的数据传输, 验证PCI控制的FIFO型目标通道。 调用任务使PCI北桥向PCI Master产生中断,验证PCI北桥的中断能力。 调用任务使CCU模型向PCI Slave模型发送数据,在传输过程中强制出错, 验证PCI北桥主设备通道的异常处理能力。 5.4验证结果分析 使用这种功能模型化的验证平台对PCI北桥进行功能仿真,仿真过程中很快 的定位到设计中出现的逻辑错误,脚本的使用也大大提高了验证的自动化水平。 最终使用Modelsim SE5.7f仿真工具验证完成后,PCI北桥完全实现了要求的 功能,在总线监测器产生的两个日志文件中也没有违反规范和时序的情况出现。 如图5.3,图5.4,图5.5所示为验证过程中PCI22作为主设备时的突发写,作为 目标设备时的突发读和IO写的时序图。 58 硕上学位论文 pcl.clk 如131:0】 cJ-n【3:0】 D Z 口D Z Z Z ■o ,口 Z 一 f 雎瑚£-n 1 I厢£n 1 T如Ut l D日锄|-n l =G2 ■■■●●■■■■■●●■■■■b■-■c■l■o■c■l■【一 l ccj_pcl—req l pci.ccu-诎 D ccUcijl31:0l 7ffd feOnu 一 ccu.Pci.c“【3:0 J 2 ccu_d明rd_强t13l:0l l ccH_Pci-h-【3.o】 f ccuJci—Idl31:D】 1BS6 0l口 1 一 ■●■艮曩墨E 0 B3 厂]:厂]厂]厂]:厂]厂]厂]厂]厂]厂]厂]厂]广] Pffd_ff·pe56—01.) f I7 10 I f t‘----------—--一 r] 几几1厂]n几几n n几几几几r]厂]n几r]厂]几几厂]厂]几厂 jU 7ffd_ffⅡ口I 2 -I 】.D56—0lDl I 1ffd_ff04 7 1 f ee56一口加1 图5.3 本地主设备对Pcl总线从设备memory写 图5.3为PCI北桥作为主设备时发出的memory写操作时序,从图中可以看 出,本地主设备CCU端设定写长度为1个双字,并发出写命令(ccu—pcl—cmd为 4’h7),从设备地址(ccu—pcl—a为32’h7ffd—f.f04)和写数据(ccu.pci_wd为 32,hee56—0101)。PCI总线传输数据时,AD总线上先后传输寻址地址和写数据。 Gl C ,。。.;。≥冀;;’妻j, ;二:t。≯羔j 誓:i≥二。:。,, !一÷。I¨?j“|。j,, 。,’~;:一1I_=。。 。、ij一0’?it L. —只叫 ]几:几几几r]n几几几几几几几n几几几几n几几几几几几几几几几几几几n n几n n n n几厂 。 匿·I 6D6.flf口IflfⅡ-07盯I咖-flf口J f 1 61 0 I f I DI f 1 0I f I口D f -l 峙: Ii U U L 口_2l —p -I娃∞咀J p 叫一唧~吨一明 一一唧~一一一一 p■_C c:一m玲}{—¨堠 u—u啊幽¨一 B3 7: I —404一flf0 I fl加一0505 厂 D 6 厂]I 厂| r 瓦06一‘I flf口-盯盯I即日-flf0 1 L 0 0 耻lfD一‘ 图5.4 PCI总线主设备对本地存储器的突发读 如图5.4为PCI北桥作为目标设备时的突发读时序,事先通过命令总线在本 地存储器中写入数据(32’hfl f0 0505, 32’h606 f1 f0, 32’hfl fD 0707, 32’h808 flfo),北桥被PCI总线主设备寻址后,从命令总线上读到存储器读命令 (C BE n为4’h6),在IRDY n和TRDY n空闲时传输本地存储器的数据,在传 输最后一个数据时PcI总线主设备拉高Frame n,从而结束数据传输。 59 硕上学位论文 争士:奈 当日◆匕 PCI总线位宽32位,可扩展至64位,工作频率为33MHz或66MHz,最大 传输率为133MHz。PCI局部总线标准的制定主要目的是为了实现一种将周边设 备与处理器高速结合起来的总线结构,以便适应用户对于数据率越来越高的要求。 PCI总线规范是互联机构的协议,以及电气和机械配置的规范,是当今高性能微 型计算机事实上的总线标准,在嵌入式计算机和工业控制计算机方面有着广泛的 应用前景。 本论文对PCI总线规范和PCI系统结构进行了细致的分析和理解,并对ARM 处理器的设计和应用做了深入的研究。论文完成了ARM集成处理器中PCI北桥 的设计与验证,总结完成论文中所做的工作,主要有以下几方面的贡献: (1)对ARM集成处理器内的PCI北桥进行了详细的设计。 (2)通过两类数据通道实现PCI北桥目标接口,对大数据量的数据通道提出 了延迟读的机制,提高了北桥的效率。 (3)设计中引入地址翻译转换的机制,提高了PCI系统资源分布的灵活性。 (4)集成了PCI总线仲裁器,提出了两优先级的循环优先算法,实现了现实 公平的特点。 (5)最终完成的PCI北桥具备以下功能特性: ●完全支持PCI v2.2规范 ●32位地址/数据线 ●33/66MHz频率 ●Backend可运行在PCI时钟或独立的时钟下 ·可选的电源管理功能 · 可选的BIOS ROM接口实现 ·独立的发送和接收FIFO ·支持32位的中断请求 · 配置寄存器可启动由BIOS ROM装载或由backend写入 ·可扩展用户配置寄存器 ·支持关键产品数据 ·可由本地处理器编程配置寄存器 ·两种类型目标通道,寄存器型通道和FIFO型通道 ·FIF0型通道支持过期写和延迟读 ●嵌入PCI总线仲裁器,可仲裁最多6个主设备的请求 (6)验证平台具有较高的可重用性,为以后的PCI相关产品的验证提供参考。 6l 基于ARM的PCI北桥设计与验证 由于设计者的经验相对欠缺,PCI规范较为复杂,设计没有完全实现标准规 范中所规定的功能,作为后续的开发,本设计可以在以下几方面做出努力: (1)可将PCI北桥扩展到64位。 (2)为提高数据传输的能力,可在面向本地的一侧加入DMA设备的接口。 (3)降低功耗,可以加入电源管理模块。 (4)进一步规范验证平台,提高平台的可重用性。 62 硕士学位论文 参考文献 [1】Pablo Costi-Kowolik,Roberto Gutierrez-Mazon.A First Approach Tbwards a High—Speed PCI—based Data Acquisition Card for Industrial Applications.In:2006 IEEE 24‘h Convention 0f Electrical and Electronic Engineers. Israel, 2006, ll:426.429 [2】T0m Shanley,Don Anderson著.林辉等译.PCI系统结构.北京:电子工业出 版社,2000:1.5,15.30 【3】尹勇,李宇.PCI总线设备开发宝典.北京航空航天大学出版社,2005:10.30 【4】Edward Solari,George Winse.PCI&PCI-X Hardware and Software Architecture and Design,Fifth Edition.2003:45-60 【5] PCISIG; PCI-to-PCI Bridge Architecture Specification, ReVision 1.2, 200 l, http://www.pcisig.com/ 【6】Lina L.E.Massone,Member,IEEE,and Jennifer D.Myers,Student Member’IEEE. The Role of Plant Properrties in Arm Traj ectory Formation:A Neural Network Study. IEEE Transactions on Systems, Man, and Cybernetics. 1 999, 26(5): 719.732 【7】John D.Carpinelli著,李仁发,彭蔓蔓译.计算机系统组成与体系结构.北京: 人民邮电出版社.200l:102.124 【8】Chan-Hun Park,Kyoung-T越k Park,Dae-Gab Gweon.Development of Industrial Dual Arm Robot for Precision Assembly of Mechanical Pans for Automobiles. SICE—ICASE International Joint Conference,2006:3059-3062 【9】O.M.Al-Jarrah,YF.Zheng.Arm-manipulator Coordination for Load Sharing Using Compliant Contr01. In: l 996 IEEE Int. Conf. on Robotics and Automation. Minnesota:1 996.8:1 000-1 005 【1 0】 Kamaran Iqbal. Arm-Manipulator Coordination For Load Sharing Using Predictive Contr01.In:Proceedings of the l 999 IEEE International Conf;erence on Robotics&Automation Detriot.Michigan:1 999.5:2539-2544 【l l】 Intel Inc., 2l 555 Non-Transparent PCI—to·PCI Bridge datasheet, 2004, http://www.intel.com/design/bridge/2 1 5 5 5.htm/ [12】Michael D.Ciletti著,张雅绮,李锵译.Verilog HDL高级数字设计.北京:电 子工业出版社.2005:295.362 [1 3】Chris Brueggen,Hardy J.Pottinger.A Novel FPGA-based Master/Slave PCI Interface Core.Proc.In:43rd IEEE Midwest Symp on Circuits and Systems. 63 基于ARM的PCI北桥设计与验证 NewYork:2000.8:162-163 【1 4]PCI Special Interest Group.PCI-X Addendum to the PCI Local Bus Speci6cation, ReVisionl.0.PCISIG 1 999,9(22):l 29 【l 5】 E.Finkelstein, S.Weiss, Implementation of PCI—based Systems Using Programmable Logic.IEEE Pro-Circuits Devices Syst.2000.6:171-174 [16】 J.YS. Luh, Y.F.Zheng. Constrained Relation Between Two Coordinated Industrial Robots f.0r Motion Contr01.Int.J.Robotic Research. 1 987,6(3): 60.70 [1 7】刘恒洋,王森.基于ARM的视频监控系统的设计与实现.微计算机信息, 2007,(23):125—127 【l 8】 PCI SIG. PCI local bus specification revision 2.2[DB/OL】. http//:www.Pcisig.com.,2005—06—25 [19】PCI SIG.PCI 9052 Data Book[DB/0L】.http//:www.Pcisig.com.,2005-06-25 【20] T. Shanley, D. Anderson. PCI System Architecture Fourth Edition. Addison·Wesley Publishing Company,200 1:1 5-1 8 [2 1】 PCI Special Interest Group. PCI Local Bus Specification ReVision 2.2. 1998:233.236 [22]李德升,罗玉平.嵌入式系统中PCI总线仲裁器的设计与实现.电子技术应 用.2006,(6):57.60 【23】陈章进,冉峰,汤立华,徐美华.PCI目标设备的配置空间实现.计算机应用. 2002,22(1):68—70 【24]PCI Special Interest Group.PCI Local Bus Specincation,ReVision2.2.PCISIG, 1998:6—26,46-61,242-243 [25】F.Mora,A.Senbastia,H.Muller。Design of a hi曲一performance PCI interface for an SCI network.Computing&Control Engineering Journal.1 998,1 2:275-282 【26] T. Shanley, D. Anderson. PCI System Architecture Fourth Edition. Addison-Wesley Publishing Conlpany,200 1:l 20—1 3 8 [27】Michele Floris,Corrado Cicalo,Davide Marras,et a1.A New PCI Card for Readout in High Energy Physics Experiments.IEEE Transactions on Nuclear Science,2004,5 l(5):2086—2090 【28】王乐,马春江,冯晓东等.PCI.to-PCI非透明桥的设计和应用.微电子学与计 算机,2007,24(7):160.165 [29]PCI 9030 Data Book.PLX Tbchnologies。http://www.plextech。com [30]郑伟绩.用DriverStudio开发PCI设备驱动程序.微型计算机与应用,2002, 2l(9):13.14 硕士学位论文 【3 l】Wang Zhonghai,Ye Yizheng.Designing AHB/PCI Bridge.In:ASIC,200l Proceedings 4th International Conference.London,200 l:l一3 【32】M.Floris,D.Marras,G.Usai,et a1.The NA60 Experiment Readout Architecture. In:Proc.IEEE NPSS 1 3‘h Real Time Conf.Montreal,QC,Canada,2003,5:1 8—23 [33】廖艳,王广君,高杨.FPGA异步时钟设计中的同步策略.自动化技术与应用, 2006,25(1):67-68. 【34】Chun Y.eow,Yboh.Distributed Processing Mechanism utilizing PCI Backplane for 3G Node·B.In:Proceeding of the 2007 IEEE International Conference on Integration Technology.Shenzhen,2007,3:20-24 【35】卢再奇,付强,肖怀铁.一个通用型PCI接口设计及应用.微处理机。2002, (1):4l一44 [36】Antonyuk M.,Lobur M—Problems of synchronization of the PCI deVices for the embedder systems in the real time.In:MEMSTECH’2006.UKRAINE,2006,5: 24.27 【37】宋有泉,高小鹏,龙翔.嵌入式PCI网卡驱动程序的设计与优化.计算机工 程.2007,33(2):264-266 【3 8】Clif.ford E.Cummings Peter Al做e.Simulation and Synthesis Techniques for Asynchronous FIFO Design with Asynchronous Pointers Comparisons. SUNG2002 User papers.2002.3:l 09一l 20 【39】Tinoosh Mohsenin.Design and EValuation of FPGA-Based Gigabit—Ethernet/PCI Netword Interface Card:【dissertation】.Tbyoka:UniV.of Rice.2004:71-74 【40】Ch锄e,A.PCI Bus in Hign Speed I/O Systems Spplications.In:Aerospace Conference Proceedings IEEE.Washiton,l 998,4:2 1—28 [41】王良清,沈绪榜. PCI总线分组循环仲裁算法的实现.微电子学与计算机 2002(1):1-4 [42】Janick Bergeron,writing 7restbenches-Functional Verincation of HDL Models. Boston: Kluwer Academic Publisher,2000,3 5-78 【43】Ehud Finkelstein,Shlomo Weiss.A PCI Bus Simulation Framework and Some Simulation Results on PCI Standard 2.1 Latency Limitations.Journal of System Architecture,2002,45(1):13—15 [44]余晓文,强英.Perl语言在电路设计中的应用.微型机与应用,2004(1): 24—25 [45】杜旭,夏晓菲,赵宇.总线功能模型在集成电路功能验证中的设计和应用. 微电子学与计算机.2004,2l(5):130-133 【46】Ling Qunfang,Shen Haibin,Pan Guozhen,et a1.Design and Verification of a 65 硕.Ij学位论义 致谢 该论文是在导师胡锦副教授的悉心指导和督促下完成的。在研究生学习期间, 导师给了我很多无私的指导和帮助。他渊博的知识,精益求精的治学态度、谆谆 善诱的教学方法,严谨的工作作风、崇高的事业追求和朴实的生活态度,将使我 受益终身。在此向胡老师表示衷心的感谢! 本课题的研究工作是在哈工大(威海)国际微电子技术中心完成的,衷心感 谢技术中心王晨旭、王新胜先生和每一位同甘共苦的同事,他们深深的敬业精神 和团队意识将一直影响我今后的学习和工作。 在论文的撰写的过程中,得到了物理与微电子科学学院曾云教授,颜永红教 授,陈迪平副教授,曾健平副教授,张红南副教授,杨红官副教授,王镇道副教 授,晏敏副教授的精心指导和严格把关,在此向他们表示衷心的感谢! 感谢陪我度过四年本科,三年研究生学习和生活的同学和室友,陈波,戴彬, 戴大康,刘震宇,这些年对我学习和生活上的帮助使我们结下了深厚的友谊,也 感谢同门彭成在学业上给我的悉心知道。 最后将我的论文献给我深爱的家人,没有他们的支持,理解和鼓励是不可能 完成这篇论文的。 67 硕fj学位论文 附录A 攻读学位期间所发表的学术论文 [1】彭成,胡锦,孙晓宁FIR数字滤波器的优化设计宇航计测技术,2006,6(26): 48.5l [2】胡锦,孙晓宁,曾云,王晨旭PCI总线目标控制器的设计.微计算机信息, 2008,1(1):12—14 69 顾±:学位论文 附录B 设计实现的内部配置寄存器 偏移 地址 寄存器 01h.OOh Vendor lD 03h.02h Device ID 05h.04h Command ● 07h.06h Status 可 启动 装载 backend 可读写 PCI 可读写 Yes R,W R Yes No R八V R/W R R/W 复位值 参数化 参数化 0000h 详细描述 特定的生产商ID。 特定的产品ID。 BitO—l/o空间使能。 Bitl一memory空间使 能。 Bit2一总线主设备使 能(如果backend主设 备不存在,硬连线0)。 Bit3一保留,读返回 O。 Bit4一Memory写+ 使无效使能(如果 backend主设备不存 在,硬连线0) Bit5一保留,读返回 O。 Bit6一奇偶校验错误 应答。 Bit7一保留,读返回0。 Bit8一SERR拌使能。 Bit9一快速背靠背使 能,硬连线0。 Bit4 R/W R/W 参数化 Bitsl5:10一保留,读 返回0。 Bits3:O一保留, 读返回0。 7l 堆r ARM的PCI北桥哎计‘j验证 07h.06h Status Bit4 R八V 08h Revision ID Yes R/W 0Bh.09h C1ass Code Yes R/W R/W R R 参数化 Bit4一能力列表存在 位,如果实现电源管 理,置位1,参数化 为pwrman—exist。 Bit5一支持66MHz, 如果PCI22可运行在 66MHz,置位1。 Bit6一保留,读返回 O。 Bit7一支持背靠背传 输,硬连线1因为目 标设备支持该类型传 输。 Bit8一主设备数据奇 偶校验监测,写1重 置。 BitslO:9一DEVSEL 反应时间,硬连线01 表示medium。 Bitll一声明目标放 弃,写1重置。 Bitl2一收到目标放 弃,写l重置。 Bitl3一收到主设备 放弃,写1重置。 Bitl4一声明系统错 误,写1重置。 参数化 Bitl 5一监测到奇偶 校验错误,写1重置。 复位值参数化为 def-reVID。 参数化 复位值参数化为 def-classCode。 基十ARM的PCI北桥、黻计’j验证 13h-10h Base Address Bits0 R/W Register0 ,1 17h一14h Base Address Bits Register l 1.3 1Bh.18h Base Address Bits Register2 1.3 1Fh.1Ch Base Address Bits Regi ster3 1.3 23h.20h Base Address Bits Register4 1.3 27h-24h Base Address Bits Register5 1.3 2Bh.28h Cardbus CIS Yes pointer 2Dh.2Ch Subsyste-m Vendor ID Yes R/W R/W R/W R/W R/W R/W R/W R八V R/W R/W R/W R/W R/W R R 0000 .0000h Bits31.4一启动时, 系统分配的基地址空 间,根据目标设备占 据的地址空间大小决 定激活的可配置位 数,未激活的位硬连 线O。 当BitO=1(目标设备 映射到I/O空间) Bitl一从PCI bus一 侧:保留,读返回零。 Bits31:2一启动时,系 统分配的基地址空 间,根据目标设备占 据的地址空间大小决 定激活的可配置位 数,未激活的位硬连 线0。 0000 .0000h 与BAR0类似,如果 没有实现,返回零。 0000 .0000h 与BARO类似,如果 没有实现,返同零。 0000 .0000h 与BAR0类似,如果 没有实现,返回零。 OOOO .0000h 与BARO类似,如果 没有实现,返回零。 0000 .0000h 与BAR0类似,如果 没有实现,返回零。 参数化 参数化 指向Cardbus数据结 构的指针。 2个字节子系统供应 商lD,复位值参数化 为def subvenlD. 74 硕f:学位论文 2Fh.2Eh Subsyste—m ID Yes R/W 33h.30h BIOS RoM No Base Address Register R/W 34h Capabilities No R 3Bh.35h Reserved NO R 3Ch Interrupt Line N0 R/W 3Dh Interrupt pin NO R R R/W R R R/W R 参数化 0000 .0000h 参数化 0000 .0000h FFh 0lh 2个字节子系统ID, 复位值参数化为 def-subsysID. 如果存在,寄存器设 置如下,否则硬连线 0: BitO—ROM地址解码 使能,当该位为1时, 目标设备作出反应并 且它映射到的地址空 间是只读的。 Bitsl0:l一保留,读返 回零。 Bits3l:11一启动时, 系统分配的基地址空 间,根据目标设备占 据的地址空间大小决 定激活的可配置位 数,未激活的位硬连 线O。 指向第一个能力数据 结构,可能是电源管 理(40h)或者关键产 品信息(4Ch)或者 00h。 保留,读返回零。 在PC环境中,可编程 的将0到15个中断源 连接到该目标设备, 由此可定位到中断设 备。 用lNTA撑声明中断。 75 基于ARM的PCI北桥设计与验证 作者: 学位授予单位: 孙晓宁 湖南大学 相似文献(0条) 本文链接:http://d.g.wanfangdata.com.cn/Thesis_Y1259694.aspx 下载时间:2010年5月26日
更多简介内容

评论

下载专区


TI最新应用解决方案

工业电子 汽车电子 个人电子
$(function(){ var appid = $(".select li a").data("channel"); $(".select li a").click(function(){ var appid = $(this).data("channel"); $('.select dt').html($(this).html()); $('#channel').val(appid); }) })