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

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

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

RAM的兩種應(yīng)用:統(tǒng)計計數(shù)和位寬轉(zhuǎn)換

sanyue7758 ? 來源:IC的世界 ? 2023-12-05 09:48 ? 次閱讀

應(yīng)用1 統(tǒng)計計數(shù)

在進行模塊設(shè)計時,我們經(jīng)常需要統(tǒng)計報文的數(shù)量,以供軟件(or 主機)讀取,有些統(tǒng)計僅僅用于debug,有些統(tǒng)計是協(xié)議要求,有些統(tǒng)計是為了便于功能實現(xiàn)。

當(dāng)需要統(tǒng)計的數(shù)量較多時,為了降低功耗和減少面積,我們通常采用RAM去實現(xiàn)。

如下案例中,統(tǒng)計有效數(shù)據(jù)包的個數(shù)。

假設(shè)數(shù)據(jù)中存在pkt_id,pkt_id為0~63,則ram的深度為64。pkt_id用于作為讀寫地址。RAM讀延時為3個時鐘周期。

有數(shù)據(jù)來臨時,pkt_vld作為讀使能,讀出當(dāng)前包計數(shù)rdata,三個周期后,rdata加1回寫到ram。

如下圖所示:需要有三個注意事項

NOTE1:需要有讀寫保護,因為可能出現(xiàn)連續(xù)4個周期內(nèi),pkt_vld為1,且pkt_id相同,此時會出現(xiàn)同一個周期對相同的地址進行讀寫,因此需要RAM需要添加讀寫保護模塊,保證數(shù)據(jù)能夠正確寫入,且讀出的都是最新值,否則就會出現(xiàn)統(tǒng)計錯誤。

NOTE2:圖中既有軟件讀、又存在硬件讀,且硬件讀優(yōu)先級更高,軟件讀優(yōu)先級低,因此為了保證軟件讀能夠在有效周期內(nèi)得到響應(yīng),因此需要在主數(shù)據(jù)流上插入空拍,避免出現(xiàn)軟件讀長時間無法響應(yīng)而產(chǎn)生超時。

wKgZomVugViATGPZAABdxDuAeHU769.png

應(yīng)用2 位寬轉(zhuǎn)換

在進行模塊設(shè)計時,我們經(jīng)常需要進行數(shù)據(jù)位寬的轉(zhuǎn)換,常見的兩種轉(zhuǎn)換場景有同步時鐘域位寬轉(zhuǎn)換和異步時鐘域位寬轉(zhuǎn)換。本文將介紹異步時鐘域位寬轉(zhuǎn)換

異步時鐘域的位寬轉(zhuǎn)換讀時鐘和寫時鐘屬于兩個時鐘。如下案例中,數(shù)據(jù)位寬由32bit轉(zhuǎn)40bit,寫時鐘頻率156.25MHz,讀時鐘頻率125Mhz,寫數(shù)據(jù)為32bit,讀數(shù)據(jù)位寬為40bit,通過計算得到入口數(shù)據(jù)速率和出口數(shù)據(jù)速率保持一致(156.2532==40125)。

存儲模塊是由寄存器搭建的。那么需要多大存儲模塊呢?32和40的最小公倍數(shù)為160,極限場景下,只需要160bit的寄存器作為存儲就夠了,但是讀操作通常晚于寫操作,并且考慮到時鐘有抖動有偏移,為了避免溢出,稍微增加一部分緩存,我們可以采用320bit作為存儲模塊。因此寫側(cè)32bit寫10次,讀側(cè)40bit讀8次,讀寫兩側(cè)所需的時間相等。

注意事項:寫地址(wr_addr)跳轉(zhuǎn)范圍是09,讀地址(rd_addr)跳轉(zhuǎn)范圍07。

wKgaomVugViAHCE3AACFx-wvlYA974.png

wKgaomVugViAIYjXAAFTzh9fxhU679.png

如圖所示:

buff_array為320bit的數(shù)據(jù)存儲。

vld_array為80bit的有效標志位存儲:vld_array[n]為1表示buff_array[4n+3:4n]存在4bit的有效數(shù)據(jù)。

wKgaomVugViAFRVZAABOda71nBA740.png

always @(posedge wr_clk or negedge wr_rst_n) begin
  if (~wr_rst_n) begin
    buff_array  <= {DATA_FIFO_DEPTH{1'b0}};
    vld_array <= {VALID_FIFO_DEPTH{1'b0}};
  end else begin
    if (wr_en) begin
        buff_array[ wr_addr*32  +: 32]  <= wr_data_i;
        vld_array[wr_addr*8 +: 8] <= {8{wr_valid_i}};
      end
    end
  end


reg [10-1:0] rd_valid_bus;
reg [40-1:0]  rd_data_bus;
always @(*) begin
  rd_data_bus[40-1:0]  = buff_array[  rd_addr*40  +: 40];
  rd_valid_bus[10-1:0] = vld_array[rd_addr*10 +: 10];
end
integer i;
reg [40-1:0] rd_data_valid_mask;
always @(*) begin
  for(i = 0; i < 40; i = i + 1) begin
      rd_data_valid_mask[i] = rd_valid_bus[i/4];
  end
end
always @(posedge rd_clk or negedge rd_rst_n) begin
  if (~rd_rst_n) begin
    rd_data_o  <= {40{1'b0}};
    rd_valid_o <= 1'b0;
  end else begin
    if (rd_en) begin
      rd_data_o  <= rd_data_bus & rd_data_valid_mask;
      rd_valid_o <= |rd_valid_bus;
    end else begin
      rd_data_o  <= {40{1'b0}};
      rd_valid_o <= 1'b0;
    end
  end
end

審核編輯:湯梓紅

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

    關(guān)注

    31

    文章

    5268

    瀏覽量

    119640
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1350

    瀏覽量

    114369
  • 數(shù)據(jù)包
    +關(guān)注

    關(guān)注

    0

    文章

    244

    瀏覽量

    24324
  • 讀寫保護
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    5862

原文標題:ram的兩種應(yīng)用~統(tǒng)計計數(shù)和位寬轉(zhuǎn)換

文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    測量開關(guān)電源轉(zhuǎn)換效率的兩種不同方法

    本文將向大家介紹測量開關(guān)電源轉(zhuǎn)換效率的兩種不同方法。
    發(fā)表于 08-09 16:45 ?4240次閱讀
    測量開關(guān)電源<b class='flag-5'>轉(zhuǎn)換</b>效率的<b class='flag-5'>兩種</b>不同方法

    IC設(shè)計:ram的應(yīng)用-異步時鐘域轉(zhuǎn)換

    在進行模塊設(shè)計時,我們經(jīng)常需要進行數(shù)據(jù)轉(zhuǎn)換,常見的兩種轉(zhuǎn)換場景有同步時鐘域
    的頭像 發(fā)表于 11-23 16:41 ?717次閱讀
    IC設(shè)計:<b class='flag-5'>ram</b>的應(yīng)用-異步時鐘域<b class='flag-5'>位</b><b class='flag-5'>寬</b><b class='flag-5'>轉(zhuǎn)換</b>

    OpenCV兩種不同方法實現(xiàn)粘連大米分割計數(shù)

    測試圖如下,圖中有個別米粒相互粘連,本文主要演示如何使用OpenCV用兩種不同方法將其分割并計數(shù)
    的頭像 發(fā)表于 01-22 14:55 ?1337次閱讀
    OpenCV<b class='flag-5'>兩種</b>不同方法實現(xiàn)粘連大米分割<b class='flag-5'>計數(shù)</b>

    基于FPGA的HDTV視頻圖像灰度直方圖統(tǒng)計算法設(shè)計

    結(jié)構(gòu),即在內(nèi)存中開辟一個整數(shù)數(shù)組來進行計數(shù),但是在FPGA 中定義數(shù)組是非常消耗資源的,尤其是當(dāng)數(shù)組成員的很大時。例如用觸發(fā)器來統(tǒng)計256 灰度的720p 圖像的直方圖,將消耗40
    發(fā)表于 05-14 12:37

    AVR的兩種操作及比較

    AVR的兩種操作的比較(域方式和移位宏方式) 測試環(huán)境如下: 硬件:AT90S2313 軟件: WiinAVR gcc3.3-Os級優(yōu)化(最小size)。 說明: 由于AVR不支持
    發(fā)表于 09-06 10:24

    STC12系列單片機的定時器有兩種計數(shù)速率

    STC12系列單片機的定時器有兩種計數(shù)速率:一是12T模式,每12個時鐘加1,與傳統(tǒng)8051單片機相同;另一是1T模式,每個時鐘加1,速度是傳統(tǒng)8051單片機的12倍。
    發(fā)表于 11-25 06:13

    ROM和RAM兩種寄存器的區(qū)別是什么呢

    ROM或者對于玩電腦的人并不陌生,什么內(nèi)存3G(內(nèi)存就是RAM),硬盤100G(硬盤就是ROM)單片機里面和電腦一樣,有ROM和RAM之分..那這兩種寄存器的區(qū)別是什么呢?1 . ROM的功能:ROM的數(shù)據(jù)在程序運行的時候是不容
    發(fā)表于 03-01 07:35

    求分享S32G2內(nèi)存映射系統(tǒng)計數(shù)器的地址

    計時器: ? 提供一個系統(tǒng)計數(shù)器,用于實時測量時間的流逝。 在同一參考文獻的 D7.1.1 節(jié)中,指出: 內(nèi)存映射計數(shù)器模塊,需要 此模塊控制系統(tǒng)計數(shù)器。它有個框架: ? 一個控制
    發(fā)表于 05-12 06:18

    使用IP方法的獨特統(tǒng)計計數(shù)

      網(wǎng)絡(luò)路由器帶有用于性能監(jiān)控、流量管理、網(wǎng)絡(luò)追蹤和網(wǎng)絡(luò)安全的統(tǒng)計計數(shù)器。計數(shù)器用來記錄數(shù)據(jù)包到達和離開的次數(shù)以及特定事件的次數(shù),比如當(dāng)網(wǎng)絡(luò)出現(xiàn)壞包時。數(shù)據(jù)包的到達會使多個不同的統(tǒng)計
    發(fā)表于 09-18 19:52 ?10次下載
    一<b class='flag-5'>種</b>使用IP方法的獨特<b class='flag-5'>統(tǒng)計</b><b class='flag-5'>計數(shù)</b>器

    FPGA設(shè)計中的RAM兩種實現(xiàn)方法

    大家好,又到了每日學(xué)習(xí)的時間了,今天我們來聊一聊在FPGA設(shè)計中RAM兩種使用方法,RAM是用來在程序運行中存放隨機變量的數(shù)據(jù)空間,使用時可以利用QuartusII的LPM功能實現(xiàn)RAM
    的頭像 發(fā)表于 06-08 11:30 ?2w次閱讀

    統(tǒng)計信號連接到定時器的兩種模式

    對于這種情況,我們可以將被統(tǒng)計信號連接到定時器的ETR腳,并作為定時器的計數(shù)時鐘。開啟定時器更新中斷對溢出次數(shù)進行統(tǒng)計,擇時讀取計數(shù)器的值和溢出次數(shù)即可。這樣既避免了CPU頻繁進中斷而
    的頭像 發(fā)表于 06-08 09:18 ?2592次閱讀

    FPGA設(shè)計中這兩種情形該怎么約束

    在FPGA設(shè)計中,我們經(jīng)常會碰到這樣的情形:從快時鐘域到慢時鐘域完成轉(zhuǎn)換,這時,這個時鐘是同步的。例如:源時鐘是400MHz,數(shù)據(jù)
    的頭像 發(fā)表于 09-07 09:47 ?488次閱讀
    FPGA設(shè)計中這<b class='flag-5'>兩種</b>情形該怎么約束

    IC設(shè)計:RAM的應(yīng)用-統(tǒng)計計數(shù)

    在進行模塊設(shè)計時,我們經(jīng)常需要統(tǒng)計報文的數(shù)量,以供軟件(or 主機)讀取,有些統(tǒng)計僅僅用于debug,有些統(tǒng)計是協(xié)議要求,有些統(tǒng)計是為了便于功能實現(xiàn)。
    的頭像 發(fā)表于 11-17 17:16 ?635次閱讀
    IC設(shè)計:<b class='flag-5'>RAM</b>的應(yīng)用-<b class='flag-5'>統(tǒng)計</b><b class='flag-5'>計數(shù)</b>

    淺析多晶硅錠中錯存在的兩種來源

    根據(jù)晶體凝固生長與錯形成、運動與增殖的理論,多晶硅錠中錯存在兩種來源:原生和增殖。
    的頭像 發(fā)表于 03-27 11:09 ?434次閱讀
    淺析多晶硅錠中<b class='flag-5'>位</b>錯存在的<b class='flag-5'>兩種</b>來源

    同步計數(shù)器和異步計數(shù)器的區(qū)別

    在數(shù)字電子領(lǐng)域中,計數(shù)器是一用于統(tǒng)計脈沖信號數(shù)量的重要設(shè)備。其中,同步計數(shù)器和異步計數(shù)器是兩種
    的頭像 發(fā)表于 05-24 14:36 ?2883次閱讀