新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 牛人業(yè)話 > FPGA研發(fā)之道(12)-設計不是湊波形(二)FIFO(下)

FPGA研發(fā)之道(12)-設計不是湊波形(二)FIFO(下)

作者: 時間:2014-11-03 來源:網(wǎng)絡 收藏

  設計中除了上篇所介紹的功能之外, 還有以下作為以下功能使用:

本文引用地址:http://2s4d.com/article/264819.htm

  (1) 內(nèi)存申請

  在軟件設計中,使用malloc()和free()等函數(shù)可以用于內(nèi)存的申請和釋放。特別是在有操作系統(tǒng)的環(huán)境下,可以保證系統(tǒng)的內(nèi)存空間被動態(tài)的分配和使用,非常的方便。如果在內(nèi)部實現(xiàn)此動態(tài)的內(nèi)存分配和申請,相對來說較為復雜,例如某些需要外部數(shù)據(jù)存儲且需動態(tài)改變的應用需求下,需要對外部DDR(或等)的存儲空間,進行動態(tài)的分配和釋放。通過使用作為內(nèi)存分配器,雖然比不上軟件的靈活和方便,但是使用也較為簡便。

  舉例說明假設外部存儲空間為8Mbyte,可將其劃分為8192個1Kbyte空間。并將數(shù)值0-8191存儲中,F(xiàn)IFO內(nèi)部存儲所標示可用的內(nèi)存空間。如下圖所示。

  

 

  首先,進行內(nèi)存的初始化,即將0-8191寫入FIFO中。

  如需申請內(nèi)存后,從FIFO中讀取值A,然后根據(jù)A的標示,寫入A所指示的外部存儲區(qū)(DDR)中相應的位置,即申請{A,10’h0_00} ->{A,10’h3_FF}的空間區(qū)域。

  如釋放內(nèi)存后,即可向FIFO中寫入相應的值。即可保證下次該空間能夠被設計使用。

  在此種設計中,F(xiàn)IFO承擔了內(nèi)存分配和釋放器的角色。此時只能申請或釋放最小單元倍數(shù)的內(nèi)存空間,如本例所示:為1Kbit。如FIFO讀空,則代表申請內(nèi)存失敗,需要等待其他塊內(nèi)存釋放后再寫入FIFO中,才能再次申請。

  (2) 串并轉(zhuǎn)換

  對于串并轉(zhuǎn)換,可能對于FPGA工程師來說,非常常見,但是如果有專門的IP實現(xiàn)此功能,可簡化設計,減少出錯及驗證的工作量。例如:對于外部輸入的需要進行串并轉(zhuǎn)換的信號,并進行存儲的信號,如設計進行串并轉(zhuǎn)換在存儲等操作,設計,可以直接通過例化讀寫位寬不一致的FIFO,例如1入8出的FIFO,可直接將外部輸入信號直接轉(zhuǎn)換成8BIT信號并進行存儲后,供后續(xù)處理使用(其他的)。

  (3) 業(yè)務優(yōu)先級劃分

  通過FIFO設置不同水位線,可以劃分不同的業(yè)務優(yōu)先級,保證高業(yè)務優(yōu)先級數(shù)據(jù)流在帶寬受限時,優(yōu)先通過,而低業(yè)務優(yōu)先級只能在滿足高優(yōu)先級需求后有多余的帶寬時才能通過。并且可以劃分多個優(yōu)先級,滿足多種業(yè)務的需求。設計將在以后篇幅中詳述。

  (4)固定帶寬設定

  通過對FIFO接口的讀出使能,能夠保證實現(xiàn)固定帶寬的輸出,例如FIFO讀接口為32bit,而讀時鐘為50Mhz,則輸出為1.6Gbit/S。如實現(xiàn)固定帶寬的輸出(如1Gbit/S),有兩種方式,一種可以通過降低時鐘頻率到31.25Mhz。另一種方式,可通過讀信號中間插入等待周期,如果讀出長度為N的數(shù)據(jù)所需時鐘周期為M,則需等待(3M/5)的周期,從而降低至1Gbit/S的處理能力,這在某些需要進行流量限制的業(yè)務方式中使用。

  對于FIFO來說,作為FPGA內(nèi)部資源的一個常用器件,最常見應用于異步時鐘域劃分和緩沖數(shù)據(jù),但不僅限于此,簡化設計、減少耦合、輸入輸出接口固定,便于仿真和驗證,都是使用FIFO帶來的設計上的益處。

fpga相關文章:fpga是什么




關鍵詞: FPGA FIFO SRAM

評論


相關推薦

技術專區(qū)

關閉