SDRAM硬件控制FPGA读写verilog设计实验Quartus9.1工程源码,可以做为你的学习设计基参考。 module SDRAM_HR_HW ( input CLOCK_50, input [3:0] KEY, input [17:0] SW, output [17:0] LEDR, output [6:0] HEX0, HEX1, //SDRAM side output [11:0] DRAM_ADDR, inout [15:0] DRAM_DQ, output DRAM_BA_0, DRAM_BA_1, DRAM_RAS_N, DRAM_CAS_N, DRAM_CKE, DRAM_CLK, DRAM_WE_N, DRAM_CS_N, DRAM_LDQM, DRAM_UDQM ); reg read; // read enable register reg write; // write enable register reg [1:0] state; // FSM state register reg [15:0] data_in; // data input register wire [15:0] DATA_OUT; // data output reg [15:0] data_out; // data output register wire DELAY_RESET; // delay for SDRAM controller load wire RESET_n = KEY[0]; // reset from KEY[0] assign LEDR = SW; Sdram_Control_4Port u0 ( // HOST Side .REF_CLK(CLOCK_50), .RESET_N(1'b1), // FIFO Write Side 1 .WR1_DATA(data_in), .WR1(write), .WR1_ADDR(0), .WR1_MAX_ADDR(640*512*2), .WR1_LENGTH(9'h100), .WR1_LOAD(!DELAY_RESET), .WR1_CLK(CLOCK_50), // FIFO Read Side 1 .RD1_DATA(DATA_OUT), .RD1(read), .RD1_ADDR(640*16), .RD1_MAX_ADDR(640*496), .RD1_LENGTH(9'h100), .RD1_LOAD(!DELAY_RESET), .RD1_CLK(CLOCK_50), // SDRAM Side .SA(DRAM_ADDR), .BA({DRAM_BA_1,DRAM_BA_0}), .CS_N(DRAM_CS_N), .CKE(DRAM_CKE), .RAS_N(DRAM_RAS_N), .CAS_N(DRAM_CAS_N), .WE_N(DRAM_WE_N), .DQ(DRAM_DQ), .DQM({DRAM_UDQM,DRAM_LDQM}), .SDR_CLK(DRAM_CLK) ); wire HEX3,HEX4,HEX5,HEX6,HEX7; SEG7_LUT_8 u1 ( .oSEG0(HEX0), // output SEG0 .oSEG1(HEX1), // output SEG1 .oSEG2(HEX2), // output SEG2 .oSEG3(HEX3), // output SEG3 .oSEG4(HEX4), // output SEG4 .oSEG5(HEX5), // output SEG5 .oSEG6(HEX6), // output SEG6 .oSEG7(HEX7), // outp
AD(AD9280)和DA(AD9708) FPGA读写Verilog设计源码Quartus工程文件,AD芯片选用AD9280,DA芯片选用AD9708,,FPGA型号Cyclone4E系列中的EP4CE10F17C8,Quartus版本18.0。 module hs_ad_da( input sys_clk , //系统时钟 input sys_rst_n , //系统复位,低电平有效 //DA芯片接口 output da_clk , //DA(AD9708)驱动时钟,最大支持125Mhz时钟 output [7:0] da_data , //输出给DA的数据 //AD芯片接口 input [7:0] ad_data , //AD输入数据 //模拟输入电压超出量程标志(本次试验未用到) input ad_otr , //0:在量程范围 1:超出量程 output ad_clk //AD(AD9280)驱动时钟,最大支持32Mhz时钟 ); //wire define wire [7:0] rd_addr; //ROM读地址 wire [7:0] rd_data; //ROM读出的数据 //***************************************************** //** main code //***************************************************** //DA数据发送 da_wave_send u_da_wave_send( .clk (sys_clk), .rst_n (sys_rst_n), .rd_data (rd_data), .rd_addr (rd_addr), .da_clk (da_clk), .da_data (da_data) ); //ROM存储波形 rom_256x8b u_rom_256x8b( .address (rd_addr), .clock (sys_clk), .q (rd_data) ); //AD数据接收 ad_wave_rec u_ad_wave_rec( .clk (sys_clk), .rst_n (sys_rst_n), .ad_data (ad_data), .ad_otr (ad_otr), .ad_clk (ad_clk) ); endmodule