基于FPGA的LPC-ISA总线桥接设计与实现--控制网



基于FPGA的LPC-ISA总线桥接设计与实现
企业:研祥智能科技股份有限公司 日期:2011-03-16
领域:工控机 点击数:3124

   研祥智能科技股份有限公司 陈志列

      摘要:介绍了一种基于FPGA的LPC-ISA总线桥接设计与实现的方法;LPC-ISA接口桥接单元包括LPC接口、ISA接口、地址寄存单元、等待时间存储单元、数据宽度判定单元以及数据缓冲单元几部分功能模块;LPC-ISA接口桥接单元通过接收访问地址的特征或接口传送的信号状态,在工业控制计算机领域实现了对8位和16位ISA设备的读写兼容,延长了现存的8位、16位ISA设备的使用寿命。

     关键字:LPC总线;ISA总线;现场可编程逻辑门阵列


   0 前言

    ISA(Industry Standard Architecture,工业标准体系结构)总线是IBM公司为PC/AT电脑而制定的总线标准,为16位体系结构,支持16位的I/O设备,数据传输率大约是16MB/S,也称为AT标准。LPC(Low Pin Count,低管脚数)总线是Intel公司定义的一个数据地址命令多路复用总线,工作频率为33MH。在工业计算机领域,LPC总线已经逐渐取代了ISA总线而成为新的接口[1]。

    目前在工业控制计算机领域,仍然有很多外围设备只提供ISA总线接口。由于其工作频率,数据地址总线宽度以及读写时序等等与LPC总线不同,因而外围设备需要进行总线接口转换后才能接入LPC总线正常工作。

    对于目前很多工控机主板已经不再提供ISA接口,普遍以LPC接口取代ISA接口的情况,业界开发出该两种接口的转接卡以能够使众多用户继续使用ISA设备。然而,现有的转接卡只支持8位的ISA设备,无法实现8位、16位ISA设备的同时兼容。如此,在实际应用中对现存的16位ISA设备就不能够继续使用,导致现有资源的浪费。

    本文提出一种基于FPGA(Field Programmable Gate Array,现场可编程门阵列)实现的LPC-ISA总线桥接设计方案,实现了对现有8位、16位ISA设备的兼容使用。

    1 系统设计

    FPGA作为专用集成电路(ASIC)领域中的一种半定制电路,可以解决定制电路的不足,又克服了原有可编程器件门电路数有限的缺点,具有设计周期最短、开发费用低、保密性强、体积小、重量轻、可靠性高等特点[2]。本系统主要由主设备、LPC总线、LPC-ISA接口桥接单元、ISA总线、ISA设备组成。其中LPC-ISA接口桥接单元采用XILINX公司的XC3S100E-4TQG144C。

    系统总体设计框图如图1所示。

     图1 系统总体设计框图

    主设备(如工业控制计算机)通过LPC总线与接口桥接单元连接,接口桥接单元的另一侧通过ISA总线与ISA设备连接。ISA设备可以是8位或16位I/O设备和存储器设备。主设备在取得总线的使用权后,通过LPC总线发起对ISA设备的访问。接口桥接单元根据LPC总线传送的地址特征,或根据LPC总线传送的地址特征和收到的两个总线传送的其他信息,确定传送的数据的宽度(8位或16位),读取LPC总线的数据,并通过ISA总线驱动ISA设备,从而完成8位或16位数据的写操作。

    2 硬件逻辑设计

     基于FPGA的LPC-ISA接口桥接单元主要包括LPC接口、ISA接口、地址寄存单元、等待时间存储单元、数据宽度判定单元以及数据缓冲单元几部分功能模块,如图2所示。

     图2 LPC-ISA接口桥接单元内部结构图

     其中:LPC接口和ISA接口,分别用于连接LPC总线和ISA总线;

    等待时间存储单元,用于接收并累加LPC总线时钟周期,在累加值达到设定的阈值时,输出该信息给数据宽度判断单元。

    数据宽度判断单元,根据等待时间存储单元输出的信息或根据等待时间存储单元输出的信息和16位片选信号的状态或高字节允许信号的状态,判断在读写周期所传送的数据宽度。

     地址寄存单元,用于暂存LPC接口传送的外设访问地址,并将访问地址的特征提供给数据宽度判断单元;
 
     数据缓冲单元,用于暂存LPC接口传送的8位或16位数据。

    主设备在LPC总线上发起读写周期,LPC-ISA接口桥接单元将LPC总线传输的数据解码,产生读写控制信号,其中访问地址信息暂时存入地址寄存单元,数据信息暂时存入数据缓冲单元。然后,接口桥接单元根据访问地址产生相应

    设备片选信号,并将地址、数据和控制信号驱动到ISA总线上。

    (1)读操作

    对于从ISA接口读取数据到LPC接口的读操作,数据宽度判断单元根据地址寄存单元的地址特征,判断在读操作周期所读数据的宽度。

     地址寄存单元先收到的访问地址为奇地址时,则接口桥接单元从ISA总线读取8位数据到数据缓冲单元,以备LPC总线在读操作周期读取到主设备。当地址寄存单元先收到的访问地址为偶地址时,数据宽度判断单元根据LPC总线读取的两个8位数据的等待时间,判断在读操作周期读取的数据宽度。

     如果该等待时间超过9个LPC时钟周期,则确定是8位读数据;反之,可以确定是16位读数据。接口桥接单元将数据读取至数据缓冲单元暂存,供LPC接口在读操作周期将数据读入主设备。

   (2)写操作

     对于写操作,数据宽度判断单元根据地址寄存单元的地址特征、LPC总线和ISA总线传送的信息,判断在写操作周期所写数据的宽度。

    其中,地址寄存单元收到的访问地址为奇地址时,数据宽度判断单元根据这一地址特征和ISA总线传送的无效的16位片选信号,则判断是8位数据的写操作,并将此判断信息输入给数据缓冲单元,接口桥接单元置高字节允许信号为有效状态,将数据缓冲单元的8位数据写入8位ISA设备。

    如果地址寄存单元收到的访问地址为偶地址,数据宽度判断单元根据这一地址特征和ISA总线传送的有效16位片选信号,判断是16位数据的写操作,并将此判断信息输入给数据缓冲单元,接口桥接单元置高字节允许信号为有效状态,将数据缓冲单元的16位数据写入16位ISA设备;否则,判断是8位数据的写操作,并将此判断信息输入给数据缓冲单元,接口桥接单元置高字节允许信号为无效状态,将数据缓冲单元的8位数据写入8位ISA设备。

    3 软件设计流程

   如图3所示,为LPC-ISA桥接单元的程序流程图。

图3 程序流程图
    (1)初始化
LPC接口、ISA接口初始化。

(2)判断进程是否开始运行

在以主设备、桥接单元和从设备构成的系统运行之初,判断接口之间是否有数据需要传送,若没有数据传送,进程处于等待状态直到进程开始;若有数据传送,说明进程还没完成。在当接口需要进行16位数据操作时,判断进程在完成高8位数据操作完成之后是否仍然处于运行状态。

(3)判断读/写进程
在该状态中,判断运行的进程是读进程还是写进程。若为读,读进程运行;相反,开始写进程。

(4)写进程
写进程实现向ISA设备写数据的操作。
在该状态中,只有当ISA端设备准备好接收数据,LPC接口才能开始向接口桥接单元写数据。之后,对LPC接口执行的两个8位写数据操作之间的等待时间进行判断。
在确认ISA端设备准备接收数据操作完成之后,接口桥接单元开始处理LPC接口传送的数据。接口桥接单元判断LPC接口传送给ISA接口的两个8位数据之间的等待时间,以确定是8位数据的写操作还是16位数据的写操作。如果该等待时间小于9个LPC时钟周期,则接口桥接单元确认传送的数据宽度是16位,当前执行的操作是对16位ISA设备的写数据操作;相反,返回到进程是否开始运行。

(5)运行ISA接口的写进程。
在该状态中,若LPC接口传送过来的是偶地址,并且ISA设备收到偶地址后没有向接口桥接单元传送有效16位片选信号,则传送的数据宽度为8位,当前执行是对8位ISA设备的写数据操作。
若LPC接口传送过来的是奇地址,并且ISA设备收到奇地址后没有向接口桥接单元传送有效16位片选信号,则LPC接口侧主设备将总线高字节允许信号置成有效状态,对8位ISA设备执行写数据操作。
若LPC接口传送过来的是偶地址,并且ISA设备收到偶地址后向接口桥接单元传送了有效16位片选信号以及连续两个8位数据之间的等待时间小于9个LPC时钟周期,则接口桥接单元判定传送的数据宽度为16位,LPC接口侧主设备收到16位使能信号后,将总线高字节允许信号置成有效状态,执行对16位ISA设备的写数据操作。

(6)判断ISA接口的写进程完成状态
如果ISA接口的写进程已经完成,回到初始化状态;否则,考察LPC接口数据传送的状态,确定是否结束进程。
该状态中,如果LPC接口传送的两个8位写数据之间的等待时间大于60个LPC时钟周期,则接口桥接单元确定此写进程已经结束,主设备开始对ISA从设备执行下一个写操作;否则,表明此写进程尚未结束,接口桥接单元继续未完成的ISA接口写进程。
以上是接口桥接单元实现ISA接口写进程的程序流程图,以下是接口桥接单元实现LPC接口读进程的程序流程图。

(7)读进程
读进程中包含从ISA接口读取数据到LPC接口的操作,该读进程实现主设备从ISA接口读取数据到LPC接口的操作。
首先,判断所读取数据的宽度。如果数据是8位,从LPC接口读出存储的8位数据;否则,判断是否读取16位数据的高8位。

(8)判断LPC接口数据传送的状态

考察LPC接口数据传送的状态,确定是否结束进程。
如果LPC接口传送的两个8位写数据之间的等待时间大于60个LPC时钟周期,则接口桥接单元确定此读进程已经结束,回到起始状态;相反,表明此读进程尚未结束,接口桥接单元继续未完成的LPC接口读进程。

(9)判断是否从LPC接口读出高8位数据
判断从LPC接口读出高8位数据后,继续读进程。相反,从LPC接口读取低8位数据。若传送的数据宽度为16位,则在读取高8位数据后,在下一个读操作周期从LPC接口读取低8位数据。
紧接着,考察LPC接口16位数据的连续两个8位数据读操作之间的状态,确定是否结束进程。如果LPC接口传送的16位数据中连续两个8位数据读操作之间的等待时间大于60个LPC时钟周期,则接口桥接单元确定LPC针对接口的读进程已经结束,回到起始状态。开始执行LPC接口的下一个数据访问操作;否则,表明此读进程尚未结束,接口桥接单元继续未完成的针对LPC接口的读进程。

   4 验证分析

   LPC总线时序分析:LPC总线传输需要的信号有LCLK时钟、数据地址命令复用线LPC_AD(0:3)、串行中断请求信号SERIRQ、起始控制信号LFRAME#、复位信号LRESET、从信号申请DMA传输或总线主控信号LDRQ[3]。
如图4所示,为LPC接口的时序仿真图。

(a)发送16位数据到I/O端口
(b)连续发送两个8位数据到端口

(c)CPU访问16位I/O端口

(d)连续两次访问同一个8位I/O端口
图4 LPC端口时序仿真
由以上时序图,可得出连续两次8位数据传输和一次16位数据传输是有区别的,中间会有35个CLK等待周期,在实际的程序设计中我们以60个CLK为判断条件。本方案基于FPGA的LPC-ISA总线桥接设计,通过接收访问地址的特征或接口传送的信号状态,在工业控制计算机领域实现对8位和16位ISA设备的读写兼容,延长了现存的8位、16位ISA设备的使用寿命。

 5 结束语

  工业控制计算机自上世纪90年代起至今已经广泛应用到国民生产的众多领域,如工业控制、勘探采集、医疗化工、金融安防等等,在经济活动中默默发挥着它的重要作用。十二五规划发展中,中国步入一个转型时期,经济、工业等多方面处于一个有待升级的局面。提高产能、调整产业结构、工业设备的更新换代等都将面临一个过渡调整的阶段,不可否定,在工业控制计算机领域同样也面临着新、老产品同时存在、彼此兼容的问题。本文对LPC-ISA总线桥接方案的研究,正是在此背景下,对实际生产问题的客观体现,具有良好而实际的应用价值。

  参考文献

【1】肖金球.基于 LPC 总线的FPGA 高速初始化配置系统设计[J].计算机工程,2005,31(13):176-178
【2】Ciletti M D. Verilog-HDL 高级数字设计[M]. 北京:电子工业出版社,
2005.
【3】Intel_ Low Pin Count (LPC) Interface Specification. www.intel.com,2002-08

 

  • 在线反馈
1.我有以下需求:



2.详细的需求:
姓名:
单位:
电话:
邮件: