微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于PCI软“核”的PCI总线接口设计与实现

基于PCI软“核”的PCI总线接口设计与实现

时间:03-30 来源:互联网 点击:

PCI总线是通过主桥电路挂接在Host CPU上的局部总线,典型的PCI局部总线系统结构如图1所示。PCI的外部设备既可以作为PCI总线目标设备(Slave),实现基本的传送要求,也可以作为PCI总线的主控设备(Master),访问其他PCI总线设备及系统的其他资源。用户在实际应用中可以根据实际需求来设计设备的功能。

由于PCI总线规范[1]定义了严格的电气特性和时序要求,因而开发基于PCI总线的接口卡有一定的难度。它要求在接口卡和终端设备之间有一个总线接口控制器,以解码PCI总线线范并完成数据传送,这需要开发人员对PCI总线规范有深刻的理解并具有较高的计算机开水平。开发PCI接口大体有两种方式:使用专用的PCI接口芯片和可编程器件。如果使用ASIC厂家提供的专用接口芯片,用户使用到的只是部分PCI接口功能,会造成了一定的资源浪费,而且芯片价格高,不经济。使用可编程器件设计,将厂家提供的PCI软“核”引入可编程器件中,根据插卡的功能进行最优化,不必实现所有的PCI功能机以将PCI插卡的用户逻辑与PCI接口逻辑集成在一个芯片上,实现紧凑的系统设计。当系统升级时,只需更改可编程器件的逻辑,无需更新PCB版图。许多可编程器件产生厂商都提供经过测试的PCI接口功能模块,如Xilinx公司的LogiCore,Altera公司的AMPP(Altera Megafunction Partners Prongam)。下面介绍用Xilinx公司的LogiCore来实现控制连接在PCI局部总线上的外设。

1 Xilinx公司的LogiCore简介

Xilinx公司的LogiCore逻辑框图如图2所示。可以看出,该LogiCore的功能是将左边复杂的PCI接口转换成右边的用户接口信号:周期控制信号(包括用于配置PCI接口的信号CEG[255:0])、从设备控制信号、主设备控制信号、状态机信号等。其主要的功能是起一个桥梁作用,完成用户设备与PCI总线的信息传送,并且可以在Bus Master方式下直接访问系统主存储器。图2的LogiCorem逻辑框图只给出Xilinx的LogiCore中与PCI Master控制器有关的关键信号。现在就以上信号进行介绍:

PCI Host 端总线接口:

AD[31:0] 时分复用地址/数据信号,在帧信号有效的一个时钟AD[31:0]上的信号为地址信号。

C/BE[3:0] 命令/字节使能信号,在帧信号有效的第一个节拍,指示总线作业类型。

FRAMF 由总线上设备驱动,指明传输的起始时间和终止时间,在该信号有效期间表示总线传输开始,当该信号无效时,传输的是最后一个数据节拍。

IRDY 由总线主设备驱动,读操作时表示总线传输开始,当该信号无效时,传输的最后一个数据节拍。

IRDY 由总线主设备驱动,读操作时表示已准备好接受数据,写操作时表示有效数据已经在数据上。

TRDY 由从设备驱动,读操作时从设备正在把有效数据放在数据总线上;写操作时表示从设备准备接受来自Host的数据。

DEBSEL 译码出的地址在该设备的地址范围内时,则该信号有效。

IDSEL 配置读、写期间由Host发出的片选信号。

STOP 从设备向Host表示停止目前信号的传送。

PAR 奇偶校验信号,它通过AD[31:0]和C/BE[3:0]进行奇偶校验。

PERR 该信号只报告数据奇偶校验错。

SERR 该信号只报靠地址奇偶校验错,或者特殊命令序列中的数据奇偶校验错。

INTR_A 表示PCI设备请求中断。

REQ 表示总线主设备向仲裁器发出要占用PCI总线的请求。

User端总线接口:

ADIO[31:0] 地址数据复用总线,该总线由三态缓冲器驱动。

ADDR[31:0] 在地址周期,输出PCI总线当前作业的起始地址。

DEVSEL_USR 是DEVSEL信号的“克隆”版本。

FRAME_USR 是FRAME信号的“克隆”版本。

STOP_USR 是STOP信号的“克隆”版本。

CFG_HIT 表明一个有效的配置周期开始。

ADDR_VLD 表明当前作业地址线的起始地址有效。

S_SRC_EN 在Slave模式读操作期间,告诉用户模块驱动下一片数据到总线ADIO[31:0]上。

S_DATA_VLD 表明当前ADIO[31:0]上的数据为有效数据(在Slave模式下)。

BASE_HIT[7:0] 表明基地址寄存器译码并选中相应的PCI映射空间。

CFG[255:0] PCI设备配置空间接口信号。

M_SRC_EN 在写操作时,表明数据源可以驱动下一片数据到ADIO[31:0]上(在INItiator模式下)。

M_DATA_VLD 表明当前数据线ADIO[31:0]上的数据为有效数据(在Initiator模式下)。

REQUEST 在主设备模式下,DMA控制器请求系统仲裁器让出总线。

M_WRDN 在主设备模式下,当前的作业进行读操作或写操作。M_WRDN=1时表示写,M_WRDN=0时表示读。

M_DBE[3:0] 在主设备模式下,驱动总线命令和字节有效信号。

COMPLETE 在主设备模式下,当前的DMA方式传送数据完成。

M-DMTA 表示在Initiator模式下当前主设备正片于数据周期。

DR_BUS 表示主

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top