PCI总线从设备控制器的设计与实现

发布者:EnchantedMagic最新更新时间:2011-11-14 关键字:PCI总线  设备控制器 手机看文章 扫描二维码
随时随地手机看文章

  0 引言

  随着星载电子系统复杂度、小型化需求的提高,片上系统(System on Chip SoC)已 经成为应对未来星载电子系统设计需求的解决途径。为了简化设计流程并且提高部件的可重 用性,在目前的SoC 设计中引入了称之为平台的体系结构模板,用它来描述采用已有的标准 核来开发SoC 的方法。本文所作的工作主要是按照建立SoC 集成设计平台的需求,根据当前 国际航天领域的技术现状,选择PCI(Peripheral Component Interconnect)总线作为SoC 集成设计平台所能提供的一种总线模块,根据可重用的IP(Intellectual Property)设计 思想对PCI 总线从设备控制器进行设计实现。

  1 PCI 总线从设备控制器的设计

  1.1 控制器的基本功能[1-2]

  (1)数据传输功能:PCI 总线的传输包括PCI 与I/O 之间的传输(I/O 读和I/O 写)和 PCI 与存储器之间的传输(存储器读和存储器写)。

  (2)错误检测与处理功能:在交易的地址段和数据段中,PCI 总线是被奇偶校验保护 的。在交易的地址段和数据段中,驱动AD 总线的设备负责为本阶段计算和提供奇偶校验位, 接收AD 总线数据的设备负责进行奇偶校验的检测、处理并给出相应的信息。

  (3)命令/地址译码功能:根据一些控制信号将地址/数据和命令/字节使能线上的地址 和命令信号分离出来,得到相应的命令信号和读写操作的地址。

  (4)配置功能:当机器第一次上电时,配置软件必须扫描在系统中的不同总线(PCI 和 其它),确定什么设备存在和它们有什么配置要求。为了实现这个过程,每个PCI 设备必须 实现由PCI 规范定义的一组配置寄存器。依赖其操作特性、功能还可以实现由PCI 规范定义 的其它要求的或可选的配置寄存器。另外,还应保留许多附加的配置单元,以实现指定功能 的配置寄存器。

  1.2 控制器的设计

  在用Verilog HDL 语言进行PCI 总线从设备控制器设计之前, 首先要对PCI 总线从设备控制器的功能进行顶层设计[3], 将总线接口控制器按照功能分为有限状态机模块、奇偶校验 模块、配置空间配置模块、基地址检查模块、计数器模块、地址锁存模块和顶层模块这7 个模块[4], 控制器顶层模块设计中有pci_clk、pci_cbe_l 、bkend_abort_l、bkend_ad、 bkend_int_l、data_STop_l、data_read_l、pci_frame_l、data_write_l、pci_idsel、pci_devsel、 pci_irdy_l、pci_inta_l、pci_rst_l、pci_par、ready_l、pci_ad 等信号, 其中_ L 表示信号低电 平有效。

  各个模块完成功能如下:

  配置空间模块:PCI总线支持即插即用,从硬件的角度来看,其技术手段是为每一个PCI 设备提供一个配置空间,操作系统在自检(POST Power-On-Self Test)的过程中检测所有 PCI设备,读取设备的配置信息,并给每一个设备分配系统资源,如中断、I/O空间、存储器 空间等。配置空间包括一系列配置寄存器, 一般占用256个I/O地址,直接影响PCI 设备特性 的是PCI空间的前16个双字节的配置, 该区域称为PCI 配置头,一般PCI设备都要进行“类型 0”配置[1]。

  配置空间是PCI地址空间中重要的一部分,主要有设备标识、设备控制、设备状态、基 地址定位及其它一些由特定设备所描述的功能这五部分。

  这个模块中售主ID 用语句DEVICE_ID= 16’h0120 来定义,其它设备标识类似,命令寄 存器提供了产生和响应PCI 周期、粗略控制设备的能力。当idsel_reg, pci_irdy_l 有效, 且 pci_addr[7:2] == 6’h04 时,信号stat_com_en 有效,表示可以在配置写周期内对设备状 态及命令寄存器进行配置。将pci_dat[1:0]的值赋给com,由端口com 来控制一个设备响应 I/O 或是内存的访问。用输出信号ba0_size[31:4]、ba1_size[31:4]表示定义的I/O、内存 空间的大小。pci_dat_out[31:0] 在配置读时表示输出的设备配置信息,在其它情况下将从 设备产生的数据输出。ba0_en、ba1_en 分别表示在配置写时I/O、内存基地址寄存器的有效 性。ba0_en 或ba1_en 有效是在配置写期间对从设备进行配置的一个必要条件,int_line_en 是中断线寄存器有效位。

  在所有的基地址寄存器中,第0 位均为只读位并且用来决定是存储器空间还是I/O 空间。 如果该位为0 则是映射到存储器空间,否则,若为1 表示映射到I/O 空间。

  映射到I/O 空间的基地址寄存器宽度总是32 位,其中0 位恒为1(用硬件实现),1 位 为保留位并且其读出值必须为0,其余位用来把设备映射到I/O 空间。映射到存储器空间的 基地址寄存器可以是32 位或64 位。对于存储器基地址寄存器,在0 位上设置为0,位2 和 位1 将其设为00,表示基地址寄存器为32 位宽。将位3 设为1,表示数据可预取。在设计 中将内存空间定义为1M 大小,1M 地址空间的设备应构造地址寄存器的高12 位为1(使用 32 位基址寄存器),其它位置为0。对于I/O 基地址寄存器为了简便将其配置为与内存基地 址寄存器一样的状态。

  基地址检查模块:如果PCI 设备要占用一定的I/O 空间或存储器空间, 就必须实现基址 寄存器, 以便系统设置软件在对系统进行自动设置时, 对其地址译码器进行编程,使设备能 获得所要求的空间,在利用Verilog HDL进行PCI 总线接口设计时, 必须对基址寄存器的每 一位都能正确译码, 这样才能确定PCI 设备是申请I/O 空间, 还是申请存储器空间, 申请 空间的大小及其在系统中占据的位置, 是否可预取等。

  在基地址检查模块中首先判断系统是否要求复位,若要求复位则需对存储交易地址的寄 存器(ba0、ba1)清0;反之则说明需要对给定的基地址进行判断,当I/O 基地址寄存器有 效时,将总线上的数据pci_ad[31:4]的值赋给寄存器ba0;同样的当内存基地址寄存器有效 时将pci_ad[31:4]的值赋给寄存器ba1。这时ba0 和ba1 中的值就是系统配置的I/O 和内存 在系统中具体的位置。接下来当设备要选择申请的空间时,通过判断式pci_addr & ba0_size的值是否与ba0 或ba1 相等,来判断是否选中I/O 或内存空间。

  奇偶生成模块: PCI总线的奇偶校验提供了一种检验数据传输正确与否的机制, 在任何 给定的总线周期内,哪个设备驱动了pci_ad[31::00]线,它就必须驱动PAR线,而且在时间 上要比相应的地址或数据推迟一个时钟周期。奇偶校验主要用来确定主设备是否成功地寻址 到它所希望的从设备,以及数据传输的正确与否。因此,PCI总线进行奇偶校验的检测是必 需的。而奇偶校验生成就是解决以上问题的一个必要的步骤,从而使PCI总线设备控制器能 够为PCI总线提供正确的与奇偶校验有关的信息。

  在交易中,从设备驱动数据到pci_dat_out 端口上,并通过par_out 信号向主设备提供 正确的奇偶效验信息。PCI 总线奇偶校验位的产生是采用偶校验,参与奇偶校验的位包括 pci_ad[31::00]及pci_cbe_l[3:0],检验pci_ad[31::00] 及pci_cbe_l[3:0] 上‘1’的 个数是否为偶数。如果为偶数则为par_out 端口赋‘0’,如果为奇数则为par_out 端口赋‘1’, 再将这个值传回主设备,在主设备中与主设备产生的奇偶校验值做比较,这样做的目的是为 保证总线命令的正常执行和数据传输的正确性。如果两个值相等说明寻址及数据的传输是正 确的,如果不相等,则说明寻址或数据的传输过程中发生了问题,此次交易的数据必须重新 传送。而对于那些实际并不传送数据的字节所对应的线,必须被驱动到稳定状态,也要包含 于奇偶计算之中。

  有限状态机模块:PCI 总线接口芯片是多功能和时序复杂的时序逻辑电路,它的复杂性 由PCI 总线操作的多样性决定。为了便于利用硬件描述语言进行设计,将这一复杂的时序逻 辑抽象成有限状态机,并利用有限状态机实现复杂的总线操作。存储器读写操作、I/O 读写 操作、配置空间读写操作和中断操作都要通过一种设计合理的有限状态机实现,根据PCI 总 线操作的时序关系给出了一种简捷明了的有限状态机, 实现了存储器的读写、I/O 读写等各 种操作。如图1 所示为有限状态机的状态转移图。


  空闲状态(Idle):根据当前命令为配置命令或读写命令而进入配置读写等待状态或存 储器、I/O 读写等待状态、其它情况则继续在空闲状态等待。

  配置读写等待(con_wait)状态:系统进入配置读写等待状态后根据pci_irdy_l 的值 判断直接进入配置读写(con)状态,还是继续在配置读写等待(con_wait)状态循环,如 果pci_irdy_l=0,则进入配置读写(con)状态,否则继续在配置读写等待(con_wait)状 态循环。

  配置读写(con)状态:在这一状态中将par_oe 设为有效,开始奇偶校验生成;并将 trdy_l 设为有效表示从设备准备好。下来判断pci_irdy_l 信号是否有效,即主设备是否准备好,如果该信号有效则传输配置信息,在下一时钟延到来时转入backoff 状态,准备返回 空闲状态;否则进行等待,直到pci_irdy_l 有效为止。

  存储器或I/O 读写等待(rw_wait)状态:在进入这一状态前首先应判断是要进行读操 作还是写操作,下一步控制器要根据基地址译码模块的译码结果决定控制器是对存储器还是 I/O 读写,若译码结果显示存储器或I/O 都未选中,则进入传输中止状态。

  存储器或I/O 读写等待2(rw_wait2)状态:进入该状态的同时开始计数,根据read_flag 的值,决定进行读操作还是写操作。

  存储器或I/O 读等待(read_wait)状态:在存储器或I/O 读写等待2(rw_wait2)状 态时判断若为读操作,则状态机转入存储器或I/O 读等待(read_wait)状态,存储器或I/O 读等待(read_wait)状态是在从设备trdy_l 有效之前读取从设备的第一个数据段,也就是 地址段。

  存储器或I/O 读写(rw)状态: 在这一状态中进行存储器或I/O 读写。

  传输中止(abort)状态:使从设备停止响应,传输中止。

  存储器或I/O 读写停止等待(last_rw)状态:这是数据传输结束的前一个周期,表示即将停止数据传输。

  重试(retry)状态:当信息未准备好时,系统进入重试状态。

  结束状态:结束此次交易。

  计数器模块:在DEVSEL确定以后,必须在16个总线周期内提供或者接收数据,这一模块 用来实现一个周期计数功能,当在第12个周期时数据仍然未就绪时提供一个“retry”信号 来要求数据,同时在16个周期到来时通知终端设备此次交易结束。

  地址锁存模块:在总线交易的地址段对PCI总线的地址、C/BE信号、IDSEL信号实现锁存, 提供了这些信号的寄存器。

  2 PCI总线从设备控制器的FPGA实现

  FPGA 是当前复杂数字硬件电路设计的理想首选。设计选用Xilinx 公司生产的Sparten —Ⅱ 200 PCI 验证板。集成软件环境为Xilinx ISE6.1i。

  设计中有源代码输入、综合、实现等3 个比较大的阶段,而电路仿真的切入点也基本与 这些阶段吻合 。选用XST(Xilinx Synthesis Technology)作为综合工具。PCI 验证板电 源、管教电压、晶振分别选为5V、 2.5V、50MHz,下载模式选择为JTAG 模式,并通过ISP PROM 配置FPGA。

  3 PCI总线设备控制器的验证

  硬件系统通常是通过信号来驱动的,在不同的输入信号下其行为表现是产生不同的输出 结果,因此,仿真输入信息的产生是对系统进行仿真的重要前提和必须进行的步骤,PCI 总线控制器的仿真是由一段Verilog HDL 语言程序直接产生仿真的输入信息,将此外部激励信 号施加于PCI 总线控制器模型,通过观察其在外部激励信号作用下的反应来判断PCI 总线控 制器是否能实现预期的功能。对PCI 总线控制器的仿真,主要是按照PCI 总线操作命令来进 行的,对于正常的总线操作结束和由主设备及从设备提出的操作终止都作了测试,其仿真结 果实现了预期的要求。由于仿真项目比较多,我们选取其中具有代表性的一个项目来举例说 明。图2 是存储器空间没有等待周期的突发数据段写这一过程的仿真结果。


  4 结论

  PCI 总线从设备控制器的设计按照自顶向下的设计流程,实现了PCI 从设备控制器的设 计目标,完成了PCI 总线协议所要求的基本功能,目前已是一个完整可用的PCI 总线从设备 控制器IP 核,有很高的工程价值。

  本文的创新点:该设计方案将PCI 从设备控制器作为IP 核来设计,将总线接口控制器 按照功能分为有限状态机模块、奇偶校验模块、配置空间配置模块、基地址检查模块、计数 器模块、地址锁存模块和顶层模块这7 个模块,编写了测试文件,测试表明,设计完全符合 功能要求。

关键字:PCI总线  设备控制器 引用地址:PCI总线从设备控制器的设计与实现

上一篇:基于Camera Link接口的图像跟踪系统的设计与实现
下一篇:高度可靠的霍耳传感器接口集成方案介绍

推荐阅读最新更新时间:2024-05-02 21:42

Qorvo智能家居设备控制器,可支持同时运行多台设备
移动应用、基础设施与航空航天、国防应用中 RF 解决方案的领先供应商 Qorvo®, Inc.宣布,推出首款智能家居通信控制器---QPG6100,旨在实现多个超低功耗无线协议的同步支持。Qorvo 新推出的 QPG6100 通信控制器适用于物联网终端设备,采用了公司的 ConcurrentConnectTM 技术---该创新技术可加快通信速度,提高家庭网络容量和可扩展性,并允许制造商创造面向未来的互联设备(如照明和智能家居传感器)。该技术支持同时运行多台智能设备,无论其使用哪种主要无线标准,从而有助于消除智能家居的发展障碍。 IDC 预测,家庭自动化设备和服务将继续普及,预计到 2024 年,智能家居设备的全球销量将达到 1
[物联网]
PCI总线数据输出板驱动程序的开发
       PCI(Perip heral Component Interconnect )是一种先进的高性能32/64位局部总线,支持线性突发传输,数据最大传输率可达132MB/s。        同时,PCI总线存取延误小,采用总线主控和同步操作,不受处理器限制,具有自动配置功能,非常适合于高速外设。所以,它正迅速取代原先的ISA总线成为微型计算机系统的主流总线。         随着工业控制pci设备的增多,需要开发大量专用WDM驱动程序。鉴于直接用ddk开发驱动程序难度大,周期长,本文介绍了用DriverStudio套件开发WDM驱动程序的方法以及基于9052总线控制器的D/A数据输出板卡的硬件结构。  
[嵌入式]
基于VxWorks的PCI总线多功能数据采集卡驱动开发
    VxWorks是一种高性能的嵌入式实时操作系统(RTOS),它由WindRiver公司开发,具有小巧的内核,可根据需要进行裁减;它还获得广泛的硬件支持,像X86系列的CPU,Motorola 68K系列的CPU,Motorola/IBM Power PC等等;它还具有很高的可靠性和实时性,像美国登陆的火星探测器使用的就是VxWorks操作系统;它还有其它的很多优点,因此被广泛地使用在通信、军事、航空、控制等高精尖技术以及实时性要求极高的领域中。     PCI总线由于其即插即用、独立于微处理器、通用性好、具有很高的兼容性等等优良的特点,使得它成为运用最广泛的局部总线标准,而且具有很大的发展潜力。使它成为具有很好发展潜力的局部
[嵌入式]
一种基于PCI总线和DSP技术的虚拟仪器设计
传统的虚拟仪器由一块基于PCI总线的直接利用A/D和D/A芯片构成的数据采集板卡和相应的软件组成,但随着计算机网络技术的迅速发展,越来越多的数据需要由计算机处理、存储和传输,由于通用计算机本身的特点,它们通常不适于进行实时性要求很高的数字信号处理,因此这种虚拟仪器不能满足现实应用对数据实时处理能力、数据传输能力以及数据管理能力所提出的越来越高的要求。   与此同时,随着数字信号处理器(DSP)性价比的不断提高,其应用领域飞速扩展,从而使基于PCI总线和DSP技术的新型虚拟仪器应运而生。   系统的基本框架   笔者设计的基于PCI总线和DSP技术的虚拟仪器的基本框架如图1所示。   整个系统是基于模块化的设计理念来实现的,
[工业控制]
一种基于<font color='red'>PCI总线</font>和DSP技术的虚拟仪器设计
PCI通用接口芯片CH361应用接口电路
  1 主要特点   CH361是一个简便易用的PCI总线通用接口芯片.该器件在本地端提供了通用的8 位数据总线.由于其支持I/O 端口映射和扩展ROM 映射,因而可广泛应用于制作低成本的基于PCI总线的计算机板卡,或者用于将原先基于ISA 总线的板卡移植到PCI总线上.   CH361的主要特点如下:   ● 带有通用8位主动并行接口:包括8位数据、16位地址、I/O读和写以及存储器读和写;   ● 可以设定PCI设备的设备标识(Vendor ID,Device ID,Class Code 等);   ● 支持长度达240字节的I/O端口;   ● 允许本地硬件地址实现专用I/O端口,可直接移植I
[嵌入式]
基于MCU与USB设备控制器IP核的设计方案
1 引言 在传统的计算机系统上常采用串口(如RS232)和并口连接外围设备,但串口和并口都存在着通信速度 慢,接口独占不利于扩展等无法克服的缺点,而通用串行总线(Universal Serial Bus,即USB)因具有传输 速度快、支持热插拔、扩展方便、抗干扰强、成本低、数据传输质量高、节省系统资源等优点而得到了广 泛的应用,当前它已成为计算机最常用的接口之一。 现在USB控制器主要有两种:带USB接口的单片机(MCU) 和纯粹的USB接口芯片。纯粹的USB接口芯片仅处 理USB通信,必须有个外部微处理器来进行协议处理和数据交换。典型产品有Philips公司的PDIUSBD11(I2C 接口)、PDIUSBD12(并行接口);N
[电源管理]
基于MCU与USB<font color='red'>设备</font><font color='red'>控制器</font>IP核的设计方案
单片机及外围串行设备组成的多回路微控制器的设计方案
1前 言 化成充放电是蓄电池生产工艺中的关键过程之一,其控制水平直接关系到产品的质量。该工艺要求化成充电机能够按时间、电压或安时数等条件对蓄电池进行多次的充放电,具有静电、恒流充电、恒压(限流)充电、恒流放电等多种充放电模式,并要求达到控制精度≤1%,检测精度≤0.5%,限流限压保护精度≤2%。常规生产方式下主要采用人工手动操作,控制精度低、劳动强度大、人为因素对产品的质量影响很大,因此引入微机程控装置对于改善操作过程、提高产品质量意义重大。 随着新型单片机内置大容量的FlashROM、各种串行ADC、DAC以及高密度串行E2PROM等技术的发展,开发高性能、低成本、紧凑型蓄电池充放电控制器成为可能。根据小容量多回
[单片机]
单片机及外围串行<font color='red'>设备</font>组成的多回路微<font color='red'>控制器</font>的设计方案
什么是PCI总线
PCI局部总线的主要性能和特点    PCI总线是一种不依附于某个具体处理器的局部总线。从结构上看,PCI是在CPU和原来的系统总线之间插入的一级总线,具体由一个桥接电路实现对这一层的管理,并实现上下之间的接口以协调数据的传送。管理器提供了信号缓冲,使之能支持10种外设,并能在高时钟频率下保持高性能。PCI总线也支持总线主控技术,允许智能设备在需要时取得总线控制权,以加速数据传送。 1.PCI总线的主要性能    支持10台外设    总线时钟频率33.3MHz/66MHz    最大数据传输速率133MB/s    时钟同步方式    与CPU及时钟频率无关    总线宽度32位(5V)/64位(
[嵌入式]
小广播
热门活动
换一批
更多
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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