<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于接口芯片的PCI總線(xiàn)接口卡的設計

基于接口芯片的PCI總線(xiàn)接口卡的設計

作者: 時(shí)間:2012-02-11 來(lái)源:網(wǎng)絡(luò ) 收藏

1、引言

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

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

2、硬件設計

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

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

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

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

第三部分是PCI9030與ISA總線(xiàn)的接口。

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

3、EEPROM的配置

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

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

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

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

4、板卡調試

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

5、的編寫(xiě)

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

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

我們在開(kāi)發(fā)驅動(dòng)程序中采用的是前一種方法,其基本流程如下:

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

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

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

  最后,對向導產(chǎn)生的設備驅動(dòng)代碼框架中添加自己的代碼,編譯連接后就可以生成對設備進(jìn)行診斷的控制臺程序了。

6、結束語(yǔ)

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

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



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>