一段vorilog 代码看不懂,望帮忙解答

2019-03-25 10:32发布

module single_port_ram
(
        input [7:0] data,
        input [5:0] addr,
        input we, clk,
        output [7:0] q
);

        // Declare the RAM variable
        reg [7:0] ram[63:0];
       
        // Variable to hold the registered read address
        reg [5:0] addr_reg;
       
        always @ (posedge clk)
        begin
        // Write
                if (we)
                        ram[addr] <= data;
               
                addr_reg <= addr;
               
        end
               
                assign q = ram[addr_reg];
       
endmodule
这段代码中的ram[addr_reg],是什么意思? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
shinexqq
1楼-- · 2019-03-25 13:48
< / 关键看懂这句 reg [7:0] ram[63:0];
这是verilog语言里面描述数组的概念。reg [7:0] 定义了存储器中每个存储单元的大小,即ram是一个8位的寄存器。ram后面的[63:0]定义了有64个这样的寄存器,可以理解为地址。参考夏老师的书memory型的介绍。

这样就可以理解上面的代码了,输入了一个地址addr,输出了这个地址的数据assign q = ram[addr_reg];
wstt
2楼-- · 2019-03-25 18:19
ram的位宽为8位,addr_reg其实就是地址值,ram有64个8位,ram[addr_reg]对应的地址为addr_reg的ram值
cocow
3楼-- · 2019-03-25 19:44
学习了。
ddllxxrr
4楼-- · 2019-03-25 20:00
eeleader
5楼-- · 2019-03-25 23:41

不错,学习了!

一周热门 更多>