高速PCI信號采集卡設計與實(shí)現綜合實(shí)例之:系統工作原理分析
13.2系統工作原理分析
如前所述,一個(gè)完整的信號采集系統,除了具備信號輸入單元、信號處理單元和信號輸出單元外,還需要緩沖區、時(shí)鐘以及電源等相關(guān)系統。如圖13.2所示是本案例信號采集系統的結構框圖。
圖13.2信號采集系統結構框圖
該結構圖中,方塊表示對應的功能部件,連線(xiàn)表示互聯(lián)關(guān)系。它清晰地表示了系統的組成結構及相互關(guān)系。首先將分別從3組總線(xiàn),即數據總線(xiàn)、控制總線(xiàn)和地址總線(xiàn)來(lái)認識系統各主要模塊之間的關(guān)系,再來(lái)分析系統的控制機制和工作原理。
13.2.1數據總線(xiàn)
數據總線(xiàn)是系統中傳送數據的鏈路,也是信號采集系統中最重要的鏈路。各功能部件的性能指標決定了數據總線(xiàn)的寬度及頻率。如圖13.3所示是本系統數據總線(xiàn)的連接示意圖。
圖13.3數據總線(xiàn)連接示意圖
從圖中可以看到,數據總線(xiàn)是雙向的,也就是說(shuō)具備了信號輸入和信號輸出兩種用途。
首先看信號輸入鏈路。TTL單端信號通過(guò)VME_DIS擴展接口進(jìn)入系統,可支持32路單端信號同時(shí)采集。LVDS差分信號通過(guò)3個(gè)DS90LV047接收器進(jìn)入系統,可支持12路差分信號同時(shí)采集。兩種信號經(jīng)過(guò)FPGA整理后傳輸至SDRAM中進(jìn)行緩存,最終根據PCI9054的傳輸機制將數據傳送至主機內存中。
再看信號輸出鏈路。信號輸出鏈路其實(shí)是信號輸入鏈路的逆向過(guò)程。信號采集系統可以根據主機端的請求,將存儲于主機上的數據通過(guò)PCI總線(xiàn)傳輸至PCI9054,再經(jīng)過(guò)FPGA控制、整理、轉發(fā)至LVDS驅動(dòng)器DS90LV048輸出接口或TTL單端輸出接口VME_DIS上。
13.2.2控制總線(xiàn)
控制總線(xiàn)用于FPGA對緩沖區SDRAM以及PCI9054的控制。在FPGA中,可以將這兩部分作為兩個(gè)模塊,一個(gè)是SDRAM控制器,另一個(gè)是PCI本地控制器。通過(guò)這兩個(gè)控制器模塊,實(shí)現FPGA與它們協(xié)調地工作。
SDRAM控制器是FPGA內部用于控制外部SDRAM讀寫(xiě)及刷新等操作的邏輯單元。SDRAM控制器的控制總線(xiàn)連接示意圖如圖13.4所示。
控制器左邊的控制總線(xiàn)包含時(shí)鐘信號CLK、復位信號RESET、命令信號CMD、命令應答信號CMDACK以及數據有效信號DM等。
控制器右邊的控制總線(xiàn)包含時(shí)鐘信號CLK、SDRAM片選信號CS_N、時(shí)鐘時(shí)能信號CKE、行選擇信號RAS_N、列選擇信號CAS_N以及寫(xiě)使能信號WE_N等。通過(guò)SDRAM控制器,用戶(hù)可以根據需要發(fā)送相應的名字對外部的SDRAM進(jìn)行控制。
PCI本地控制器是FPGA內部用于控制PCI9054進(jìn)行參數配置和數據傳輸的邏輯單元。PCI本地控制器的控制總線(xiàn)連接示意圖如圖13.5所示。
圖13.4SDRAM控制器控制總線(xiàn)連接示意圖圖13.5PCI本地控制器控制總線(xiàn)連接示意圖
控制器左邊的控制總線(xiàn)包含時(shí)鐘信號LCLK、控制輸入信號CNT_IN和控制輸出信號CNT_OUT等??刂戚斎胼敵鲂盘柺歉鶕cPCI9054之間的交互產(chǎn)生的,實(shí)現了FPGA其他模塊與PCI9054的交互控制。
控制器右邊的總線(xiàn)則包含了PCI9054提供的本地端配置總線(xiàn)(圖中未畫(huà)出)以及交互時(shí)需要使用的控制線(xiàn)。包括了總線(xiàn)操作起始信號ADS#、傳輸結束信號BLAST#、本地總線(xiàn)占用請求信號LHOLD、總線(xiàn)占用應答信號LHOLDA、本地中斷信號LINTi#、總線(xiàn)準備好信號READY#、總線(xiàn)讀寫(xiě)信號LWR#、時(shí)鐘信號LCLK以及本地復位信號RESET#。
13.2.3地址總線(xiàn)
地址總線(xiàn)是存儲器件控制器用于對存儲空間進(jìn)行尋址操作的總線(xiàn),同時(shí)也可以實(shí)現編碼器和譯碼器的作用,區分不同操作類(lèi)別。如圖13.6所示是本系統地址總線(xiàn)的連接示意圖。
其中,SDRAM控制器通過(guò)接收其他模塊產(chǎn)生的地址SDRAM_ADDR,產(chǎn)生SDRAM的行地址SA和列地址BA,實(shí)現對SDRAM的存儲空間的尋址。這種情況下,地址的變化由FPGA控制。
而PCI本地控制器則通過(guò)對PCI9054的本地總線(xiàn)地址線(xiàn)LA進(jìn)行譯碼,結合PCI本地控制器的控制總線(xiàn)來(lái)區分PCI總線(xiàn)與FPGA之間的不同交互方式。這種情況下,PCI9054完成了地址的映射和增減變化工作。
13.2.4信號采集系統控制機制
首先,將需要采集的信號通過(guò)相應的接口接入本系統,形成一組LVTTL信號進(jìn)入FPGA。由于這一組信號的寬度未定,在將之存入具有32位數據寬度的SDRAM之前,往往需要進(jìn)行總線(xiàn)寬度的控制。
一般在數據傳輸的接口控制中,常常采用FIFO或者DPRAM進(jìn)行數據寬度控制。首先由于兩種器件都具備兩個(gè)數據端口,可以方便地調整前后兩級邏輯的數據寬度。
其次,伴隨數據寬度調整將產(chǎn)生時(shí)鐘域變換問(wèn)題。一般直接使用邏輯門(mén)搭建的數據寬度轉換(串并/并串轉換)還需要另外進(jìn)行時(shí)鐘系統的分配,且難以得到精確同步的時(shí)鐘。而使用FIFO或DPRAM可以使用獨立的時(shí)鐘對兩個(gè)數據端口進(jìn)行控制。
再次,這兩種器件均可以使用FPGA內部的邏輯資源搭建,無(wú)需使用分立元器件,不僅降低了成本也提高了系統的穩定性。
因此在本信號采集系統中使用了DPRAM對數據寬度進(jìn)行轉換。轉換得到的32位寬度數據總線(xiàn)被傳輸至SDRAM中,完成信號輸入單元和信號緩存單元的協(xié)調對接。
基于PCI的信號采集系統一般采用的是基于中斷的DMA傳輸。由于PCI總線(xiàn)的發(fā)起、占用直至釋放需要一定的時(shí)間,因此信號采集系統需要一個(gè)緩沖區來(lái)保證正在采集的信號被存儲起來(lái),直至下一次的PCI總線(xiàn)傳輸到來(lái)而緩沖區不溢出,即數據不丟失。
本系統中,當SDRAM中緩存的數據達到一定的量級時(shí),FPGA將向PCI9054發(fā)出本地中斷,請求發(fā)起DMA傳輸。主機端捕獲中斷后,將啟動(dòng)PCI9054的DMA傳輸,經(jīng)由PCI本地控制器向SDRAM控制器發(fā)送命令,將數據從SDRAM中取出,并傳輸至PCI9054,最終進(jìn)入主機內存中。
評論