您好,登錄后才能下訂單哦!
FIFO
FIFO:
中文意思:先進(jìn)先出【類(lèi)似于堆棧】
作用:
在FPGA中,一般用于不同時(shí)域之間的數(shù)據(jù)傳遞,比如FIFO的一端是AD采集,另一端是計(jì)算機(jī)PCI總線,假設(shè)AD的采集速度一般都是幾百Kb/s,PCI總線的速度為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工程
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)方向速率的特性。
FIFO讀寫(xiě)模式:
標(biāo)準(zhǔn)模式和預(yù)取模式。通常我們選擇標(biāo)準(zhǔn)模式,至于預(yù)取FIFO的作用目前還沒(méi)有遇到。
我們選擇位寬和深度后,地址自動(dòng)就生成了。
data port parameters 中的actual write depth和actual read depth
我們?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 RAM和distribute 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有效。
之后是寫(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ù)一次。
最后可以看到我們配置的FIFO信息如下(注意幾個(gè)關(guān)鍵信息),最后生成IP就好了。
【有效電平】
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)志有效電平是?高有效
仿真結(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)容。