当前位置:网站首页>06-SDRAM :SDRAM控制模块
06-SDRAM :SDRAM控制模块
2022-08-01 23:59:00 【刘颜儿】
设计文件
// SDRAM控制模块
module sdram_ctrl(
input wire clk , //sdram时钟
input wire rst_n , //sdram复位信号
output wire init_end , //SDRAM 初始化完成标志
//SDRAM写端口
input wire sdram_wr_req , //写SDRAM请求信号
input wire [23:0] sdram_wr_addr , //SDRAM写操作的地址
input wire [9:0] wr_burst_len , //写sdram时数据突发长度
input wire [15:0] sdram_data_in , //写入SDRAM的数据
output wire sdram_wr_ack , //写SDRAM响应信号
//SDRAM读端口
input wire sdram_rd_req , //读SDRAM请求信号
input wire [23:0] sdram_rd_addr , //SDRAM读操作的地址
input wire [9:0] rd_burst_len , //读sdram时数据突发长度
output wire [15:0] sdram_data_out , //从SDRAM读出的数据
output wire sdram_rd_ack , //读SDRAM响应信号
//FPGA与SDRAM硬件接口
output wire sdram_cke , // SDRAM 时钟有效信号
output wire sdram_cs_n , // SDRAM 片选信号
output wire sdram_ras_n , // SDRAM 行地址选通
output wire sdram_cas_n , // SDRAM 列地址选通
output wire sdram_we_n , // SDRAM 写使能
output wire [1:0] sdram_bank , // SDRAM Bank地址
output wire [12:0] sdram_addr , // SDRAM 地址总线
inout wire [15:0] sdram_dq // SDRAM 数据总线
);
//==========================================parameter===========================================================
//==========================================reg=================================================================
//==========================================wire=================================================================
wire [3:0] init_cmd ; //初始化阶段写入sdram的指令
wire [1:0] init_bank ; //初始化阶段Bank地址
wire [12:0] init_addr ; //初始化阶段地址数据,辅助预充电操作
//sdram_a_ref
wire atref_req ; //自动刷新请求
wire atref_end ; //自动刷新结束标志
wire [3:0] atref_cmd ; //自动刷新阶段写入sdram的指令
wire [1:0] atref_bank ; //自动刷新阶段Bank地址
wire [12:0] atref_addr ; //地址数据,辅助预充电操作
wire atref_en ; //自动刷新使能
//sdram_write
wire wr_en ; //写使能
wire wr_end ; //一次写结束信号
wire [3:0] wr_sdram_cmd ; //写阶段命令
wire [1:0] wr_sdram_bank ; //写数据阶段Bank地址
wire [12:0] wr_sdram_addr ; //写阶段数据地址
wire wr_sdram_en ; //SDRAM写使能
wire [15:0] wr_sdram_data ; //写入SDRAM的数据
//sdram_read
wire rd_en ; //读使能
wire rd_end ; //一次突发读结束
wire [3:0] rd_sdram_cmd ; //读数据阶段写入sdram的指令
wire [1:0] rd_sdram_bank ; //读阶段Bank地址
wire [12:0] rd_sdram_addr ; //读阶段数据地址
//==========================================assign=================================================================
//==========================================always=================================================================
//==========================================状态机=================================================================
//==========================================模块例化=================================================================
//------------- sdram_init_inst -------------
sdram_initial sdram_initial_inst
(
.clk (clk ), //系统时钟,频率100MHz
.rst_n (rst_n ), //复位信号,低电平有效
.init_cmd (init_cmd ), //初始化阶段写入sdram的指令
.init_bank (init_bank ), //初始化阶段Bank地址
.init_addr (init_addr ), //初始化阶段地址数据,辅助预充电操作
.init_end (init_end ) //初始化结束信号
);
//------------- sdram_arbit_inst -------------
sdram_arbit sdram_arbit_inst
(
.clk (clk ), //系统时钟
.rst_n (rst_n ), //复位信号
//sdram_init
.init_cmd (init_cmd ), //初始化阶段命令
.init_end (init_end ), //初始化结束标志
.init_bank (init_bank ), //初始化阶段Bank地址
.init_addr (init_addr ), //初始化阶段数据地址
//sdram_auto_ref
.auto_ref_req (atref_req ), //自刷新请求
.auto_ref_end (atref_end ), //自刷新结束
.auto_ref_cmd (atref_cmd ), //自刷新阶段命令
.auto_ref_bank (atref_bank ), //自动刷新阶段Bank地址
.auto_ref_addr (atref_addr ), //自刷新阶段数据地址
.aref_en (atref_en ), //自刷新使能
//sdram_write
.wr_req (sdram_wr_req ), //写数据请求
.wr_end (wr_end ), //一次写结束信号
.wr_en (wr_en ), //写数据使能
.write_cmd (wr_sdram_cmd ), //写阶段命令
.write_bank (wr_sdram_bank ), //写阶段Bank地址
.write_addr (wr_sdram_addr ), //写阶段数据地址
.wr_sdram_en (wr_sdram_en ), //写数据有效
.wr_sdram_data (wr_sdram_data ), //要写入sdram的数据
//sdram_read
.rd_req (sdram_rd_req ), //读数据请求
.rd_end (rd_end ), //一次读结束
.rd_en (rd_en ), //读数据使能
.read_cmd (rd_sdram_cmd ), //读阶段命令
.read_addr (rd_sdram_addr ), //读阶段数据地址
.read_bank (rd_sdram_bank ), //读阶段Bank地址
//SDRAM接口
.sdram_cke (sdram_cke ), //SDRAM时钟使能
.sdram_cs_n (sdram_cs_n ), //SDRAM片选信号
.sdram_ras_n (sdram_ras_n ), //SDRAM行地址选通
.sdram_cas_n (sdram_cas_n ), //SDRAM列地址选通
.sdram_we_n (sdram_we_n ), //SDRAM写使能
.sdram_bank (sdram_bank ), //SDRAM Bank地址
.sdram_addr (sdram_addr ), //SDRAM地址总线
.sdram_dq (sdram_dq ) //SDRAM数据总线
);
//------------- sdram_atref_inst -------------
sdram_auto_ref sdram_auto_ref_inst
(
.clk (clk ), //系统时钟,频率100MHz
.rst_n (rst_n ), //复位信号,低电平有效
.init_end (init_end ), //初始化结束信号
.auto_ref_en (atref_en ), //自动刷新使能
.auto_ref_req (atref_req ), //自动刷新请求
.auto_ref_cmd (atref_cmd ), //自动刷新阶段写入sdram的指令
.auto_ref_bank (atref_bank ), //自动刷新阶段Bank地址
.auto_ref_addr (atref_addr ), //地址数据,辅助预充电操作
.auto_ref_end (atref_end ) //自动刷新结束标志
);
//------------- sdram_write_inst -------------
sdram_write sdram_write_inst
(
.clk (clk ), //系统时钟,频率100MHz
.rst_n (rst_n ), //复位信号,低电平有效
.init_end (init_end ), //初始化结束信号
.wr_en (wr_en ), //写使能
.wr_addr (sdram_wr_addr ), //写SDRAM地址
.wr_data (sdram_data_in ), //待写入SDRAM的数据(写FIFO传入)
.wr_burst_len (wr_burst_len ), //写突发SDRAM字节数
.wr_ack (sdram_wr_ack ), //写SDRAM响应信号
.wr_end (wr_end ), //一次突发写结束
.write_cmd (wr_sdram_cmd ), //写数据阶段写入sdram的指令
.write_bank (wr_sdram_bank ), //写数据阶段Bank地址
.write_addr (wr_sdram_addr ), //地址数据,辅助预充电操作
.wr_sdram_en (wr_sdram_en ), //数据总线输出使能
.wr_sdram_data (wr_sdram_data ) //写入SDRAM的数据
);
//------------- sdram_read_inst -------------
sdram_read sdram_read_inst
(
.clk (clk ), //系统时钟,频率100MHz
.rst_n (rst_n ), //复位信号,低电平有效
.init_end (init_end ), //初始化结束信号
.rd_en (rd_en ), //读使能
.rd_addr (sdram_rd_addr ), //读SDRAM地址
.rd_data (sdram_dq ), //自SDRAM中读出的数据
.rd_burst_len (rd_burst_len ), //读突发SDRAM字节数
.rd_ack (sdram_rd_ack ), //读SDRAM响应信号
.rd_end (rd_end ), //一次突发读结束
.read_cmd (rd_sdram_cmd ), //读数据阶段写入sdram的指令
.read_bank (rd_sdram_bank ), //读数据阶段Bank地址
.read_addr (rd_sdram_addr ), //地址数据,辅助预充电操作
.rd_sdram_data (sdram_data_out ) //SDRAM读出的数据
);
endmodule
边栏推荐
猜你喜欢
2022第六届强网杯部分wp
Enterprise firewall management, what firewall management tools are there?
【图像融合】基于加权和金字塔实现图像融合附matlab代码
EasyExcel的简单读取操作
22.支持向量机—高斯核函数
Chrome书签插件,让你实现高效整理
控制电机的几种控制电路原理图
cdh6打开oozieWeb页面,Oozie web console is disabled.
Quartus uses tcl files to quickly configure pins
oozie startup error on cdh's hue, Cannot allocate containers as requested resource is greater than maximum allowed
随机推荐
contentEditable属性
UI自动化测试框架搭建-标记性能较差用例
Bean的生命周期
Excel表格数据导入MySQL数据库
GetHashCode方法与=
Enterprise firewall management, what firewall management tools are there?
Various Joins of Sql
asyncawait和promise的区别
FAST-LIO2 code analysis (2)
Work for 5 years, test case design is bad?To look at the big case design summary
使用Ganache、web3.js和remix在私有链上部署并调用合约
Docker搭建Mysql主从复制
security cross-domain configuration
工件SSMwar exploded 部署工件时出错。请参阅服务器日志了解详细信息
字节跳动面试官:请你实现一个大文件上传和断点续传
解析正则表达式的底层实现原理
[Three sons] C language implements simple three sons
DOM 事件及事件委托
Deliver cloud-native microservices applications with Zadig
使用 Zadig 交付云原生微服务应用