基于SDRAM文件結構存儲方式的數據緩存系統
發布時間:2010-11-24 16:14
發布者:eetech
面對不同的應用場景,原始采樣數據可能包含多種不同樣式的信號,這給傳統基于連續存儲方式的數據緩存系統帶來了挑戰。除此之外,由于對不同信號的處理往往需要不同的數據幀結構,緩存系統的設計需要保存原始采樣數據并能夠實現數據的重組幀,以滿足不同處理需求。 針對以上問題,本文提出了一種基于文件結構存儲方式的設計方案。 2 系統工作原理 2.1 文件結構的存儲方式 所謂文件結構指的是,將幀頭與其所對應的數據分區存儲,在存儲時將存儲數據的首地址添加到幀頭信息中,在讀出時,先讀取幀頭找到數據的首地址,然后加上系統給定的偏移地址算出讀取的起始地址,從該地址開始順序讀取要求長度(小于等于幀長)的數據,在送往后端系統時更新幀頭信息,后端系統收到數據無需做預處理直接進行計算即可。圖2是2種存儲結構的比較。 基于文件結構的存儲方式便于對數據進行管理與操作,功能擴展容易。例如有些處理只對數據的幀頭信息進行相關操作,基于文件結構的存儲模式可以很方便地支持這種工作模式,只需對緩存介質的幀頭區進行操作,而傳統的設計則很難滿足這種需求,因此新的設計極大地提高了系統的靈活性。 2.2 數據重組幀的實現 在設計上,用SDRAM的BANK0(BANK地址“00")和BANKl(BANK地址“01”)存儲原始數據,BANK2(BANK地址“10”)存儲要送往后端計算的數 據,BANK3(BANK地址“11”)存儲數據的幀頭信息。系統在接收到數據重組幀命令后,按照要求抽取,幀數,幀長和幀間隔從低BANK區讀取原始數據送入數據重組幀模塊形成新的數據幀結構,然后將新的數據幀結構按照文件結構存儲到高BANK區中。其實現框圖如圖3所示。 3 控制模塊的結構化狀態機設計 在系統架構上采用了結構化狀態機的設計方法,通過分層有限狀態機實現了主控狀態機與具體操作控制狀態機的分離,使設計結構清晰,劃分合理。降低了設計的復雜性,同時使系統更具有通用性。 3.1 高層工作模式主控狀態機設計 該緩存系統有3種工作模式:寫模式,讀模式和數據重組幀模式。其狀態轉移圖如圖4所示。 系統在空閑狀態等待SDRAM初始化完成,當SDRAM完成初始化以后進入準備狀態,表示系統可以接收命令,在收到寫命令后進入寫工作模式,低層寫輔助控制模塊激活,當完成寫操作命令后產生一寫完成標志信號,反饋回主控系統促使主控系統完成狀態跳轉回到準備狀態等待下一次命令,收到讀取命令后系統進入讀工作模式,低層讀輔助控制模塊開始工作當完成讀取操作后產生一讀完成標志信號,反饋回主控系統使其回到準備狀態等待命令,同樣系統收到數據重組幀命令后進人數據重組幀模式,低層重組幀輔助控制模塊開始工作完成重組幀任務后產生標志信號控制主控狀態機再次回到準備狀態,等待下一次命令。 這種結構化狀態機的設計,層次劃分合理清晰,工作模式的切換只在主控狀態機中實現,各低層輔助控制模塊僅僅實現其特定的功能,完全沒有交互。因此這種設計可以很方便地進行功能擴展,以后系統要增加新的工作模式,只需再加入一個狀態,并單獨設計其輔助控制模塊即可,無需對原有工作模式進行改動。同時,這種分層設計符合模塊化設計的思想,降低了設計的復雜性,易于調試。 3.2 低層寫輔助控制模塊的設計 寫輔助控制模塊用來實現對原始數據和第1次計算數據基于文件結構的存儲。為了提高系統效率,第1次計算所需的數據和原始數據同時存儲。其總體設計框圖如圖5所示。 寫輔助控制模塊在主控狀態機進入寫工作模式時激活,通過將原始數據分為2路,一路進入原始數據緩存控制模塊實現對原始數據的緩存,當原始數據的數據量積累到SDRAM一次突發寫所需長度時,該控制模塊發出寫標志信號通知寫模式控制狀態機,寫模式控制狀態機響應寫標志信號,向SDRAM驅動控制器發出寫指令字控制SDRAM將原始數據寫入SDRAM的原始數據區;另一路進入1st計算數據構造與緩存控制模塊,該模塊用來完成1st計算數據的幀頭與數據的構造和緩存,當幀頭構造完畢時,通知寫模式控制狀態機,將幀頭(包含數據存儲首地址信息)寫入到SDRAM的幀頭區中,同時當新數據量達到一次突發寫入時,將新數據寫入SDRAM的計算數據區中,直到將所有數據都寫入到SDRAM的對應區內,寫模式控制狀態機發出寫完成標志信號,反饋給高層主控狀態機。 3.3 低層讀輔助控制模塊的設計 讀輔助控制模塊,接收讀指令字,該指令字包括幀數、幀長和偏移地址。幀數表征著本次命令要從SDRAM中讀取多少幀數據,幀長表示每幀數據要讀取的長度(按采樣點數算),偏移地址控制對數據的移位讀操作。按照指令要求從SDRAM的高BANK區,讀出數據送往后端。圖6是其總體設計框圖。 讀輔助控制模塊在主控狀態機進入讀工作模式開始工作,它先控制SDRAM驅動器從SDRAM幀頭區中讀取一個幀頭,送入緩存及幀頭更新模塊,該模塊一方面按照指令字更新幀頭信息中的數據到達與結束時間,另一方面從幀頭信息中找到本幀數據的存儲首地址然后加上讀指令字中的偏移地址算出本次對數據讀操作的起始地址,該地址反饋給讀模式控制狀態機,控制SDRAM從該地址開始順序讀出數據,完成一幀數 據的讀取操作送往數據緩存模塊,重復以上操作直到完成讀指令任務,讀模式控制狀態機發出讀完成標志信號,反饋給高層主控狀態機。 3.4 低層數據重組幀輔助控制模塊的設計 數據重組幀輔助控制模塊,接收重組幀指令字,該指令字包括重組幀幀數、幀長、幀間隔以及抽取因子,控制SDRAM讀取原始數據,生成新的需要的數據幀結構,并按文件結構將其寫到SDRAM的計算數據區中。其總體設計框圖7所示。 數據重組幀輔助控制模塊在主控狀態機進入重組幀工作模式時開始工作,新數據幀結構生成及緩存模塊先構造第一幀數據的幀頭信息,當幀頭構造完畢后,它向重組幀模式控制狀態機發出幀頭完畢信號,狀態機收到信號后向SDRAM發出寫命令將新的數據幀頭寫入到幀頭區中,然后它按照重組幀指令字的要求從SDRAM的原始數據區讀出原始數據送往新數據生成模塊,當新數據的數據量達到一次突發寫長度時,再控制SDRAM將新的數據寫入到SDRAM的重組幀數據區中,直到將一幀新的數據都存儲到SDRAM中,記錄此時的寫地址并將其作為下一幀數據的存儲首地址加入到下一幀幀頭信息中,并發出構造第2幀幀頭的命令,等待第2幀幀頭完畢標志,重復上面的操作,直到完成要求的重組幀指令。完 成操作后重組幀模式控制狀態機發出重組幀完成標志信號,反饋給高層主控狀態機。 4 硬件平臺及實測結果 在xilinx的開發工具ISE環境下完成了系統的整體設計與仿真,利用xilinx公司的xc2v3000-4fg676FPGA芯片和MICRONE公司的MT48LC32M1 6A2SDRAM芯片搭建了硬件平臺,并進行測試。其實測結果如圖8所示。 主控狀態機接收上層的控制命令(寫命令、讀命令和重組幀命令)分別啟動寫工作模式、讀工作模式和重組幀工作模式;低層各控制模塊在完成任務時將完成標志(寫完成標志、讀完成標志和重組幀完成標志)反饋給主控狀態機控制其跳轉到就緒狀態繼續等待下次命令。結果證明該緩存系統實現了預定功能,可以對數據進行更方便的操作與管理。 5 結語 本文提出一種基于文件結構存儲方式的新數據緩存系統,利用FPGA設計結構化狀態機通過對SDRAM的讀寫控制,完成了具有數據重組幀功能的緩存系統設計。系統具有速度快,可靠性好,靈活性強,功能擴展容易的優點。該系統已應用于實際項目試驗,在基于實時復雜信號處理的緩存系統中有很好的應用前景。 |
網友評論