微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请教:RAM地址定制中2**ADDR_WIDTH-1什么意思啊

请教:RAM地址定制中2**ADDR_WIDTH-1什么意思啊

时间:10-02 整理:3721RD 点击:
以下是 Quartus II 中自带的一个定制ram的Template
不明白其中的2**ADDR_WIDTH-1是为什么 特别是其中的**是什么意思?
大虾们赐教下啊!

// Quartus II Verilog Template
// True Dual Port RAM with dual clocks
module ram1
#(parameter DATA_WIDTH=8, ADDR_WIDTH=10)
(
input [(DATA_WIDTH-1):0] data_a,
input [(ADDR_WIDTH-1):0] addr_a, addr_b,
input wr_a, rd_b, clk_a, clk_b,
output reg [(DATA_WIDTH-1):0]  q_b
);
// Declare the RAM variable
reg [DATA_WIDTH-1:0] ram[2**ADDR_WIDTH-1:0];

always @ (posedge clk_a)
begin
  // Port A
  if (wr_a)
  begin
   ram[addr_a] <= data_a;
  end
  else ;
end
always @ (posedge clk_b)
begin
  // Port B
  if (rd_b)
  begin
   q_b <= ram[addr_b];
  end  
  else ;
  
end
endmodule

2的次方

2的ADDR_WIDTH-1次幂,在这就表示RAM的可寻址空间

11111111111111

2的ADDR_WIDTH次幂-1

2的幂

谢谢 茅塞顿开 呵呵!

2的幂指数

学学!

就是2的ADDR_WIDTH-1次幂,
因为地址宽度直接决定了ram的深度

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top