99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣設(shè)計(jì)一個(gè)同步FIFO?(3)

jf_78858299 ? 來源:IC加油站 硅谷老李 ? 作者:硅谷老李 ? 2023-05-04 15:59 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

這一篇來講一下如何解決上一篇[如何設(shè)計(jì)一個(gè)同步FIFO(二)]最后提出的問題。

在上一篇中,我們設(shè)計(jì)的基于雙端口SRAM的同步FIFO結(jié)構(gòu)如下,

我們說這個(gè)結(jié)構(gòu)之所以使得FIFO的輸出Q在讀完SRAM之后保持穩(wěn)定,其實(shí)需要SRAM本身可以保持RDATA在讀操作之后的多個(gè)周期保持穩(wěn)定。即SRAM本身的讀時(shí)序如下圖所示:圖中cycle 4,5,6都沒有讀操作,SRAM的RDATA依然保持D0不變。

但是如果SRAM的讀時(shí)序不能保證這樣,而是只能保證數(shù)據(jù)RDATA valid一個(gè)周期,那么我們就無法使用上面的結(jié)構(gòu)。

那么要怎么做才能達(dá)到我們想要的FIFO時(shí)序呢?大家可以很容易想到,如果想保持?jǐn)?shù)據(jù)穩(wěn)定,那還是要借助一級(jí)Flop的幫忙,即將SRAM的輸出RDATA鎖在一個(gè)buffer flop里。不過大家也看到,在上一講里我們下面的結(jié)構(gòu)也還是有問題。

下面老李帶領(lǐng)大家整理設(shè)計(jì)思路。我們看上面的SRAM的時(shí)序圖,可以發(fā)現(xiàn),我們周期T的時(shí)候讀一次SRAM,數(shù)據(jù)在T+1周期到RDATA,我們再把這個(gè)數(shù)據(jù)存到一級(jí)flop中,那么要在T+2周期才能在flop的q上看見這個(gè)數(shù)據(jù)。這2個(gè)周期是無法避免的。所以說,當(dāng)我們的FIFO要pop一次,然后下一個(gè)周期FIFO的Q數(shù)據(jù)要切換成最頭上的數(shù)據(jù)(假設(shè)這個(gè)數(shù)據(jù)是head),那么我們可以得出結(jié)論,我們不能在pop的這一個(gè)cycle才去從SRAM中讀head,而必須讓head在這pop之前已經(jīng)被讀到了flop里,那么當(dāng)pop來了之后,我們只需要讓FIFO的q切換到這個(gè)flop輸出就可以了。這是設(shè)計(jì)思路的第一層次。

下面大家再考慮,我們切換到了另一個(gè)flop,那么這個(gè)時(shí)候輸出前一個(gè)Q的那個(gè)flop干什么去呢?當(dāng)然不能閑著,它的任務(wù)是去接受此時(shí)存在SRAM里最頭上的數(shù)據(jù),相當(dāng)于從SRAM里提前預(yù)支了這個(gè)數(shù),緩存在這里,這樣當(dāng)下一個(gè)pop來的時(shí)候,可以在下一個(gè)周期再切換到它。

所以大家可以得出一個(gè)下面的結(jié)構(gòu)。

要注意的點(diǎn)是我們這里有兩級(jí)輸出buffer flop,在上一講當(dāng)中我們說FIFO進(jìn)來的第一個(gè)數(shù)不能存到RAM里,而是要直接存到輸出級(jí)flop去。那么在上面的結(jié)構(gòu)有相應(yīng)的變化:FIFO進(jìn)來的前兩個(gè)數(shù)都不能存到RAM里,而是要從第3個(gè)數(shù)開始才把數(shù)據(jù)存到RAM里。

時(shí)序圖建議大家自己畫一下。

聰明的同學(xué)可能覺得這個(gè)思路很眼熟,沒錯(cuò),這里的解決的辦法其實(shí)是數(shù)字電路設(shè)計(jì)中很常見的一個(gè)思路:乒乓Ping-pong buffer。

ping-pong buffer很常用,也是數(shù)字電路設(shè)計(jì)中的一個(gè)??贾R(shí)點(diǎn)。特別是valid/ready 握手協(xié)議中如何插入一級(jí)pipestage還能保證傳輸沒有bubble,即每個(gè)周期都能夠傳輸數(shù)據(jù),老李當(dāng)年面試被問到不止一次,老李自己做面試官也喜歡問這個(gè)問題。其實(shí)老李之前是想專門拿出來一篇來講ping-pong buffer的,不過發(fā)現(xiàn)其他很多公眾號(hào)博主已經(jīng)寫過相應(yīng)的文章了,老李覺得大家看他們的文章就可以。所以這篇咱們只是簡略講一講ping-pong buffer在這里的應(yīng)用。

這里也給另外一個(gè)公眾號(hào)“數(shù)字IC自修室”打個(gè)廣告,上面也有很多很棒的文章,關(guān)于ping pong buffer大家可以看這一篇

[芯片設(shè)計(jì)小經(jīng)驗(yàn)——乒乓buffer]

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • sram
    +關(guān)注

    關(guān)注

    6

    文章

    785

    瀏覽量

    115946
  • fifo
    +關(guān)注

    關(guān)注

    3

    文章

    401

    瀏覽量

    44806
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    同步FIFO設(shè)計(jì)詳解及代碼分享

    FIFO (先入先出, First In First Out )存儲(chǔ)器,在 FPGA 和數(shù)字 IC 設(shè)計(jì)中非常常用。 根據(jù)接入的時(shí)鐘信號(hào),可以分為同步 FIFO 和異步 FIFO
    發(fā)表于 06-27 10:24 ?2735次閱讀
    <b class='flag-5'>同步</b><b class='flag-5'>FIFO</b>設(shè)計(jì)詳解及代碼分享

    求大神幫忙給個(gè)VHDL 寫的同步FIFO

    急需同步FIFO,我這有個(gè),但是仿真圖不對,我也不知道是不是代碼有問題。
    發(fā)表于 03-15 09:25

    異步FIFO結(jié)構(gòu)

    設(shè)計(jì)個(gè)FIFO是ASIC設(shè)計(jì)者遇到的最普遍的問題之。本文著重介紹怎樣設(shè)計(jì)FIFO——這是
    發(fā)表于 10-15 08:44 ?94次下載

    FPGA之FIFO練習(xí)3:設(shè)計(jì)思路

    根據(jù)FIFO工作的時(shí)鐘域,可以將FIFO分為同步FIFO和異步FIFO。同步
    的頭像 發(fā)表于 11-29 07:08 ?2093次閱讀

    同步FIFO之Verilog實(shí)現(xiàn)

    FIFO的分類根均FIFO工作的時(shí)鐘域,可以將FIFO分為同步FIFO和異步FIFO。
    的頭像 發(fā)表于 11-01 09:57 ?2365次閱讀

    怎樣設(shè)計(jì)個(gè)同步FIFO?(1)

    今天咱們開始聊聊FIFO的設(shè)計(jì)。FIFO個(gè)數(shù)字電路中常見的模塊,主要作用是數(shù)據(jù)產(chǎn)生端和接受端在短期內(nèi)速率不匹配時(shí)作為數(shù)據(jù)緩存。FIFO
    的頭像 發(fā)表于 05-04 15:48 ?1199次閱讀

    怎樣設(shè)計(jì)個(gè)同步FIFO?(2)

    開始往下讀之前,老李先問個(gè)問題,假如現(xiàn)在讓你設(shè)計(jì)個(gè)深度為N的基于2port SRAM的同步FIFO
    的頭像 發(fā)表于 05-04 15:55 ?1398次閱讀
    <b class='flag-5'>怎樣</b>設(shè)計(jì)<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b><b class='flag-5'>同步</b><b class='flag-5'>FIFO</b>?(2)

    FIFO設(shè)計(jì)—同步FIFO

    FIFO是異步數(shù)據(jù)傳輸時(shí)常用的存儲(chǔ)器,多bit數(shù)據(jù)異步傳輸時(shí),無論是從快時(shí)鐘域到慢時(shí)鐘域,還是從慢時(shí)鐘域到快時(shí)鐘域,都可以使用FIFO處理。
    發(fā)表于 05-26 16:12 ?1888次閱讀
    <b class='flag-5'>FIFO</b>設(shè)計(jì)—<b class='flag-5'>同步</b><b class='flag-5'>FIFO</b>

    FIFO設(shè)計(jì)—異步FIFO

    異步FIFO主要由五部分組成:寫控制端、讀控制端、FIFO Memory和兩個(gè)時(shí)鐘同步
    發(fā)表于 05-26 16:17 ?1865次閱讀
    <b class='flag-5'>FIFO</b>設(shè)計(jì)—異步<b class='flag-5'>FIFO</b>

    同步FIFO設(shè)計(jì)(上)

    FIFO,F(xiàn)irst In First Out,先入先出隊(duì)列,顧名思義,即第一個(gè)到達(dá)的數(shù)據(jù)也將會(huì)是第一個(gè)離開。
    的頭像 發(fā)表于 06-05 14:39 ?1300次閱讀
    <b class='flag-5'>同步</b><b class='flag-5'>FIFO</b>設(shè)計(jì)(上)

    個(gè)簡單的RTL同步FIFO設(shè)計(jì)

    FIFO 是FPGA設(shè)計(jì)中最有用的模塊之。FIFO 在模塊之間提供簡單的握手和同步機(jī)制,是設(shè)計(jì)人員將數(shù)據(jù)從
    發(fā)表于 06-14 08:59 ?602次閱讀

    基于寄存器的同步FIFO

    ? FIFO 是FPGA設(shè)計(jì)中最有用的模塊之。FIFO 在模塊之間提供簡單的握手和同步機(jī)制,是設(shè)計(jì)人員將數(shù)據(jù)從
    的頭像 發(fā)表于 06-14 09:02 ?1080次閱讀

    基于Verilog的同步FIFO的設(shè)計(jì)方法

    同步FIFO的設(shè)計(jì)主要包括讀寫地址的產(chǎn)生、數(shù)據(jù)的讀寫、以及狀態(tài)的控制。下面我們將分別介紹這三個(gè)方面的設(shè)計(jì)。
    發(fā)表于 08-31 12:53 ?1237次閱讀

    同步FIFO設(shè)計(jì)分析

    模塊雖小但是要有新意,首先寫個(gè)同步FIFO,這是個(gè)爛大街的入門級(jí)項(xiàng)目,但是我肯定不會(huì)寫的那么
    的頭像 發(fā)表于 09-11 17:11 ?911次閱讀
    <b class='flag-5'>同步</b><b class='flag-5'>FIFO</b>設(shè)計(jì)分析

    同步FIFO和異步FIFO的區(qū)別 同步FIFO和異步FIFO各在什么情況下應(yīng)用

    簡單的種,其特點(diǎn)是輸入和輸出都與時(shí)鐘信號(hào)同步,當(dāng)時(shí)鐘到來時(shí),數(shù)據(jù)總是處于穩(wěn)定狀態(tài),因此容易實(shí)現(xiàn)數(shù)據(jù)的傳輸和存儲(chǔ)。 而異步FIFO則是在波形的上升沿和下降沿上進(jìn)行處理,在輸入輸出端口處分別增加輸入和輸出指針,用于管理數(shù)據(jù)的讀寫。
    的頭像 發(fā)表于 10-18 15:23 ?2137次閱讀