色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          關(guān) 閉

          新聞中心

          EEPW首頁(yè) > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 基于接口芯片PCI 9030的PCI總線接口卡的設(shè)計(jì)

          基于接口芯片PCI 9030的PCI總線接口卡的設(shè)計(jì)

          作者: 時(shí)間:2007-07-24 來(lái)源:網(wǎng)絡(luò) 收藏
          摘要:介紹了如何利用制作卡,實(shí)現(xiàn)由ISA接口向接口的轉(zhuǎn)換。文中從實(shí)例出發(fā),詳細(xì)闡述了接口卡的硬件設(shè)計(jì)、EEPROM的配置、驅(qū)動(dòng)程序的編寫(xiě)等方面的內(nèi)容。
          關(guān)鍵詞:PCI總線;PCI;寄存器;驅(qū)動(dòng)程序

          1、引言

          作為對(duì)PCI總線在儀器領(lǐng)域的擴(kuò)展,PXI總線由于具有高性能、低價(jià)位等特點(diǎn),使其在數(shù)據(jù)采集、工業(yè)自動(dòng)化系統(tǒng)、計(jì)算機(jī)機(jī)械觀測(cè)系統(tǒng)和圖像處理等方面獲得了廣泛應(yīng)用。

          但是PXI總線協(xié)議十分復(fù)雜,其接口的實(shí)現(xiàn)比ISA困難得多,直接為它設(shè)計(jì)相匹配的數(shù)字邏輯控制電路難度很大。特別是對(duì)于那些沒(méi)有PCI板卡設(shè)計(jì)經(jīng)驗(yàn)的人來(lái)說(shuō),要想直接設(shè)計(jì)出能滿足要求的PXI模塊幾乎是不可能的事。而PXI總線的電氣規(guī)范大部份跟PCI相同,只是增加了一些儀器特性。基于以上考慮,我們決定通過(guò)設(shè)計(jì)一個(gè)PCI接口卡來(lái)系統(tǒng)地了解利用PCI 開(kāi)發(fā)PXI模塊的過(guò)程和方法。

          2、硬件設(shè)計(jì)

          目前實(shí)現(xiàn) PCI 接口的方法主要是采用可編程邏輯器件或采用專用。為降低難度,縮短開(kāi)發(fā)時(shí)間 ,我們決定采用專用接口芯片來(lái)進(jìn)行接口的開(kāi)發(fā)。因?yàn)槲覀兊淖罱K目的是開(kāi)發(fā)PXI模塊,所以我們選用了符合PXI性能要求的接口芯片PCI 9030。PCI 9030 是 PLX 公司開(kāi)發(fā)的一種為擴(kuò)展適配卡推出的高性能目標(biāo)接口芯片,其符合 PCI2.2 規(guī)范,3.3V 核心電壓,低功耗,176 引腳 PQFP 或180 引腳 BGA 封裝,本地總線可以設(shè)置為 8 位、16 位、32 位復(fù)用和非復(fù)用模式。

          在我們?cè)瓉?lái)的性能測(cè)試系統(tǒng)中,功率計(jì)模塊是基于ISA總線的插件,端口地址是ox100-ox107,數(shù)據(jù)總線寬度是8位,具有輸入輸出功能。我們要設(shè)計(jì)的接口卡所實(shí)現(xiàn)的功能相當(dāng)于一個(gè)從ISA總線到PCI總線的轉(zhuǎn)接卡。PCI 9030作為一種橋接芯片,提供了PCI總線、EEPROM和ISA總線三個(gè)接口,下面分別介紹各部分的接口電路:

          第一部分是PCI9030與PCI總線的接口。這些信號(hào)包括地址數(shù)據(jù)復(fù)用信號(hào)AD[31:0]、總線命令和字節(jié)使能信號(hào)C/BE[3:0]、奇偶校驗(yàn)信號(hào)(PAR), 幀周期信號(hào)(FRAME#)、主設(shè)備準(zhǔn)備好信號(hào)(IRDY#), 從設(shè)備準(zhǔn)備好信號(hào)(TRDY#),停止數(shù)據(jù)傳送信號(hào)(STOP#),初始化設(shè)備選擇信號(hào)(IDSEL), 設(shè)備選擇信號(hào)(DEVSEL#)、數(shù)據(jù)奇偶校驗(yàn)錯(cuò)誤報(bào)告信號(hào)(PERR#)、系統(tǒng)錯(cuò)誤報(bào)告信號(hào)(SERR#)、時(shí)鐘輸入信號(hào)(CLK),復(fù)位信號(hào)(RST#)、中斷信號(hào)(INTA#)等。電路連接中,把兩邊對(duì)應(yīng)的管腳相連就行,中間不需要用電阻隔離。

          第二部分是PCI9030與EEPROM的接口。EEPROM選用NATIONAL公司的NM93CS66L;它是一個(gè)4K的低電壓串行存儲(chǔ)器,用來(lái)存儲(chǔ)PCI9030的配置信息并在芯片復(fù)位時(shí)進(jìn)行加載,從而使PCI板卡具有即插即用的功能。PCI9030有四根信號(hào)線用于與EEPROM的連接:EESK, EEDO, EEDI和EECS。

          PCI9030與EEPROM的電路連接如圖1所示:

          圖1

          第三部分是PCI9030與ISA總線的接口。

          ISA總線功率計(jì)模塊的主要信號(hào)只涉及到I/0,且為8位寬的數(shù)據(jù)總線,數(shù)據(jù)傳輸只用到端口讀寫(xiě)信號(hào)IORD#和IOWR#,用A0-A9作為地址譯碼。在接口芯片的本地端中我們采用非復(fù)用模式,地址和數(shù)據(jù)總線都是8位,所以只需選擇LA2、LBE0和LBE1進(jìn)行地址譯碼就可以了。具體的電路連接見(jiàn)下表:

          ISA端

          PCI9030本地端

          功能描述

          A0

          LBE0#

          用作本地地址LA0

          A1

          LBE1#

          用作本地地址LA1

          A2

          LA2

          本地地址

          A3

          BLAST#

          突發(fā)持續(xù)

          A4

          ADS#

          本地地址選通

          A5

          READY#

          本地準(zhǔn)備好輸入

          A6

          CS1#

          片選1

          IORD#

          RD#

          讀選通

          IOWR#

          WR#

          寫(xiě)選通

          AEN

          LW/R#

          寫(xiě)/讀控制

          3、EEPROM的配置

          PCI總線能實(shí)現(xiàn)“即插即用”是因?yàn)樗哂幸粋€(gè)配置空間。當(dāng)計(jì)算機(jī)啟動(dòng)時(shí),BIOS會(huì)對(duì)每個(gè)PCI卡的配置空間進(jìn)行訪問(wèn),即自動(dòng)加載EEPROM內(nèi)容來(lái)獲取各個(gè)PCI卡的配置信息,并根據(jù)這些信息進(jìn)行資源分配。配置空間是PCI所特有的一個(gè)空間,所有的PCI設(shè)備必須提供配置空間。

          對(duì)EEPROM的配置要根據(jù)具體的硬件設(shè)備來(lái)進(jìn)行,其配置的正確與否是硬件設(shè)備能否正常工作的關(guān)鍵。下面以我所做的接口卡的串行EEPROM內(nèi)容為例進(jìn)行介紹。

          首先介紹PCI配置寄存器的配置方法。主要是填寫(xiě)器件ID號(hào)、供應(yīng)商ID號(hào)、類碼、子系統(tǒng)ID號(hào)和子系統(tǒng)供應(yīng)商ID號(hào)等。對(duì)于PCI9030,其器件ID號(hào)為9030, 供應(yīng)商ID號(hào)為lOB5 ,子系統(tǒng)ID號(hào)為9030,子系統(tǒng)供應(yīng)ID號(hào)為10B5,類碼號(hào)為0680,表示其為橋設(shè)備中的其它橋設(shè)備類。另外,由于使用到中斷INTA#,所以在中斷寄存器中要將其值設(shè)為0100。

          其次介紹本地配置寄存器的配置方法。PCI9030本質(zhì)上是一個(gè)橋設(shè)備,它的作用是把對(duì)某一段PCI總線地址空間的各種操作(包括讀、寫(xiě)等)轉(zhuǎn)換為相應(yīng)的本地地址總線的操作。由于在接口卡的本地總線中只用到I/O地址空間,所以我們只需對(duì)本地地址空間1的相關(guān)寄存器進(jìn)行配置就行了。本地空間1范圍寄存器的值為oxFFFFFFF9,表示I/O空間大小為8個(gè)字節(jié), bit0為1表示此空間被映射為I/O空間;本地空間1基地址寄存器的值為ox00000101,表示空間1的基地址為ox100, bit0為1表示空間1使能;本地空間1描述寄存器的值為ox00000022,表示本地空間1的數(shù)據(jù)總線寬度為8位。本地片選寄存器1的值是ox00000105,表示當(dāng)本地地址落在ox100-ox107內(nèi)時(shí),片選信號(hào)CS1#有效以用來(lái)選擇本地總線上的外圍設(shè)備。對(duì)于其它值的含義可參考PCI9030的數(shù)據(jù)手冊(cè),這里就不再一一介紹。圖2是PLXmon界面下EEPROM的配置窗口。

          圖2

          4、板卡調(diào)試

          板卡做好后,就可以插入計(jì)算機(jī)的PCI插槽進(jìn)行調(diào)試。如果硬件電路設(shè)計(jì)正確,在自檢過(guò)程中,可以在屏幕上看到系統(tǒng)查找到的PCI設(shè)備,并且顯示出設(shè)備的DID和VID等相關(guān)信息。在系統(tǒng)正常啟動(dòng)后,會(huì)提示“發(fā)現(xiàn)新硬件”,并要求用戶安裝相應(yīng)的驅(qū)動(dòng)程序,跳過(guò)以后就可以配置EEPROM進(jìn)而開(kāi)始調(diào)試。對(duì)EEPROM的編程有兩種方法:一是先用專門的燒錄器把數(shù)據(jù)下載到EEPROM再插入板卡中,這種方法修改起來(lái)比較麻煩;二是用專用的軟件在線寫(xiě),如PLX公司提供的專用調(diào)試軟件PLXmon。PLXmon具有以下功能:PCI總線的探測(cè)與選擇;配置寄存器的檢查和修改;內(nèi)存空間的顯示、修改和填充;EEPROM內(nèi)容的讀寫(xiě)等。利用這個(gè)工具,我們可以隨時(shí)對(duì)EEPROM的內(nèi)容進(jìn)行在線修改,大大提高了效率。值得注意的是每次修改完EEPROM都要對(duì)系統(tǒng)進(jìn)行重啟,使PCI配置寄存器和本地空間配置寄存器能夠重新加載新的值。

          5、驅(qū)動(dòng)程序的編寫(xiě)

          在板卡調(diào)試完成后,需要編寫(xiě)驅(qū)動(dòng)程序。驅(qū)動(dòng)程序的開(kāi)發(fā)工具很多,但是多數(shù)需要了解操作系統(tǒng)的核心工作機(jī)制,難度比較大。經(jīng)過(guò)比較,我們采用了Jungo公司的WinDriver進(jìn)行驅(qū)動(dòng)程序的開(kāi)發(fā)。利用WinDriver我們不必熟悉操作系統(tǒng)的內(nèi)核知識(shí)就可以快速開(kāi)發(fā)出驅(qū)動(dòng)程序,它對(duì)于硬件調(diào)試也是一個(gè)很好的幫助工具。

          用WinDriver開(kāi)發(fā)PCI設(shè)備驅(qū)動(dòng)程序一般有兩種方法:一種是使用向?qū)?Driver Wizard), Driver Wizard能夠自動(dòng)生成驅(qū)動(dòng)程序的框架代碼,我們只需修改代碼,加入定制的功能,再在用戶態(tài)執(zhí)行和調(diào)試代碼就行;另一種是直接在應(yīng)用程序中調(diào)用WinDriver的API函數(shù)。

          我們?cè)陂_(kāi)發(fā)驅(qū)動(dòng)程序中采用的是前一種方法,其基本流程如下:

          a. 打開(kāi)Driver Wizard,在Card Information的設(shè)備列表中選中自己的設(shè)備,如圖3,點(diǎn)擊“Generate .INF file”生成安裝信息文件;

          圖3

          b. 點(diǎn)擊“下一步”,進(jìn)入WinDriver 資源定義與測(cè)試界面中,如圖4, 調(diào)試列出的I/O、內(nèi)存等資源,并定義必要的工作寄存器,如PCI卡上的一些配置寄存器;

          圖4

          c. 點(diǎn)擊“Generate Code",選擇VC編譯器作為自己的開(kāi)發(fā)語(yǔ)言環(huán)境,此時(shí)將生成針對(duì)硬件設(shè)備的文件,包括代碼文件、說(shuō)明文件以及適用于VC編譯器的項(xiàng)目文件。

          最后,對(duì)向?qū)Мa(chǎn)生的設(shè)備驅(qū)動(dòng)代碼框架中添加自己的代碼,編譯連接后就可以生成對(duì)設(shè)備進(jìn)行診斷的控制臺(tái)程序了。

          6、結(jié)束語(yǔ)

          本文作者創(chuàng)新點(diǎn):在以往的接口卡設(shè)計(jì)中,對(duì)于實(shí)現(xiàn)ISA總線向PCI總線轉(zhuǎn)換的方法都是采用帶ISA接口的接口芯片,如PCI9052,這可以大大簡(jiǎn)化開(kāi)發(fā)PCI設(shè)備的過(guò)程。由于課題需要,我們選用了一種不帶ISA接口的接口芯片-----PCI9030制作了一個(gè)PCI接口卡。經(jīng)反復(fù)調(diào)試,該接口電路能夠順利地完成數(shù)據(jù)傳輸,已經(jīng)成功地實(shí)現(xiàn)PCI總線與外設(shè)的連接,這一方面驗(yàn)證了用專用接口芯片實(shí)現(xiàn)PCI在技術(shù)上的可行性,另一方面也為下一步開(kāi)發(fā)PXI模塊打下良好基礎(chǔ)。

          同時(shí),本文中對(duì)接口卡的硬件電路連接、EEPROM的配置、驅(qū)動(dòng)程序的編寫(xiě)等方面都作了比較詳細(xì)的介紹,這對(duì)于那些初次接觸PCI總線開(kāi)發(fā)的人有一定的指導(dǎo)意義。

          參考文獻(xiàn)

          [1] PCI Special Interest Group. PCI Local Bus Specification, Rev.2.2, 2000

          [2] PLX Technology. PCI 9030 Data Book, Version 1.4, 2002

          [3] 李貴山、陳金鵬. PCI局部總線及其應(yīng)用. 西安電子科技大學(xué)出版社, 2003

          [4] 湯淵清等. 基于WinDriver實(shí)現(xiàn)對(duì)PCI數(shù)采卡的快速檢驗(yàn). 微計(jì)算機(jī)信息(測(cè)控自動(dòng)化), 2004.20(6)

          [5]王胡艦等. 利用接口芯片PCI9052制作PCI卡詳解. 工業(yè)控制計(jì)算機(jī),2004.12



          關(guān)鍵詞: PCI 9030 接口芯片 總線接口

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉