⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdr_data_path.v

📁 SDRAM控制器Verilog员代码
💻 V
字号:
/******************************************************************************
*
*  LOGIC CORE:          SDR Data Path Module			
*  MODULE NAME:         sdr_data_path()
*  COMPANY:             Northwest Logic, Inc.
*                       www.nwlogic.com
*
*  REVISION HISTORY:  
*
*    Revision 1.0  05/11/2000     Description: Initial Release.
*             1.1  07/10/2000     Description: change precharge to terminate
*                                              for full page accesses.
*  FUNCTIONAL DESCRIPTION:
*
*  This module is the data path module for the SDR SDRAM controller.
*
*  Copyright Northwest Logic, Inc., 2000.  All rights reserved.  
******************************************************************************/

/*The data path module provides the SDRAM data interface to the host. Host data is accepted on DATAIN for
WRITEA commands and data is provided to the host on DATAOUT during READA commands.The DATAIN path consists of a 2-stage pipeline to align data properly relative to the
CMDACK and the commands that are issued to the SDRAM. DATAOUT consists of a 2-stage pipeline that registers
data from the SDRAM during a READA command.*/
module sdr_data_path(
        CLK,
        RESET_N,
        OE,
        DATAIN,
        DM,
        DATAOUT,
        DQIN,
        DQOUT,
        DQM
        );

`include        "params.v"

input                           CLK;                    // System Clock 模块的系统时钟
input                           RESET_N;                // System Reset 模块复位信号
input                           OE;                     // Data output(to the SDRAM) enable向SDRAM输出数据使能信号,由command module提供该输入信号
input   [`DSIZE-1:0]            DATAIN;                 // Data input from the host用户输入的数据,最终往SDRAM中写
input   [`DSIZE/8-1:0]          DM;                     // byte data masks字节数据屏蔽信号(由用户提供该输入信号)
output  [`DSIZE-1:0]            DATAOUT;                // Read data output to host输出给用户的数据,即从SDRAM中读出的数据
input   [`DSIZE-1:0]            DQIN;                   // SDRAM data bus      SDRAM数据总线,DQIN接收从SDRAM中读出的数据;DQOUT接收缓存后的用户输入的数据
output  [`DSIZE-1:0]            DQOUT;
output  [`DSIZE/8-1:0]          DQM;                    // SDRAM data mask ouputs   SDRAM数据屏蔽信号输出,输出给SDRAM
//reg     [`DSIZE-1:0]            DATAOUT;
reg     [`DSIZE/8-1:0]          DQM;
            
// internal 内部信号,用于各个数据的缓存
reg     [`DSIZE-1:0]            DIN1;
reg     [`DSIZE-1:0]            DIN2;

reg     [`DSIZE/8-1:0]          DM1;


reg     [`DSIZE-1:0]            DOUT1;
reg     [`DSIZE-1:0]            DOUT2;



// Allign the input and output data to the SDRAM control path(在时钟信号CLK上升沿)
always @(posedge CLK or negedge RESET_N)
begin
        if (RESET_N == 0) 
        begin                                           //复位将所有数据缓存清0
                DIN1    <= 0;
                DIN2    <= 0;
                DM1     <= 0;
                DOUT1   <= 0;
                DOUT2   <= 0;
        end
        
        else
        begin
                DIN1      <= DATAIN;                    //将用户输入的数据写入DIN1
                DIN2      <= DIN1;                      //DIN1写入DIN2
                                                        //DIN1、DIN2构成了两级移位寄存器,实现用户输入数据的缓存。用户新输入的数据DATAIN送入DIN1缓存,而DIN1中的数据(即用户上次输入的数据)送DIN2缓存
                
                DM1       <= DM;                        //将用户提供的字节数据屏蔽信号DM写入DM1
                DQM       <= DM1;                       //DM1写入DQM,从而提供给SDRAM
                                                        //DM1构成了一级寄存器,实现用户输入的字节屏蔽信号的缓存。用户新输入的字节屏蔽信号DM送入DM1缓存,而DM1中的数据(即用户上次输入的字节屏蔽信号)送DQM输出

                
//                DOUT1     <= DQIN;
//                DATAOUT   <= DQIN;这段代码采取将SDRAM中读出的数据多增加一级缓存DOUT1,之后再送到DATAOUT,增加了读得数据的延迟

                       
        end
end

//assign  DQ = OE ? DIN2 : 32'bz;                     
assign DQOUT = DIN2;                                    //DIN2写入DQOUT,从而将用户上上次输入的数据输出给SDRAM
assign DATAOUT = DQIN;                                  //DQIN写入DATAOUT,从而将SDRAM中读出的数据输出给顶层模块

endmodule



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -