0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

IC设计:ram的应用 - 位宽转换

ruikundianzi 来源:IP与SoC设计 2023-11-27 17:18 次阅读

在进行模块设计时,我们经常需要进行数据位宽的转换,常见的两种转换场景有同步时钟域位宽转换和异步时钟域位宽转换。本文将介绍异步时钟域位宽转换 异步时钟域的位宽转换读时钟和写时钟属于两个时钟。如下案例中,数据位宽由32bit转40bit,写时钟频率156.25MHz,读时钟频率125Mhz,写数据为32bit,读数据位宽为40bit,通过计算得到入口数据速率和出口数据速率保持一致(156.25*32==40*125)。存储模块是由寄存器搭建的。那么需要多大存储模块呢?32和40的最小公倍数为160,极限场景下,只需要160bit的寄存器作为存储就够了,但是读操作通常晚于写操作,并且考虑到时钟有抖动有偏移,为了避免溢出,稍微增加一部分缓存,我们可以采用320bit作为存储模块。因此写侧32bit写10次,读侧40bit读8次,读写两侧所需的时间相等。注意事项:写地址(wr_addr)跳转范围是0~9,读地址(rd_addr)跳转范围0~7。

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

如图所示:buff_array为320bit的数据存储。vld_array为80bit的有效标志位存储:vld_array[n]为1表示buff_array[4n+3:4n]存在4bit的有效数据。

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



声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5336

    浏览量

    120262
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1368

    浏览量

    114652
  • 存储模块
    +关注

    关注

    0

    文章

    14

    浏览量

    8888

原文标题:IC设计:ram的应用 - 位宽转换

文章出处:【微信号:IP与SoC设计,微信公众号:IP与SoC设计】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    IC设计:ram的应用-异步时钟域转换

    在进行模块设计时,我们经常需要进行数据转换,常见的两种转换场景有同步时钟域
    的头像 发表于 11-23 16:41 860次阅读
    <b class='flag-5'>IC</b>设计:<b class='flag-5'>ram</b>的应用-异步时钟域<b class='flag-5'>位</b><b class='flag-5'>宽</b><b class='flag-5'>转换</b>

    请推荐反激有源钳IC

    请TI工程师推反激有源钳IC,主要应用在DC-DC电源上,因电压输入9-36V范围,若用正激有源钳的话二次侧续流管会是比较难处理的问题,加之体积小,所以想用反激有源钳
    发表于 07-05 11:51

    Ultrascale器件中如何将字节写入启用转换wibe写入enalbe?

    大家好, 在Ultrascale器件中,RAM具有字节写入使能,但我想要Bit Wide Write Enable,所以 如何将字节写入启用转换
    发表于 04-26 13:53

    在SpinalHDL里有没有什么好的方式实现一个接口转换

    。熟悉数字逻辑电路的小伙伴想必都不陌生,其本质上是一个接口转换,在实现时无非用转换FIF
    发表于 07-27 14:52

    嵌入式中的计算

    的100,转换为二进制为1100100,需要用到7。当用低于7
    发表于 03-02 19:52

    模数AD转换芯片IC

    推荐几个8模数转换芯片
    发表于 07-21 00:13 9058次阅读

    1024 X4RAM(2114)的结构框图

    1024 X4RAM(2114)的结构框图
    发表于 12-04 15:29 6715次阅读
    1024 X4<b class='flag-5'>位</b><b class='flag-5'>RAM</b>(2114)的结构框图

    RAM扩展接法

    RAM扩展接法
    发表于 12-04 17:16 2090次阅读
    <b class='flag-5'>RAM</b>的<b class='flag-5'>位</b>扩展接法

    显示芯片

    显示芯片      
    发表于 12-25 10:45 571次阅读

    显卡的显存

    显卡的显存            显存是显存在一个时钟周期内所能传送数据的位数,位数越大则瞬间所能传输的数
    发表于 12-25 10:53 344次阅读

    不用D-A转换IC的8廉价D-A转换电路

    不用D-A转换IC的8廉价D-A转换电路 电路的功能 声音合成输出用的D
    发表于 05-07 15:05 1077次阅读
    不用D-A<b class='flag-5'>转换</b>器<b class='flag-5'>IC</b>的8<b class='flag-5'>位</b>廉价D-A<b class='flag-5'>转换</b>电路

    采用乘法D-A转换IC的廉价8D-A转换

    采用乘法D-A转换IC的廉价8D-A转换器 电路的功能 8D-A转换器的
    发表于 05-07 15:18 910次阅读
    采用乘法D-A<b class='flag-5'>转换</b>器<b class='flag-5'>IC</b>的廉价8<b class='flag-5'>位</b>D-A<b class='flag-5'>转换</b>器

    威廉希尔官方网站 控:FPGA中RAM使用技巧探索

    FPGA中RAM的使用探索。以4bitX4为例,数据为4,深度为4。
    的头像 发表于 03-28 17:07 1w次阅读
    威廉希尔官方网站
控:FPGA中<b class='flag-5'>RAM</b>使用技巧探索

    TANDY WP 2 RAM IC卡开源分享

    电子发烧友网站提供《TANDY WP 2 RAM IC卡开源分享.zip》资料免费下载
    发表于 07-15 14:31 0次下载
    TANDY WP 2 <b class='flag-5'>RAM</b> <b class='flag-5'>IC</b>卡开源分享

    IC设计:ram的折叠设计操作步骤

    IC设计中,我们有时会使用深度很大,很小的ram。例如深度为1024,为4bit的
    的头像 发表于 03-04 15:08 2135次阅读
    <b class='flag-5'>IC</b>设计:<b class='flag-5'>ram</b>的折叠设计操作步骤