《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于FPGA的PCI總線串口卡設計
基于FPGA的PCI總線串口卡設計
來源:電子技術應用2010年第8期
高曉青, 楊瑞峰
中北大學 信息與通信工程學院, 山西 太原030051
摘要: 為了方便外部設備與計算機進行串口通信,提出一種基于FPGA的PCI總線串口卡設計。利用Altera公司的FPGA芯片EP1C6SQ240實現了串口和PCI總線的連接。介紹了用FPGA實現PCI接口、UART的方法,將PCI接口、UART的核心功能集中在FPGA上,使整個設計緊湊、小巧。該設計符合PCI 2.2規范,傳輸速率高,可廣泛應用于各類測試設備、工廠自動化、有線通信等領域。
中圖分類號: TP336
文獻標識碼: A
文章編號: 0258-7998(2010)08-0134-04
Design of PCI bus serial port card based on FPGA
GAO Xiao Qing, YANG Rui Feng
School of Information and Communication Engineering, North University of China, Taiyuan 030051, China
Abstract: In order to facilitate the serial communication of external devices and computers, a design of serial port card of PCI bus based on FPGA is presented in the paper. The serial port and PCI bus are connected by the FPGA chip EP1C6SQ240 of Altera Corporation. The introduced a method of design the PCI interface, UART in the same FPGA. FPGA is used to embed the core function of PCI interface and UART into it,so that the whole design is compact. The design is up to PCI Rev.2.2. And the serial port’s transmission rate is very high. Therefore, it can widely be applied in such fields as test equipments, shop automation,wire-line communication, etc.
Key words : PCI bus;FPGA;serial ports;UART;WinDriver

    隨著計算機測試技術的飛速發展,越來越多的外部設備通過串口與計算機進行通信,實現信息共享以及設備的集中控制和管理。利用串口進行通信具有結構簡單、傳輸距離遠、成本低廉等優點,被廣泛應用于各個領域[1]。同時,PCI(Peripheral Component Interconnect)總線是一種高性能32/64位局部總線,最大數據傳輸速率為132 Mb/s,可同時支持多組外設,數據吞吐量大,是目前應用最廣泛、最流行的一種高速同步總線[2]。因此,利用PCI總線實現上位機與外部設備的串口通信,可以提高通信能力。
 由于大部分I/O 設備沒有PCI總線功能,要實現設備與PCI總線的連接,需要PCI接口芯片、通用異步收發器UART(Universal Asynchronous Receiver Transmitter)等。而目前開發PCI總線與外部設備的串口通信大體上有兩種方式:(1)使用專用的芯片,如:PCI專用接口芯片S5920、S5933等;UART專用芯片8250、8251、16450、16550等。使用廠家提供的專用接口芯片,用戶可能只使用到它的部分功能,會造成一定的資源浪費,而且專用芯片價格高。(2)使用可編程器件FPGA。使用FPGA較使用專用芯片具有以下優點:一方面用戶可以根據需要進行設計,不會浪費資源;另一方面可以將PCI接口、UART都做在一片FPGA內,這樣就不需要外接專門的芯片,簡化了電路、縮小了體積、提高了系統的可靠性。
1系統硬件設計
 本設計中選用Altera公司的FPGA芯片EP1C6SQ240作為核心器件,完成PCI接口以及UART的設計,實現PCI總線與串口的連接。選用美信公司的MAX490芯片作為電平轉換電路。系統的硬件連接框圖如圖1所示。

 數據傳輸過程:上位機通過PCI總線發送并行數據到UART的數據緩存器中,然后數據經UART的數據緩存器進入UART的移位寄存器進行并串轉換后,通過串口傳到下位機。反之,下位機通過串口將數據傳送到UART的移位寄存器中,進行串并轉換,然后進入UART的數據緩存器中,最后傳到上位機。
 設計中采用,傳輸距離長、抗干擾能力強的RS422串口。但是規定RS422:邏輯1的電平為-6 V~-2 V;邏輯0的電平為+2 V~+6 V。而FPGA的I/O電平一般為0~3.3 V,二者之間的電平不兼容。為了使二者之間的供電電壓保持一致,必須加入電平轉換電路。為此選用美信公司的MAX490芯片來實現二者之間的電平轉換,其電路原理圖如圖2所示。

1.1  PCI總線接口
 PCI總線接口的功能是將一個不支持 PCI 協議的后端設備接口到PCI 總線上。為了實現PCI總線接口的基本功能,必須完成如下模塊的設計:PCI空間配置模塊、偶校驗模塊、地址譯碼和命令譯碼模塊、設備狀態機模塊等。PCI總線接口原理框圖如圖3所示。

1.1.1 PCI空間配置模塊
 PCI協議支持3種地址空間:I/O空間、內存空間和配置空間。配置空間是PCI所特有的一種空間,其大小為256 B,前64 B是必需的,記錄了PCI串口設備的基本信息。PCI設備的一些主要的信息如下:
 (1) VendorID、DeviceID:分別表示設備的生產廠商和設備編號。
 (2) Command:命令寄存器,包含設備控制位,包括允許存儲器讀寫響應等。
 (3) Status:狀態寄存器,記錄PCI總線的相關事件信息。
 (4) Base Adress Register:基地址寄存器,指示此PCI設備按I/O方式還是按內存方式進行讀寫以及需要的地址空間大小。
 (5) Interrupt Line、Interrupt Pin:為設備使用的中斷號和中斷引腳。
1.1.2 偶校驗模塊
 PCI總線的偶校驗用于檢驗數據傳輸是否正確。在PCI總線上,利用偶校驗模塊檢查每次傳輸中主設備是否正確地尋址到目標設備,以及它們之間的數據是否正確地傳輸。
1.1.3 地址譯碼和命令譯碼模塊
 地址譯碼模塊主要用于檢測地址與此PCI串口設備的基地址是否匹配,如果匹配,則PCI串口設備響應當前的總線操作。
 命令譯碼模塊表示PCI串口設備響應不同的總線命令,通過檢測PCI-cbe[3:0]信號線上的值,完成命令譯碼。
1.1.4 設備狀態機模塊
 PCI總線接口電路是時序復雜的接口電路,它的復雜性由PCI總線操作的多樣性決定。根據PCI的總線操作類型和總線操作時序關系,在這里抽象出一種簡潔明了,符合總線時序、更易于硬件描述語言實現的狀態機??偩€接口狀態機示意圖如圖4所示。狀態機的設計是整個設計的核心部分,利用該狀態機可以完成配置寄存器、存儲器、I/O的讀寫操作。

 狀態機包括4個狀態:空閑(idle)狀態、配置讀寫(con)狀態、存儲器或I/O讀寫(rw)狀態、傳輸中止(backoff)狀態。系統復位后,狀態機轉入空閑狀態,在空閑狀態中采樣總線,并根據總線的變化來決定狀態機即將轉入的狀態。如果此時命令總線上是配置寄存器讀寫命令,判斷PCI-irdy信號是否有效來決定下一可能的狀態。如果信號無效,則狀態機轉入傳輸中止狀態,然后返回空閑狀態;如果信號有效,則狀態機轉入配置讀寫狀態。如果此時命令總線上是存儲器或者I/O的讀寫命令,則判斷PCI-frame信號是否有效來決定下一可能的狀態。如果信號無效,狀態機轉入傳輸中止狀態,然后返回空閑狀態;如果信號有效,狀態機轉入存儲器或I/O讀寫狀態。
1.2  UART模塊
 PCI總線傳輸的是并行數據,而串口傳輸的是串行數據,要想實現PCI總線與串口的數據傳輸,必須通過UART完成數據的串并/并串轉換。本文設計的基于FPGA的UART由4個模塊組成:波特率發生器模塊、寄存器控制模塊、接收模塊以及發送模塊。UART的總體框圖如圖5所示。

1.2.1 波特率發生器模塊
 波特率發生器實際上就是一個分頻器,用來產生和串行通信所采用的波特率同步的時鐘,這樣才能按照串行通信的時序要求進行數據接收或發送[3]。本設計中UART收發的每一個數據寬度都是波特率發生器輸出時鐘周期的16倍,即假定當前按照9 600 b/s進行收發,那么波特率發生器輸出的時鐘頻率應為9 600×16 Hz。
1.2.2 寄存器控制模塊
 設計的UART包括:2個數據緩沖寄存器(接收、發送緩沖寄存器);2個狀態寄存器(中斷識別、線路狀態寄存器);2個控制寄存器(中斷使能、線路控制寄存器);2個移位寄存器(接收、發送移位寄存器)。寄存器控制模塊完成除了移位寄存器外的所有寄存器的讀寫控制。
1.2.3 接收模塊
 接收模塊包括接收緩沖寄存器和接收移位寄存器。在接收數據開始時,為了能夠準確地傳輸數據,先要清空接收緩沖寄存器和接收移位寄存器,然后接收移位寄存器等待檢測數據的起始位。檢測到有效的起始位后開始接收數據,同時啟動接收數據計數器,統計接收數據的位數,直到接收到滿足需求的數據位。如果需要奇偶校驗,則產生校驗位。最后接收停止位,完成1幀數據(起始位+數據位+奇偶校驗位+停止位)的接收,將數據存入接收緩沖寄存器,進行下一幀數據的接收,并通知上位機讀取數據。
 接收模塊通過狀態機來完成數據接收,其狀態機包含4個狀態:空閑狀態(idle)、移位狀態(shift)、奇偶校驗狀態(parity)和停止位狀態(stop),如圖6所示。其工作過程如下:當系統復位時,狀態機進入空閑狀態,等待接收開始位;當開始位被確定有效后,狀態機進入移位狀態。在移位狀態中,接收模塊為每個數據位的移入等待16個內部時鐘周期,接收完特定的數據位后,若奇偶校驗使能有效,則跳轉到奇偶校驗狀態;否則,進入停止位狀態,而后進入空閑狀態,重復上述過程。


1.2.4 發送模塊
 發送模塊包括發送緩存寄存器和發送移位寄存器。在發送數據開始時,清空發送緩存寄存器和發送移位寄存器后,發送緩存寄存器接收發送來的數據,然后從發送緩存寄存器向發送移位寄存器發送數據。首先發送起始位到發送移位寄存器,同時啟動發送數據計數器,記錄發送數據的個數,直到發送移位寄存器接收到滿足需求的數據。若奇偶校驗使能有效,則跳轉到奇偶校驗狀態;否則,進入停止位狀態,完成1幀數據的發送。只要發送緩存寄存器不為空,則繼續傳輸下一幀數據。其狀態機的實現與接收模塊的類似。
2  系統軟件設計
2.1  驅動程序

 WinDriver是一套PCI驅動程序開發包。它改變了傳統驅動程序開發的方法與思路,極大地簡化了驅動程序的編制。同時,WinDriver又沒有犧牲驅動程序的性能,是一套高效、快捷的PCI驅動程序開發軟件包[4]。WinDriver可在VC/C++、Delphi、BC++、VB等多種開發環境中使用,本設計選用VC++作為驅動程序的開發環境,通過WinDriver生成VC++代碼,根據設計的需要修改生成的代碼以完成此PCI設備的驅動。驅動程序流程圖如圖7所示。

2.2  應用程序
 應用程序負責調用、連接驅動程序,實現與驅動程序的通信。連接到驅動程序后,向驅動程序注冊,同時啟動串口監測工作線程,等待事件發生。當驅動程序接收到中斷后,通過發送消息通知應用程序,處理發生的事件。處理后退出應用程序,結束等待事件線程。應用程序流程圖如圖8所示。
 本文介紹了一種基于FPGA的PCI總線串口卡設計方法,簡單說明了其硬件的設計和驅動程序、應用程序的編寫方法。該設計符合通用的PCI規范,支持即插即用功能,傳輸速率高,抗干擾能力強??梢詮V泛應用于各類測試設備、工廠自動化等,具有很高的實用價值。
參考文獻
[1]     徐志春.基于PCI總線的多串口通信適配卡設計[J].微計算機信息,2007,23:294-296.
[2]     王友波,劉明業.PCI總線接口控制器的FPGA設計[J].北京理工大學學報,2004,24(5): 423-426.
[3]     楊大柱.基于FPGA的UART電路設計與仿真[J]. 微計 算機信息, 2007,23(5-2):212-213.
[4]     劉映杰,張在峰,劉瑋,等.用WinDriver開發PCI設備驅動程序[J]. 信息技術,2004, 28 (2):78-80.

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
久久久亚洲一区| 欧美午夜精品伦理| 一区二区毛片| 亚洲精品在线一区二区| 亚洲成人自拍视频| 欧美在线精品免播放器视频| 亚洲欧美日韩精品久久奇米色影视| 亚洲伦理在线| 亚洲人成高清| 亚洲日本一区二区三区| 亚洲日本理论电影| 亚洲国产精品女人久久久| 在线看国产日韩| 亚洲电影在线观看| 亚洲第一区色| 亚洲电影第三页| 亚洲激情一区| 日韩一级在线| 一区二区电影免费观看| 一区二区av在线| 亚洲一区二区三区精品在线观看 | 国内揄拍国内精品久久| 黄色成人在线免费| 亚洲福利视频网站| 91久久精品美女| 99国产精品久久久| 在线一区二区三区四区五区| 亚洲午夜三级在线| 性欧美超级视频| 久久精品亚洲精品国产欧美kt∨| 久久av资源网| 亚洲欧洲日本一区二区三区| 99热这里只有精品8| 亚洲一区欧美二区| 欧美在线观看www| 美女视频黄a大片欧美| 欧美激情视频一区二区三区在线播放| 欧美日韩免费在线视频| 国产精品欧美日韩一区二区| 国产午夜精品理论片a级大结局| 国产一区二区三区无遮挡| 影音先锋久久精品| 日韩视频永久免费| 亚洲一区在线直播| 亚洲国产电影| 亚洲深夜福利在线| 久久国产精品一区二区| 欧美电影美腿模特1979在线看 | 欧美日韩国产另类不卡| 国产精品久久久对白| 国内精品伊人久久久久av影院 | 欧美电影电视剧在线观看| 欧美午夜不卡在线观看免费 | 亚洲乱码精品一二三四区日韩在线| 中文国产一区| 欧美在线观看视频| 欧美国产日韩精品免费观看| 国产精品a级| 在线电影院国产精品| 在线亚洲精品| 亚洲国产精品女人久久久| 亚洲一区二区三区四区五区午夜| 久久成人18免费网站| 欧美第一黄网免费网站| 国产女精品视频网站免费| 在线日韩电影| 中文亚洲欧美| 91久久线看在观草草青青| 亚洲欧美另类国产| 欧美岛国激情| 国产一级精品aaaaa看| 夜夜嗨av一区二区三区网站四季av | 国产欧美日韩伦理| 日韩西西人体444www| 香蕉久久国产| 亚洲少妇一区| 久久一区二区视频| 国产精品久久久久久久久久三级 | 亚洲最新色图| 亚洲激情另类| 久久精品三级| 国产精品成人在线| 亚洲三级视频在线观看| 久久国产精品亚洲77777| 亚洲宅男天堂在线观看无病毒| 美女黄毛**国产精品啪啪| 国产精品综合| 亚洲电影有码| 亚洲第一中文字幕在线观看| 亚洲欧美视频在线观看视频| 欧美国产欧美亚州国产日韩mv天天看完整| 国产精品专区第二| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲电影免费观看高清完整版在线观看 | 欧美一区二区私人影院日本| 亚洲在线观看| 欧美日韩卡一卡二| 亚洲七七久久综合桃花剧情介绍| 久久精品国产99国产精品| 欧美一区二区播放| 国产精品黄视频| 夜夜精品视频| 中文亚洲字幕| 欧美日韩和欧美的一区二区| 激情综合在线| 久久精品一区二区三区四区| 欧美一级二级三级蜜桃| 国产精品成人一区二区艾草| 日韩天天综合| 制服丝袜亚洲播放| 欧美日韩国产一中文字不卡| 亚洲欧洲在线免费| 99国产精品一区| 欧美韩日亚洲| 亚洲激情啪啪| 日韩一区二区高清| 欧美极品aⅴ影院| 亚洲国产婷婷香蕉久久久久久| 亚洲国产美女| 欧美不卡视频| 亚洲欧洲日韩综合二区| 亚洲精品影院在线观看| 欧美成人一区二区| 亚洲激情视频在线| 妖精视频成人观看www| 欧美日韩国产综合视频在线观看中文 | 中文亚洲免费| 国产精品黄视频| 亚洲在线免费| 欧美亚洲三级| 国产亚洲精品久| 久久精品女人的天堂av| 久热精品视频在线观看| 亚洲国产三级在线| 一区二区三区视频在线观看| 欧美体内she精视频在线观看| 一本久久a久久免费精品不卡| 亚洲综合激情| 国产欧美日韩在线| 久久激情婷婷| 欧美激情国产高清| 夜夜嗨一区二区| 久久激情五月激情| 亚洲国产成人porn| 在线视频中文亚洲| 国产精品婷婷| 久久国产精品久久久| 欧美成人国产一区二区| 亚洲狼人精品一区二区三区| 亚洲夜晚福利在线观看| 国产农村妇女精品一二区| 久久精品国产v日韩v亚洲| 欧美国产一区二区在线观看| 亚洲最新在线| 久久久国产精品一区二区中文| 在线观看视频免费一区二区三区| 一区二区日韩免费看| 国产精品丝袜xxxxxxx| 亚洲福利精品| 国产精品啊v在线| 欧美一级二级三级蜜桃| 欧美a级理论片| 中文网丁香综合网| 久久久久久穴| 亚洲久久在线| 久久精品视频99| 亚洲精品乱码久久久久| 性视频1819p久久| 在线观看日韩专区| 午夜国产精品视频免费体验区| 好看不卡的中文字幕| 亚洲一区二区在线看| 狠久久av成人天堂| 亚洲一级黄色片| 狠狠狠色丁香婷婷综合久久五月| 一本久久综合亚洲鲁鲁五月天| 国产精品一区免费观看| 亚洲毛片在线| 国产视频亚洲精品| 夜夜爽av福利精品导航| 国产一区二区日韩| 亚洲五月婷婷| 136国产福利精品导航网址| 午夜在线观看免费一区| 亚洲国产精品ⅴa在线观看 | 亚洲第一区在线| 国产精品久久99| 亚洲区欧美区| 国产日韩精品综合网站| 一区二区三区日韩欧美精品| 国模私拍一区二区三区| 亚洲一区中文| 亚洲欧洲日本专区| 久久婷婷蜜乳一本欲蜜臀| 亚洲视频www| 欧美日本二区| 亚洲成人在线视频播放 | 国产热re99久久6国产精品| 亚洲社区在线观看| 91久久在线|