LATTICE 儲存之FIFO的使用

2022-06-12 07:42:08 字數 2021 閱讀 5927

坑,,以後填

對於lattice 的  fifo 儲存器分為兩種,見下圖:

這兩個的主要區別是乙個後面加dc乙個不加,那這個dc是什麼意思呢??dc這裡是dual  clock的意思,也就是雙時鐘的意思,那意思就很明顯了,另乙個是單時鐘;更本質的可以說單時鐘是同步fifo的意思,雙時鐘是非同步fifo的意思。

同步fifo:

一、先看datasheet  

顯示埠說明: 

沒有輸出暫存器時的寫操作,可以看出,寫操作是在clk的上公升沿的時候將 寫請求使能有效且寫資料準備好即可。寫入資料之後empty就會被拉低。

上圖顯示寫滿之後再寫資料就無效了。

讀時序: 

上圖可以看出,在寫使能有效的乙個時鐘週期之後資料才送出q埠。

當最後一次讀取資料的時候,empty訊號會被拉高,然後乙個時鐘週期之後資料從q埠送出。

在輸出埠使能了輸出暫存器之後,對fifo的寫操作沒有影響,只是對讀操作有影響,具體影響是:在原來的基礎上又延時了乙個時鐘週期。

最後需要注意的是: 

這個操作和生成fifo的設定有關係。

現在就看fifo生成的時候的設定吧:

首先是名字和路徑以及語言的選擇,直接跳過。

開啟後介面如下:

介面設定也很簡單, 先是fifo的型別,預設即可;位址深度就是存多少個資料,這裡深度只能是2的冪即2的n次方;資料寬度可以任意選擇,預設輸入和輸出的深度寬度是一樣的。enable output reg選項就是使能輸出暫存器選項,選擇之後就是輸出端資料延時兩個時鐘週期輸出。

controlled by rden 選擇時候,讀取的時候時序圖就是上面最後乙個時序圖的時候。

設定輸入滿,輸出空的閾值;設定顯示內部資料個數。

最後選擇左下端的import ipx to diamond project 選項之後,生成的fifo檔案會直接加入到工程裡面去。

同步fifo就到這裡。 

非同步fifo

非同步fifo與同步fifo有所不同,

先是埠:

可以看出它有兩個時鐘,但是本質其實和同步fifo相似,可以看做為兩個同步fifo,在不同的時鐘驅動下乙個只進行讀操作,乙個只進行寫操作,讀寫單獨操作互補影響,這裡不做時序圖的介紹和記錄了,直接看生成時候的設定介面。

可以看到  上圖兩個紅色方塊內是兩個不同之處,上面是讀和寫操作都要設定fifo的儲存深度和資料寬度。   而且深度要是2的冪。

最重要的是要確保輸入的深度乘以資料寬度要等於輸出的 深度乘以資料的寬度。否則生成不了fifo。

下面方框內是資料的計數,讀寫資料分別計數。在寫資料的計數增加之後,讀資料的計數也會在讀時鐘作用下相應的增加。

lattice 包的用法

1.library lattice 載入包。dxyplot y x,data d xy的散點圖 xyplot y x z,data d,pch c 1,3,4 如果z 有明確的類別的名字,則顯示類別名字,如果沒有確的那麼顯示組別都是z。注意上面兩張圖分組的異同之處。加上 的才是按照面板進行分組。來乙...

Lattice的JTAG程式設計燒錄

jtag joint test action group 聯合測試行動組 是一種國際標準測試協議 ieee1149.1相容 主要功能兩種 一是用於測試晶元,二是用於debug,對各類晶元以及外圍裝置進行除錯。此處介紹debug功能。jtag的基本原理是在器件內部定義乙個tap test access...

頁式儲存管理(FIFO演算法)

今天,第一次寫部落格,有點小激動。這次的題目是頁式儲存管理,要求輸入記憶體頁面數,程序訪問序列個數以及程序的頁號,根據fifo演算法求出淘汰頁號,缺頁頁號,缺頁次數,缺頁率,預設記憶體3個物理塊,且是單程序。本次實驗用到了佇列,將物理塊中頁號,淘汰的頁號,缺頁號壓入佇列,最後列印出來,並根據缺頁佇列...