FPGA中定時(shí)循環(huán)啟動(dòng)開(kāi)銷(xiāo)測試
1. 背景及目的
在FPGA代碼中,會(huì )遇到將定時(shí)循環(huán)嵌入非定時(shí)循環(huán)的情況,此時(shí)定時(shí)循環(huán)將反復啟動(dòng)和停止。這個(gè)定時(shí)循環(huán)的時(shí)間開(kāi)銷(xiāo)如何,需要測試驗證。
定時(shí)循環(huán)的時(shí)間開(kāi)銷(xiāo)應包含兩個(gè)方面:1.定時(shí)循環(huán)的啟動(dòng)開(kāi)銷(xiāo),2.定時(shí)循環(huán)的運行開(kāi)銷(xiāo)。
對于第1點(diǎn),目前沒(méi)有找到FPGA的具體說(shuō)明信息,而且這個(gè)時(shí)間開(kāi)銷(xiāo)應該和具體的時(shí)鐘配置相關(guān)。
對于第2點(diǎn),FPGA編譯保障了每遍運行時(shí)間嚴格按照指定時(shí)鐘周期運行。
所以,可以編寫(xiě)簡(jiǎn)單程序測試FPGA定時(shí)循環(huán)的啟動(dòng)時(shí)間開(kāi)銷(xiāo)。
2. 測試方法
軟硬件環(huán)境:LabVIEW 2011,LabVIEW FPGA 2011
NI PXI-7851
測試配置及代碼:
1.FPGA Target下新建多個(gè)時(shí)鐘
2.FPGA Target的top-level clock配置為80MHz時(shí)鐘
3.FPGA代碼中對不同時(shí)鐘運行指定次數進(jìn)行計時(shí)
4.Host端指定循環(huán)次數,并讀取每次的計時(shí)結果
3. 測試結果
由于Top-Level clock是80MHz,所以所有計時(shí)器的1個(gè)Tick代表的是80MHz時(shí)鐘的1周期,
在160M時(shí)鐘下,定時(shí)循環(huán)的啟動(dòng)時(shí)間開(kāi)銷(xiāo)約10個(gè)Tick,運行時(shí)間是每遍循環(huán)0.5個(gè)Tick;
在80M時(shí)鐘下,定時(shí)循環(huán)的啟動(dòng)時(shí)間開(kāi)銷(xiāo)約1個(gè)Tick,運行時(shí)間是每遍循環(huán)1個(gè)Tick;
在40M時(shí)鐘下,定時(shí)循環(huán)的啟動(dòng)時(shí)間開(kāi)銷(xiāo)約為28個(gè)Tick,運行時(shí)間是每遍循環(huán)2個(gè)Tick;
在20M時(shí)鐘下,定時(shí)循環(huán)的啟動(dòng)時(shí)間開(kāi)銷(xiāo)約為48個(gè)Tick,運行時(shí)間是每遍循環(huán)4個(gè)Tick。
結果表明:
與Top-Level Clock 相同時(shí)鐘驅動(dòng)的定時(shí)循環(huán)的啟動(dòng)時(shí)間開(kāi)銷(xiāo)大大小于其他時(shí)鐘下的定時(shí)循環(huán)。
在非Top-Level Clock情況下,定時(shí)循環(huán)的時(shí)鐘頻率越低,啟動(dòng)時(shí)間越長(cháng)。
4. 結論
在FPGA代碼中,
盡量避免循環(huán)的嵌套。盡量讓最外層循環(huán)為定時(shí)循環(huán)。
定時(shí)循環(huán)的啟動(dòng)有時(shí)間開(kāi)銷(xiāo)。如果在非定時(shí)循環(huán)中反復運行定時(shí)循環(huán),需要考慮定時(shí)循環(huán)的啟動(dòng)開(kāi)銷(xiāo)。
盡量讓非定時(shí)循環(huán)中的定時(shí)循環(huán)工作在Top-Level Clock下,此時(shí)的啟動(dòng)開(kāi)銷(xiāo)為1個(gè)Tick。
評論