溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

FIFO IP核使用的注意事項(xiàng)有哪些

發(fā)布時(shí)間:2021-11-10 10:01:11 來源:億速云 閱讀:175 作者:柒染 欄目:大數(shù)據(jù)

本篇文章給大家分享的是有關(guān)FIFO IP核使用的注意事項(xiàng)有哪些,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

前言

FIFO?還是FIFO IP核?這也需要寫總結(jié)嗎?太容易了吧。如果我是一個(gè)正在處于面試找工作中的年輕人,肯定關(guān)注的是如何手撕FIFO,這也是當(dāng)時(shí)校招時(shí)候干過的事情。但是作為一個(gè)FPGA工程師,我們更常使用的是FIFO的IP核,或者必然使用的是FIFO IP核,簡單快捷優(yōu)化。使用FIFO IP核的時(shí)候,或者設(shè)計(jì)電路使用FIFO IP的時(shí)候,對(duì)于新手或者不是精通的情況下,個(gè)人建議一點(diǎn)是對(duì)自己定制的FIFO仿真一下(或者嚴(yán)格遵守?cái)?shù)據(jù)手冊(cè)),做到時(shí)序關(guān)系清晰后,再設(shè)計(jì)電路。注意:不要不屑于此!

下面講解幾點(diǎn)關(guān)于FIFO IP核使用時(shí)的注意事項(xiàng),想到哪里到哪里!

位寬轉(zhuǎn)換

分布式ram資源的FIFO不能變換位寬
FIFO IP核使用的注意事項(xiàng)有哪些  
FIFO IP核使用的注意事項(xiàng)有哪些  
 
Block RAM資源可以變化位寬
FIFO IP核使用的注意事項(xiàng)有哪些  
FIFO IP核使用的注意事項(xiàng)有哪些  
 
Builtin FIFO資源不能變化位寬

FIFO IP核使用的注意事項(xiàng)有哪些FIFO IP核使用的注意事項(xiàng)有哪些

 

FIFO 安全電路

FIFO定制頁面存在一個(gè)Enable Safety Circuit,如下:

FIFO IP核使用的注意事項(xiàng)有哪些選擇此選項(xiàng),存在兩個(gè)額外輸出信號(hào):FIFO IP核使用的注意事項(xiàng)有哪些

如果不選擇Enable Safety Circuit,則不存在這兩個(gè)信號(hào)輸出:

FIFO IP核使用的注意事項(xiàng)有哪些  

此選項(xiàng)僅僅針對(duì)基于Bram資源的FIFO定制,如果使用分布式RAM資源,則不可選擇:FIFO IP核使用的注意事項(xiàng)有哪些

同理Builtin FIFO資源的FIFO也不可選擇。

假如使用的是此Block RAM資源的FIFO,選擇此信號(hào),有什么作用呢?多出來的兩個(gè)信號(hào)是什么意思?有什么用途?筆者曾在仿真中犯過一個(gè)錯(cuò)誤,就是在復(fù)位后的幾個(gè)時(shí)鐘直接給寫使能,可是怎么寫也寫不進(jìn)去數(shù)據(jù),后來發(fā)現(xiàn)是wr_rst_busy處于高電平狀態(tài),自然是不能寫的。所以判斷寫使能有效,可以將此信號(hào)作為判斷條件之一,如果該信號(hào)為高,則不能寫入。

這就引發(fā)一個(gè)疑問?既然存在這樣一個(gè)問題,那么多久之后才能對(duì)FIFO寫入數(shù)據(jù)呢?那就要看復(fù)位無效之后多久這個(gè)信號(hào)才能被拉低,且仿真看看:FIFO IP核使用的注意事項(xiàng)有哪些可見,大概20多個(gè)時(shí)鐘周期之后,這個(gè)信號(hào)就拉低無效了。這樣會(huì)不會(huì)對(duì)我們使用FIFO有影響呢?可以想象下20多個(gè)時(shí)鐘才多長時(shí)間,周期ns級(jí)別,況且寫使能可以以此信號(hào)作為寫使能有效條件,因此可以很容易規(guī)避這個(gè)問題,這里列出來的原因就是為了仿真時(shí)候,如果遇到了寫不進(jìn)去的情況時(shí),考慮下這個(gè)問題,以免莫名其妙,百思不得其解。

Xilinx對(duì)安全電路的使用還有一條建議,就是選擇異步復(fù)位時(shí),有可能導(dǎo)致BRAM數(shù)據(jù)的損壞,此時(shí)推薦使用安全電路。

對(duì)于異步FIFO而言,好像也只能使用異步復(fù)位,這就更有必要性了。

 

FIFO消耗資源

定制FIFO消耗資源與使用什么資源生成FIFO有關(guān),對(duì)于Block RAM資源的FIFO使用的自然是Block RAM資源,7系列的用于生成FIFO的Block RAM資源大小有兩種,18Kbit以及36Kbit兩種,一般默認(rèn)bit,可以說是18K以及36K。

FIFO位寬乘深度小于18K,自然是使用了一個(gè)18K的Bram,如下:

FIFO IP核使用的注意事項(xiàng)有哪些  

使用Block RAM資源:FIFO IP核使用的注意事項(xiàng)有哪些

大于18K的自然是一個(gè)36KBlock RAM:

FIFO IP核使用的注意事項(xiàng)有哪些  

使用BRAM資源:

FIFO IP核使用的注意事項(xiàng)有哪些  

大于36K,情況多變,是18K以及36K的組合:

FIFO IP核使用的注意事項(xiàng)有哪些FIFO IP核使用的注意事項(xiàng)有哪些

FIFO IP核使用的注意事項(xiàng)有哪些FIFO IP核使用的注意事項(xiàng)有哪些

 

輸出延遲

 
Read Latency為1的含義

使用分布式RAM資源以及Block RAM資源的FIFO可以選擇輸出寄存器打拍一次,這樣自然Read Latency為2,使用Builtin FIFO資源無法選擇輸出寄存器打拍。

FIFO IP核使用的注意事項(xiàng)有哪些  
FIFO IP核使用的注意事項(xiàng)有哪些  

假如都不寄存器輸出,即輸出不寄存一拍,那么這里的Read Latency = 1具體是什么含義呢?我想時(shí)序圖最能說明一切:

FIFO IP核使用的注意事項(xiàng)有哪些  

實(shí)際仿真看一下:FIFO IP生成總結(jié):FIFO IP核使用的注意事項(xiàng)有哪些

FIFO IP核使用的注意事項(xiàng)有哪些  

因此如果需要使用rd_data數(shù)據(jù)的話,需要對(duì)讀使能延遲一拍,判斷rd_en_r1有效時(shí)使用讀數(shù)據(jù)的實(shí)際值:

FIFO IP核使用的注意事項(xiàng)有哪些  
 
Read Latency為2的含義

知道了Read Latency為1的含義,為2的情況自然很容易理解,在添加了寄存器輸出的時(shí)候,就會(huì)使得Read Latency為2,如下:

FIFO IP核使用的注意事項(xiàng)有哪些  

同樣仿真實(shí)現(xiàn)下:

FIFO IP核使用的注意事項(xiàng)有哪些  
 

FIFO 讀寫計(jì)數(shù)器的含義

在FIFO定制頁面有如下選擇:Write Data Count,Read Data Count這兩個(gè)選擇,是什么意思呢?FIFO IP核使用的注意事項(xiàng)有哪些

那我們寫進(jìn)去一個(gè)數(shù)據(jù),看看兩者數(shù)據(jù)的變化:

 
寫計(jì)數(shù)器
FIFO IP核使用的注意事項(xiàng)有哪些  

從寫計(jì)數(shù)有效開始,延遲一個(gè)時(shí)鐘,計(jì)數(shù)器值更新為1,意思就是寫入了一個(gè)數(shù)據(jù);注意:我們?cè)趯?shí)際使用FIFO輸出參數(shù)之前,一定要仿真看下時(shí)序關(guān)系,以防用錯(cuò)。

我們嘗試寫入兩個(gè)數(shù)據(jù),來驗(yàn)證下這種關(guān)系:

FIFO IP核使用的注意事項(xiàng)有哪些  

關(guān)系一致。

 
讀計(jì)數(shù)器

讀計(jì)數(shù)器的含義是FIFO內(nèi)部存放了多少數(shù)據(jù)?但這個(gè)數(shù)據(jù)的更新需要一定的時(shí)間,例如:FIFO IP核使用的注意事項(xiàng)有哪些

數(shù)據(jù)的更新需要至少4個(gè)讀時(shí)鐘周期,因此,這個(gè)數(shù)據(jù)我們不能寫入之后立即使用;這個(gè)延遲是異步FIFO內(nèi)部跨時(shí)鐘域的結(jié)果。

注意:使用FIFO IP核內(nèi)部輸出信號(hào)的時(shí)候,保險(xiǎn)起見,需要自己仿真下,認(rèn)識(shí)下時(shí)序關(guān)系后再設(shè)計(jì)電路。

例如寫入了兩個(gè)數(shù)據(jù),之后又讀出了一個(gè),那這個(gè)值最終一定是1;

FIFO IP核使用的注意事項(xiàng)有哪些  

仿真驗(yàn)證了這個(gè)結(jié)果。

上面說了這些情況,其實(shí)都在數(shù)據(jù)手冊(cè)中有體現(xiàn),但是對(duì)于一個(gè)FIFO,大家都傾向于直接使用,不屑于看數(shù)據(jù)手冊(cè),不得不說,這都是年輕氣盛的表現(xiàn),或者天賦異稟。

因此,對(duì)于這種情況,我們有兩個(gè)選擇:一是看數(shù)據(jù)手冊(cè);二是自己仿真自己定制的IP核,看清時(shí)序后設(shè)計(jì)電路。

以上就是FIFO IP核使用的注意事項(xiàng)有哪些,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI