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

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

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

IC設(shè)計:ram的應(yīng)用 - 位寬轉(zhuǎn)換

ruikundianzi ? 來源:IP與SoC設(shè)計 ? 2023-11-27 17:18 ? 次閱讀

在進(jìn)行模塊設(shè)計時,我們經(jīng)常需要進(jìn)行數(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.25*32==40*125)。存儲模塊是由寄存器搭建的。那么需要多大存儲模塊呢?32和40的最小公倍數(shù)為160,極限場景下,只需要160bit的寄存器作為存儲就夠了,但是讀操作通常晚于寫操作,并且考慮到時鐘有抖動有偏移,為了避免溢出,稍微增加一部分緩存,我們可以采用320bit作為存儲模塊。因此寫側(cè)32bit寫10次,讀側(cè)40bit讀8次,讀寫兩側(cè)所需的時間相等。注意事項:寫地址(wr_addr)跳轉(zhuǎn)范圍是0~9,讀地址(rd_addr)跳轉(zhuǎn)范圍0~7。

951ec078-8d04-11ee-939d-92fbcf53809c.png95334aa2-8d04-11ee-939d-92fbcf53809c.png

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

95476776-8d04-11ee-939d-92fbcf53809c.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)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5253

    瀏覽量

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

    關(guān)注

    8

    文章

    1344

    瀏覽量

    114217
  • 存儲模塊
    +關(guān)注

    關(guān)注

    0

    文章

    14

    瀏覽量

    8856

原文標(biāo)題:IC設(shè)計:ram的應(yīng)用 - 位寬轉(zhuǎn)換

文章出處:【微信號:IP與SoC設(shè)計,微信公眾號:IP與SoC設(shè)計】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

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

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

    請推薦反激有源鉗IC

    請TI工程師推反激有源鉗IC,主要應(yīng)用在DC-DC電源上,因電壓輸入9-36V范圍,若用正激有源鉗的話二次側(cè)續(xù)流管會是比較難處理的問題,加之體積小,所以想用反激有源鉗
    發(fā)表于 07-05 11:51

    Ultrascale器件中如何將字節(jié)寫入啟用轉(zhuǎn)換wibe寫入enalbe?

    大家好, 在Ultrascale器件中,RAM具有字節(jié)寫入使能,但我想要Bit Wide Write Enable,所以 如何將字節(jié)寫入啟用轉(zhuǎn)換
    發(fā)表于 04-26 13:53

    在SpinalHDL里有沒有什么好的方式實(shí)現(xiàn)一個接口轉(zhuǎn)換

    。熟悉數(shù)字邏輯電路的小伙伴想必都不陌生,其本質(zhì)上是一個接口轉(zhuǎn)換,在實(shí)現(xiàn)時無非用轉(zhuǎn)換FIF
    發(fā)表于 07-27 14:52

    嵌入式中的計算

    的100,轉(zhuǎn)換為二進(jìn)制為1100100,需要用到7。當(dāng)用低于7
    發(fā)表于 03-02 19:52

    模數(shù)AD轉(zhuǎn)換芯片IC

    推薦幾個8模數(shù)轉(zhuǎn)換芯片
    發(fā)表于 07-21 00:13 ?9008次閱讀

    1024 X4RAM(2114)的結(jié)構(gòu)框圖

    1024 X4RAM(2114)的結(jié)構(gòu)框圖
    發(fā)表于 12-04 15:29 ?6523次閱讀
    1024 X4<b class='flag-5'>位</b><b class='flag-5'>RAM</b>(2114)的結(jié)構(gòu)框圖

    RAM擴(kuò)展接法

    RAM擴(kuò)展接法
    發(fā)表于 12-04 17:16 ?2049次閱讀
    <b class='flag-5'>RAM</b>的<b class='flag-5'>位</b>擴(kuò)展接法

    顯示芯片

    顯示芯片      
    發(fā)表于 12-25 10:45 ?555次閱讀

    顯卡的顯存

    顯卡的顯存            顯存是顯存在一個時鐘周期內(nèi)所能傳送數(shù)據(jù)的位數(shù),位數(shù)越大則瞬間所能傳輸?shù)臄?shù)
    發(fā)表于 12-25 10:53 ?334次閱讀

    不用D-A轉(zhuǎn)換IC的8廉價D-A轉(zhuǎn)換電路

    不用D-A轉(zhuǎn)換IC的8廉價D-A轉(zhuǎn)換電路 電路的功能 聲音合成輸出用的D
    發(fā)表于 05-07 15:05 ?1039次閱讀
    不用D-A<b class='flag-5'>轉(zhuǎn)換</b>器<b class='flag-5'>IC</b>的8<b class='flag-5'>位</b>廉價D-A<b class='flag-5'>轉(zhuǎn)換</b>電路

    采用乘法D-A轉(zhuǎn)換IC的廉價8D-A轉(zhuǎn)換

    采用乘法D-A轉(zhuǎn)換IC的廉價8D-A轉(zhuǎn)換器 電路的功能 8D-A轉(zhuǎn)換器的
    發(fā)表于 05-07 15:18 ?868次閱讀
    采用乘法D-A<b class='flag-5'>轉(zhuǎn)換</b>器<b class='flag-5'>IC</b>的廉價8<b class='flag-5'>位</b>D-A<b class='flag-5'>轉(zhuǎn)換</b>器

    技術(shù)控:FPGA中RAM使用技巧探索

    FPGA中RAM的使用探索。以4bitX4為例,數(shù)據(jù)為4,深度為4。
    的頭像 發(fā)表于 03-28 17:07 ?1w次閱讀
    技術(shù)控:FPGA中<b class='flag-5'>RAM</b>使用技巧探索

    TANDY WP 2 RAM IC卡開源分享

    電子發(fā)燒友網(wǎng)站提供《TANDY WP 2 RAM IC卡開源分享.zip》資料免費(fèi)下載
    發(fā)表于 07-15 14:31 ?0次下載
    TANDY WP 2 <b class='flag-5'>RAM</b> <b class='flag-5'>IC</b>卡開源分享

    IC設(shè)計:ram的折疊設(shè)計操作步驟

    IC設(shè)計中,我們有時會使用深度很大,很小的ram。例如深度為1024,為4bit的
    的頭像 發(fā)表于 03-04 15:08 ?2015次閱讀
    <b class='flag-5'>IC</b>設(shè)計:<b class='flag-5'>ram</b>的折疊設(shè)計操作步驟