介绍
最近把之前学习过的SRAM控制器项目拿出来复习一下,在此记录。
本项目的SRAM控制器的作用就是实现SRAM存储器与AHB总线的数据信息交换,其一端连接AHB总线,另一端连接大小为64K的SRAM存储器。存储器是由2个bank构成,每个bank内含4片8K的SRAM。
主要代码分析
简单介绍一下总线模块的部分代码,实现的主要功能就是AHB 总线与SRAM存储单元的数据传输。
assign hready_resp = 1'b1; //实现单周期读写
assign hresp = 2'b00; //OK
assign hrdata = sram_data_out; //数据从SRAM传输到AHB总线
assign sram_wdata = hwdata; //数据从AHB总线写入SRAM
由于实现单周期读写,因此SRAM一直处于OK。
//当片选信号为1时,选中bank1;当片选信号为0时,选中bank0
assign sram_data_out = bank_sel ? {sram_q7,sram_q6,sram_q5,sram_q4} :
{sram_q3,sram_q2,sram_q1,sram_q0} ;
//haddr_r[15] = 0,片选中bank0,否则片选中bank1
assign bank_sel = (sram_csn_en & (haddr_r[15] == 0)) ? 0 : 1;
assign bank0_csn = (sram_csn_en & (hadd