NI矢量信號收發(fā)器的FPGA編程
另外,這些庫在默認情況下處于鎖定狀態(tài),用戶在修改內(nèi)容之前,需要先通過會話框?qū)I解鎖。下文所述是使用這些儀器設(shè)計庫的詳細信息,適用于任何更改。
在給定儀器設(shè)計庫的主機與FPGA之間交換數(shù)據(jù)可采用多種機制。所有采用LabVIEW RIO架構(gòu)和LabVIEW FPGA的NI產(chǎn)品均使用NI-RIO驅(qū)動,此驅(qū)動提供了單點方式的、存儲器映射、基于寄存器的主機至FPGA以及FPGA至主機通信,還有從主機至 FPGA以及FPGA至主機的多點連續(xù)DMA FIFO。這些都是功能強大的數(shù)據(jù)交換機制,實現(xiàn)主機與FPGA之間的有效通信不需要了解或者只要些許了解底層總線架構(gòu)。
儀器設(shè)計庫的一個常見要求是:主機代碼需要將大量的設(shè)置下載到設(shè)備中,例如要對與FPGA相連接的芯片寄存器進行編程,或者更新設(shè)置組,例 如FPGA上的濾波器抽頭。由于一些儀器設(shè)計庫要求采用此策略,并且設(shè)備的DMA通道數(shù)目有限,所以這些庫可能需要共享一個FIFO,從而需要在主機端和 FPGA端增加額外的邏輯來實現(xiàn)。另外,對于大數(shù)據(jù)集來說,此類通信一般為單向,但是可能也需要提供從FPGA至主機的某種單點確認,例如確認所有設(shè)置均 已成功應用等等。所有這些概念組成為一個單獨概念,稱為寄存器總線,并為一些儀器設(shè)計庫所采用。
寄存器總線使用一個主機到FPGA端的 DMA FIFO來下載設(shè)置,以及一些寄存器/NI-RIO控制器和指示器,用于握手,將單點數(shù)據(jù)返回主機,或者發(fā)出信號,確認已下載設(shè)置中的指令已經(jīng)應用。
圖 2. 寄存器總線是基于NI-RIO DMA、控制器和指示器構(gòu)建的輕質(zhì)協(xié)議,實現(xiàn)了大量設(shè)置組至FPGA的高效下載,這是給定儀器設(shè)計庫的主機與FPGA側(cè)之間的常見要求。
為了完成仲裁,每個儀器設(shè)計庫均有一個獨一無二的子系統(tǒng)ID,從而使得多個庫能夠共享一條寄存器總線。為了更好地總結(jié)VST儀器設(shè)計庫的通信策略,表2說明了每個庫所采用的策略。
控制器和指示器 | DMA FIFOs | 寄存器總線 | |
DSP | X | – | – |
RF In | – | – | X |
RF Out | – | – | X |
Basecard | – | – | X |
多記錄采集 | – | X | X |
波形序列器 | – | X | X |
觸發(fā)同步 | X | – | – |
嵌入式配置 | – | – | X |
表 2. NI PXIe-5644R儀器設(shè)計庫的主機與FPGA數(shù)據(jù)交換機制。
另外,通過與嵌入式配置儀器設(shè)計庫配合使用,寄存器總線還可以在不牽涉主機的情況下完成FPGA觸發(fā)的重新配置。
評論