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

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

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

異步FIFO相關(guān)面試問題

CHANBAEK ? 來源: FPGA的現(xiàn)今未 ? 作者: FPGA的現(xiàn)今未 ? 2023-10-01 10:11 ? 次閱讀

又到了一年一度的招聘季節(jié),有粉絲私信問了一個問題,一個關(guān)于以前流傳出來的大廠面試的題目,個人覺得算是比較經(jīng)典的題目,也是工作中經(jīng)常遇到的一個問題,所以準(zhǔn)備寫一篇回答下。

題目內(nèi)容

有一個數(shù)據(jù)需要從A時鐘域同步到B時鐘域,數(shù)據(jù)位寬是512bit的,但是考慮到其他原因,目前只允許使用256bit異步FIFO(已經(jīng)考慮空度滿寫的保護(hù)),因此設(shè)計了一個方案,如下圖所示,請問該方案有什么問題?如何優(yōu)化?

圖片

分析

通過上圖我們可以看到,512bit的數(shù)據(jù),被分成了2組256bit的數(shù)據(jù),采用同一個寫使能信號寫入到2個不同的異步FIFO中。在讀這一側(cè),通過一個FIFO的空信號,同時將2個FIFO中的數(shù)據(jù)讀出來。乍一看起來好像沒有什么問題,且仿真的話,也不會有問題。但是在實際芯片中卻不是這么回事。主要的錯誤就是誤認(rèn)為完全相同的異步FIFO在空、滿信號狀態(tài)上表現(xiàn)也一樣。

我們知道異步FIFO的空滿信號是通過格雷碼地址經(jīng)過轉(zhuǎn)換后比較得到的,而格雷碼在穿越異步時鐘域的時候,由于亞穩(wěn)態(tài),有可能造成穿越的結(jié)果出現(xiàn)延遲。如下圖所示,在t1時刻,寫地址的格雷碼已經(jīng)由00變成01,即寫入了一個數(shù)據(jù)。讀時鐘r_clk在采樣的過程中,由于亞穩(wěn)態(tài)寫地址同步后,可能得到01,或者00,如果得到01,那么在t2時刻empty信號就可以拉低了,如果是00,那么在t2時刻empty不會拉低,需要在t3時刻拉低。

圖片

一句話總結(jié),對于2個完全一樣的異步FIFO,即使同時寫入數(shù)據(jù),在讀時鐘域,empty信號的產(chǎn)生也是不一樣的,同樣,在寫時鐘域,full信號的產(chǎn)生也是不一樣的。

解決方案

這個問題的解決方案其實很簡單,寫入測,ready_o信號的產(chǎn)生不能只使用fifo_1的滿信號,也要使用fifo_2的滿信號,即ready_o = full1_n & full2_n(full低電平有效)。同理,在讀數(shù)據(jù)的時候,不能只看fifo_1是否空,必須是2個fifo都不空的時候才可能讀數(shù)據(jù)。

圖片

總結(jié)

其實上面這個題目在實際項目是經(jīng)常用到的。2個FIFO被同時寫入的時候,默認(rèn)為2個FIFO是同時不空的,通過上面的分析,我們知道異步FIFO不是這么回事,那同步FIFO呢?理論上來講,同步FIFO是同時不空的。但是不同廠家設(shè)計的FIFO,其特性可能也有差異,從代碼的可移植性和可靠性來講,也不建議采用一個FIFO為空就推斷另一個FIFO也為空的方案,必須嚴(yán)格遵守:使用哪個FIFO,就要使用它的空、滿信號。

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

    關(guān)注

    3

    文章

    389

    瀏覽量

    43717
  • 信號
    +關(guān)注

    關(guān)注

    11

    文章

    2794

    瀏覽量

    76849
  • 時鐘域
    +關(guān)注

    關(guān)注

    0

    文章

    52

    瀏覽量

    9539
  • 異步FIFO
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

    8389
收藏 人收藏

    評論

    相關(guān)推薦

    面試問題-難忘的面試經(jīng)歷

    是因為我在處理一個具體的技術(shù)問題時的方法有問題。稍后我會討論我在那次面試時遇到的問題。這些年我看到了很多關(guān)于工程師面試問題的文章。有一些是棘手的智力問題,會讓你感到極其困擾。其它一些是基本技能的考核
    發(fā)表于 09-21 09:41

    程序員面試問題總結(jié)

    面試問題總結(jié) 20180516
    發(fā)表于 07-26 17:21

    異步FIFO結(jié)構(gòu)及FPGA設(shè)計

    首先介紹異步FIFO 的概念、應(yīng)用及其結(jié)構(gòu),然后分析實現(xiàn)異步FIFO的難點問題及其解決辦法; 在傳統(tǒng)設(shè)計的基礎(chǔ)上提出一種新穎的電路結(jié)構(gòu)并對其進(jìn)行綜合仿真和FPGA 實現(xiàn)。
    發(fā)表于 04-16 09:25 ?46次下載

    高速異步FIFO的設(shè)計與實現(xiàn)

    本文主要研究了用FPGA 芯片內(nèi)部的EBRSRAM 來實現(xiàn)異步FIFO 設(shè)計方案,重點闡述了異步FIFO 的標(biāo)志信號——空/滿狀態(tài)的設(shè)計思路,并且用VHDL 語言實現(xiàn),最后進(jìn)行了仿真驗
    發(fā)表于 01-13 17:11 ?40次下載

    Camera Link接口的異步FIFO設(shè)計與實現(xiàn)

    介紹了異步FIFO在Camera Link接口中的應(yīng)用,將Camera Link接口中的幀有效信號FVAL和行有效信號LVAL引入到異步FIFO的設(shè)計中。分析了FPGA中設(shè)計
    發(fā)表于 07-28 16:08 ?32次下載

    異步FIFO結(jié)構(gòu)及FPGA設(shè)計

    摘要:首先介紹異步FIFO的概念、應(yīng)用及其結(jié)構(gòu),然后分析實現(xiàn)異步FIFO的難點問題及其解決辦法;在傳統(tǒng)設(shè)計的基礎(chǔ)上提出一種新穎的電路結(jié)構(gòu)并對其進(jìn)行
    發(fā)表于 06-20 12:46 ?3871次閱讀
    <b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>結(jié)構(gòu)及FPGA設(shè)計

    異步FIFO結(jié)構(gòu)及FPGA設(shè)計

    異步FIFO結(jié)構(gòu)及FPGA設(shè)計,解決亞穩(wěn)態(tài)的問題
    發(fā)表于 11-10 15:21 ?4次下載

    異步FIFO的設(shè)計分析及詳細(xì)代碼

    本文首先對異步 FIFO 設(shè)計的重點難點進(jìn)行分析,最后給出詳細(xì)代碼。 一、FIFO簡單講解 FIFO的本質(zhì)是RAM, 先進(jìn)先出 重要參數(shù):fifo
    發(fā)表于 11-15 12:52 ?8656次閱讀
    <b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>的設(shè)計分析及詳細(xì)代碼

    基于FPGA的異步FIFO設(shè)計方法詳解

    在現(xiàn)代電路設(shè)計中,一個系統(tǒng)往往包含了多個時鐘,如何在異步時鐘間傳遞數(shù)據(jù)成為一個很重要的問題,而使用異步FIFO可以有效地解決這個問題。異步FIFO
    發(fā)表于 07-17 08:33 ?8416次閱讀
    基于FPGA的<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>設(shè)計方法詳解

    基于異步FIFO結(jié)構(gòu)原理

    在現(xiàn)代的集成電路芯片中,隨著設(shè)計規(guī)模的不斷擴(kuò)大,一個系統(tǒng)中往往含有數(shù)個時鐘。多時鐘域帶來的一個問題就是,如何設(shè)計異步時鐘之間的接口電路。異步FIFO(Firstln F irsto ut)是解決這個
    發(fā)表于 02-07 14:22 ?0次下載
    基于<b class='flag-5'>異步</b><b class='flag-5'>FIFO</b>結(jié)構(gòu)原理

    中國移動面試問題匯總下載

    中國移動面試問題匯總下載
    發(fā)表于 05-21 10:20 ?0次下載

    華為 LTE 網(wǎng)絡(luò)面試問題匯總下載

    華為 LTE 網(wǎng)絡(luò)面試問題匯總下載
    發(fā)表于 05-21 10:05 ?0次下載

    異步fifo詳解

    異步fifo詳解 一. 什么是異步FIFO FIFO即First in First out的英文簡稱,是一種先進(jìn)先出的數(shù)據(jù)緩存器,與普通存儲
    的頭像 發(fā)表于 12-12 14:17 ?4200次閱讀

    FIFO設(shè)計—異步FIFO

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

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

    同步FIFO異步FIFO的區(qū)別 同步FIFO異步FIFO各在什么情況下應(yīng)用? 1. 同步
    的頭像 發(fā)表于 10-18 15:23 ?1718次閱讀