Menu Close

RISC-V LSU,SRAM,GPIO模块(2)D_sram模块

主讲老师:William、YVONNE

VIP专享视频
立即购买 升级VIP
%title插图%num
Posted in RISC-V教学视频

3 Comments

  1. wangff

    学习本节课后有几点收获,1、DTCM由二维数组实现 reg [31:0] mem_r [0:1023] ;2、DTCM用于存放数据、函数中的压栈推栈、临时变量(定义 int i);3、巧妙运用参数传递的方式,修改sram中的深度和位宽;4、addr_r <= addr,未来需要综合为ip核时需要,因为双端口ram的读取会延时1个clk;

    在听课中遇到一个问题,请老师解答:
    1、wire [MEM_ADDR_W-1:0] addr_mem = {addr[31:2]}; 这句代码的右边是将32bit的addr地址截取了30bit,赋值给左侧的addr_mem,那么32bit的addr_mem此时获得的值是 {2'b00,addr[31:2]},相当于是在高位补2个0,但是,如果在高位补0的话,那么这个地址好像就不能正确表示DTCM地址了。所以,我感觉正确的赋值方式应该是wire [MEM_ADDR_W-1:0] addr_mem = {addr[31:2],2'b00}; 这样在后面补2个0,才是正确的,请问老师我分析的对吗?

    • Yvonne

      这里之所以将{addr[31:2]}赋值给addr_mem,是因为在处理DTCM数据时以4个字节(32-bit)为单位。为了方便,可以省略寻址时的xx0,xx4,xx8,xxc(都是16进制的地址),将其后两位截掉({addr[31:2]},或者说是除以4),变为xx0,xx1,xx2,xx3。

发表评论

相关链接