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