日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁 > > ZYNQ
		


一:fifo是什么

FIFO的完整英文拼寫為FirstIn First Out,即先進(jìn)先出。FPGA或者ASIC中使用到的FIFO一般指的是對(duì)數(shù)據(jù)的存儲(chǔ)具有先進(jìn)先出特性的一個(gè)存儲(chǔ)器,常被用于數(shù)據(jù)的緩存或者高速異步數(shù)據(jù)的交互。

二:FIFO有幾種結(jié)構(gòu)

FIFO從大的情況來分,有兩類結(jié)構(gòu):單時(shí)鐘FIFOSCFIFO)和雙時(shí)鐘FIFO(DCFIFO),其中雙時(shí)鐘FIFO又可以分為普通雙時(shí)鐘(DCFIFO)和混合寬度雙時(shí)鐘FIFO (DCFIFO_MIXED_WIDTHS)。三種FIFO結(jié)構(gòu)的英文含義如下所示:

? SCFIFO: 單時(shí)鐘FIFO

? DCFIFO:雙時(shí)鐘 FIFO

? DCFIFO_MIXED_WIDTHS: 混合寬度雙時(shí)鐘

在沒有特別指明的情況下,混合寬度雙時(shí)鐘FIFO和雙時(shí)鐘FIFO統(tǒng)稱為雙時(shí)鐘FIFO。


下圖為分別為單時(shí)鐘FIFO和雙時(shí)鐘FIFO的符號(hào)圖:

從圖中我們可以看到,單時(shí)鐘FIFO具有一個(gè)獨(dú)立的時(shí)鐘端口clock,當(dāng)Clock上升沿到達(dá)時(shí),且wrreq有效時(shí),將data[7..0]中的數(shù)據(jù)寫入FIFO;當(dāng)Clock上升沿到達(dá)時(shí),且rdreq有效時(shí),將q[7..0]中的數(shù)據(jù)輸出FIFO;full是滿標(biāo)志位,當(dāng)FIFO寫滿時(shí)有效,almost_full是將滿標(biāo)志,當(dāng)快寫滿時(shí)有效,almost_full數(shù)值可以配置;同理empty與almost_empty是空標(biāo)志和將要空標(biāo)志,自己也可以配置almost_empty。usedw[7..0]是當(dāng)前FIFO可以使用的數(shù)據(jù)。sclr是同步清零,當(dāng)有效時(shí)且Clocks上升沿到達(dá)時(shí)清楚FIFO的數(shù)據(jù);aclr是異步清零,當(dāng)有效時(shí)清除FIFO的數(shù)據(jù)。


雙時(shí)鐘FIFO和單時(shí)鐘FIFO基本一樣,就是讀寫分別采用不同的時(shí)鐘信號(hào)。wrfull為寫滿標(biāo)志,wrempty為寫空標(biāo)志,當(dāng)我們想在只有FIFO空的時(shí)候才能寫入時(shí)就用wrempty來判斷,wrusedw[8..0]寫入多少數(shù)據(jù),rdusedw[8..0]能讀出多少數(shù)據(jù)。這里將寫入的數(shù)據(jù)和刻度的數(shù)據(jù)分開計(jì)數(shù)的原因是,當(dāng)我們寫入數(shù)據(jù)長度和讀數(shù)據(jù)長度不同時(shí),比如寫的數(shù)據(jù)長度是16位,讀的數(shù)據(jù)長度是8位,當(dāng)寫入一個(gè)數(shù)據(jù)wrusedw[8..0]=1,而rdusedw[8..0]=2。rdfull是讀滿標(biāo)志,當(dāng)我們要想要只有寫滿時(shí)才可讀可根據(jù)這個(gè)標(biāo)志判斷(讀數(shù)據(jù)包)。rdempty讀空標(biāo)志,當(dāng)FIFO沒有可讀數(shù)據(jù)時(shí)有效。aclr異步請(qǐng)零。雙時(shí)鐘FIFO只有異步清零。


三:不同結(jié)構(gòu)的FIFO各有什么作用

單時(shí)鐘FIFO:

單時(shí)鐘FIFO常用于片內(nèi)數(shù)據(jù)交互,例如,在FPGA的控制下從外部傳感器讀取到的一連串傳感器數(shù)據(jù),首先被寫入FIFO中,然后再以UART串口的數(shù)據(jù)發(fā)送速率將數(shù)據(jù)依次發(fā)送出去。由于傳感器的單次讀取數(shù)據(jù)可能很快,但并不是時(shí)刻都需要采集數(shù)據(jù),例如某傳感器使用SPI接口的協(xié)議,F(xiàn)PGA以2M的SPI數(shù)據(jù)速率從該傳感器中讀取20個(gè)數(shù)據(jù),然后以9600的波特率通過串口發(fā)送出去。此過程每秒鐘執(zhí)行一次。因?yàn)?M的數(shù)據(jù)速率遠(yuǎn)高于串口9600的波特率,因此需要將從傳感器中采集到的數(shù)據(jù)首先用FIFO緩存起來,然后再以串口的數(shù)據(jù)速率緩慢發(fā)送出去。這里,由于傳感器數(shù)據(jù)的讀取和串口數(shù)據(jù)的發(fā)送都是可以同步于同一個(gè)時(shí)鐘的,因此可以使用單時(shí)鐘結(jié)構(gòu)的FIFO來實(shí)現(xiàn)此功能。

雙時(shí)鐘FIFO:

雙時(shí)鐘FIFO的一個(gè)典型應(yīng)用就是異步數(shù)據(jù)的收發(fā)。

所謂異步數(shù)據(jù)是指數(shù)據(jù)的發(fā)送端和接收端分別同步與不同的時(shí)鐘域,使用雙時(shí)鐘FIFO的獨(dú)立的讀寫時(shí)鐘結(jié)構(gòu),能夠?qū)⒉煌瑫r(shí)鐘域中的數(shù)據(jù)同步到所需的時(shí)鐘域系統(tǒng)中。例如,在一個(gè)視頻圖像采集系統(tǒng)中,實(shí)現(xiàn)將攝像頭采集的數(shù)據(jù)通過VGA在顯示器上顯示。攝像頭輸入的數(shù)據(jù)長度和速度與輸出到VGA顯示的數(shù)據(jù)長度和速度都不相同,這種情況下使用雙時(shí)鐘FIFO。


四:如何在Altera FPGA中使用FIFO實(shí)現(xiàn)功能設(shè)計(jì)

在Altera FPGA中使用FIFO實(shí)現(xiàn)用戶功能設(shè)計(jì)主要有三種實(shí)現(xiàn)方式,第一種為用戶根據(jù)需求自己編寫FIFO邏輯,當(dāng)用戶對(duì)于FIFO的功能有特殊需求時(shí),可以使用此種方式實(shí)現(xiàn),但此種方式要求用戶有較高的RTL設(shè)計(jì)能力。第二種方式為使用第三方提供的開源IP核,此種IP核以源碼的形式提供,能夠快速的應(yīng)用到用戶系統(tǒng)中,當(dāng)用戶對(duì)FIFO功能有特殊需求時(shí),可以在此源碼的基礎(chǔ)上進(jìn)行修改,以適應(yīng)自己的系統(tǒng)需求。第三種方式為使用Quartus II軟件提供的免費(fèi)FIFO IP核,此種方式下,Quartus II軟件為用戶提供了友好的圖形化界面方便用戶對(duì)FIFO的各種參數(shù)和結(jié)構(gòu)進(jìn)行配置,生成的FIFO IP核針對(duì)Altera不同系列的器件,還可以實(shí)現(xiàn)結(jié)構(gòu)上的優(yōu)化。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉