一種多路同步數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)
3)使用內(nèi)部1.2 V參考電源。
4)時(shí)鐘輸入為4.096 MHz。
5)數(shù)據(jù)輸出速率4.0 k還是2.0 k由CPU控制。
2 異步FIFO的設(shè)計(jì)
本設(shè)計(jì)中所用的FPGA芯片是XILINX公司的XC3S100E,XC3S100E是XILINX SPARTAN3E系列一款最低容量的FPGA芯片,此系列FPGA利用90 nm工藝實(shí)現(xiàn)低成本高容量的需求,XC3S100E具有以下資源:
1)有2160個(gè)邏輯單元;
2)具有RAM資源87 kB(其中BLOCK RAM 72 kB,分布式RAM 15 kB);
3)具有兩個(gè)DCM;
4)具有4個(gè)乘法器;
5)可以實(shí)現(xiàn)FIFO等多個(gè)IP核。
在XILINX ISE10.1集成開(kāi)發(fā)工具下,很容易利用XININX免費(fèi)IP核實(shí)現(xiàn)一個(gè)異步FIFO。異步FIFO是在兩個(gè)相互獨(dú)立的時(shí)鐘域下,數(shù)據(jù)在一個(gè)時(shí)鐘域?qū)懭隖IFO,而在另外一個(gè)時(shí)鐘域下又從該FIFO中將數(shù)據(jù)讀出。CS5451A控制系統(tǒng)框圖如圖3所示,異步FIFO和串并轉(zhuǎn)換模塊作為CPU和CS5451A之間的橋梁,由串并轉(zhuǎn)換模塊將ADC輸出的串行數(shù)據(jù)轉(zhuǎn)換成19位的并行數(shù)據(jù)(其中16位為數(shù)據(jù),3位為采樣通道號(hào)0~5)寫(xiě)入異步FIFO,這樣FIFO就成為CPU前端的一個(gè)緩沖器。每接收完成1幀數(shù)據(jù)便向CPU發(fā)出一個(gè)中斷信號(hào),通知CPU讀取FIFO中的數(shù)據(jù)。
圖3 CS5451A控制系統(tǒng)框圖
異步FIFO IP核的參數(shù)指標(biāo)直接影響FIFO的讀出速度,首先,F(xiàn)IFO的讀出速度快能夠減少CPU的開(kāi)銷,這樣CPU可以有更多的時(shí)間干實(shí)時(shí)性更高的任務(wù)。其次,F(xiàn)IFO的存儲(chǔ)深度要適宜,深度過(guò)大造成資源的浪費(fèi),深度過(guò)小會(huì)造成控制復(fù)雜,這樣將占用更多的資源。本設(shè)計(jì)中的異步FIFO是利用ISE10.1中的參數(shù)化的IP核在XC3S100E芯片的實(shí)現(xiàn)。由于1個(gè)CS5451A芯片共有6通道ADC,ADC的分辨率為16位,考慮到數(shù)據(jù)的可靠性,每一個(gè)ADC通道的數(shù)據(jù)包括通道號(hào)(占3位),考慮到有的時(shí)候可能CPU不能及時(shí)的讀走數(shù)據(jù),所以在參數(shù)化的FIFO設(shè)計(jì)中選擇FIFO深度為64,寬度為19位。
3 基于FPGA串并轉(zhuǎn)換模塊的設(shè)計(jì)
CS5451A通過(guò)一個(gè)Master模式的串行接口輸出采樣數(shù)據(jù),輸出數(shù)據(jù)通過(guò)SDO輸出,SCLK為輸出串行時(shí)鐘,CS5451A串行輸出時(shí)序圖如圖4所示,F(xiàn)SO是幀同步信號(hào),表示一幀數(shù)據(jù)的開(kāi)始,如果SE信號(hào)為高電平,這3個(gè)信號(hào)就有效,如果為低電平,3個(gè)信號(hào)都為高阻狀態(tài),在本設(shè)計(jì)中,CPU初始化后把SE設(shè)置成高電平。正常情況下,F(xiàn)SO信號(hào)為低電平,當(dāng)有一幀數(shù)據(jù)要輸出的時(shí)候,F(xiàn)SO信號(hào)變?yōu)楦唠娖?,高電平寬度?個(gè)SCLK周期。當(dāng)沒(méi)有數(shù)據(jù)輸出的時(shí)候,SCLK為低電平,F(xiàn)SO從高電平變?yōu)榈碗娖胶?,SCLK時(shí)鐘信號(hào)有效,數(shù)據(jù)在上升沿輸出,SCLK共持續(xù)16x6個(gè)周期,數(shù)據(jù)串行輸出時(shí),MSB最先輸出。
圖4 CS5451A串行輸出時(shí)序圖
由于SCLK頻率很低,在用CPU的SPI控制器接收數(shù)據(jù)的時(shí)候,CPU接收一位的時(shí)間為4tXINe=1μs,如圖5所示,一幀數(shù)據(jù)為96位,接收一幀數(shù)據(jù)大約為96μs的時(shí)間,如果用CPU通過(guò)異步FIFO讀取數(shù)據(jù),因?yàn)楝F(xiàn)在的控制器總線速度很快,假設(shè)讀一個(gè)字節(jié)數(shù)據(jù)需要100 ns,讀走一幀數(shù)據(jù)大約需要100 ns×12=1.2μs(由于MPC8313總線寬度為16位,不能一次讀取19位數(shù)據(jù),所以在讀取FIFO中數(shù)據(jù)的時(shí)候,把通道號(hào)鎖存到一個(gè)暫存寄存器中,讀取采樣數(shù)據(jù)后再讀取通道號(hào),所以讀取一幀數(shù)據(jù)需要12次)。只有原來(lái)的大約1/80的時(shí)間,提高了CPU的利用效率。
圖5 CS5451A一幀數(shù)據(jù)輸出圖
評(píng)論