基于PCI總線的測控卡的設計
發布時間:2007/4/23 0:00:00 訪問次數:1355
關鍵詞:PCI9054 FPGA 狀態機 乒乓FIFO WinDriver
PCI總線是一種高性能的局部總線,它具有32/64位總線寬度,且總線地址和數據復用,支持猝發傳輸,傳輸速率高達132MB/s;同時可支持多組外圍設備。另外,PCI總線不依賴于熱和CPU,具有較好的兼容性。
近幾年來,現場可編程門陣列(FPGA)在現代電子設計中的成功應用,使充分利用FPGA的本身資源設計專用電路,完成系統功能成為可能,從而簡化了電路、縮小了體積、提高了穩定性、具有更大的靈活性。
基于這種設計思想,筆者利用FPGA和PCI總線接口芯片設計了一種測控電路板卡,經實驗運行,效率很好。
1 系統結構與功能
本板卡為基于PCI總線,采用RS485電平傳輸的異步串行通信測控卡。它與PCI總線的協議部分利用PCI9054專用接口芯片來完成。PCI9054是由美國PLX公司生產的一款高性能PCI I/O加速器,它采用了先進的32位數據管道結構技術,支持復用/非復用的32位數據/地址總線,本地總線有三種模式可選;M、C、J模式,被廣泛應用于PCI總線板卡的開發中。在本設計中,PCI9054工作在C模式下,采用中斷方式,總線周期為“PCI目標讀單周期”和“PCI目標寫單周期”,數據總線為8位。
異步串行通信電路部分完全用FPGA來實現。在設計上,筆者選用了Xilinx公司的Spartan II系列的XC2S200來實現異步串行通信的接收、發送和接口控制功能,FPGA具有在線可編程能力,設計者可根據實際需求分配資源。
測控卡的通信協議為起止式協議,采用固定的幀格式:1位開始位、8位數據位、1位停止位,無奇偶校驗位,在軟件中采用統一的CRC校驗,傳輸波特率為19.2kbps。為保證接收數據的正確性,設計中采用16倍頻波特率作為接收采樣時鐘,并把第八個采樣值作為接收數據。
測控卡主要完成以下工作:采用RS485差分電平傳輸的遙測數據經過電平轉換后,由接收模塊接收后乒乓緩存到FIFO中,并通過PCI總線接口芯片PCI9054以單周期方式送到計算機內存中以便進行下一步處理。發送模塊接收到PCI總線傳輸過來的遙控命令后,按照通信協議格式組幀,在通過電平轉換芯片轉換成RS485電平后,以19.2kHz的頻率發送給目標設備,實現對目標設備的各種控制。
根據以上分析,筆者設計的測控卡的具體功能結構如圖1所示。下面詳細闡述各部分的功能。
·MAX3490E:完成RS485差分電平到TTL電平的轉換;
·接收模塊:完成遙測數據的接收和緩沖;
·發送模塊:完成遙控數據的緩沖和發送;
·接口模塊:實現與PCI9054的接口功能,完成讀寫和傳輸控制操作;
·PCI9054:完成和PCI總線的接口協議。
1.1 發送模塊設計
發送模塊主要實現對遙控數據的緩存和并/串轉換,同時按照設計的異步串行通信數據幀格式進行相應的處理,最后將數據串行發送。處理器讀取線路狀態寄存器信息,檢查發送FIFO(TxFifo)是否為空,如為空且有遙控數據待發,則將控制數據通過PCI9054發送并存儲到發送FIFO中。發送狀態機讀取TxFifo中數據,通過并/串移位后用19.2kbps的波特率串行輸出。發送狀態機實現起止位“0”、并/串移位信號、停止位“1”的發送,具體如圖2所示。
圖3
開始:當移位寄存器空,發送模塊處于等待開始狀態,一旦檢測到非空,發送起始位“0”,狀態機進入移位狀態;
移位:通過并/串移位寄存器串行發出,當完成8bit移位后,狀態機轉入停止狀態;
停止:在這個狀態,為發送的數據加上一位停止位,然后轉入開始狀態,等待下一個數據。
發送模塊包含8位并/串移位寄存器TSR、51×8 bits發送FIFO(TxFifo)、用于實現發送遙控數據計數
關鍵詞:PCI9054 FPGA 狀態機 乒乓FIFO WinDriver
PCI總線是一種高性能的局部總線,它具有32/64位總線寬度,且總線地址和數據復用,支持猝發傳輸,傳輸速率高達132MB/s;同時可支持多組外圍設備。另外,PCI總線不依賴于熱和CPU,具有較好的兼容性。
近幾年來,現場可編程門陣列(FPGA)在現代電子設計中的成功應用,使充分利用FPGA的本身資源設計專用電路,完成系統功能成為可能,從而簡化了電路、縮小了體積、提高了穩定性、具有更大的靈活性。
基于這種設計思想,筆者利用FPGA和PCI總線接口芯片設計了一種測控電路板卡,經實驗運行,效率很好。
1 系統結構與功能
本板卡為基于PCI總線,采用RS485電平傳輸的異步串行通信測控卡。它與PCI總線的協議部分利用PCI9054專用接口芯片來完成。PCI9054是由美國PLX公司生產的一款高性能PCI I/O加速器,它采用了先進的32位數據管道結構技術,支持復用/非復用的32位數據/地址總線,本地總線有三種模式可選;M、C、J模式,被廣泛應用于PCI總線板卡的開發中。在本設計中,PCI9054工作在C模式下,采用中斷方式,總線周期為“PCI目標讀單周期”和“PCI目標寫單周期”,數據總線為8位。
異步串行通信電路部分完全用FPGA來實現。在設計上,筆者選用了Xilinx公司的Spartan II系列的XC2S200來實現異步串行通信的接收、發送和接口控制功能,FPGA具有在線可編程能力,設計者可根據實際需求分配資源。
測控卡的通信協議為起止式協議,采用固定的幀格式:1位開始位、8位數據位、1位停止位,無奇偶校驗位,在軟件中采用統一的CRC校驗,傳輸波特率為19.2kbps。為保證接收數據的正確性,設計中采用16倍頻波特率作為接收采樣時鐘,并把第八個采樣值作為接收數據。
測控卡主要完成以下工作:采用RS485差分電平傳輸的遙測數據經過電平轉換后,由接收模塊接收后乒乓緩存到FIFO中,并通過PCI總線接口芯片PCI9054以單周期方式送到計算機內存中以便進行下一步處理。發送模塊接收到PCI總線傳輸過來的遙控命令后,按照通信協議格式組幀,在通過電平轉換芯片轉換成RS485電平后,以19.2kHz的頻率發送給目標設備,實現對目標設備的各種控制。
根據以上分析,筆者設計的測控卡的具體功能結構如圖1所示。下面詳細闡述各部分的功能。
·MAX3490E:完成RS485差分電平到TTL電平的轉換;
·接收模塊:完成遙測數據的接收和緩沖;
·發送模塊:完成遙控數據的緩沖和發送;
·接口模塊:實現與PCI9054的接口功能,完成讀寫和傳輸控制操作;
·PCI9054:完成和PCI總線的接口協議。
1.1 發送模塊設計
發送模塊主要實現對遙控數據的緩存和并/串轉換,同時按照設計的異步串行通信數據幀格式進行相應的處理,最后將數據串行發送。處理器讀取線路狀態寄存器信息,檢查發送FIFO(TxFifo)是否為空,如為空且有遙控數據待發,則將控制數據通過PCI9054發送并存儲到發送FIFO中。發送狀態機讀取TxFifo中數據,通過并/串移位后用19.2kbps的波特率串行輸出。發送狀態機實現起止位“0”、并/串移位信號、停止位“1”的發送,具體如圖2所示。
圖3
開始:當移位寄存器空,發送模塊處于等待開始狀態,一旦檢測到非空,發送起始位“0”,狀態機進入移位狀態;
移位:通過并/串移位寄存器串行發出,當完成8bit移位后,狀態機轉入停止狀態;
停止:在這個狀態,為發送的數據加上一位停止位,然后轉入開始狀態,等待下一個數據。
發送模塊包含8位并/串移位寄存器TSR、51×8 bits發送FIFO(TxFifo)、用于實現發送遙控數據計數