基于PCI总线的GP-IB接口电路设计
发布时间:2008/8/16 0:00:00 访问次数:471
前言
基于pci总线的gp-ib接口电路框图如图1所示,工控机采用pci-104堆栈结构,通过pci总线和epld相连,数据总线为32bit,传输速率为33mhz。epld完成pci总线接口电路的设计和nat9914接口芯片的控制,通过驱动芯片75160和75162完成gp-ib的接口通信。在此重点介绍epld内部电路设计。
图1 gp-ib接口电路结构框图
epld内部电路设计
pci局部总线很复杂,pci局部总线也在不断的发展中,现在已经衍生有cpci、pci express等总线标准。pci局部总线定义的功能很强大,当然如果需要将所有的pci局部总线的要求都能实现,购买pci局部总线的专用集成电路或ip核是最佳选择,因为pci局部总线的硬件设计过于庞大,全部实现有一定的难度。如果设备只是作为从设备,根据设计要求实现起来也不是很复杂,很多功能如仲裁、边界扫描及错误报告等功能就可以不用实现,甚至像奇偶校验、重试、突发传输等功能也可以不用实现。
根据gp-ib接口卡的功能,本文主要介绍在epld中实现pci总线接口电路的设计,并且能够正确操作gp-ib总线协议的控制芯片nat9914。epld的容量较小,我们采用xilinx公司的xc95288xl器件,只有288个宏单元,经过设计优化,最终成功装载。其实现原理框图如图2所示。
图2 epld内部电路框图
pci接口信号设计
设计pci接口信号很关键,pci总线规范定义的信号很多,在设计过程中必须有所取舍。下面按照pci总线规范的要求,根据设计电路的实际需求,设计如下接口信号:
rst : 上电复位信号,低电平有效。
clk : 时钟信号33mhz。
cbe[3..0] : 命令、字节使能信号。
ad[31..0] : 地址、数据多路复用的三态输入/输出信号。
frame : 帧周期信号,由主设备驱动,表示当前主设备一次交易的开始和持续时间。
irdy : 主设备准备好信号。
trdy : 从设备数据准备好信号。
devsel : 从设备被选中响应信号。
inta :从设备中断请求,低有效。
在设计时舍弃的信号有:par、stop、perr、serr、req、gnt。
gp-ib接口芯片控制信号设计
根据电路要求,设计如下接口信号,用来完成对nat9914和驱动芯片的控制,实现pci到gp-ib接口的转换。
target_clk: gp-ib接口控制芯片时钟,本方案设计为33mhz时钟的8分频。
target_rst:复位脉冲信号,低电平复位。
target_ce: 读写使能,高电平为读,低电平为写。
target_sc:标识gp-ib接口卡作为控者,还是作为普通器件。
target_we:写使能控制,低电平有效。
target_int_l:控制芯片中断输出,低电平有效。
target_abus:有效地址输出。
target_dbus:三态数据输入/输出总线。
电路优化设计
图2给出了pci总线接口电路的原理框图,由于epld容量较小,在设计时必须尽量减少不必要的电路设计,并对电路设计进行优化,下面给出各电路模块的功能设计:
译码电路
pci总线命令编码方式有12种,在本设计中我们只实现配置读、配置写、存储器读和存储器写四种编码交易类型。译码功能电路工作在地址周期,包括命令译码、地址译码和命令/地址锁存等三项功能。在frame变低的第一个时钟周期内,译码电路对来自主设备的命令cbe[3..0]进行译码,并向状态机控制模块发出是配置读写还是存储器读写命令,同时锁存地址。
配置寄存器
在pci规范中,配置空间是一个容量为256字节并具有特定记录结构或模型的地址空间,该空间又分为头标区和设备有关区两部分。在配置寄存器中不用的寄存器当cpu读的时候,将默认为零。
重试
gp-ib控制芯片寄存器响应完全能够满足pci规范的要求,不需要进行重试,这部分功能不再实现。
奇偶校验
在bios中可以对奇偶校验进行屏蔽和开放,为了减少设计的复杂性,奇偶校验功能在epld中没有实现,在bios中进行了屏蔽。
nat9914接口控制电路
nat9914接口控制电路主要完成内部总线到外设的时序控制。gp-ib总线接口采用的是负逻辑电平设计,考虑到epld的容量
前言
基于pci总线的gp-ib接口电路框图如图1所示,工控机采用pci-104堆栈结构,通过pci总线和epld相连,数据总线为32bit,传输速率为33mhz。epld完成pci总线接口电路的设计和nat9914接口芯片的控制,通过驱动芯片75160和75162完成gp-ib的接口通信。在此重点介绍epld内部电路设计。
图1 gp-ib接口电路结构框图
epld内部电路设计
pci局部总线很复杂,pci局部总线也在不断的发展中,现在已经衍生有cpci、pci express等总线标准。pci局部总线定义的功能很强大,当然如果需要将所有的pci局部总线的要求都能实现,购买pci局部总线的专用集成电路或ip核是最佳选择,因为pci局部总线的硬件设计过于庞大,全部实现有一定的难度。如果设备只是作为从设备,根据设计要求实现起来也不是很复杂,很多功能如仲裁、边界扫描及错误报告等功能就可以不用实现,甚至像奇偶校验、重试、突发传输等功能也可以不用实现。
根据gp-ib接口卡的功能,本文主要介绍在epld中实现pci总线接口电路的设计,并且能够正确操作gp-ib总线协议的控制芯片nat9914。epld的容量较小,我们采用xilinx公司的xc95288xl器件,只有288个宏单元,经过设计优化,最终成功装载。其实现原理框图如图2所示。
图2 epld内部电路框图
pci接口信号设计
设计pci接口信号很关键,pci总线规范定义的信号很多,在设计过程中必须有所取舍。下面按照pci总线规范的要求,根据设计电路的实际需求,设计如下接口信号:
rst : 上电复位信号,低电平有效。
clk : 时钟信号33mhz。
cbe[3..0] : 命令、字节使能信号。
ad[31..0] : 地址、数据多路复用的三态输入/输出信号。
frame : 帧周期信号,由主设备驱动,表示当前主设备一次交易的开始和持续时间。
irdy : 主设备准备好信号。
trdy : 从设备数据准备好信号。
devsel : 从设备被选中响应信号。
inta :从设备中断请求,低有效。
在设计时舍弃的信号有:par、stop、perr、serr、req、gnt。
gp-ib接口芯片控制信号设计
根据电路要求,设计如下接口信号,用来完成对nat9914和驱动芯片的控制,实现pci到gp-ib接口的转换。
target_clk: gp-ib接口控制芯片时钟,本方案设计为33mhz时钟的8分频。
target_rst:复位脉冲信号,低电平复位。
target_ce: 读写使能,高电平为读,低电平为写。
target_sc:标识gp-ib接口卡作为控者,还是作为普通器件。
target_we:写使能控制,低电平有效。
target_int_l:控制芯片中断输出,低电平有效。
target_abus:有效地址输出。
target_dbus:三态数据输入/输出总线。
电路优化设计
图2给出了pci总线接口电路的原理框图,由于epld容量较小,在设计时必须尽量减少不必要的电路设计,并对电路设计进行优化,下面给出各电路模块的功能设计:
译码电路
pci总线命令编码方式有12种,在本设计中我们只实现配置读、配置写、存储器读和存储器写四种编码交易类型。译码功能电路工作在地址周期,包括命令译码、地址译码和命令/地址锁存等三项功能。在frame变低的第一个时钟周期内,译码电路对来自主设备的命令cbe[3..0]进行译码,并向状态机控制模块发出是配置读写还是存储器读写命令,同时锁存地址。
配置寄存器
在pci规范中,配置空间是一个容量为256字节并具有特定记录结构或模型的地址空间,该空间又分为头标区和设备有关区两部分。在配置寄存器中不用的寄存器当cpu读的时候,将默认为零。
重试
gp-ib控制芯片寄存器响应完全能够满足pci规范的要求,不需要进行重试,这部分功能不再实现。
奇偶校验
在bios中可以对奇偶校验进行屏蔽和开放,为了减少设计的复杂性,奇偶校验功能在epld中没有实现,在bios中进行了屏蔽。
nat9914接口控制电路
nat9914接口控制电路主要完成内部总线到外设的时序控制。gp-ib总线接口采用的是负逻辑电平设计,考虑到epld的容量