如定時框圖所示,所有16位數據均在每個時鐘周期上順次傳遞,而片選控制線(chip select line)則呈現低電平。 現在,我們來看看在NI LabVIEW FPGA中,如何通過智能DAQ硬件上的3條數字線進行此類編程。
圖16. 16位SPI通信程序框圖
圖16中,外部While循環確保了所有代碼均能連續執行,而寫入布爾輸入控件則通過條件結構啟動著數據傳遞。 順序結構中的第一框架將片選控制線(chip select line)設置為低電平,之后由中間框架寫入數據位并將時鐘線切換16次。 最終,第三順序框將片選控制線(chip select line)設置回TRUE狀態,并將數據線重置為默認的FALSE狀態。 這一簡單范例只是借助智能DAQ進行數字通信時的一項內容。 用戶若想應用數字握手,便需為ACK(備用)和REQ(暫停)線準備2路通道,其中一路通道面向并行運作的時鐘信號和數據線。
數字線會時常抖動,在使用機電接觸時更是如此,然而用戶可通過NI LabVIEW FPGA,選擇不同方式,在數字輸入線上添加去抖動濾波器。 在消除狀態的錯誤改動時,數字去抖動濾波器確保數值的變化能夠保持一段最短的時間,因而規避了因抖動引發的錯誤讀取。 圖17展現了如何通過智能DAQ實現此項功能的內容。
圖17. 智能DAQ硬件上的數字濾波器程序框圖
數據傳輸方式
配備NI-DAQmx驅動程序的傳統多功能DAQ和智能DAQ之間的最大差異在于:數據傳輸的執行方式。 NI-DAQmx驅動程序將承擔由設備至主機的各項傳輸任務,此項操作中NI LabVIWE FPGA會對基于FPGA的所有板載硬件進行編程。 用戶可通過多種途徑緩沖設備上的板載數據,并使用不同方式(如:DMA通道或中斷請求)傳輸數據。
NI LabVIEW FPGA中的FIFO緩沖區在LabVIEW項目瀏覽器中接受配置,并能借助板載內存或硬件邏輯獲得運行。 圖18顯示了如何經由項目瀏覽器,在板載塊存儲器中配置整數的FIFO緩沖區。
圖18. NI LabVIEW FPGA中的FIFO配置
FIFO一經創建,便能用于NI LabVIEW FPGA程序框圖上多個循環之間的數據傳遞。 圖19中的范例顯示:數據先被寫入左側循環中的FIFO,并隨即從右側循環中的FIFO被讀出。
圖19. 通過FIFO和多循環實現的NI LabVIEW FPGA程序框圖
同樣通過LabVIEW FPGA FIFO獲得應用的直接存儲器訪問(DMA)通道,在項目瀏覽器中接受了類似的配置。
圖20. NI LabVIEW FPGA中的DMA FIFO配置
圖21. 通過DMA FIFO和位組裝實現的NI LabVIEW FPGA程序框圖
所有的DMA FIFO數據傳輸寬度均為32位;因此,當其傳遞源自16位模擬輸入通道的數據時,往往能夠合并2路通道或2個樣本上的數據再進行傳輸,從而提高帶寬使用率。 這即是圖21所展現的位組裝。當數據被直接傳遞到主控計算機的內存后,便可通過在Windows環境下運行的NI LabVIEW主接口函數接受讀。▓D22)。
圖22. 通過DMA FIFO讀取和位拆裝實現的主接口代碼
如圖22所示,主接口程序框圖引用FPGA終端VI,然后使用While循環連續讀取DMA FIFO。 32位的數據被分解為2路16位通道,在波形圖表上接受采樣和繪制。 主接口VI還能對FPGA VI前面板上的各類顯示控件和輸入控件進行讀寫操作;在這種情況下,“停止按鈕”輸入控件也被寫入。
結論
盡管DAQ-STC2等固定ASIC能夠滿足數據采集的大多數需求,然而,唯有借助智能DAQ中基于可重新配置FPGA的I/O定時和控制,方能實現高度靈活性和完全定制。 借助NI LabVIEW FPGA,觸發和同步任務獲得了簡化,因為通過繪制圖形化程序框圖即可充分滿足用戶需求;借助獨立的模擬和數字I/O線,智能DAQ可利用FPGA提供的實際并行。 R系列智能DAQ設備已經針對多速率采樣、自定義計數器操作和頻率高達40 MHz的板載決策,為多功能數據采集進行了各項可能的修繕。