FPGA读写SDRAM page fifo实验完整Verilog逻辑源码Quartus工程文件, Quartus软件版本11.0, FPGA型号为CYCLONE4E系列中的EP4CE6E22C8,可以做为你的学习设计参考。                                                                                                                                                       
module sdram_read_write(
    clk,
    reset_n,
    state_signal,
    rw_done_signal,
    ar_done_signal,
    sdram_bank_addr,
    write_data,
    read_data,
    io_ctl,
    sdram_command,
    sdram_address,
    sdram_dqm,
    sdram_data
);
    //参数定义
    
    //端口定义
    input           clk;                            //时钟信号100MHz
    input           reset_n;                        //复位信号,低电平有效
    input   [2:0]   state_signal;                   //状态信号,用于控制对SDRAM进行读写和自刷新
    input   [21:0]  sdram_bank_addr;                //SDRAM最小单元地址,[21:20]块地址+[19:8]行地址Row+[7:0]列地址Column
    input   [15:0]  write_data;                     //写入SDRAM的数据
    input           io_ctl;
    
    output          rw_done_signal;                 //读写完成信号
    output          ar_done_signal;                 //自动刷新完成信号
    output  [15:0]  read_data;                      //从SDRAM读出的数据
    output  [4:0]   sdram_command;                  //SDRAM指令,cke、cs_n、ras、cas_n、we_n,SDRAM指令信号
    output  [13:0]  sdram_address;                  //SDRAM读写地址
    output  [1:0]   sdram_dqm;                      //SDRAM数据掩码
    
    inout   [15:0]  sdram_data;                     //sdram读写数据
    
    //常量定义
    parameter           NOP     = 5'b10111,         //空操作
                        ACTIVE  = 5'b10011,         //行激活
                        READ    = 5'b10101,         //读操作
                        WRITE   = 5'b10100,         //写操作
                        PR      = 5'b10010,         //预充电
                        AR      = 5'b10001,         //自刷新
                        LMR     = 5'b10000,         //设置寄存器
                        BURST_STOP = 5'b10110;      //突发停止指令
    
    parameter           ar_state = 3'b001,          //自刷新状态
                        re