基于SDR SDRAM的視頻數(shù)據(jù)邏輯分析存儲器的設(shè)計與實現(xiàn)
摘要:針對傳統(tǒng)硬件測試軟件的弊端,文章提出一種便攜式視頻數(shù)據(jù)邏輯分析存儲器的設(shè)計方法,這種分析存儲器能夠針對網(wǎng)絡(luò)多媒體數(shù)據(jù)進行采集、分析和存儲等操作。在不影響網(wǎng)絡(luò)正常傳輸?shù)那疤嵯拢槍?a class="contentlabel" href="http://2s4d.com/news/listbylabel/label/TS流">TS流進行采集、存儲和分析。由于多媒體數(shù)據(jù)網(wǎng)絡(luò)傳輸具有數(shù)據(jù)量大、網(wǎng)絡(luò)帶寬占用量大等特點,因此設(shè)計中根據(jù)系統(tǒng)結(jié)構(gòu)需要,設(shè)計SDR SDRAM存儲器控制器,采用分層狀態(tài)機的設(shè)計模式,可以對結(jié)構(gòu)較大的網(wǎng)絡(luò)數(shù)據(jù)包或是大量高速傳輸中的數(shù)據(jù)進行突發(fā)存儲操作。測試結(jié)果表明系統(tǒng)工作穩(wěn)定,數(shù)據(jù)處理速度快,精度可達納秒級,滿足系統(tǒng)設(shè)計要求。
本文引用地址:http://2s4d.com/article/201610/308492.htm0 引言
在傳統(tǒng)硬件調(diào)試系統(tǒng)中,通常采用SIGNALTAPII軟件進行數(shù)據(jù)抓取和采集,但是這種調(diào)試工具具有一定的弊端,對高速傳輸?shù)臄?shù)據(jù)中具有某種特征的整段數(shù)據(jù)需要反復(fù)觸發(fā)抓取,同時很難對采集的數(shù)據(jù)進行實時觀測。音視頻數(shù)據(jù)是一種高速傳輸?shù)臄?shù)據(jù),具有數(shù)據(jù)量大、網(wǎng)絡(luò)帶寬占用量大等特點。要對這種數(shù)據(jù)進行系統(tǒng)調(diào)試,需要系統(tǒng)能夠?qū)?shù)據(jù)進行實時處理、采集和觀測,采用SIGNALTAPII很難實現(xiàn)這一功能。同時,在網(wǎng)絡(luò)音視頻數(shù)據(jù)傳輸系統(tǒng)中,接收端除了接收音視頻數(shù)據(jù)外,還會接收到網(wǎng)絡(luò)中傳輸?shù)囊恍┛刂菩畔⒌葦?shù)據(jù),這些數(shù)據(jù)對音視頻數(shù)據(jù)的分析無用,應(yīng)首先進行識別和過濾。
針對音視頻數(shù)據(jù)傳輸采集分析的要求,本文設(shè)計了一種具有新型結(jié)構(gòu)的音視頻數(shù)據(jù)邏輯分析存儲器,這種系統(tǒng)能夠針對具有TS數(shù)據(jù)流結(jié)構(gòu)的網(wǎng)絡(luò)多媒體數(shù)據(jù)進行實嫉氖據(jù)結(jié)構(gòu)、數(shù)據(jù)速率的監(jiān)控,能夠通過程序?qū)W(wǎng)絡(luò)數(shù)據(jù)包的幀頭、協(xié)議號等信息進行分析,監(jiān)控網(wǎng)絡(luò)中音視頻數(shù)據(jù)流量,并針對這種結(jié)構(gòu)的數(shù)據(jù)包進行存儲采集,導(dǎo)入SD卡,或在PC平臺上進行實時監(jiān)控、播放或是仿真處理。
1 視頻數(shù)據(jù)邏輯分析存儲器的結(jié)構(gòu)和工作原理
音視頻數(shù)據(jù)邏輯分析存儲器的結(jié)構(gòu)如圖1所示。硬件開發(fā)平臺接收到的網(wǎng)口測試數(shù)據(jù)由路由器發(fā)出,同時由某一臺PC機通過流媒體服務(wù)器向硬件開發(fā)平臺所連接的PC機發(fā)送音頻和視頻數(shù)據(jù)。流媒體服務(wù)器發(fā)送的音、視頻數(shù)據(jù)是封裝成UDP數(shù)據(jù)包的TS傳輸流。此時由MII接口與FPGA進行通信的網(wǎng)絡(luò)數(shù)據(jù)協(xié)議類型非常豐富,例如TCP、UDP、DNS、NRP、HTTP等。不同網(wǎng)絡(luò)協(xié)議數(shù)據(jù)包,都具有其特定的數(shù)據(jù)幀結(jié)構(gòu)。對封裝成UDP數(shù)據(jù)包的TS傳輸流的數(shù)據(jù)幀格式進行分析,從而將其過濾出來,實現(xiàn)對音視頻數(shù)據(jù)的提取、監(jiān)控以及存儲功能。UDP/非UDP過濾模塊實現(xiàn)TS流的分流和提取,網(wǎng)口數(shù)據(jù)速率監(jiān)控模塊可以對單位時間的數(shù)據(jù)量進行實時監(jiān)控。
音視頻數(shù)據(jù)經(jīng)FIFO緩存模塊、鎖存模塊后由SDRAM驅(qū)動模塊將數(shù)據(jù)高速地寫入SDRAM存儲器中,SDRAM驅(qū)動模塊、SDRAM接口模塊、SDRAM控制器完成數(shù)據(jù)的讀寫、緩存和封裝。經(jīng)過一段時間后,根據(jù)UDP幀長度緩存模塊的輸出值將輸出數(shù)據(jù)打包成幀,轉(zhuǎn)存至SD card中,可保存、攜帶或?qū)D card中的數(shù)據(jù)導(dǎo)入PC平臺,對采集到的數(shù)據(jù)進行各種分析、仿真操作。
2 視頻數(shù)據(jù)邏輯分析存儲器可編程模塊的設(shè)計
2.1 可編程模塊的結(jié)構(gòu)和工作原理
可編程模塊包括:UDP/非UDP過濾模塊、雙網(wǎng)口異步傳輸模塊、網(wǎng)口速率監(jiān)控模塊、輸入/輸出FIFO緩存模塊、SDRAM驅(qū)動模塊、SDRAM接口模塊、SDRAM控制器、數(shù)據(jù)幀封裝模塊等。在可編程模塊的設(shè)計中,SDRAM控制器、輸入/輸出FIFO模塊、SDRAM驅(qū)動模塊、SDRAM接口模塊是整個系統(tǒng)的核心處理模塊,該部分采用分層狀態(tài)機的設(shè)計模式,實現(xiàn)主狀態(tài)機與具體操作控制狀態(tài)機的分離,能有效提高讀寫操作效率,模塊設(shè)計結(jié)構(gòu)清晰,提高了系統(tǒng)設(shè)計的可讀性,也使程序具有更高的通用性。
SDRAM控制器、輸入/輸出FIFO緩存模塊、SDRAM驅(qū)動模塊、SDRAM接口模塊等核心模塊的設(shè)計原理如圖2所示。
在系統(tǒng)上電后,SDRAM控制器模塊首先跳轉(zhuǎn)至初始化進程,對SDRAM發(fā)出初始化命令,分別對SDRAM的各種參數(shù)進行配置。初始化完畢后,SDRAM驅(qū)動模塊開始進行狀態(tài)跳轉(zhuǎn)判定,判定結(jié)果將使SDRAM控制器由開始的空閑狀態(tài)跳轉(zhuǎn)至其他工作狀態(tài)。在控制器第一次進入寫狀態(tài)時,SDRAM驅(qū)動模塊對SDRAM接口模塊發(fā)送命令信號,使SDRAM接口模塊的工作進程跳轉(zhuǎn)至寫進程。進入寫進程的SDRAM接口模塊向SDRAM控制器發(fā)送數(shù)據(jù)、地址和寫命令。SDRAM控制器根據(jù)接收到的命令將FIFO中緩存的數(shù)據(jù)以突發(fā)模式寫入SDRAM中。SDRAM完成寫操作后,SDRAM驅(qū)動模塊將再一次進行狀態(tài)跳轉(zhuǎn)判定,如此反復(fù)。在整個過程中,SDRAM驅(qū)動模塊根據(jù)判定結(jié)果進行狀態(tài)跳轉(zhuǎn),并發(fā)出不同的命令,SDRAM接口模塊根據(jù)接收到的命令,相應(yīng)地進入不同的工作進程。在不同的工作進程中,SDRAM接口模塊對SDRAM控制器發(fā)送不同的操作命令,從而完成對SDRAM的初始化、讀、寫、刷新等各種操作。最后將需要分析、存儲的數(shù)據(jù)從輸出FIFO中導(dǎo)入SD卡。這一操作由開關(guān)模塊進行控制。
其中,SDRAM控制器的程序編寫是本系統(tǒng)設(shè)計的另一個重要的部分,SDRAM控制器主要包括命令監(jiān)控、命令譯碼以及數(shù)據(jù)傳遞等幾部分,SDRAM控制器根據(jù)接收到的命令,將數(shù)據(jù)和地址分別送入相應(yīng)模塊進行處理。
2.2 SDRAM控制器的實現(xiàn)
SDRAM控制器由4個可編程模塊組成,分別為命令監(jiān)控模塊、命令譯碼模塊、數(shù)據(jù)傳輸模塊和時鐘模塊等,支持1、2、4、8和全頁突發(fā)等突發(fā)模式。
首先需要對SDRAM進行初始化,系統(tǒng)的時鐘和電源穩(wěn)定后,在發(fā)起讀、寫、預(yù)充電、刷新等命令前,需要100 μs的上電延時。從100 μs內(nèi)某點開始到100μs結(jié)束的過程中,需要發(fā)出至少一次NOP或是COMMAND INHIBIT命令。在系統(tǒng)上電結(jié)束后,發(fā)出PRECHARGE命令,對SDRAM中的所有bank進行預(yù)充電,使其至于空閑狀態(tài)中。在完成SDRAM初始化過程中,還需要接口模塊對SDRAM控制器里面的配置存儲器進行編碼,本設(shè)計中寫入配置寄存器中的值為0x33,表明SDRAM采用8bit突發(fā)讀寫模式。
SDRAM存儲器初始化完成后,SDRAM中的所有bank處于空閑狀態(tài)。根據(jù)系統(tǒng)需求,SDRAM驅(qū)動模塊向SDRAM控制器發(fā)送讀、寫、刷新等命令。根據(jù)命令的優(yōu)先級進行判斷,優(yōu)先處理哪一個命令,正在執(zhí)行的命令優(yōu)先級最高,其次為刷新命令,再次為其他命令,這種命令優(yōu)先級的機制能夠有效提高SDRAM的工作效率。
SDRAM進行的主要操作為讀寫操作,本系統(tǒng)設(shè)計中SDRAM采用的是非全頁的8bit突發(fā)讀寫模式,數(shù)據(jù)寬度是16bit,由于接收的數(shù)據(jù)為網(wǎng)口數(shù)據(jù),僅使用其中的4bit寬度,這是由網(wǎng)口數(shù)據(jù)線寬度決定的。系統(tǒng)中,接收FIFO接收的數(shù)據(jù)深度由SDRAM接口模塊寫入,當(dāng)接收FIFO接收到規(guī)定數(shù)值的寫入數(shù)據(jù)后,SDRAM接口模塊向SDRAM控制器發(fā)出寫命令,命令監(jiān)控模塊接收命令和地址,并將接收到的命令進行譯碼。命令譯碼模塊從命令監(jiān)控模塊獲得寫地址和譯碼后的命令,并將其變?yōu)檫m合SDRAM接收的命令。數(shù)據(jù)傳輸模塊負責(zé)數(shù)據(jù)傳輸路徑和寫入。
當(dāng)SDRAM存儲器中的數(shù)據(jù)大于等于8個時,控制器跳轉(zhuǎn)至讀進程,與寫進程相似,命令監(jiān)控模塊獲得讀命令和地址,將命令進行譯碼,傳輸給命令譯碼模塊,譯碼為適合SDRAM的命令,SDRAM將數(shù)據(jù)從接收地址處開始讀出,以8bit突發(fā)讀的形式將數(shù)據(jù)打入輸出FIFO中。
SDRAM開始工作后在不同的工作狀態(tài)和過程中進行跳轉(zhuǎn),這些工作狀態(tài)和過程主要包括空閑狀態(tài)、初始化過程、讀過程、寫過程、刷新過程等,狀態(tài)或過程的跳轉(zhuǎn)通過命令協(xié)調(diào)過程完成,SDRAM工作狀態(tài)轉(zhuǎn)移如圖3所示。需要注意的是,如果SDRAM設(shè)置為自動刷新模式,由于刷新命令的優(yōu)先級在讀寫命令之前,SDRAM在狀態(tài)跳轉(zhuǎn)時會優(yōu)先跳轉(zhuǎn)至自動刷新過程中。
3 硬件測試結(jié)果
本系統(tǒng)在altera公司的QuartusII平臺上搭建完成,硬件上采用了雙網(wǎng)口設(shè)計,芯片型號為DP83848,SDR SDRAM芯片為Micron半導(dǎo)體公司生產(chǎn)的MT48LC16M16A2,FPGA芯片為CycloneIII系列的EP3C120F484C8,采用Modelsim SE 10.1a完成前期軟件仿真,在QurtusII自帶的嵌入式邏輯分析儀完成硬件仿真。測試結(jié)果仿真波形圖如圖4、5所示。
N1_RXD為網(wǎng)口接收數(shù)據(jù),經(jīng)過系統(tǒng)對數(shù)據(jù)包的判定,該數(shù)據(jù)包是具有TS流幀結(jié)構(gòu)的音視頻數(shù)據(jù),UDP模塊輸出UDP數(shù)據(jù)與輸入數(shù)據(jù)完全一致,而非UDP模塊輸出為0,實現(xiàn)了音視頻數(shù)據(jù)的過濾和分流。
N1_RXD是整個系統(tǒng)最初網(wǎng)口輸入數(shù)據(jù),dataout為系統(tǒng)輸出數(shù)據(jù),dq是SDRAM雙向數(shù)據(jù)總線。由圖5可見,系統(tǒng)輸出數(shù)據(jù)與輸入數(shù)據(jù)一致,符合設(shè)計要求。其中輸出數(shù)據(jù)最后將導(dǎo)入SD卡,或直接在PC平臺上進行各類仿真處理。
4 結(jié)論
系統(tǒng)硬件測試結(jié)果表明,SDRAM突發(fā)存儲的操作特點能夠滿足對高速傳輸?shù)拇罅恳粢曨l數(shù)據(jù)的采集和實時處理,能夠?qū)崿F(xiàn)系統(tǒng)對音視頻數(shù)據(jù)進行識別過濾、采集、檢測以及存儲的需求,從而代替SIGNALTAPII完成對采集下來的數(shù)據(jù)進行觀測和調(diào)試的功能,可靠性高,符合系統(tǒng)設(shè)計的要求。
評論