為了兼具可擴展性和數據處理速度,對于各種應用,如圖像數據偵錯、視頻數據壓縮、音頻數據增益、馬達控制等,可編程數據處理模塊(Programmable Data Processing Module)是時勢所需。
在處理的數據量越來越大的情況下,所需的內存容量隨之增大,以往的先進先出隊列(First-In-First-Out, FIFO)無法滿足其高速度與大容量的需求,許多硬件工程師開始考慮使用DRAM的可能性。
DRAM具備可快速存取、可依照設計者規劃使用空間、大容量等優點,但是內存數組需要重新充電,而雙倍數據速率同步動態隨機存取內存( DDR SDRAM)有數據相位同步等不易控制的問題,不如FIFO使用方便。因此,在使用FPGA進行設計時,搭配其供貨商所提供的RAM控制IP,再加上硬件工程師所開發的控制邏輯,是當前數據控制存取的發展趨勢。
本文的構想是在此DRAM控制IP上增加一層包裝(Wrapper),使之擁有FIFO接口,具有多端口內存存取控制(MPMA: Multi-Port Memory Access)功能。既可以保持大容量、存取速度快等優點,也可增添FIFO接口容易的優點。在設計過程中,DRAM空間可隨設計師的定義而擁有更高的彈性。如圖1所示,此DRAM擁有兩個寫入端口和兩個讀出端口。對于每個寫入端口,其數據可以從起始地址連續寫入,直到結束地址之后,再從起始地址繼續寫入,形成循環式(Circular)寫入方式。對于每個讀出端口,其數據的讀出可使用類似于循環寫入的方式,而且只要寫入到內存的數據數量比讀出的數據數量多,即是合理的類FIFO存取方式。
圖1 有兩個寫端口和兩個讀端口的DRAM控制槽
MPMA如何應用于數據處理模塊
在許多需要對大量信息進行運算處理的應用中,需要極大的緩存,與一個4KB FIFO的價格相比,買一個32Mb的DRAM更合適些。不過,其復雜的存取控制是一大問題。所以在編寫FPGA的HDL算法時,可利用FPGA供貨商所提供的IP構成解決方案。
對于所需處理的數據量重復性較高的應用,例如圖2所示的圖像原始數據用圖像偵錯處理算法來偵測P4點是否錯誤,需要將它周圍的8個點當作參考數據來對比,若使用FIFO,可能無法同時存取到此三條線(Line)的數據,所以使用DRAM存取大量的數據。
圖2 圖像原始數據點數組
由于DRAM的控制方式比較復雜,每存取一次就要重新計算其欲存取的數據地址,根據其數據地址的連續性,可在圖像原始數據寫入后,分為三個端口以連續地址的方式讀出。如圖2所示,第一端口連續讀出P0、P1、P2,第二端口連續讀出P4、P5、P6,第三端口連續讀出P8、P9、P10,則可以完成P5點偵錯的計算;而在計算P6點是否出錯時,第一端口只要再讀出P3,第二端口讀出P7,第三端口讀出P11,就可以完成計算前數據的完備,大大提高了數據的使用率,采用連續讀取的機制,不用在每次計算前計算數據地址,只要每一端口均先連續讀取數據即可完成,也降低了DRAM控制的復雜度。
MPMA的實現
下面以Altera MegaCore IP Generator產生的DDR DRAM控制器為例,再加上自創的Wrapper邏輯,構建一進(32位進)一出(8位出)的MPMA存取端口,圖3為其方塊架構圖。
圖3 一進一出的MPMA存取端口
在此架構中,Altera DDR DRAM 控制與寫/讀wrapper間的數據帶寬為64位,而通過wrapper邏輯,更可自由地編寫輸入與輸出帶寬。在寫/讀wrapper中,數據的地址計算采用累進式累加方式,其存取接口類似于FIFO的存取,因而更容易實現大容量數據的存取。
每個wrapper中有一個小容量的FIFO、封裝(packing)/反封裝(un-packing)機制以及地址累進計數器。FIFO用于調節使用者接口與DRAM頻域的差異;封裝/反封裝機制用于將輸入/輸出接口數據總線寬度調整至與DRAM控制IP接口相同的水平,以利于提高寫入/讀出DRAM數據的效率。地址累進計數器是每個wrapper的DRAM地址產生器,只要寫入wrapper里的計數器數字大于讀出wrapper里的計數器,則所讀出的必為先前已經寫入DRAM里的合法數據,不會存取到錯誤地址的數據。
MPMA提高效率
以圖2的點P5為例,若不使用wrapper,則此點數據會被寫入1次,而在運算的時候被讀出1(當作主要運算點)+8(當作參考數據點)次。當一幅有n點數據的圖像需要做偵錯處理時,則需要n*(1+1+8)次的數據存取,還不包括地址計算所造成的延遲。
當使用一進三出的MPMA wrapper時,P5點只需要被寫入1次,而在運算的時候被讀出3(3個讀wrapper各需要讀取1次)次,則同樣的n點數據作完偵錯處理只需要n*(1+3)次的數據存取,并且采用累進式的DRAM地址計算,不需要花費額外的延遲時間。由此可知,MPMA設計可提高2倍以上的數據存取效率。
結語
本文提出一種架構,在FPGA供貨商所提供的IP核上添加寫入/讀出wrapper,具有數據的高度重復使用率與容易操作的類FIFO接口等優點。設計師更可自行定義MPMA wrapper輸入/輸出端口的個數與數據總線寬度,以提高數據使用率。
凌華科技已將此技術應用于大數據量的圖像采集/處理/傳輸模塊,尤其是線陣掃描(Line-Scan)圖像采集系統,因為在檢測時,需要在FPGA上執行圖像數據計算的算法,一方面需要大容量的圖像數據緩存,另一方面需要反復讀取圖像數據,則此技術是必需的。