国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

電子工程網(wǎng)

標題: 如何使用寄存器級讀&寫控制基于PXI平臺的FPGA? [打印本頁]

作者: Stone_Mei    時間: 2017-9-27 17:32
標題: 如何使用寄存器級讀&寫控制基于PXI平臺的FPGA?
閱讀帶圖完整版: 使用寄存器級讀&寫控制基于PXI平臺的FPGA-無廣告.pdf (1018.45 KB)


目錄
簡介
設(shè)計實例概覽
   地址譯碼(AddressDecoding)
   引腳控制
   寄存器映象(RegisterMapping)
軟件控制
   ATEasy 例程 (使用ATEasy GX3500驅(qū)動)
   “C” 例程
   LabView例程
摘要:本文以基于PXI平臺的Marvin TestSolutions 3U FPGA板卡GX3500為設(shè)計對象,通過設(shè)計實例講解如何使用寄存器級讀&寫控制FPGA,并提供FPGA設(shè)計相關(guān)文件(如SVF)和軟件控制例程。
簡介
為了更好地理解如何訪問GX3500 FPGA的寄存器,需要有一個使用寄存器的設(shè)計。本篇文章分為兩部分內(nèi)容:第一部分,以讀者已經(jīng)熟練使用AlteraQuartus II設(shè)計工具為前提(參考《GX3500 User’s Guide: GXFPGA Tutorialand Examples》的第五章),概述了如何使用GX3500設(shè)計128通道的靜態(tài)I/O。此設(shè)計實例配置為4組32通道雙向引腳,雙緩沖結(jié)構(gòu)支持同步更新128通道邏輯狀態(tài)的讀和寫。
本篇文章的第二部分講述了如何向GX3500 FPGA內(nèi)加載設(shè)計文件,如何連接GX3500 I/O引腳,為了實現(xiàn)FPGA靜態(tài)數(shù)字I/O的操作如何對寄存器進行讀和寫。
file:///C:/Users/10395/AppData/Local/Temp/msohtmlclip1/01/clip_image001.jpg
圖1 MTS-GX3500FPGA板卡
設(shè)計實例概覽
地址譯碼(Address Decoding)
GX3500支持對兩種類型的PCI總線讀和寫操作:一類是針對寄存器,使用PCI BAR 1;另一類是針對RAM,使用PCI BAR 2。靜態(tài)數(shù)字I/O設(shè)計實例使用寄存器控制對I/O引腳的讀和寫,所以使用PCI BAR 1片選信號進行地址譯碼 — 與ChipSelect 1 (CS[1])同意。BAR 1信號可以訪問的地址范圍為1024 byte(0x400),訪問時必須以4-byte為準對齊。 圖2為地址譯碼邏輯單元,將5路地址信號(Addr[6..2]))譯碼后,可提供32路“寫使能”信號(WE[31..0])和32路“讀使能”信號(RE[31..0]),這些信號用于控制鎖存寄存器的向I/O引腳寫入(WE[x]) )和從I/O引腳讀。≧E[x])功能。
file:///C:/Users/10395/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
圖2:寄存器地址譯碼
引腳控制
本設(shè)計實例中有四組完全相同的I/O引腳(見圖4),每組有32路通道。每路通道都支持雙向傳輸,并可以獨立配置傳輸方向。輸出寄存器為雙緩沖結(jié)構(gòu),支持四組I/O引腳(128路通道)同步更新。第一階段,通過WE_Data控制信號,將輸出數(shù)據(jù)使用寫入第一級數(shù)據(jù)寄存器,通過WE_Tristate寫入三態(tài)控制信號。以上這些信號來自于WE[31..0]信號,并且這些信號在每組I/O引腳間獨立。第二階段,通過WE_UpdatePort控制信號,將第一級輸出的數(shù)據(jù)和三態(tài)控制信號寫入第二級寄存器。以上這些信號也來自于WE[31..0]信號,但是四組I/O引腳共用以實現(xiàn)四組I/O引腳數(shù)據(jù)的同步更新。使用RE_Tristatelatch,RE_DataLatch,RE_TristatePort和RE_DataPort控制信號訪問輸出寄存器兩個階段的數(shù)據(jù)和三態(tài)控制寄存器從而進行讀操作。
file:///C:/Users/10395/AppData/Local/Temp/msohtmlclip1/01/clip_image003.jpg
圖3:引腳控制邏輯單元(圖4中的Port_Control)
通過RE_SamplePortIO控制信號可實現(xiàn)四組I/O引腳(128路通道)的所有通道同時被采樣,采樣數(shù)據(jù)被儲存在鎖存寄存器中以用于后續(xù)的數(shù)據(jù)檢索。分別通過RE_PortIO 控制信號實現(xiàn)數(shù)據(jù)檢索。因為每組I/O引腳的三態(tài)控制信號可以被讀,所以可以推斷出GX3500或UUT是否處于采樣輸入狀態(tài)(讀狀態(tài))。
寄存器映象(RegisterMapping)
下面是控制四組I/O引腳(A組、B組、C組、D組)的讀和寫寄存器偏移地址:
寫功能:
偏移量
(HEX)
功能
  
0
  
  
(0x0)
  
  
WE[0]:  向I/O引腳(A組)鎖存器中寫入數(shù)據(jù)
  
  
4
  
  
(0x4)
  
  
WE[1]:  向I/O引腳(B組)鎖存器中寫入數(shù)據(jù)
  
  
8
  
  
(0x8)
  
  
WE[2]:  向I/O引腳(C組)鎖存器中寫入數(shù)據(jù)
  
  
12
  
  
(0xC)
  
  
WE[3]:  向I/O引腳(D組)鎖存器中寫入數(shù)據(jù)
  
  
16
  
  
(0x10)
  
  
WE[4]:  向I/O引腳(A組)鎖存器中寫入三態(tài)控制信號
  
  
20
  
  
(0x14)
  
  
WE[5]:  向I/O引腳(B組)鎖存器中寫入三態(tài)控制信號
  
  
24
  
  
(0x18)
  
  
WE[6]:  向I/O引腳(C組)鎖存器中寫入三態(tài)控制信號
  
  
28
  
  
(0x1C)
  
  
WE[7]:  向I/O引腳(D組)鎖存器中寫入三態(tài)控制信號
  
  
80
  
  
(0x50)
  
  
WE[20]: 同步更新I/O引腳(A~D組)
  
讀功能:
偏移量
(HEX)
功能
  
0
  
  
(0x0)
  
  
WE[0]:  從I/O引腳(A組)鎖存器中讀取數(shù)據(jù)
  
  
4
  
  
(0x4)
  
  
WE[1]:  從I/O引腳(B組)鎖存器中讀取數(shù)據(jù)
  
  
8
  
  
(0x8)
  
  
WE[2]:  從I/O引腳(C組)鎖存器中讀取數(shù)據(jù)
  
  
12
  
  
(0xC)
  
  
WE[3]:  從I/O引腳(D組)鎖存器中讀取數(shù)據(jù)
  
  
16
  
  
(0x10)
  
  
WE[4]:  從I/O引腳(A組)鎖存器中讀取三態(tài)控制信號
  
  
20
  
  
(0x14)
  
  
WE[5]:  從I/O引腳(B組)鎖存器中讀取三態(tài)控制信號
  
  
24
  
  
(0x18)
  
  
WE[6]:  從I/O引腳(C組)鎖存器中讀取三態(tài)控制信號
  
  
28
  
  
(0x1C)
  
  
WE[7]:  從I/O引腳(D組)鎖存器中讀取三態(tài)控制信號
  
  
32
  
  
(0x20)
  
  
WE[8]:  讀取I/O引腳(A組)的輸出數(shù)據(jù)
  
  
36
  
  
(0x24)
  
  
WE[9]:  讀取I/O引腳(B組)的輸出數(shù)據(jù)
  
  
40
  
  
(0x28)
  
  
WE[10]:  讀取I/O引腳(C組)的輸出數(shù)據(jù)
  
  
44
  
  
(0x2C)
  
  
WE[11]:  讀取I/O引腳(D組)的輸出數(shù)據(jù)
  
  
48
  
  
(0x30)
  
  
WE[12]:  讀取I/O引腳(A組)的三態(tài)控制信號
  
  
52
  
  
(0x34)
  
  
WE[13]:  讀取I/O引腳(B組)的三態(tài)控制信號
  
  
56
  
  
(0x38)
  
  
WE[14]:  讀取I/O引腳(C組)的三態(tài)控制信號
  
  
60
  
  
(0x3C)
  
  
WE[15]:  讀取I/O引腳(D組)的三態(tài)控制信號
  
  
64
  
  
(0x40)
  
  
WE[16]:  從I/O引腳(A組)輸入鎖存器中讀取采樣數(shù)據(jù)
  
  
68
  
  
(0x44)
  
  
WE[17]:  從I/O引腳(B組)輸入鎖存器中讀取采樣數(shù)據(jù)
  
  
72
  
  
(0x48)
  
  
WE[18]:  從I/O引腳(C組)輸入鎖存器中讀取采樣數(shù)據(jù)
  
  
76
  
  
(0x4C)
  
  
WE[19]:  從I/O引腳(D組)輸入鎖存器中讀取采樣數(shù)據(jù)
  
  
80
  
  
(0x50)
  
  
WE[20]: 對I/O引腳(A~D組)同步采樣到輸入鎖存器
  

file:///C:/Users/10395/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg
圖4:I/O引腳(A~D組)的讀和寫控制
GX3500靜態(tài)I/O設(shè)計文件和SVF文件下載:file:///C:/Users/10395/AppData/Local/Temp/msohtmlclip1/01/clip_image005.pnghere.
軟件控制
為了控制本文中的GX3500設(shè)計實例,首先要初始化儀器驅(qū)動,然后加載SVF文件,然后寫和讀本設(shè)計實例中使用的寄存器地址。GX3500 API,包含用于訪問內(nèi)存的函數(shù)、使能或旁路擴展板卡繼電器的函數(shù)和其他函數(shù)。參考《GX3500 User’s Guide》獲取API函數(shù)詳細列表和調(diào)用語法。
本文提供的控制GX3500 FPGA靜態(tài)I/O的代碼,支持三種不同的編程環(huán)境:ATEasy,“C” 和LabView。這些例程假設(shè)GX3500安裝在PXI機箱的第12槽中、使用Altera Quartus II 設(shè)計軟件生成SVF文件“Static_IO.svf”、SVF文件在應(yīng)用程序可讀入的目錄下。
ATEasy 例程 (使用ATEasy GX3500驅(qū)動)
dwDataWord[4] ! Contains output state for 32-bit ports A- D
dwTristateWord[4] ! Contains tristate control for 32-bit ports A-D
dwInputWord[4] ! Contains data read from four latches A-D
iong ! Index counter

Driver Initialize (12) ! Initialize driver for instrument in slot #12
FPGA Load (".\\Static_IO.svf",TARGET_VOLATILE,MODE_SYNC) ! Load SVFfile to volatile FPGA memory
FPGA Set ExpansionBoardBypass(0b1111) ! Set the expansion bypass – signals route from theFPGA to the connectors
For i=0 to 3 ! Repeat for port A - D
    FPGA Write Register(i*4,4,dwData) ! Write to DataLatch WE
    FPGA Write Register((i+4)*4,4,dwTristate) ! Write toTristate Latch WE[i+4]
Next
FPGA Write Register(80,4,0) ! Simultaneous Update all 128 I/O pins (tristate anddata)
FPGA Read Register(80,4,dwData) ! Simultaneous Sample all 128 I/O pins
For i=0 to 3 ! Repeat for port A-D
    FPGA Read Register(i*4,4,dwInput) ! Read sampledstate from Latch RE
Next
“C” 例程
int    nHandle, nStatus, i;
DWord    dwData[4], dwTristate[4], dwInput[4];

GxFpgaInitialize (12, nHandle, nStatus);  \\ Initialize driver forinstrument in slot #12
GxFpgaLoad (nHandle, 0, "Static_IO.svf" ,0,, pnStatus);  \\Load SVF file to volatile FPGA memory
GxFpgaSetExpansionBoardBypass (nHandle , 0xF, pnStatus);  \\ Set theexpansion bypass
for(i=0;i<4;i++){  \\ Repeat for port A - D
    GxFpgaWriteRegister (nHandle ,i*4, dwData, 4,nStatus);  \\ Write to Data Latch WE
    GxFpgaWriteRegister (nHandle ,(i+4)*4, dwTristate,4, nStatus);  \\ Write to Tristate Latch WE[i+4]
}
GxFpgaWriteRegister (nHandle ,80, 0, 4, nStatus);  \\ SimultaneousUpdate all 128 I/O pins (tristate and data)
GxFpgaReadRegister (nHandle, 80, dwInput[0], 4, nStatus);  \\Simultaneous Sample all 128 I/O pins

for(i=0;i<4;i++){  \\ Repeat for port A - D
    GxFpgaReadRegister (nHandle, i*4, dwInput, 4,nStatus);  \\ Read sampled state from Latch RE
}
file:///C:/Users/10395/AppData/Local/Temp/msohtmlclip1/01/clip_image005.pngLabView例程
file:///C:/Users/10395/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg
圖5: LabView例程用戶控制界面
file:///C:/Users/10395/AppData/Local/Temp/msohtmlclip1/01/clip_image007.jpg
圖6: LabView例程中層疊順序結(jié)構(gòu)的幀0
file:///C:/Users/10395/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg
圖7: LabView例程中層疊順序結(jié)構(gòu)的幀1
file:///C:/Users/10395/AppData/Local/Temp/msohtmlclip1/01/clip_image009.jpg
圖8: LabView例程中層疊順序結(jié)構(gòu)的幀2
file:///C:/Users/10395/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg
圖9: LabView例程中層疊順序結(jié)構(gòu)的幀3
file:///C:/Users/10395/AppData/Local/Temp/msohtmlclip1/01/clip_image011.jpg
圖10: LabView例程中層疊順序結(jié)構(gòu)的幀4
關(guān)鍵字:GX3500,F(xiàn)PGA,Altera,Quartus,F(xiàn)PGA Design tools,Static I/O,PCI,PXI
若需要關(guān)于編程軟件、例程調(diào)試運行、文件下載等更多幫助,請聯(lián)系我。






歡迎光臨 電子工程網(wǎng) (http://m.qingdxww.cn/) Powered by Discuz! X3.4
主站蜘蛛池模板: 亚洲国产精品欧美日韩一区二区 | 辛芷蕾三级在线视频无删减 | 欧美视频一区在线 | h视频在线免费 | 亚洲精品 欧美 | 深海免费观看完整版正版 | 五月婷婷六月激情 | 色综合天天综久久久噜噜噜久久〔 | japanese在线看 | 最新天堂在线 | 青青草原国产在线视频 | 国产高清av在线播放 | 亚洲天堂区 | 国产精品久久福利网站 | 男女爱爱视频免费看 | juc-398中文字幕| 日韩精品一区在线观看 | 特级黄a三级三级三级 | 国产婷婷色 | 日本黄色一区 | 国产手机在线国内精品 | 亚洲区视频 | 忍者刺客韩国在线观看完整免费版 | 国产免费资源高清小视频在线观看 | 免费日本在线视频 | 七月婷婷精品视频在线观看 | 91香焦国产线观看看免费 | 日本欧美中文 | 亚洲综合色站 | 狠狠色丁香婷婷综合橹不卡 | 国产毛片a精品毛 | 亚洲欧美日韩不卡 | 高清xx另类麻豆性色生活片 | 中文字幕日韩wm二在线看 | 国产成人亚洲综合无 | 国产欧美日本在线观看 | 8008幸福宝app官网下载 | 国产午夜精品久久理论片 | 国产成人综合久久亚洲精品 | 欧洲亚洲欧美国产日本高清 | 亚洲成网站www久久九 |