研祥智能科技股份有限公司 陳志列
摘要:介紹了一種基于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