《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 業界動態 > PCI總線協議的FPGA實現及驅動設計

PCI總線協議的FPGA實現及驅動設計

2008-08-29
作者:曹 明 陳文正

  摘? 要: 采用FPGA技術,在ALTERA公司的FLEX6000系列芯片上實現了從設備模式PCI總線的簡化協議,并給出了Windows9x系統下的虛擬設備驅動程序,提供了與應用程序" title="應用程序">應用程序的接口。實現結果表明:該設計結構靈活,功能可靠,有利于與其它模塊實現單片集成應用。本系統已應用在數據采集和處理" title="采集和處理">采集和處理、圖像處理等方面。

  關鍵詞: PCI總線協議" title="總線協議">總線協議? 現場可編程門陣列? 虛擬設備驅動

?

  目前,許多公司都提出了新型的計算機高速總線,如Arapahoe總線標準和HyperTransport技術,但各協議互不兼容,沒有形成統一標準。作為傳統的通用局部總線,PCI總線仍然占據著主流個人電腦市場,具有頑強的生命力。

  現在市面上存在著各種PCI接口芯片,如AMCC公司的S5933,PLX的9080系列等。專用芯片可以實現完整的PCI主設備與從設備模式的接口功能,將復雜的PCI總線接口轉化為相對簡單的用戶接口,但系統結構受接口芯片的限制,不能靈活地設計目標系統,且成本較高。本文使用符合PCI電氣特性的FPGA芯片進行簡化的PCI接口邏輯設計,實現了33MHz、32位數據寬度的PCI從設備模塊的接口功能,節約了系統的邏輯資源,且可以將其它用戶邏輯集成在同一塊芯片上,降低了成本,增加了設計的靈活性。另外,還給出了Windows9x系統下的設備驅動程序,可以與應用程序接口,形成一個完整的系統。目前,本系統已經被印染企業應用在數據采集和處理等方面。

1 系統構成與功能描述

  系統的總體框圖如圖1所示。

?

  由圖1可見,系統的硬件平臺為一塊PCI卡。此卡的結構十分簡潔,主要由FPGA芯片、RAM芯片和輸出接口三部分組成。其中,FPGA芯片集成了PCI接口模塊和數據處理模塊。PCI接口模塊實現了33MHz工作時鐘、32位總線寬度的接口功能,支持I/O" title="I/O">I/O空間、內存空間及配置空間的讀寫和PCI中斷功能。由于簡化的PCI接口占用的邏輯資源較少,可以在同一塊芯片中集成其他用戶邏輯。作為一個應用實例,本文加入了一個數據處理模塊,對PCI接口傳送來的數據進行處理,通過片外的輸出接口輸出到下位機。RAM芯片為數據處理提供緩存功能。

2 從設備模式下的簡化PCI協議的實現

  為了實現PCI接口的基本功能,必須完成以下幾個模塊:

  (1)PCI配置空間設置。PCI協議支持三種地址空間:I/O空間、內存空間和配置空間。配置空間提供了支持PCI設備自動配置的機制,是必需的。

????(2)PCI從設備狀態機。PCI總線狀態機是具有PCI總線的計算機系統的狀態流,是由一個已知狀態到另一個狀態的條件、時序的描述。這是PCI接口設計中最基本也是最重要的部分。

????(3)地址譯碼和命令譯碼。地址譯碼用來確定PCI設備是否應當響應當前總線的操作;命令譯碼則用來指示PCI設備根據不同的總線命令作出相應的動作。

  本文采用ALTERA公司的Max+PlusII軟件平臺,硬件描述語言使用ALTERA HDL語言,也可以方便地轉換成VHDL或VerilogHDL語言。在此之前,先引入PCI總線信號的定義。

2.1 總線信號定義

  根據PCI總線協議2.2版,從設備模式下PCI接口至少包含47根引腳。圖2給出了按功能劃分的引腳分布,左邊是必需引腳,右邊是可選引腳。為簡化起見,本文采用了如下引腳,其他引腳均不使能或置為高阻態。

?

  (1)由系統提供的33MHz的同步時鐘信號CLK和復位信號RST#(#表示低電平有效);

  (2)關于數據傳輸的核心信號:32位地址/數據復用線AD[31:0]、總線命令/字節使能復用線C/BE[3:0]#和偶校驗信號PAR;

  (3)接口控制信號FRAME#、TRDY#、IRDY#、STOP#、

  DEVSEL#和IDSEL。其中,FRAME#為數據傳輸起止信號,TRDY#為主設備準備好信號,IRDY#為從設備準備好信號,STOP#為從設備停止請求信號,DEVSEL#為設備選擇信號,IDSEL為配置空間讀寫時的片選信號;

  (4)中斷引腳INTA#。

  為簡化PCI協議,本文只實現了最重要的總線命令,表1給出了所支持的總線命令對應的C/BE?眼3:0?演#編碼值。

?

2.2 配置空間設置

  配置空間大小為256字節,前64字節必需,記錄了PCI設備的基本信息,比較重要的有:

  (1)VendorID、DeviceID和Class Code域:分別表示設備的生產廠商、設備編號和類型;

  (2)Command和Status域:分別給出了對PCI設備的控制命令和當前狀態;

  (3)Base Adress Register域:指示此PCI設備按I/O方式還是內存方式進行讀寫以及需要的地址空間大小;

  (4)Interrupt Line和Interrupt Pin域:分別指明了設備使用的中斷號和中斷引腳。

  在對配置空間的訪問中,用AD?眼7:2?演尋址一個雙字DWORD。在本設計中,配置空間設置如表2所示,各值的具體含義請參閱文獻[1]。

?

?

2.3 簡化的從設備狀態機

  在PCI協議中,標準的從設備狀態機包含五種狀態,而且各狀態的跳轉條件比較復雜。本文在不違反PCI協議的前提下,簡化了從設備的狀態機,如圖3所示。

?

  圖3中,狀態轉移條件信號a、b、c定義如下:a代表配置空間訪問條件,b代表I/O空間或內存空間訪問條件,c代表總線傳輸開始條件。這三個條件的實現由后面的命令譯碼模塊給出。

  IDLE是系統的缺省狀態,表示總線當前空閑。通常,設備處在IDLE狀態時,要檢測來自PCI總線和后級設備的信號,以便設備作出合適的響應。設備處于S_DATA狀態時完成第一次數據傳輸,直接無條件跳到BACKOFF狀態。設備在BACKOFF狀態時進行多個數據傳輸,直至主設備斷開訪問。需要注意的是:任何對I/O空間、配置空間以及內存空間的突發傳輸的地址超過了設備映射地址的范圍時,從設備要在此狀態建立STOP信號,斷開訪問。當幀信號無效或主設備終止傳輸時,設備回到初始的IDLE狀態。BUS_BUSY狀態時總線忙,表示總線正在被其它設備使用。有兩條轉移路徑,若總線仍然被占用,則停留在BUS_BUSY狀態,否則返回空閑狀態IDLE。

2.4 地址譯碼和命令譯碼模塊

  地址譯碼模塊主要檢測PCI地址與本PCI卡的基地址是否匹配,可以通過AD?眼31:00?演信號線上的值與設置的基地址作比較判斷。如果PCI地址落在設置的基地址范圍內,則PCI卡響應當前的總線操作。

命令譯碼模塊指示PCI卡響應不同的總線命令,通過檢測C/BE?眼3:0?演#信號線上的值,與表1列出的總線命令作比較,完成命令譯碼。

3 Windows9x系統下驅動程序的設計

  對PCI設備而言,驅動程序提供了獲取PCI卡的配置空間信息、勾掛PCI中斷、總線數據傳輸等功能。本文介紹使用Numega公司的VtoolsD軟件進行驅動設計的方法。

3.1 尋找PCI卡并讀取配置空間信息

  配置空間包含了系統初始化PCI設備所必需的信息,首先需要遍歷整個硬件樹結構來尋找指定的PCI設備。對于每一個設備,比較其廠商號(Vendor ID)和設備編號(Device ID),如果與設計的PCI卡的信息匹配,則讀取它的配置空間信息。

3.2 I/O方式下的讀寫操作

  I/O方式下的讀寫比較簡單。在得到PCI設備基地址信息后,通過C++語言中的端口讀寫函數inpd和outpd即可完成。舉例如下:

  Temp=_inpd(gBaseAddresses);// Temp中得到讀出的數據

  _outpd(gBaseAddresses,Data); //向基地址寫入數據

  其中,gBaseAddresses為基地址值,Data為寫操作時的數據。

3.3 內存方式下的讀寫

  對于內存方式下的讀寫,一個重要問題就是地址的映射。因為硬件設備讀寫的是物理內存,但應用程序讀寫的是虛擬地址,所以存在著將物理內存地址映射到用戶程序線性地址的問題。

  映射功能通過調用VtoolsD軟件的標準庫函數完成。根據給定的物理地址和所要求的空間大小,在系統內存中分配相應空間。首先,用PageReserve函數分配當前保留頁的線性地址空間,再利用PageCommitPhys函數的服務對開始的線性地址空間分配相應的物理地址空間。程序如下:

  ULONG nPages=_NPAGES_(PhysAddress,SizeInBytes);

????Linear=PageReserve(PR_SYSTEM,nPages,PR_FIXED);

????PageCommitPhys(PAGENUM(Linear),nPages,PAGENUM?????? (PhysAddress),PC_INCR | PC_WRITEABLE | PC_USER );

??? LinPageLock(PAGENUM(Linear),nPages,0);

??? 其中,PhysAddress為給定的物理地址,SizeInBytes為需要的空間大小。

  建立了物理RAM到系統內存的映射后,就可以利用C++語言中的文件操作基類CFile類完成數據的讀寫。首先使用CFile類的成員函數Open打開文件,為保證數據讀寫的準確無誤,必須使用二進制方式打開;接下來使用Read和Write成員函數進行文件讀寫;完畢后用Close成員函數關閉文件。

3.4 中斷的勾掛和處理

  首先在ON_DEVICE_INIT函數中完成中斷的初始化。即通過前面讀取的PCI設備的中斷號,使用VPICD_Virtualize_IRQ函數進行中斷勾掛,并調用VPICD_Physically_Unmask函數開中斷。

  RTCIRQHandle=VPICD_Virtualize_IRQ(&IRQdesc);

  VPICD_Physically_Unmask(RTCIRQHandle);

  然后在RTCInt_Handler函數中進行中斷處理,可以進行各種操作,例如向應用程序發送自定義的消息來通知中斷的發生。

3.5 與應用程序的通信

  一般地,應用程序通過CreateFile函數調用VxD驅動程序,得到一個VxD的文件句柄" title="句柄">句柄。使用如下的語句可以打開一個名為mydriver.VXD的文件,得到的句柄保存在hVxD中。

  hVxD=CreateFile(″\\.\mydriver.VXD″,0,0,0,CREATE-NEW,

?????????????????????????????????? FILE-FLAG-DELETE-ON-CLOSE,0);

  通過句柄hVxD和DeviceIoControl函數就可以與驅動程序進行數據傳輸。

本文采用ALTERA公司的FLEX6000系列芯片,型號為EPF6016TC144-3,實現了簡化的從設備模式PCI協議,并在Windows9x系統下實現驅動程序的設計。整個系統工作良好。資源占用情況如下:可用I/O引腳113根,占用51根,占用率45%;可用邏輯單元數1320個,占用151個,占用率11%。

  簡化的PCI協議的實現占用較少的邏輯資源,可以靈活方便地進行功能添加和改進,同時可以在同一塊芯片中集成其他用戶模塊,實現不同功能,以降低成本。目前,本系統已經應用在數據采集和處理、圖像處理等方面。

?

參考文獻

1 PCI Local BUS specification production. Version Revision? 2.2. 1998

2 彭禮孝.虛擬設備驅動程序開發起步與進階.北京:人民郵電出版社,2000

3 趙雅興.FPGA原理、設計與應用.天津:天津大學出版社,1998

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲日本成人在线观看| 亚洲精品国产欧美| 国产日韩亚洲欧美精品| 在线观看日韩精品| 国产亚洲精品久久飘花| 亚洲精品欧美精品| 欧美大胆人体视频| 性久久久久久久久久久久| 欧美综合二区| 欧美日韩国产在线播放网站| 国产精品啊v在线| 翔田千里一区二区| 在线播放日韩专区| 亚洲久久在线| 国产一区二区三区在线观看视频| 亚洲日韩成人| 久久疯狂做爰流白浆xx| 亚洲国产精品一区二区尤物区| 欧美丝袜一区二区三区| 国产精品国产馆在线真实露脸| 欧美精品在线观看91| 国产亚洲免费的视频看| 91久久线看在观草草青青| 国产精品国产三级国产aⅴ入口| 香港成人在线视频| 亚洲第一在线综合网站| 美女国产一区| 国内精品久久久久影院优| 国产精品尤物福利片在线观看| 国产精品午夜在线观看| 亚洲精品中文字幕女同| 亚洲高清影视| 久久精品欧美| 欧美日本一区二区高清播放视频| 国产精品家庭影院| 久热re这里精品视频在线6| 欧美精品一区二区三区很污很色的| 亚洲成色777777在线观看影院| 国产精品扒开腿做爽爽爽视频| 欧美freesex交免费视频| 亚洲精品久久久久中文字幕欢迎你| 亚洲七七久久综合桃花剧情介绍| 欧美一区精品| 久久久久久综合网天天| 欧美三区美女| 国产乱码精品一区二区三| 欧美a一区二区| 亚洲精品视频在线| 欧美日韩黄色一区二区| 欧美日韩卡一卡二| 国产亚洲制服色| 亚洲欧美综合国产精品一区| 亚洲欧美成人一区二区在线电影| 国产精品永久入口久久久| 亚洲区一区二| 欧美v亚洲v综合ⅴ国产v| 亚洲最新中文字幕| 久久免费99精品久久久久久| 国产亚洲精品激情久久| 在线观看欧美激情| 久久综合狠狠| 亚洲影院污污.| 亚洲视屏在线播放| 亚洲你懂的在线视频| 欧美激情第五页| 99热免费精品| 欧美激情成人在线视频| 欧美日韩国产综合网| 国产精品羞羞答答| 一本一本久久a久久精品综合麻豆| 欧美在线视频观看免费网站| 午夜精品久久久久久99热软件| 国产伦精品一区二区| 亚洲国产91精品在线观看| 国产精品午夜视频| 国产一区二区三区在线观看免费视频| 亚洲午夜一二三区视频| 亚洲欧美国产毛片在线| 日韩一级大片在线| 亚洲黄色一区二区三区| 久久成人综合网| 久久综合网色—综合色88| 国产欧美精品| 亚洲日本中文字幕免费在线不卡| 国产亚洲成av人在线观看导航| 亚洲国产精品综合| 136国产福利精品导航网址| 国产性色一区二区| 久久狠狠久久综合桃花| 91久久香蕉国产日韩欧美9色| 国产精品入口麻豆原神| 欧美大片免费看| 欧美韩日一区二区| 欧美成人精品高清在线播放| 久久久久久自在自线| 国产一区二区精品久久99| 免费一级欧美在线大片| 亚洲麻豆一区| 蜜桃av噜噜一区| 国产一区二区三区高清| 亚洲精品国产精品国自产观看浪潮| 麻豆九一精品爱看视频在线观看免费| 国产精品亚洲成人| 欧美一级片久久久久久久| 欧美紧缚bdsm在线视频| 午夜一区二区三区不卡视频| 欧美激情一区二区| 激情久久久久久久久久久久久久久久| 久久精品国产第一区二区三区| 国产精品v日韩精品v欧美精品网站| 性xx色xx综合久久久xx| 老司机aⅴ在线精品导航| 亚洲一区尤物| 浪潮色综合久久天堂| 欧美夫妇交换俱乐部在线观看| 欧美久久在线| 亚洲午夜久久久久久久久电影院| 欧美激情中文字幕乱码免费| 国产一区二区三区不卡在线观看| 亚洲美女中出| 亚洲国产天堂网精品网站| 欧美国产日韩视频| 亚洲黄网站黄| 国产在线播放一区二区三区| 中国日韩欧美久久久久久久久| 欧美三日本三级少妇三2023| 国产精品久久久999| 欧美激情在线播放| 在线日韩电影| 欧美日韩免费网站| 国产日韩精品一区二区三区在线| 久久精品一区中文字幕| 久久精品日产第一区二区| 国产一区二区无遮挡| 免费一级欧美在线大片| 亚洲精品免费观看| 一区二区三区久久网| 国产欧美va欧美va香蕉在| 久久精品视频在线看| 亚洲国产精品专区久久| 国产精自产拍久久久久久蜜| 欧美全黄视频| 亚洲影音先锋| 亚洲最黄网站| 国产精品久久久久久久久久久久| 伊人激情综合| 免费观看一级特黄欧美大片| 欧美日韩精品免费在线观看视频| 亚洲激情社区| 欧美一区中文字幕| 亚洲一级网站| 一本久道综合久久精品| 国产有码一区二区| 亚洲欧美激情四射在线日| 欧美日韩免费一区二区三区| 一区二区三区欧美视频| 亚洲欧美久久久| 久久久精品性| 一区二区激情| 亚洲婷婷国产精品电影人久久| 欧美华人在线视频| 男人插女人欧美| 亚洲淫性视频| 韩国一区二区三区在线观看| 国产精品乱码人人做人人爱| 国产精品久久7| 午夜精彩国产免费不卡不顿大片| 欧美日韩另类丝袜其他| 国产精品国产三级国产专播精品人| 另类专区欧美制服同性| 欧美丰满高潮xxxx喷水动漫| 亚洲美女毛片| 牛牛影视久久网| 性欧美暴力猛交另类hd| 香蕉久久久久久久av网站| 亚洲一级二级在线| 久久精品国产精品亚洲精品| 亚洲国产日韩欧美在线图片| 欧美日韩裸体免费视频| 欧美日韩成人一区二区三区| 久久精品国产亚洲5555| 欧美国产先锋| 久久精品国产999大香线蕉| 国产精品av久久久久久麻豆网| 国产精品一区二区欧美| 精品96久久久久久中文字幕无| 欧美一区二区三区免费视| 亚洲欧美日韩在线观看a三区| 欧美不卡在线| 久久久亚洲国产天美传媒修理工| 99精品福利视频| 欧美日韩人人澡狠狠躁视频| 一区二区日韩| 狼人天天伊人久久| 韩国精品主播一区二区在线观看| 欧美99久久| 欧美成人三级在线| 欧美精品一区二区久久婷婷| 国内精品视频在线观看| 亚洲伦理在线观看| 亚洲国产va精品久久久不卡综合| 亚洲国产人成综合网站| 国产亚洲va综合人人澡精品| 国产资源精品在线观看| 免费成人在线视频网站| 一区二区在线视频观看| 亚洲综合色网站| 亚洲精品日本| …久久精品99久久香蕉国产| 欧美日韩一区在线观看| 久久精品国产亚洲高清剧情介绍| 亚洲视频免费观看| 欧美日韩亚洲一区三区| 亚洲激情成人在线| 亚洲影院色在线观看免费| 久久精品天堂| 国产综合久久久久久| 久久久久九九九九| 欧美成人综合网站| 激情成人综合网| 欧美午夜国产| 一本综合精品| 亚洲夜晚福利在线观看| 欧美一级片一区| 欧美影院午夜播放| 久久一二三国产| 老妇喷水一区二区三区| 欧美日本亚洲韩国国产| 免费不卡中文字幕视频| 国产亚洲成精品久久| 99热精品在线观看| 在线电影国产精品| 一区二区三区产品免费精品久久75| 亚洲天堂网站在线观看视频| 在线观看亚洲一区| 国产精品国产三级国产| 亚洲欧美日韩一区二区三区在线观看| 国产精品豆花视频| 一区二区三区四区五区视频| 在线欧美日韩| 最新成人在线| av成人手机在线| 久久伊人一区二区| 久久九九国产精品怡红院| 亚洲中无吗在线| 国产亚洲高清视频| 女人香蕉久久**毛片精品| 午夜一级在线看亚洲| 欧美久久久久免费| 国产午夜精品麻豆| 欧美sm重口味系列视频在线观看| 午夜精彩视频在线观看不卡| 国内精品国语自产拍在线观看| 最新日韩在线视频| 国产日韩精品视频一区二区三区| 久久久精彩视频| 国产精品久久久久三级| 亚洲日本va午夜在线影院| 亚洲小说欧美另类婷婷| 欧美激情亚洲精品| 国产一区激情| 欧美日本在线看| 亚洲欧美激情视频在线观看一区二区三区| 久久久水蜜桃| 国产精品一区久久久久| 亚洲天堂av在线免费观看| 久久久久久一区| 欧美片在线播放| 亚洲高清在线播放| 欧美一区二区视频网站| 欧美精品久久久久a| 欧美大片免费| 久久日韩精品| 国产精品二区在线观看| 国产精品婷婷午夜在线观看| 亚洲视频国产视频| 永久免费毛片在线播放不卡| 好看的日韩视频| 国产精品久久777777毛茸茸| 亚洲在线视频观看| 久久久九九九九| 国产精品99免视看9| 欧美电影在线免费观看网站| 国产精品看片资源| 亚洲国产精品久久久久婷婷老年| 欧美三级视频| 99精品欧美一区二区三区综合在线| 国产在线拍偷自揄拍精品| 这里只有精品视频| 性欧美暴力猛交另类hd| 性欧美暴力猛交69hd| 亚洲欧美国产制服动漫| 亚洲第一福利社区| 亚洲经典在线看| 久久综合国产精品台湾中文娱乐网| 国产精品丝袜xxxxxxx| 91久久精品国产91久久| 欧美国产日韩精品| 夜夜爽夜夜爽精品视频| 久久视频国产精品免费视频在线| 日韩视频国产视频| 一区二区三区国产| 国产一区二区三区在线免费观看| 欧美午夜女人视频在线| 欧美日韩爆操| 欧美韩日亚洲| 国产精品国产亚洲精品看不卡15| 免费在线亚洲| 国产精品毛片在线| 日韩视频国产视频| 美女日韩在线中文字幕| 玖玖综合伊人| 欧美理论在线播放| 欧美三级视频在线观看| 欧美黄色片免费观看| 欧美一区精品| 最新国产成人在线观看| 国内成人精品视频| 老司机免费视频一区二区| 国产精品日韩欧美一区二区三区| 欧美激情国产日韩精品一区18| 久久久国产精彩视频美女艺术照福利| 欧美日本高清视频| 亚洲精品一区二区在线| 欧美日韩一卡二卡| 久久一区二区三区超碰国产精品| 国产一区二区三区av电影| 久久成人一区二区|