||
簡介
設(shè)計(jì)實(shí)例概覽
地址譯碼(Address Decoding)
引腳控制
寄存器映象(Register Mapping)
軟件控制
ATEasy 例程 (使用ATEasy GX3500驅(qū)動(dòng))
“C” 例程
LabView例程
摘要:本文以基于PXI平臺(tái)的Marvin Test Solutions 3U FPGA板卡GX3500為設(shè)計(jì)對象,通過設(shè)計(jì)實(shí)例講解如何使用寄存器級讀&寫控制FPGA,并提供FPGA設(shè)計(jì)相關(guān)文件(如SVF)和軟件控制例程。
為了更好地理解如何訪問GX3500 FPGA的寄存器,需要有一個(gè)使用寄存器的設(shè)計(jì)。本篇文章分為兩部分內(nèi)容:第一部分,以讀者已經(jīng)熟練使用Altera Quartus II設(shè)計(jì)工具為前提(參考《GX3500 User’s Guide: GXFPGA Tutorial and Examples》的第五章),概述了如何使用GX3500設(shè)計(jì)128通道的靜態(tài)I/O。此設(shè)計(jì)實(shí)例配置為4組32通道雙向引腳,雙緩沖結(jié)構(gòu)支持同步更新128通道邏輯狀態(tài)的讀和寫。
本篇文章的第二部分講述了如何向GX3500 FPGA內(nèi)加載設(shè)計(jì)文件,如何連接GX3500 I/O引腳,為了實(shí)現(xiàn)FPGA靜態(tài)數(shù)字I/O的操作如何對寄存器進(jìn)行讀和寫。
圖1 MTS-GX3500 FPGA板卡
GX3500支持對兩種類型的PCI總線讀和寫操作:一類是針對寄存器,使用PCI BAR 1;另一類是針對RAM,使用PCI BAR 2。靜態(tài)數(shù)字I/O設(shè)計(jì)實(shí)例使用寄存器控制對I/O引腳的讀和寫,所以使用PCI BAR 1片選信號進(jìn)行地址譯碼 — 與Chip Select 1 (CS[1])同意。BAR 1信號可以訪問的地址范圍為1024 byte(0x400),訪問時(shí)必須以4-byte為準(zhǔn)對齊。 圖2為地址譯碼邏輯單元,將5路地址信號(Addr[6..2]))譯碼后,可提供32路“寫使能”信號(WE[31..0])和32路“讀使能”信號(RE[31..0]),這些信號用于控制鎖存寄存器的向I/O引腳寫入(WE[x]) )和從I/O引腳讀取(RE[x])功能。
圖2:寄存器地址譯碼
本設(shè)計(jì)實(shí)例中有四組完全相同的I/O引腳(見圖4),每組有32路通道。每路通道都支持雙向傳輸,并可以獨(dú)立配置傳輸方向。輸出寄存器為雙緩沖結(jié)構(gòu),支持四組I/O引腳(128路通道)同步更新。第一階段,通過WE_Data控制信號,將輸出數(shù)據(jù)使用寫入第一級數(shù)據(jù)寄存器,通過WE_Tristate寫入三態(tài)控制信號。以上這些信號來自于WE[31..0]信號,并且這些信號在每組I/O引腳間獨(dú)立。第二階段,通過WE_UpdatePort控制信號,將第一級輸出的數(shù)據(jù)和三態(tài)控制信號寫入第二級寄存器。以上這些信號也來自于WE[31..0]信號,但是四組I/O引腳共用以實(shí)現(xiàn)四組I/O引腳數(shù)據(jù)的同步更新。使用RE_Tristatelatch,RE_DataLatch,RE_TristatePort和RE_DataPort控制信號訪問輸出寄存器兩個(gè)階段的數(shù)據(jù)和三態(tài)控制寄存器從而進(jìn)行讀操作。
圖3:引腳控制邏輯單元(圖4中的Port_Control)
通過RE_SamplePortIO控制信號可實(shí)現(xiàn)四組I/O引腳(128路通道)的所有通道同時(shí)被采樣,采樣數(shù)據(jù)被儲(chǔ)存在鎖存寄存器中以用于后續(xù)的數(shù)據(jù)檢索。分別通過RE_PortIO 控制信號實(shí)現(xiàn)數(shù)據(jù)檢索。因?yàn)槊拷MI/O引腳的三態(tài)控制信號可以被讀,所以可以推斷出GX3500或UUT是否處于采樣輸入狀態(tài)(讀狀態(tài))。
下面是控制四組I/O引腳(A組、B組、C組、D組)的讀和寫寄存器偏移地址:
寫功能: |
|||||||
偏移量 |
(HEX) |
功能 |
|||||
0 |
(0x0) |
WE[0]: |