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