开心就好29 发表于 2019-11-12 21:19:06

代码问题

       M_S_MSG_FIFO2://--相对地址处理--//
                begin
                M_S                <=M_S_RST_FIFO0;
               //三缓存设计
                  if(MSG_FIFO_RDDATA)begin
                     if(CH0_Fbuf == 2) begin
                         CH0_Fbuf <= 0;
                     end
                     else begin
                         CH0_Fbuf <= CH0_Fbuf + 1'b1;
                     end
                     CH0_PTR <= 21'd0;
                  end

                  if(MSG_FIFO_RDDATA)begin
                     if(CH0_Fbuf == 0) begin
                         CH6_Fbuf <= 2;
                     end
                     else begin
                         CH6_Fbuf <= CH0_Fbuf - 1'b1;
                     end
                     CH6_PTR <= 21'd0;
                  end
                end
代码中的相对地址处理是什么意思,能解释详细点不

uisrc 发表于 2019-11-13 15:29:21

利用CH0_Fbuf和CH6_Fbuf的帧计数器,控制了地址的切换,具体的看下提供的代码里面地址如何切换的。

开心就好29 发表于 2019-11-14 22:10:19

msxbo 发表于 2019-11-13 15:29
利用CH0_Fbuf和CH6_Fbuf的帧计数器,控制了地址的切换,具体的看下提供的代码里面地址如何切换的。

简单来说,为什么要进行相对地址处理啊

A1_Vincent 发表于 2019-12-6 16:05:58

这个理解为地址的高位就好啦。
一帧数据的数据量为1920*1080*4 byte= 8,294,400 byte,也就是23位地址空间的存储容量(2^23=8,388,608)可以放的下。缓存地址如下构成:
ADDR={{2'b00},CH0_Fbuf,ADDRL}
低23位地址是一帧数据必要的存储空间,而切换片缓存只需要改变CH0_Fbuf高位地址就可以了。
页: [1]
查看完整版本: 代码问题