那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何FPGA內部的RAM進行讀改寫操作

CHANBAEK ? 來源:FPGA的現今未 ? 作者:FPGA的現今未 ? 2023-09-28 16:53 ? 次閱讀

存儲器是FPGA設計中的常用單元,對存儲器的操作,最基礎的就是讀寫操作,還有一種就是讀改寫操作,即先讀出存儲器中的數據,對其進行修改后,再寫入存儲器。這樣的操作其實在大多數情況下都是非常簡單的,不值一提,但是在某些有性能要求的場景下,就需要一些考慮。

比如輸入是一個8bit的數據,取值為0-255,求每個數值出現的次數,即同時0出現多少次,1出現多少次……

讀改寫的問題

我們先以最簡單的例子,對FPGA內部的RAM進行讀改寫操作,看看是什么情況,假定需要對RAM中的數據讀出來加1后再寫回原地址,如下圖所示:

圖片

通過讀地址A,在下一個cycle得到數據X,然后對X進行加一操作后,再寫回地址A。我們可以看到,整個過程需要3個cycle的時間。如果再對地址A開啟讀操作,就需要在第四個cycle開始,否則就讀不到最新的數據。換句話說,上述操作無法進行流水操作,每次讀改寫操作至少需要3個cycle的時間(對于其他更加復雜的“改”操作,可能需要消耗更多的時間)。對于性能要求較高的場景,必須要流水操作的時候,如何處理呢?

解決方案

我們知道不能流水的原因是因為最新的數據可能沒有寫回RAM,還在數據總線上,因此判斷最新的數據在哪里就是解決這個問題的關鍵。這里還需要用到一個“cache”,用reg來實現,主要是記錄即將要寫入RAM的地址和數據,即記錄寫總線上的地址和數據。其實現原理可以用一個時序圖來展示。

圖片

我們假定要讀的地址是AABA,但是為了區分,我們用A1、A2、B1、A3來表示(A1、A2、A3其實是同一個地址)。我們看看如何利用“cache”實現流水式的讀改寫操作。

第1個時鐘周期,讀A1的內容,此時cache的內容也為0;

第2個時鐘周期,A1的內容在dout上,為x,我們同時拿A1這個地址去“cache”查詢,由于“cache”為空,不取“cache”中的值,直接取dout上的值作為改寫的對象;同時也開始讀A2的內容;

第3個時鐘周期,主要做2個更新,一是根據第2個周期中出現的A1和dout的值,更新到“cache”中,二是將更新的數據和地址放在寫總線上,這2個更新的內容其實是一致的,都是改和寫的過程;同時拿A2去查詢“cache”;

第4個時鐘周期,根據查詢的結果,例子中為“cache”命中,選擇“cache”中的內容x+1為改寫對象,而不是dout上讀取的值,所以寫入的內容為x+2。同時根據第三個時鐘周期中的A2來更新cache,將A2和對應寫入的值x+2更新到“cache”中,此時“cache”中有2個內容,一個是A1和值x+1,一個是A2和值x+2;

從第4個時鐘周期可以看到,讀A2這個地址得到的值,不是從dout上獲取的,而是從“cache”中獲取的,這就是利用“cache”來實現讀改寫的流水操作。

在第5個時鐘周期,用A3去查詢“cache”時,“cache”中有2個A,即A1和A2,這時我們去最“新”的A,即A2的值x+2作為改寫對象。

總結

在高性能的讀改寫場景下,利用“cache”可以實現讀改寫的流水操作,大大提高了處理性能。當然如果輸入的數據并不是流水的,采用最簡單的方式實現讀改寫即可。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1630

    文章

    21798

    瀏覽量

    606044
  • FPGA設計
    +關注

    關注

    9

    文章

    428

    瀏覽量

    26632
  • 存儲器
    +關注

    關注

    38

    文章

    7528

    瀏覽量

    164348
  • RAM
    RAM
    +關注

    關注

    8

    文章

    1369

    瀏覽量

    115023
收藏 人收藏

    評論

    相關推薦

    【ZYNQ Ultrascale+ MPSOC FPGA教程】第六章FPGA片內RAM讀寫測試實驗

    RAMFPGA中常用的基礎模塊,可廣泛用于緩存數據的情況,同樣它也是ROM,FIFO的基礎。本實驗將為大家介紹如何使用FPGA內部RAM
    的頭像 發表于 01-22 09:43 ?5291次閱讀
    【ZYNQ Ultrascale+ MPSOC <b class='flag-5'>FPGA</b>教程】第六章<b class='flag-5'>FPGA</b>片內<b class='flag-5'>RAM</b>讀寫測試實驗

    勇敢的芯伴你玩轉Altera FPGA連載90:FPGA片內ROM FIFO RAM聯合實例

    Simulation Tool à RTL Simulation”進行仿真。接著,Modelsim中我們可以查看FIFO的波形。ROM、FIFO和RAM讀寫波形如圖9.92所示。圖9.92 ROM、FIFO和
    發表于 09-07 22:16

    介紹FPGA開發板內部ram操作

    設計來增設全新的芯片功能,據此實現了芯片整體構造的簡化與性能提升。下面英尚微電子介紹FPGA開發板內部ram是如何操作的。 除邏輯外,所有新的FPG
    發表于 09-10 11:11

    如何使用FPGA內部的ROM以及程序對該ROM的數據操作

    RAM。本實驗將為大家介紹如何使用FPGA內部的ROM以及程序對該ROM的數據操作。1.實驗原理Xilinx在VIVADO里為我們已經提
    發表于 01-07 15:48

    如何使用FPGA內部RAM以及程序對該RAM的數據讀寫操作

    RAMFPGA中常用的基礎模塊,可廣泛用于緩存數據的情況,同樣它也是ROM,FIFO的基礎。本實驗將為大家介紹如何使用FPGA內部RAM
    發表于 01-07 16:05

    如何對RAM進行和寫的操作

    如何對RAM進行和寫的操作?
    發表于 01-18 06:47

    _FPGA內部RAM M9K

    FPGA內部RAM M9K
    發表于 04-07 11:40 ?4次下載

    如何將外部SPI Flash加載到FPGA內部ram然后復位MC8051

    本設計采用FPGA技術,在FPGA中實現8051單片機的軟核,將外部SPI Flash中的代碼數據加載到FPGA內部ram,然后復位 MC8
    發表于 06-11 17:47 ?3次下載
    如何將外部SPI Flash加載到<b class='flag-5'>FPGA</b><b class='flag-5'>內部</b><b class='flag-5'>ram</b>然后復位MC8051

    詳細介紹關于FPGA開發板內部ram是如何操作

    設計來增設全新的芯片功能,據此實現了芯片整體構造的簡化與性能提升。下面英尚微電子介紹FPGA開發板內部ram是如何操作的。 除邏輯外,所有新的FPG
    發表于 07-20 14:26 ?2288次閱讀
    詳細介紹關于<b class='flag-5'>FPGA</b>開發板<b class='flag-5'>內部</b><b class='flag-5'>ram</b>是如何<b class='flag-5'>操作</b>的

    如何使用FPGA內部的ROM以及程序對該ROM的數據操作

    FPGA本身是SRAM架構的,斷電之后,程序就消失,那么如何利用FPGA實現一個ROM呢,我們可以利用FPGA內部RAM資源實現ROM,但
    的頭像 發表于 02-08 16:30 ?1.2w次閱讀
    如何使用<b class='flag-5'>FPGA</b><b class='flag-5'>內部</b>的ROM以及程序對該ROM的數據<b class='flag-5'>讀</b><b class='flag-5'>操作</b>

    如何使用FPGA內部RAM以及程序對該RAM的數據讀寫操作

    RAMFPGA中常用的基礎模塊,可廣泛用于緩存數據的情況,同樣它也是ROM,FIFO的基礎。本實驗將為大家介紹如何使用FPGA內部RAM
    的頭像 發表于 02-08 15:50 ?1.4w次閱讀
    如何使用<b class='flag-5'>FPGA</b><b class='flag-5'>內部</b>的<b class='flag-5'>RAM</b>以及程序對該<b class='flag-5'>RAM</b>的數據讀寫<b class='flag-5'>操作</b>

    【ZYNQ Ultrascale+ MPSOC FPGA教程】第七章 FPGA片內ROM測試實驗

    FPGA本身是SRAM架構的,斷電之后,程序就消失,那么如何利用FPGA實現一個ROM呢,我們可以利用FPGA內部RAM資源實現ROM,但
    發表于 02-26 06:22 ?3次下載
    【ZYNQ Ultrascale+ MPSOC <b class='flag-5'>FPGA</b>教程】第七章 <b class='flag-5'>FPGA</b>片內ROM測試實驗

    【ZYNQ Ultrascale+ MPSOC FPGA教程】第六章 FPGA片內RAM讀寫測試實驗

    RAMFPGA中常用的基礎模塊,可廣泛用于緩存數據的情況,同樣它也是ROM,FIFO的基礎。本實驗將為大家介紹如何使用FPGA內部RAM
    發表于 03-15 06:09 ?14次下載
    【ZYNQ Ultrascale+ MPSOC <b class='flag-5'>FPGA</b>教程】第六章 <b class='flag-5'>FPGA</b>片內<b class='flag-5'>RAM</b>讀寫測試實驗

    FLASH被異常改寫

    FLASH被異常改寫(嵌入式開發筆試題目)-某客戶反饋, 當MCU 頻繁的正常通斷電的時候。FLASH 被異常改寫,出現各種各樣的異常(整片別擦除、中斷向量表被改寫為0、寫保護被清掉、被加上
    發表于 07-30 11:04 ?30次下載
    FLASH被異常<b class='flag-5'>改寫</b>

    fpga雙口ram的使用

    FPGA雙口RAM的使用主要涉及配置和使用雙端口RAM模塊。雙端口RAM的特點是有兩組獨立的端口,可以對同一存儲塊進行讀寫
    的頭像 發表于 03-15 13:58 ?1109次閱讀
    大发888娱乐城下载英皇国际| 大发888娱乐场骗局| 百家乐注册就送| 利都百家乐官网国际娱乐场| 百家乐官网玩法守则| 金龙娱乐城开户送彩金| 威尼斯人娱乐城官方网址| 豪华百家乐桌子| 赌百家乐赢的奥妙| 黄金百家乐官网的玩法技巧和规则 | 百家乐官网大老娱乐| 华人博彩| 大发888破解| 大上海百家乐的玩法技巧和规则| 什么百家乐平注法| 杨公24山日课应验诀| 新锦江百家乐官网娱乐场| 百家乐官网如何投注技巧| 上杭县| 华宝娱乐城| 博彩网导航| 大发888娱乐游戏| 69棋牌游戏| 大发888真人存款| 三公百家乐在线哪里可以| 百家乐纯技巧打| 百家乐庄家必赢诀窍| 电子百家乐博彩正网| 百家乐佣金计算| 网上百家乐官网赌博经历| 大玩家百家乐官网的玩法技巧和规则 | 皇冠百家乐官网皇冠网| 桦甸市| 沭阳县| 长寿区| 在线真人娱乐| 皇冠网注册送彩金| 威尼斯人娱乐| 必胜娱乐场| 真人百家乐| 长顺县|