基于FPGA的PCI總線串口卡設計
隨著計算機測試技術的飛速發(fā)展,越來越多的外部設備通過串口與計算機進行通信,實現(xiàn)信息共享以及設備的集中控制和管理。利用串口進行通信具有結構簡單、傳輸距離遠、成本低廉等優(yōu)點,被廣泛應用于各個領域[1]。同時,PCI(Peripheral Component Interconnect)總線是一種高性能32/64位局部總線,最大數(shù)據(jù)傳輸速率為132 Mb/s,可同時支持多組外設,數(shù)據(jù)吞吐量大,是目前應用最廣泛、最流行的一種高速同步總線[2]。因此,利用PCI總線實現(xiàn)上位機與外部設備的串口通信,可以提高通信能力。
由于大部分I/O 設備沒有PCI總線功能,要實現(xiàn)設備與PCI總線的連接,需要PCI接口芯片、通用異步收發(fā)器UART(Universal Asynchronous Receiver Transmitter)等。而目前開發(fā)PCI總線與外部設備的串口通信大體上有兩種方式:(1)使用專用的芯片,如:PCI專用接口芯片S5920、S5933等;UART專用芯片8250、8251、16450、16550等。使用廠家提供的專用接口芯片,用戶可能只使用到它的部分功能,會造成一定的資源浪費,而且專用芯片價格高。(2)使用可編程器件FPGA。使用FPGA較使用專用芯片具有以下優(yōu)點:一方面用戶可以根據(jù)需要進行設計,不會浪費資源;另一方面可以將PCI接口、UART都做在一片FPGA內,這樣就不需要外接專門的芯片,簡化了電路、縮小了體積、提高了系統(tǒng)的可靠性。
1系統(tǒng)硬件設計
本設計中選用Altera公司的FPGA芯片EP1C6SQ240作為核心器件,完成PCI接口以及UART的設計,實現(xiàn)PCI總線與串口的連接。選用美信公司的MAX490芯片作為電平轉換電路。系統(tǒng)的硬件連接框圖如圖1所示。
數(shù)據(jù)傳輸過程:上位機通過PCI總線發(fā)送并行數(shù)據(jù)到UART的數(shù)據(jù)緩存器中,然后數(shù)據(jù)經(jīng)UART的數(shù)據(jù)緩存器進入UART的移位寄存器進行并串轉換后,通過串口傳到下位機。反之,下位機通過串口將數(shù)據(jù)傳送到UART的移位寄存器中,進行串并轉換,然后進入UART的數(shù)據(jù)緩存器中,最后傳到上位機。
設計中采用,傳輸距離長、抗干擾能力強的RS422串口。但是規(guī)定RS422:邏輯1的電平為-6 V~-2 V;邏輯0的電平為+2 V~+6 V。而FPGA的I/O電平一般為0~3.3 V,二者之間的電平不兼容。為了使二者之間的供電電壓保持一致,必須加入電平轉換電路。為此選用美信公司的MAX490芯片來實現(xiàn)二者之間的電平轉換,其電路原理圖如圖2所示。
1.1 PCI總線接口
PCI總線接口的功能是將一個不支持 PCI 協(xié)議的后端設備接口到PCI 總線上。為了實現(xiàn)PCI總線接口的基本功能,必須完成如下模塊的設計:PCI空間配置模塊、偶校驗模塊、地址譯碼和命令譯碼模塊、設備狀態(tài)機模塊等。PCI總線接口原理框圖如圖3所示。
評論