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

📄 with_sdram_daq.v

📁 fpga开发pci的verilog
💻 V
字号:
module WITH_SDRAM_DAQ(
       clkin,
       rst,
       ld,ads,lwr,ready,blast,lhold,lholda,lint,la,lwait,ccs,bterm,user_i,user_o,
	   led,
	   dq,sa,ba,cke,cs_n,ras_n,cas_n,we_n,dqm,sdramclk	   
		);
//-------------------------------------------------
input	clkin;
input	rst;
inout	[31:0]	ld;
input	ads,lwr,blast,lhold,lwait,user_o;
input 	[13:0] la;
output 	ready,lholda,lint,bterm,ccs,user_i;
output  [3:0] led;

inout	[31:0]	dq;
output	[10:0]	sa;
output	[1:0]	ba;
output			cke;
output			cs_n;
output			ras_n;
output			cas_n;
output			we_n;
output	[3:0]	dqm; 
output			sdramclk;
//-------------------------------------------------
wire			qd;
wire	[15:0]	r_ram_wab;
wire			r_ram_wdb;
wire			r_ram_wen;
wire			r_req;
wire	[10:0]	r_ram_rab;
wire	[31:0]	r_ram_rdb;
wire			start_read;
wire 			lint;
wire	[31:0]	fifo_in;
wire	[10:0]  rdusedw;
wire	[10:0]  wrusedw;
wire			rdreq;
wire			wr_aclr,rd_aclr;
wire	[31:0] 	fifo_out;      
wire	[13:0]	la;
wire			ready,lholda,ccs;
wire	[7:0] 	ReceiveFlag;
wire	[3:0] 	led;
wire			clkindv2,clkinmp2;

wire	[31:0]	s_ram_wdb;
wire			s_ram_wen;
wire	[2:0]   cmd;
wire			cmdack;
wire	[20:0]  addr;
wire	[31:0]  datain;
wire	[31:0]  dataout;

wire 	[10:0]  sa   ; 
wire 	[1:0]   ba   ; 
wire         	cs_n ;
wire         	cke  ;
wire         	ras_n;
wire         	cas_n;
wire         	we_n ;
wire 	[31:0]  dq   ;  
wire	[3:0]	dqm;
wire			sdramclk;

//-------------------------------------------------
assign led[0] = (ReceiveFlag == 8'h0F);
assign led[1] = s_ram_wen;
assign led[2] = r_req;
assign led[3] = (ReceiveFlag == 8'hF0);
//-------------------------------------------------
reg	clkdv4,clkdv8,clkdv16,clkdv32;
always @(posedge clkindv2 or negedge rst)
	if(!rst)
		clkdv4 <= 0;
	else
		clkdv4 <= ~clkdv4;//10MHz

always @(posedge clkdv4 or negedge rst)
	if(!rst)
		clkdv8 <= 0;
	else
		clkdv8 <= ~clkdv8;//5MHz

always @(posedge clkdv8 or negedge rst)
	if(!rst)
		clkdv16 <= 0;
	else
		clkdv16 <= ~clkdv16;//2.5MHz

always @(posedge clkdv16 or negedge rst)
	if(!rst)
		clkdv32 <= 0;
	else
		clkdv32 <= ~clkdv32;//1.25MHz
//---------------------------------------------------
rec_src source(	
				.rst		(rst),
				.clk		(clkdv4),		
				.qd			(qd),
				.ReceiveFlag(ReceiveFlag)
		       );
	
receiver receiver0(  
				.rst		(rst),	
				.qd			(qd),
				.clk		(clkdv4),
				.r_ram_wdb	(r_ram_wdb),
				.r_ram_wab	(r_ram_wab),
				.r_ram_wen	(r_ram_wen),
				.r_req		(r_req),
				.start_read	(start_read)
				);	

dpram16k_1to512_32 dpram( 
				.data     	(r_ram_wdb),
				.wren     	(r_ram_wen),
				.wraddress	(r_ram_wab),
				.rdaddress	(r_ram_rab),
				.wrclock  	(clkdv4),
				.rdclock  	(clkin),
				.q        	(r_ram_rdb)
				); 

wire	[31:0]	r_ram_rdb_bit_adjust;
assign	r_ram_rdb_bit_adjust[0] = r_ram_rdb[3],
		r_ram_rdb_bit_adjust[1] = r_ram_rdb[2],
		r_ram_rdb_bit_adjust[2] = r_ram_rdb[1],
		r_ram_rdb_bit_adjust[3] = r_ram_rdb[0],
		
		r_ram_rdb_bit_adjust[4] = r_ram_rdb[7],
		r_ram_rdb_bit_adjust[5] = r_ram_rdb[6],
		r_ram_rdb_bit_adjust[6] = r_ram_rdb[5],
		r_ram_rdb_bit_adjust[7] = r_ram_rdb[4],
		
		r_ram_rdb_bit_adjust[8] = r_ram_rdb[11],		
		r_ram_rdb_bit_adjust[9] = r_ram_rdb[10],
		r_ram_rdb_bit_adjust[10] = r_ram_rdb[9],
		r_ram_rdb_bit_adjust[11] = r_ram_rdb[8],
		
		r_ram_rdb_bit_adjust[12] = r_ram_rdb[15],		
		r_ram_rdb_bit_adjust[13] = r_ram_rdb[14],
		r_ram_rdb_bit_adjust[14] = r_ram_rdb[13],
		r_ram_rdb_bit_adjust[15] = r_ram_rdb[12],
		
		r_ram_rdb_bit_adjust[16] = r_ram_rdb[19],		
		r_ram_rdb_bit_adjust[17] = r_ram_rdb[18],
		r_ram_rdb_bit_adjust[18] = r_ram_rdb[17],
		r_ram_rdb_bit_adjust[19] = r_ram_rdb[16],
		
		r_ram_rdb_bit_adjust[20] = r_ram_rdb[23],		
		r_ram_rdb_bit_adjust[21] = r_ram_rdb[22],
		r_ram_rdb_bit_adjust[22] = r_ram_rdb[21],
		r_ram_rdb_bit_adjust[23] = r_ram_rdb[20],
		
		r_ram_rdb_bit_adjust[24] = r_ram_rdb[27],		
		r_ram_rdb_bit_adjust[25] = r_ram_rdb[26],
		r_ram_rdb_bit_adjust[26] = r_ram_rdb[25],
		r_ram_rdb_bit_adjust[27] = r_ram_rdb[24],
		
		r_ram_rdb_bit_adjust[28] = r_ram_rdb[31],		
		r_ram_rdb_bit_adjust[29] = r_ram_rdb[30],
		r_ram_rdb_bit_adjust[30] = r_ram_rdb[29],
		r_ram_rdb_bit_adjust[31] = r_ram_rdb[28];
		
datacnt mydatacnt(	
				.clk		(clkin),
				.rst		(rst),
				.r_ram_rdb	(r_ram_rdb_bit_adjust),	
				.r_ram_rab	(r_ram_rab),	
				.r_req		(r_req),
				
				.s_ram_wdb	(s_ram_wdb),
        		.fifo_wen	(fifo_wen),
                     
		        .cmd      	(cmd      ),
		        .cmdack   	(cmdack   ),
		        .addr     	(addr     ),
		        .datain   	(datain   ),
				.dataout	(dataout),
				
				.start_read	(start_read),
				.interrupt	(lint),
				.rdusedw	(rdusedw),
				.wrusedw	(wrusedw),
				.s_fifo_rst	(s_fifo_rst)
			    );

sdr_sdram mysdr_sdram(
		        .CLK    (clkin),
		        .RESET_N(rst),
		        .ADDR   (addr),
		        .CMD    (cmd),
		        .CMDACK (cmdack),
		        .DATAIN (datain),    
		        .DATAOUT(dataout),
		        .SA     (sa),
		        .BA     (ba),
		        .CS_N   (cs_n),
		        .CKE    (cke),
		        .RAS_N  (ras_n),
		        .CAS_N  (cas_n),
		        .WE_N   (we_n),
		        .DQ     (dq)
		        );
//-------------------------------------------------
assign dqm = 4'd0;
assign sdramclk = clkin;
//---------------------------------------------------
fifo1k_32 fifo(
				.data(s_ram_wdb),
				.wrreq(fifo_wen),
				.rdreq(rdreq),				
				.rdclk(clkin),
				.wrclk(clkin),
				.aclr(!rst),
				.q(fifo_out),
				.rdusedw(rdusedw),
				.wrusedw(wrusedw)
				);

plx_r plx9054(
				.clk(clkin),
				.lrst(rst),
				.ld(ld),
				.ads(ads),
				.lwr(lwr),
				.ready(ready),
				.lwait(lwait),
				.blast(blast),
				.lhold(lhold),
				.lholda(lholda),
				.la(la),
				.ccs(ccs),
				.bterm(bterm),
				.user_i(user_i),
				.user_o(user_o),
				.fifo_out(fifo_out),
				.rdreq(rdreq),
				.ReceiveFlag(ReceiveFlag)
				);
	
pll0 mypll(
			.inclk0(clkin),
			.c0(clkindv2),
			.c1(clkinmp2)
			);
			
endmodule

⌨️ 快捷键说明

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