工业电子中的工业电子中的PCI总线从设备控制器的设计与实现总线从设备控制器的设计与实现
摘要:本文重点分析了PCI总线设备控制器的设计方案。以PCI总线协议的分析和理解为基础,对PCI总线设备控
制器进行了功能分析和结构划分,对PCI总线从设备控制器的设计思路和各个子模块电路的设计与实现进行了详
细的分析阐述。设计验证结果表明,该设计在功能和时序上达到了预定的目标。 0 引言 随着星载电子系
统复杂度、小型化需求的提高,片上系统(System on Chip SoC)已 经成为应对未来星载电子系统设计需求的
解决途径。为了简化设计流程并且提高部件的可重 用性,在目前的SoC 设计中引入了称之为平台的体系结构模
板,用它来描述采用已有的标准 核来开发SoC 的方法。本文所作的工作
摘要:本文重点分析了PCI总线设备控制器的设计方案。以PCI总线协议的分析和理解为基础,对PCI总线设备控制器进行
了功能分析和结构划分,对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,其
评论0
最新资源