一種節能型可升級異步FIFO的FPGA實現

2021-01-11 電子產品世界

  現代數字系統中,異步FIFO是一種被廣泛應用於跨時鐘域進行數據傳輸的有效方式。異步FIFO主要應用於兩種不同時鐘域的數據傳輸,這意味著數據的寫入在一個時鐘域,而數據的讀出卻在另一個時鐘域,兩個時鐘完全異步[1]。現代通信系統中,特別是在移動通信系統中,人們對於節能型的產品提出了更高的要求。隨著技術的發展,FPGA的技術、性能、穩定性等指標已經得到很大提高,同時FPGA廠商為不同的應用開發提供了各種IP核,大大減少了產品的開發周期,在各大FPGA廠商中,Xilinx的IP核應用比較廣泛。但其IP核卻沒有關於異步FIFO節能方面的設計。在文獻[2]中對於FIFO的設計有節能方面的改進,由於其主要應用於ASIC設計,對於FPGA中的應用並不完全適用。

本文引用地址:http://www.eepw.com.cn/article/265945.htm

  本文提出了一種更加節能而且能應用於高速應用的FPGA設計,同時本文提出一種改進的格雷碼二進位碼轉換結構,在此基礎上利用Xilinx的FPGA晶片現有的數字時鐘管理模塊實現節能方面改進。本文所提出的結構不依賴於現有的IP核,而且可以容易地建立自己的IP核。實際應用中,通過FPGA與DSP進行數據傳輸可工作於高達100/153.6 MHz讀/寫時鐘域。

  1 FIFO的主要結構

  1.1 主要的FIFO結構

  在所有FIFO結構中,首先要提到的是單時鐘域的同步FIFO,雖然同步FIFO在現在的實際應用中很少被使用,但是其結構將有助於理解兩個時鐘域的異步FIFO的實現。主要有線性結構的FIFO和線性可調結構的FIFO[2]。其結構圖如圖1。

  

 

  線性可調FIFO只是在線性FIFO的基礎上增加了控制信號以便於容量擴展。從圖1中可以看出,無論線性的FIFO還是線性可調結構的FIFO,都是由一些移位寄存器所組成,其主要優點是結構簡單容易實現。從數據的輸入到輸出這一過程看,數據都要經過每個寄存器,當FIFO容量變大時,這類結構的缺點也很突出,如數據從輸入到輸出的延時時間長,而且能耗比較大。

  為了克服以上FIFO結構的缺點,人們提出了很多改善的結構,其中有並行的FIFO、樹型FIFO、摺疊型的FIFO[2]、環型結構的FIFO[1]。在這些結構中,由於環型的FIFO結構設計相對容易而被廣泛採用。本文實現的是基於環型的FIFO結構,並在此基礎上進行了節能型的設計改進,使之應用於現代FPGA中。環型結構的FIFO是一種雙時鐘域的FIFO結構,數據在不同的時鐘域中傳輸時需要考慮數據傳輸的有效性,同時必需克服數據在不同的時鐘中傳輸時而產生的亞穩態。

  1.2 亞穩態

  數據在傳輸的過程中,接收寄存器收到變化的數據時,數據的改變發生在時鐘觸發沿而導致接受數據出現不穩定的狀態[3]稱為亞穩態,如圖2上部分所示。因此在異步時鐘之間進行數據傳輸常常會用到同步單元。單字節同步單元比較簡單,而其常用的同步單元的結構如圖2下半部分所示。在多位的跨時鐘域數據傳輸中,情況比單比特的數據傳輸複雜得多,由於存在多位數據同時變化的情況,為了提高數據傳輸的穩定性,採用將二進位碼轉化為格雷碼[2]後傳輸。

  

 

  2 主體結構與具體實現

  本文所採用的結構是基於環型FIFO結構[1],其整體結構如圖3所示。在圖3中,總線用粗實線表示,其中總線上的數字(如m)表示總線位寬;控制線用虛線表示,輸入、輸出的信號(如FIFO空/滿信號)用細的實線表示,箭頭表示輸入/出方向。從圖3中可以清楚地看出,整個異步FIFO的結構由讀/寫控制模塊、讀/寫同步模塊、讀/寫時鐘控制模塊以及雙口的RAM七個模塊組成。由於採用模塊化的設計結構,以上的結構並不局限於具體的應用,可以很容易設計成實際應用需求的IP核,而且容易升級,相對於傳統的設計,增加的時鐘控制模塊能有效提高能效。

  

fpga相關文章:fpga是什麼


相關焦點

  • 異步fifo的設計(FPGA)
    本文首先對異步 FIFO 設計的重點難點進行分析,最後給出詳細代碼。本文引用地址:http://www.eepw.com.cn/article/201807/383738.htm一、FIFO簡單講解FIFO的本質是RAM, 先進先出重要參數:fifo深度(簡單來說就是需要存多少個數據)fifo位寬(每個數據的位寬)FIFO有同步和異步兩種,同步即讀寫時鐘相同,異步即讀寫時鐘不相同同步
  • FIFO 同步、異步以及Verilog代碼實現
    FIFO是英文First In First Out 的縮寫,是一種先進先出的數據緩存器,他與普通存儲器的區別是沒有外部讀寫地址線,這樣使用起來非常簡單,但缺點就是只能順序寫入數據,順序的讀出數據, 其數據地址由內部讀寫指針自動加1完成,不能像普通存儲器那樣可以由地址線決定讀取或寫入某個指定的地址。
  • 基於FPGA的高速異步FIFO的設計與實現
    多時鐘帶來的一個問題就是,如何設計異步時鐘之間的接口電路。異步FIFO(First In First Out)是解決這個問題的一種簡便、快捷的解決方案。使用異步FIFO可以在兩個不同時鐘系統之間快速而方便地傳輸實時數據.在網絡接口、圖像處理等方面,異步FIFO都得到廣泛的應用。異步FIFO是一種先進先出的電路,使用在數據接口部分,用來存儲、緩衝在兩個異步時鐘之間的數據傳輸。
  • 一種讀寫深度可配置的異步FIFO設計
    基於多時鐘驅動的設計已經越來越普遍,在異步時鐘域的設計中,跨時鐘域數據信號傳輸是必須考慮的一個問題。控制信號一般使用握手協議來實現異步傳輸,對於異步時鐘域大數據量的傳輸則經常使用異步FIFO來實現。 基於FIFO進行跨時鐘域數據傳輸的具體設計,主要藉助於FIFO的空/滿狀態信號來控制對FIFO的讀寫操作。
  • 基於FPGA與DDR2 SDRAM的大容量異步FIFO緩存設計
    但是在某些價格敏感、要求海量數據緩存的高速系統中,出於價格和性能方面的考慮,大容量異步FIFO晶片並非這類設計的最佳選擇。FPGA具有工作速度高、可配置性強、靈活性好等突出優點,使用Xilinx FPGA 提供的免費MIG IP核可以很容易實現FPGA與外部存儲器之間的接口,而DDR2 SDRAM具有單位空間存儲容量大、高數據帶寬、價格便宜等優點。
  • 異步FIFO的VHDL設計
    FIFO的實現通常是利用雙口RAM和讀寫地址產生模塊來實現的。FIFO的接口信號包括異步的寫時鐘(wr_clk)和讀時鐘(rd_clk)、與寫時鐘同步的寫有效(wren)和寫數據(wr_data)、與讀時鐘同步的讀有效(rden)和讀數據(rd_data)。
  • 雷射告警系統的異步FIFO設計
    快速在片雷射告警接收系統中,A/D信號採樣頻率與FPGA中數據處理系統的工作頻率往往不一致,因此在這種情況下,為避免數據丟失,需要設計一種數據緩存。
  • client-go 之 DeltaFIFO 實現原理
    既然是先進進去的隊列,那麼就要具有隊列的基本功能,結構體下面其實就有一個類型斷言,表示當前的 FIFO 實現了 Queue 這個接口,所以 FIFO 要實現的功能都是在 Queue 中定義的,Queue 接口和 FIFO 位於同一文件中:// k8s.io/client-go/tools/cache/fifo.go// Queue 擴展了 Store // with
  • 基於FPGA的異步LVDS過採樣的研究和實現
    作為串行傳輸標準的一種,低電壓差分信號傳輸(LVDS)接口具有高速率、低功耗、低噪聲和低電磁幹擾等優點,廣泛應用於高速數字系統設計中。而在實際應用中,採用現場可編程門陣列(FPGA)實現高速LVDS是一種性價比較高的技術途徑。
  • 一種基於FPGA的視頻圖像畫面分割器設計
    研究的主要特色在於構建了以FPGA為核心器件的視頻畫面分割的硬體平臺,首先,將DVI視頻信號,經視頻解碼晶片轉換為數字視頻圖像信號後送入異步FIFO緩衝。然後,根據畫面分割需要進行視頻圖像數據抽取,並將抽取的視頻圖像數據按照一定的規則存儲到圖像存儲器。
  • 詳解FPGA四大設計要點
    CPU core:分為2種,軟core和硬core.軟core是用邏輯代碼寫的CPU模塊,可以在任何資源足夠的FPGA中實現,使用非常靈活。而且在大容量的FPGA中還可以集成多個軟core,實現多核並行處理。
  • 集成電路FPGA設計的四點建議
    CPUcore:可分為軟core和硬core兩種類型,Softcore是一個用邏輯代碼編寫的CPU模塊,他可以在有足夠資源的FPGA中中實現。此外,在大容量FPGA中中,可以集成多個軟core來實現多核並行處理。硬core是在特定的FPGA和CPUcore製成的,具有速度快、性能好的優點,但缺點是不夠靈活。
  • 有名管道(FIFO)的用法
    有名管道又稱為FIFO,是進程間通信的一種方式。FIFO具有以下特點:本文引用地址:http://www.eepw.com.cn/article/148651.htm1.全雙工的通信模式,數據先進先出;2.可以用於任意的進程之間,通過指定相同的管道文件進行通信;3.文件名存在文件系統中,而管道中的內容存在於內存中。
  • 基於LabVIEW的FPGA模塊FIFO深度設定實現
    為了解決基於LabVIEWFPGA模塊的DMAFIFO深度設定不當帶來的數據不連續問題,結合LabVIEWFPGA的編程特點和DMA FIFO的工作原理,提出了一種設定FIFO深度的方法。
  • 單片機的FIFO(先入先出)循環隊列實現
    >uint8#define QueueSize20 //fifo隊列的大小#define QueueFull0 //fifo滿置0#define QueueEmpty}}while(1);}隊列是一種先進先出
  • 基於SoC+FPGA平臺快速動態加載驅動開發及實現
    主要包括:1個EMAC控制器;1個USB2.0接口和1個USB1.1接口;2個I2C接口;1個McASP;2個McBSP;2個SPI接口;4個64位通用定時器;1個實時時鐘(RTC);1個可配置的16位HPI;144個可配置的GPIO管腳;3個UART接口;2個eHRPWM和3個eCAP;1個EMIFA口,可接16位SDRAM/NOR Flash/NAND Flash;1個EMIFB口,可接16位的
  • FPGA設計的高速FIFO電路技術
    在大容量高速採集系統項目的開發過程中,FPGA作為可編程邏輯器件,設計靈活、可操作性強,是高速數字電路設計的核心器件。由於FPGA內嵌存儲器的容量有限,通常不能夠滿足實際設計電路的需求,需要外接SRAM、SDRAM、磁碟陣列等大容量存儲設備。A/D輸出的數據流速度快,經過FPGA降速後,位數寬,速度仍然很高,不能直接存儲到外部存儲器。
  • 9年FPGA工作經驗,轉行了,苦海無涯……
    工作了9年的fpga,總要總結…… 其實說我的fpga經驗,也是一坨屎。三年的,用altera的c3和c4 做led控制卡。2年的用lattice的MACHXO-XO2和ECP2做了視頻和網絡光端機,3年的XILINX的SPARTAN 6 做了視頻ISP處理,現在一年的xilinx的ZYNQ做機器視覺。
  • 基於FPGA+Python的定點平方根實現
    ,目前在FPGA上有許多實現,但是這些實現方法通常採用目前硬體設計中普遍採用的Verilog和VHDL語言進行硬體設計,這種設計方法存在著仿真和校驗效率低,對於複雜的算法和軟體設計者之間的溝通較為困難等問題。
  • 異步FIFO在DSP圖像採集系統中的應用
    (First In First Out)是一種先進先出的數據緩存器。FIFO與其他存儲器的區別是沒有讀寫地址線,操作可以變得很簡單,而且,它只能將數據順序寫入,並且順序讀出。 FIFO分為同步FIFO和異步FIFO。同步FIFO是指讀寫時鐘必須是同一個時鐘,而異步FIFO可以接受一種時鐘寫入數據,另一種時鐘讀出數據,也就是讀寫時鐘可以不一致,能夠相互獨立。 由於本系統中TVP5150送數據到DSP時,TVP5150的寫時鐘和DSP的讀時鐘是不一樣的。