帶有浮水印的 FIFO 緩衝區模組(Verilog 和 VHDL)

邏輯主頁

特點

以下主題透過 Lattice Diamond 2.0.1 版設計軟體進行解說。

  • FIFO 緩衝區模組概述及常見用法
  • Watermark 實現
  • FIFO 配置
  • FIFO 緩衝區模組測試平台

介紹

此模組(Verilog 和 VHDL 語言)是一個先進先出(FIFO)緩衝器模組,通常用於緩衝可變速率資料傳輸或保存/緩衝數位通訊和訊號處理演算法中使用的資料。例如,FIFO 模組可用作 FIR 濾波器中的循環緩衝器或延遲線。

如果可用,這些工具將使用 FPGA 中的嵌入式區塊 RAM 資源。FIFO.vhd 和 FIFO_v.v 模組在測試平台中進行驗證,方法是向 FIFO 寫入和讀取值,同時觀察 RAM 資料和輸出標誌的狀態。

背景

FIFO 模組是一個可變長度的緩衝區,具有可擴展的暫存器字寬和位址空間(或深度)。它提供用於「近滿」和「近空」狀態的水印標誌。「近滿」和「近空」標誌的深度可以在模組的參數化(如果是 VHDL 版本,則在通用模組中)進行調整。FIFO 還具有用於空、滿和錯誤的標誌。它有一個輸出埠用於讀取資料計數。顧名思義,它告訴外部世界(模組外部)RAM 中讀寫指標之間目前儲存了多少個字。

本設計所需/使用的軟體:

Lattice Diamond 設計軟體 2.0.1 版,以及第三方軟體 Synplify Pro for Lattice 和 Active-HDL Lattice Edition。

應用

建構電路

FIFO_v.v 和 FIFO.vhd 可以透過分別更改每個模組中的參數化參數和通用參數的值來配置。輸出字寬和 FIFO 位址空間都可以縮放。透過調整 ALMST_F 和 ALMST_E 參數值,可以將浮水印標誌設定為在不同深度觸發。

設計包含資料輸入埠、時脈、低電位有效重置、讀取啟用、寫入啟用、資料輸出埠、資料計數連接埠、空、滿、近空、近滿以及錯誤訊號。 VHDL 產生的帶有輸入和輸出的黑盒模型如下圖 1 所示。

圖 1 – FIFO 緩衝區黑盒圖

Lattice Diamond「生成層次結構」功能中 FIFO Verilog 實作 HDL 框圖如下圖 2 所示。

圖 2 – FIFO 框圖

基本程式區塊(在 VHDL 實作中稱為處理區塊)用於推斷組合邏輯,從而控制指標和標誌,將推斷出的 RAM 區塊轉換為 FIFO。VHDL 和 Verilog 設計中使用的通用模組如下:

  • 觸發器更新,時脈上升沿敏感
  • 近滿/近空標誌控制,組合控制
  • 讀寫指針控制,組合控制
  • 記憶體陣列讀/寫控制,時脈上升沿敏感
  • 帶控制標誌的計數器,組合控制
  • 輸出暫存器連接

下圖 3 給出了一個 24bit 資料、4bit 位址空間的 RTL 框圖,其中包含 4 字深度的「近滿」和「近空」標誌。

圖 3 – FIFO 緩衝區的 RTL 框圖

Aldec Active HDL Testbench 測試平台的測試向量輸出如下圖 4 所示。當 FIFO 接近空或滿狀態時,可調式浮水印標誌將變為高電平,隨後是相應的空或滿標誌。如果在 FIFO 已滿時嘗試寫入 FIFO,或在 FIFO 為空時嘗試讀取 FIFO,則錯誤標誌將變為高電位。

圖 4 – FIFO Aldec Active HDL 測試台輸出

所包含的測試台是透過「HDL Diagram」視窗中的「生成測試台模板」命令建立的。之後,該測試台進行了修改,包含各種測試案例,用於測試條件標誌並確保讀寫指標控制正確。提供的測試台應該涵蓋大多數測試案例。

設計軟體

使用 Lattice Diamond 2.0.1 版開發 FIFO.vhd 和 FIFO_v.v,並結合 Synopsis(Synplify Pro for Lattice)和 Aldec(Active-HDL Lattice Edition)的支援軟體。Diamond 可作為獨立的開發環境,與其他綜合和模擬軟體搭配使用。

總結

本設計示範如何使用 Lattice Diamond 設計軟體在 Verilog 和 VHDL 中使用可設定 FIFO 模組。 Verilog 和 VHDL 測試平台示範如何使用「for 迴圈」產生測試向量和訊號延遲。

更多資訊

更多設計支援、產品教學、應用筆記、使用者指南及其他文檔,請訪問 Lattice 網站:http://www.latticesemi.com/support/index.cfm?source=topnav。

附錄

Verilog 檔案:

FIFO_v.v (7.6 KB)
FIFO_v_tf.v (3.0 KB)

VHDL 檔案:

FIFO.vhd (8.1 KB)
fifo_tb.vhd (4.6 KB)