溫馨提示×

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

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

FPGA之FIFO學(xué)習(xí)心得

發(fā)布時(shí)間:2020-08-11 18:32:51 來(lái)源:網(wǎng)絡(luò) 閱讀:25335 作者:倔強(qiáng)的小丑 欄目:開(kāi)發(fā)技術(shù)

FIFO

FIFO:

中文意思:先進(jìn)先出【類(lèi)似于堆棧】

 

作用:

FPGA中,一般用于不同時(shí)域之間的數(shù)據(jù)傳遞,比如FIFO的一端是AD采集,另一端是計(jì)算機(jī)PCI總線,假設(shè)AD的采集速度一般都是幾百Kb/sPCI總線的速度為200Mb/s,在這倆個(gè)的時(shí)域中傳遞數(shù)據(jù)時(shí)就可以采用FIFO來(lái)作為數(shù)據(jù)緩沖。同時(shí)FIFO還可以作為不同數(shù)據(jù)寬度之間的傳遞FIFO也是可以勝任的,比如UART收到的數(shù)據(jù)傳遞給USB。UART收到的數(shù)據(jù)是8位的數(shù)據(jù),USB傳遞的16數(shù)據(jù),如果之間傳遞,他們是不同的時(shí)域,傳輸?shù)乃俣纫彩遣灰粯拥模瑸榱私鉀Q這個(gè)我們可以使用FIFO,

將讀寫(xiě)時(shí)鐘配置為rd_clk、wr_clk;

讀寫(xiě)數(shù)據(jù)寬度 配置寫(xiě)8位數(shù)據(jù),讀16位數(shù)據(jù);

同時(shí)我們根據(jù)需求還可以選擇對(duì)應(yīng)標(biāo)志位,使能位有效時(shí)間等。

    

分類(lèi):

FIFO的類(lèi)型及FIFO說(shuō)明:

根據(jù)數(shù)據(jù)出現(xiàn)在輸出總線上的時(shí)間不同分為不同的種類(lèi)。

普通FIFO:每次在使能位有效的情況下,讀時(shí)鐘和寫(xiě)時(shí)鐘的上升沿來(lái)時(shí),將數(shù)據(jù)讀出  來(lái),一個(gè)時(shí)鐘一個(gè)數(shù)據(jù)。

預(yù)取FIFO:寫(xiě)時(shí)同普通FIFO一樣,讀時(shí)數(shù)據(jù)提前輸出到總線上,比普通FIFO早一個(gè)時(shí)鐘。

 

FIFO的生成:

同其他的IP生成是一樣的,我們選擇對(duì)應(yīng)的IP核后,會(huì)有對(duì)應(yīng)的配置向?qū)?,根?jù)向?qū)нx擇對(duì)應(yīng)的參數(shù)。

簡(jiǎn)單的步驟就省略掉了。

我們命名好了FIFO的名字后,就來(lái)到以下的界面,接下來(lái)我們要進(jìn)行一些相應(yīng)的配置。

1關(guān)于interface的選擇,【百度的,】native是做soc工程

FPGA之FIFO學(xué)習(xí)心得

Next后,需選擇時(shí)鐘和存儲(chǔ)類(lèi)型。

1,時(shí)鐘:一般根據(jù)FIFO的作用,讀寫(xiě)時(shí)鐘是不同步。

2,存儲(chǔ)類(lèi)型:有block RAM distibute RAM兩種。

【百度】由此區(qū)別表明,當(dāng)FIFO較大時(shí)應(yīng)選擇block RAM,當(dāng)FIFO較小時(shí),選擇distribute RAM.另外一個(gè)很重要的就是block RAM支持讀寫(xiě)不同寬度,而distribute不支持。在這里為了更全面的了解FIFO,選擇block RAM以擁有非對(duì)稱(chēng)方向速率的特性。

FPGA之FIFO學(xué)習(xí)心得

FIFO讀寫(xiě)模式:

標(biāo)準(zhǔn)模式和預(yù)取模式。通常我們選擇標(biāo)準(zhǔn)模式,至于預(yù)取FIFO的作用目前還沒(méi)有遇到。

我們選擇位寬和深度后,地址自動(dòng)就生成了。

data port parameters 中的actual write depthactual read depth

FPGA之FIFO學(xué)習(xí)心得

我們?cè)O(shè)置完時(shí)鐘和數(shù)據(jù)后,就該添加控制信號(hào)了

控制信號(hào)越多操作越復(fù)雜,同時(shí)對(duì)FIFO的控制更加精準(zhǔn)了

1、標(biāo)志位,半空和半滿

2、……

 

復(fù)位信號(hào)和可編程信號(hào)的配置。雖然在block RAMdistribute RAM中,啟用rst端口,且配置成同步復(fù)位,即整個(gè)FIFO共用一個(gè)復(fù)位信號(hào),而不是讀寫(xiě)不同的復(fù)位。至于編程信號(hào),看選項(xiàng)就很容易理解了。配置如圖,FIFO中數(shù)據(jù)達(dá)到200時(shí),programmable full有效,數(shù)據(jù)為10時(shí),programmable empty有效。

FPGA之FIFO學(xué)習(xí)心得

之后是寫(xiě)計(jì)數(shù)和讀計(jì)數(shù),都使之有效,由于寫(xiě)深度是256,讀深度是512.因此寫(xiě)計(jì)數(shù)器的寬度定義為8,讀計(jì)數(shù)器的狂度定義為9.其實(shí)不一定計(jì)數(shù)器一定要比深度大,當(dāng)計(jì)數(shù)器計(jì)數(shù)最大值小于數(shù)據(jù)深度時(shí),例如數(shù)據(jù)深度為512,而計(jì)數(shù)器大小為256,則每?jī)蓚€(gè)數(shù)據(jù)計(jì)數(shù)器計(jì)數(shù)一次。

FPGA之FIFO學(xué)習(xí)心得

  最后可以看到我們配置的FIFO信息如下(注意幾個(gè)關(guān)鍵信息),最后生成IP就好了。

FPGA之FIFO學(xué)習(xí)心得

 

 

 

【有效電平】

Rst 高電平有效

復(fù)位后(2,3)個(gè)周期內(nèi)是無(wú)法進(jìn)行寫(xiě)操作的;

  Wr_en 在拉高的上升沿時(shí),數(shù)據(jù)立即生效

  Rd_en 在讀上升沿并沒(méi)有進(jìn)行讀數(shù)據(jù),而是在下一個(gè)上升沿時(shí)進(jìn)行讀操作

關(guān)于計(jì)數(shù),如果計(jì)數(shù)值設(shè)置的不夠大時(shí)一開(kāi)始就會(huì)失效,成為高阻狀態(tài)。

讀寫(xiě)計(jì)數(shù)是大概不準(zhǔn).

 

 上升沿是時(shí)鐘上升沿 不是wr_en rd_en的上升沿, 【信號(hào)觸發(fā)后clk的上升沿生效】

 

空滿標(biāo)志有效電平是?高有效

FPGA之FIFO學(xué)習(xí)心得 

仿真結(jié)果圖

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


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

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

AI