FPGA设计读取SD卡中的图片并通过VGA屏显示输出的Verilog设计Quartus工程源码文件,FPGA型号Cyclone4E系列中的EP4CE10F17C8,Quartus版本18.0。
module top_sd_photo_vga(
    input                 sys_clk     ,  //系统时钟
    input                 sys_rst_n   ,  //系统复位,低电平有效
                          
    //SD卡接口               
    input                 sd_miso     ,  //SD卡SPI串行输入数据信号
    output                sd_clk      ,  //SD卡SPI时钟信号
    output                sd_cs       ,  //SD卡SPI片选信号
    output                sd_mosi     ,  //SD卡SPI串行输出数据信号
    //SDRAM接口
    output                sdram_clk   ,  //SDRAM 时钟
    output                sdram_cke   ,  //SDRAM 时钟有效
    output                sdram_cs_n  ,  //SDRAM 片选
    output                sdram_ras_n ,  //SDRAM 行有效
    output                sdram_cas_n ,  //SDRAM 列有效
    output                sdram_we_n  ,  //SDRAM 写有效
    output       [1:0]    sdram_ba    ,  //SDRAM Bank地址
    output       [1:0]    sdram_dqm   ,  //SDRAM 数据掩码
    output       [12:0]   sdram_addr  ,  //SDRAM 地址
    inout        [15:0]   sdram_data  ,  //SDRAM 数据    
    //VGA接口                          
    output                vga_hs      ,  //行同步信号
    output                vga_vs      ,  //场同步信号
    output        [15:0]  vga_rgb        //红绿蓝三原色输出     
    );
//parameter define
parameter  PHOTO_H_PIXEL = 24'd640     ;  //设置SDRAM缓存大小
parameter  PHOTO_V_PIXEL = 24'd480     ;  //设置SDRAM缓存大小
//wire define
wire                  clk_100m        ;  //100mhz时钟,SDRAM操作时钟
wire                  clk_100m_shift  ;  //100mhz时钟,SDRAM相位偏移时钟
wire                  clk_50m         ;
wire                  clk_50m_180deg  ;
wire                  clk_25m         ;
wire                  rst_n           ;
wire                  locked          ;
wire                  sys_init_done   ;  //系统初始化完成
                                      
wire                  sd_rd_start_en  ;  //开始写SD卡数据信号
wire          [31:0]  sd_rd_sec_addr  ;  //读数据扇区地址    
wire                  sd_rd_busy      ;  //读忙信号
wire                  sd_rd_v