当前位置: 首页 > wzjs >正文

南昌建站系统外包自适应网站设计稿

南昌建站系统外包,自适应网站设计稿,google提交网站,5000元网站seo推广对ddr进行读写实验,用了vivado的ddr的模型进行仿真 1 创建AXI_mig的ip核 选择axi 选择自己的型号,这里是ddr的位宽32,但是axi的话是256位宽 选择nobuffer,没有缓冲器 选择自己匹配引脚 默认 后面默认即可 生成ip,时间…

对ddr进行读写实验,用了vivado的ddr的模型进行仿真

 1 创建AXI_mig的ip核

选择axi

 

 

 选择自己的型号,这里是ddr的位宽32,但是axi的话是256位宽

 

 

 选择nobuffer,没有缓冲器

 选择自己匹配引脚

 

 

 默认

 后面默认即可

 

 生成ip,时间很长。

 

 2 打开mig的工程寻找模型文件

仿真模型 这个tb是xlinx自己的仿真代码以及模型

 根据路径找到需要的代码

 

需要的文件如下都拷到自己的工程

 

 3.写驱动模块代码

顶层模块

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2025/04/01 20:38:55
// Design Name: 
// Module Name: axi_ddr
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//module axi_ddr_top(input                       clk     ,
input                       rst     ,
input                       wen     ,
input        [31:0]               wr_len  ,
input                       rd_en   ,
input      [31:0]                 rd_len,
output [15:0]		ddr3_addr,
output [2:0]		ddr3_ba,
output			ddr3_cas_n,
output [0:0]		ddr3_ck_n,
output [0:0]		ddr3_ck_p,
output [0:0]		ddr3_cke,
output			ddr3_ras_n,
output			ddr3_reset_n,
output			ddr3_we_n,
inout [31:0]		ddr3_dq,
inout [3:0]		ddr3_dqs_n,
inout [3:0]		ddr3_dqs_p,
input			init_calib_complete,
output [0:0]		ddr3_cs_n,
output [3:0]		ddr3_dm,
output [0:0]		ddr3_odt);localparam integer C_S_AXI_ID_WIDTH = 4;localparam integer C_S_AXI_DATA_WIDTH = 256;localparam integer C_S_AXI_ADDR_WIDTH = 31;localparam integer C_S_AXI_AWUSER_WIDTH = 0;localparam integer C_S_AXI_ARUSER_WIDTH = 0;localparam integer C_S_AXI_WUSER_WIDTH = 0;localparam integer C_S_AXI_RUSER_WIDTH = 0;localparam integer C_S_AXI_BUSER_WIDTH = 0;wire   S_AXI_ACLK;wire   S_AXI_ARESETN;wire  [C_S_AXI_ID_WIDTH-1 : 0] S_AXI_AWID;wire  [C_S_AXI_ADDR_WIDTH-1 : 0] S_AXI_AWADDR;wire  [7 : 0] S_AXI_AWLEN;wire  [2 : 0] S_AXI_AWSIZE;wire  [1 : 0] S_AXI_AWBURST;wire   S_AXI_AWLOCK;wire  [3 : 0] S_AXI_AWCACHE;wire  [2 : 0] S_AXI_AWPROT;wire  [3 : 0] S_AXI_AWQOS;wire  [3 : 0] S_AXI_AWREGION;wire  [C_S_AXI_AWUSER_WIDTH-1 : 0] S_AXI_AWUSER;wire   S_AXI_AWVALID;wire  S_AXI_AWREADY;wire  [C_S_AXI_DATA_WIDTH-1 : 0] S_AXI_WDATA;wire  [(C_S_AXI_DATA_WIDTH/8)-1 : 0] S_AXI_WSTRB;wire   S_AXI_WLAST;wire  [C_S_AXI_WUSER_WIDTH-1 : 0] S_AXI_WUSER;wire   S_AXI_WVALID;wire  S_AXI_WREADY;wire [C_S_AXI_ID_WIDTH-1 : 0] S_AXI_BID;wire [1 : 0] S_AXI_BRESP;wire [C_S_AXI_BUSER_WIDTH-1 : 0] S_AXI_BUSER;wire  S_AXI_BVALID;wire   S_AXI_BREADY;wire  [C_S_AXI_ID_WIDTH-1 : 0] S_AXI_ARID;wire  [C_S_AXI_ADDR_WIDTH-1 : 0] S_AXI_ARADDR;wire  [7 : 0] S_AXI_ARLEN;wire  [2 : 0] S_AXI_ARSIZE;wire  [1 : 0] S_AXI_ARBURST;wire   S_AXI_ARLOCK;wire  [3 : 0] S_AXI_ARCACHE;wire  [2 : 0] S_AXI_ARPROT;wire  [3 : 0] S_AXI_ARQOS;wire  [3 : 0] S_AXI_ARREGION;wire  [C_S_AXI_ARUSER_WIDTH-1 : 0] S_AXI_ARUSER;wire   S_AXI_ARVALID;wire  S_AXI_ARREADY;wire [C_S_AXI_ID_WIDTH-1 : 0] S_AXI_RID;wire [C_S_AXI_DATA_WIDTH-1 : 0] S_AXI_RDATA;wire [1 : 0] S_AXI_RRESP;wire  S_AXI_RLAST;wire [C_S_AXI_RUSER_WIDTH-1 : 0] S_AXI_RUSER;wire  S_AXI_RVALID;wire   S_AXI_RREADY;axi_addr_m  axi_addr_m_inst (.clk                    (      ui_clk            ),.rst                    (      rst            ),.wen                    (      wen            ),.wr_len                 (      wr_len         ),.rd_en                  (      rd_en          ),.rd_len                 (      rd_len         ),.init_calib_complete    (init_calib_complete)  ,.s_axi_awid             (    S_AXI_AWID       ),.s_axi_awaddr           (    S_AXI_AWADDR     ),.s_axi_awlen            (    S_AXI_AWLEN       ),.s_axi_awsize           (    S_AXI_AWSIZE      ),.s_axi_awburst          (    S_AXI_AWBURST     ),.s_axi_awlock           (    S_AXI_AWLOCK       ),.s_axi_awcache          (    S_AXI_AWCACHE      ),.s_axi_awprot           (    S_AXI_AWPROT       ),.s_axi_awqos            (    S_AXI_AWQOS        ),.s_axi_awvalid          (    S_AXI_AWVALID      ),.s_axi_awready          (    S_AXI_AWREADY      ),.s_axi_wdata            (    S_AXI_WDATA        ),.s_axi_wstrb            (    S_AXI_WSTRB        ),.s_axi_wlast            (    S_AXI_WLAST        ),.s_axi_wvalid           (    S_AXI_WVALID       ),.s_axi_wready           (    S_AXI_WREADY       ),.s_axi_bid              (    S_AXI_BID          ),.s_axi_bresp            (    S_AXI_BRESP        ),.s_axi_bvalid           (    S_AXI_BVALID       ),.s_axi_bready           (    S_AXI_BREADY       ),.s_axi_arid             (    S_AXI_ARID         ),.s_axi_araddr           (    S_AXI_ARADDR       ),.s_axi_arlen            (    S_AXI_ARLEN        ),.s_axi_arsize           (    S_AXI_ARSIZE       ),.s_axi_arburst          (    S_AXI_ARBURST       ),.s_axi_arlock           (    S_AXI_ARLOCK       ),.s_axi_arcache          (    S_AXI_ARCACH       ),.s_axi_arprot           (    S_AXI_ARPROT       ),.s_axi_arqos            (    S_AXI_ARQOS        ),.s_axi_arvalid          (    S_AXI_ARVALID      ),.s_axi_arready          (    S_AXI_ARREADY      ),.s_axi_rid              (    S_AXI_RID          ),.s_axi_rdata            (    S_AXI_RDATA        ),.s_axi_rresp            (    S_AXI_RRESP        ),.s_axi_rlast            (    S_AXI_RLAST        ),.s_axi_rvalid           (    S_AXI_RVALID       ),.s_axi_rready           (    S_AXI_RREADY       ));
//          
//axi_full_test_v1_0_S00_AXI # (
//  .C_S_AXI_ID_WIDTH(C_S_AXI_ID_WIDTH),
//  .C_S_AXI_DATA_WIDTH(C_S_AXI_DATA_WIDTH),
//  .C_S_AXI_ADDR_WIDTH(C_S_AXI_ADDR_WIDTH),
//  .C_S_AXI_AWUSER_WIDTH(C_S_AXI_AWUSER_WIDTH),
//  .C_S_AXI_ARUSER_WIDTH(C_S_AXI_ARUSER_WIDTH),
//  .C_S_AXI_WUSER_WIDTH(C_S_AXI_WUSER_WIDTH),
//  .C_S_AXI_RUSER_WIDTH(C_S_AXI_RUSER_WIDTH),
//  .C_S_AXI_BUSER_WIDTH(C_S_AXI_BUSER_WIDTH)
//)
//axi_full_test_v1_0_S00_AXI_inst (
//  .S_AXI_ACLK            (     clk        ),
//  .S_AXI_ARESETN         (     rst        ),
//  .S_AXI_AWID            (S_AXI_AWID      ),
//  .S_AXI_AWADDR          (S_AXI_AWADDR    ),
//  .S_AXI_AWLEN           (S_AXI_AWLEN     ),
//  .S_AXI_AWSIZE          (S_AXI_AWSIZE    ),
//  .S_AXI_AWBURST         (S_AXI_AWBURST   ),
//  .S_AXI_AWLOCK          (S_AXI_AWLOCK    ),
//  .S_AXI_AWCACHE         (S_AXI_AWCACHE   ),
//  .S_AXI_AWPROT          (S_AXI_AWPROT    ),
//  .S_AXI_AWQOS           (S_AXI_AWQOS     ),
//  .S_AXI_AWREGION        (S_AXI_AWREGION  ),
//  .S_AXI_AWUSER          (S_AXI_AWUSER    ),
//  .S_AXI_AWVALID         (S_AXI_AWVALID   ),
//  .S_AXI_AWREADY         (S_AXI_AWREADY   ),
//  .S_AXI_WDATA           (S_AXI_WDATA     ),
//  .S_AXI_WSTRB           (S_AXI_WSTRB     ),
//  .S_AXI_WLAST           (S_AXI_WLAST     ),
//  .S_AXI_WUSER           (S_AXI_WUSER     ),
//  .S_AXI_WVALID          (S_AXI_WVALID    ),
//  .S_AXI_WREADY          (S_AXI_WREADY    ),
//  .S_AXI_BID             (S_AXI_BID       ),
//  .S_AXI_BRESP           (S_AXI_BRESP     ),
//  .S_AXI_BUSER           (S_AXI_BUSER     ),
//  .S_AXI_BVALID          (S_AXI_BVALID    ),
//  .S_AXI_BREADY          (S_AXI_BREADY    ),
//  .S_AXI_ARID            (S_AXI_ARID      ),
//  .S_AXI_ARADDR          (S_AXI_ARADDR    ),
//  .S_AXI_ARLEN           (S_AXI_ARLEN     ),
//  .S_AXI_ARSIZE          (S_AXI_ARSIZE    ),
//  .S_AXI_ARBURST         (S_AXI_ARBURST    ),
//  .S_AXI_ARLOCK          (S_AXI_ARLOCK    ),
//  .S_AXI_ARCACHE         (S_AXI_ARCACH    ),
//  .S_AXI_ARPROT          (S_AXI_ARPROT    ),
//  .S_AXI_ARQOS           (S_AXI_ARQOS     ),
//  .S_AXI_ARREGION        (S_AXI_ARREGION  ),
//  .S_AXI_ARUSER          (S_AXI_ARUSER    ),
//  .S_AXI_ARVALID         (S_AXI_ARVALID   ),
//  .S_AXI_ARREADY         (S_AXI_ARREADY   ),
//  .S_AXI_RID             (S_AXI_RID       ),
//  .S_AXI_RDATA           (S_AXI_RDATA     ),
//  .S_AXI_RRESP           (S_AXI_RRESP     ),
//  .S_AXI_RLAST           (S_AXI_RLAST     ),
//  .S_AXI_RUSER           (S_AXI_RUSER     ),
//  .S_AXI_RVALID          (S_AXI_RVALID    ),
//  .S_AXI_RREADY          (S_AXI_RREADY    )
//);mig_7series_0 u_mig_7series_0 (
// Memory interface ports
.ddr3_addr                      (   ddr3_addr                 ),  // output [15:0]		ddr3_addr
.ddr3_ba                        (   ddr3_ba                   ),  // output [2:0]		ddr3_ba
.ddr3_cas_n                     (   ddr3_cas_n                ),  // output			ddr3_cas_n
.ddr3_ck_n                      (   ddr3_ck_n                 ),  // output [0:0]		ddr3_ck_n
.ddr3_ck_p                      (   ddr3_ck_p                 ),  // output [0:0]		ddr3_ck_p
.ddr3_cke                       (   ddr3_cke                  ),  // output [0:0]		ddr3_cke
.ddr3_ras_n                     (   ddr3_ras_n                ),  // output			ddr3_ras_n
.ddr3_reset_n                   (   ddr3_reset_n              ),  // output			ddr3_reset_n
.ddr3_we_n                      (   ddr3_we_n                 ),  // output			ddr3_we_n
.ddr3_dq                        (   ddr3_dq                   ),  // inout [31:0]		ddr3_dq
.ddr3_dqs_n                     (   ddr3_dqs_n                ),  // inout [3:0]		ddr3_dqs_n
.ddr3_dqs_p                     (   ddr3_dqs_p                ),  // inout [3:0]		ddr3_dqs_p
.init_calib_complete            (   init_calib_complete       ),  // output			init_calib_complete
.ddr3_cs_n                      (   ddr3_cs_n                 ),  // output [0:0]		ddr3_cs_n
.ddr3_dm                        (   ddr3_dm                   ),  // output [3:0]		ddr3_dm
.ddr3_odt                       (   ddr3_odt                  ),  // output [0:0]		ddr3_odt
// Application interface ports
.ui_clk                         (   ui_clk                    ),  // output			ui_clk
.ui_clk_sync_rst                (   ui_clk_sync_rst           ),  // output			ui_clk_sync_rst
.mmcm_locked                    (   mmcm_locked               ),  // output			mmcm_locked
.aresetn                        (  ~ui_clk_sync_rst                      ),  // input			aresetn
.app_sr_req                     (  1'b0                       ),  // input			app_sr_req
.app_ref_req                    (  1'b0                       ),  // input			app_ref_req
.app_zq_req                     (  1'b0                       ),  // input			app_zq_req
.app_sr_active                  ( app_sr_active               ),  // output			app_sr_active
.app_ref_ack                    ( app_ref_ack                 ),  // output			app_ref_ack
.app_zq_ack                     ( app_zq_ack                  ),  // output			app_zq_ack
// Slave Interface Write Address Ports
.s_axi_awid                     (  S_AXI_AWID                   ),  // input     [3:0]			s_axi_awid
.s_axi_awaddr                   (  S_AXI_AWADDR                 ),  // input     [31:0]			s_axi_awaddr
.s_axi_awlen                    (  S_AXI_AWLEN                  ),  // input     [7:0]			s_axi_awlen
.s_axi_awsize                   (  S_AXI_AWSIZE                 ),  // input     [2:0]			s_axi_awsize
.s_axi_awburst                  (  S_AXI_AWBURST               ),  // input     [1:0]			s_axi_awburst
.s_axi_awlock                   (  S_AXI_AWLOCK                ),  // input     [0:0]			s_axi_awlock
.s_axi_awcache                  (  S_AXI_AWCACHE              ),  // input     [3:0]			s_axi_awcache
.s_axi_awprot                   (  S_AXI_AWPROT               ),  // input     [2:0]			s_axi_awprot
.s_axi_awqos                    (  S_AXI_AWQOS         ),  // input     [3:0]			s_axi_awqos
.s_axi_awvalid                  (   S_AXI_AWVALID             ),  // input			            s_axi_awvalid
.s_axi_awready                  (   S_AXI_AWREADY             ),  // output			            s_axi_awready
// Slave Interface Write Data Ports        
.s_axi_wdata                    (   S_AXI_WDATA               ),  // input       [255:0]			s_axi_wdata
.s_axi_wstrb                    (   S_AXI_WSTRB               ),  // input       [31:0]			    s_axi_wstrb 都有效
.s_axi_wlast                    (   S_AXI_WLAST               ),  // input			                s_axi_wlast
.s_axi_wvalid                   (   S_AXI_WVALID              ),  // input			                s_axi_wvalid
.s_axi_wready                   (   S_AXI_WREADY              ),  // output			                s_axi_wready
// Slave Interface Write Response Ports
.s_axi_bid                      (   S_AXI_BID                    ),  // output [3:0]			s_axi_bid
.s_axi_bresp                    (   S_AXI_BRESP                ),  // output [1:0]			s_axi_bresp
.s_axi_bvalid                   (   S_AXI_BVALID               ),  // output			s_axi_bvalid
.s_axi_bready                   (   S_AXI_BREADY                       ),  // input			s_axi_bready
// Slave Interface Read Address Ports
.s_axi_arid                     (   S_AXI_ARID               ),  // input [3:0]			s_axi_arid
.s_axi_araddr                   (   S_AXI_ARADDR             ),  // input [31:0]			s_axi_araddr
.s_axi_arlen                    (   S_AXI_ARLEN              ),  // input [7:0]			s_axi_arlen
.s_axi_arsize                   (   S_AXI_ARSIZE             ),  // input [2:0]			s_axi_arsize
.s_axi_arburst                  (   S_AXI_ARBURST            ),  // input [1:0]			s_axi_arburst
.s_axi_arlock                   (   S_AXI_ARLOCK             ),  // input [0:0]			s_axi_arlock
.s_axi_arcache                  (   S_AXI_ARCACH            ),  // input [3:0]			s_axi_arcache
.s_axi_arprot                   (   S_AXI_ARPROT             ),  // input [2:0]			s_axi_arprot
.s_axi_arqos                    (   S_AXI_ARQOS              ),  // input [3:0]			s_axi_arqos
.s_axi_arvalid                  (   S_AXI_ARVALID              ),  // input			s_axi_arvalid
.s_axi_arready                  (   S_AXI_ARREADY              ),  // output			s_axi_arready
// Slave Interface Read Data Ports
.s_axi_rid                      (   S_AXI_RID                       ),  // output [3:0]			s_axi_rid
.s_axi_rdata                    (   S_AXI_RDATA                ),  // output [255:0]			s_axi_rdata
.s_axi_rresp                    (   S_AXI_RRESP                ),  // output [1:0]			s_axi_rresp
.s_axi_rlast                    (   S_AXI_RLAST                ),  // output			s_axi_rlast
.s_axi_rvalid                   (   S_AXI_RVALID               ),  // output			s_axi_rvalid
.s_axi_rready                   (   S_AXI_RREADY               ),  // input			s_axi_rready
// System Clock Ports
.sys_clk_i                      (  clk                         ),
// Reference Clock Ports
.clk_ref_i                      (   clk                     ),
.sys_rst                        (   rst                 ) // input sys_rst   axi低电平复位
);endmodule

 axi_addr_m模块代码

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2025/04/01 20:49:57
// Design Name: 
// Module Name: axi_addr_m
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//module axi_addr_m(
input                       clk,
input                       rst,
input                       wen,
input       [31:0]           wr_len,
input                       rd_en,
input       [31:0]           rd_len,
input                        init_calib_complete,// Slave Interface Write Address Ports
output     [3:0]			s_axi_awid                  ,                        
output     [30:0]			s_axi_awaddr                ,                           
output      [7:0]			s_axi_awlen                 ,                          
output      [2:0]			s_axi_awsize                ,          
output      [1:0]			s_axi_awburst               ,                                
output           			s_axi_awlock                ,                               
output      [3:0]			s_axi_awcache               ,                                
output      [2:0]			s_axi_awprot                ,                   
output      [3:0]			s_axi_awqos                 ,                 
output      	            s_axi_awvalid               ,           
input          	            s_axi_awready               , // Slave Interface Write Data Ports     
output   [255:0]			s_axi_wdata                 ,              
output    [31:0]			s_axi_wstrb                 ,              
output   	                s_axi_wlast                 ,              
output   	                s_axi_wvalid                ,           
input     	                s_axi_wready                ,           // Slave Interface Write Response Ports  
input     [3:0]			    s_axi_bid                   ,             
input     [1:0]			    s_axi_bresp                 ,               
input     			        s_axi_bvalid                ,                
output     		            s_axi_bready                ,                // Slave Interface Read Address Ports  
output     [3:0]			s_axi_arid              ,                                      
output    [30:0]			s_axi_araddr            ,                                         
output     [7:0]			s_axi_arlen             ,                                         
output     [2:0]			s_axi_arsize            ,                                        
output     [1:0]			s_axi_arburst           ,                                
output     [0:0]			s_axi_arlock            ,                                                                                  
output     [3:0]			s_axi_arcache           ,                                                                                   
output     [2:0]			s_axi_arprot            ,                                                                                  
output     [3:0]			s_axi_arqos             ,                                       
output    		            s_axi_arvalid           ,                                         
input   			        s_axi_arready           ,                                         // Slave Interface Read Data Ports  
input      [3:0]			s_axi_rid               ,                   
input      [255:0]			s_axi_rdata             ,                     
input      [1:0]			s_axi_rresp             ,                     
input                       s_axi_rlast             ,                     
input                       s_axi_rvalid            ,                                   
output                      s_axi_rready             );(* syn_keep = "true", mark_debug = "true" *)    
reg    [31:0]           w_cnt            ;
(* syn_keep = "true", mark_debug = "true" *) 
reg    [31:0]           r_cnt            ;
(* syn_keep = "true", mark_debug = "true" *) 
reg    [31:0]           wr_cnt_num            ;
(* syn_keep = "true", mark_debug = "true" *) 
reg    [31:0]           rd_cnt_num            ;
(* syn_keep = "true", mark_debug = "true" *) 
reg    [255:0]          s_axi_rdata_d    ;
(* syn_keep = "true", mark_debug = "true" *) 
reg                     s_axi_awvalid_r  ;
(* syn_keep = "true", mark_debug = "true" *) 
reg    [30:0]           s_axi_awaddr_r   ;(* syn_keep = "true", mark_debug = "true" *) 
reg                     s_axi_wvalid_r    ;
(* syn_keep = "true", mark_debug = "true" *) 
reg                     s_axi_wlast_r     ;
(* syn_keep = "true", mark_debug = "true" *) 
reg    [255:0]          s_axi_wdata_r     ;
(* syn_keep = "true", mark_debug = "true" *) 
reg                     s_axi_arvalid_r   ;
(* syn_keep = "true", mark_debug = "true" *) 
reg    [30:0]           s_axi_araddr_r    ;
(* syn_keep = "true", mark_debug = "true" *) 
reg                     s_axi_rready_r    ;
(* syn_keep = "true", mark_debug = "true" *) 
reg                     wen_d1;
(* syn_keep = "true", mark_debug = "true" *) 
reg                     wen_d2;
(* syn_keep = "true", mark_debug = "true" *) 
reg                     rd_en_d1;
(* syn_keep = "true", mark_debug = "true" *) 
reg                     rd_en_d2;
(* syn_keep = "true", mark_debug = "true" *) 
(* syn_keep = "true", mark_debug = "true" *) 
reg    [7:0]            s_axi_awlen_d1    ;
(* syn_keep = "true", mark_debug = "true" *) 
reg    [7:0]            s_axi_arlen_d1    ;
(* syn_keep = "true", mark_debug = "true" *) 
reg                     init_calib_complete_d1;
(* syn_keep = "true", mark_debug = "true" *) 
reg                     init_calib_complete_d2;
(* syn_keep = "true", mark_debug = "true" *) 
wire                 wr_en_flag;
(* syn_keep = "true", mark_debug = "true" *) 
wire                 rd_en_flag;reg     [7:0]       test_cnt;assign  s_axi_awid     =4'd0              ;         
assign  s_axi_awlen    =8'd255            ;         
assign  s_axi_awsize   =3'd5              ;         
assign  s_axi_awburst  =2'b01             ;         
assign  s_axi_awlock   =1'b0              ;         
assign  s_axi_awcache  =4'b0010           ;         
assign  s_axi_awprot   =3'd0              ;         
assign  s_axi_awqos    =4'd0              ;         
assign  s_axi_wstrb    =32'hffffffff      ;
assign  s_axi_arid     = 4'd0             ;         
assign  s_axi_arlen    = 8'd255           ;        
assign  s_axi_arsize   = 3'd5             ;        
assign  s_axi_arburst  = 2'b01            ;        
assign  s_axi_arlock   = 1'b0             ;        
assign  s_axi_arcache  = 4'b0010             ;        
assign  s_axi_arprot   = 3'd0             ;        
assign  s_axi_arqos    = 4'd0             ;        
assign  s_axi_bready   = 1'b1             ;assign  s_axi_awvalid  = s_axi_awvalid_r  ;
assign  s_axi_awaddr   = s_axi_awaddr_r   ;
assign  s_axi_wvalid   = s_axi_wvalid_r   ;
assign  s_axi_wlast    = s_axi_wlast_r    ;
assign  s_axi_wdata    = s_axi_wdata_r    ;
assign  s_axi_arvalid  = s_axi_arvalid_r  ;
assign  s_axi_araddr   =s_axi_araddr_r    ;
assign  s_axi_rready   = s_axi_rready_r   ;
assign  wr_en_flag     = wen_d1 & (~wen_d2) ;
assign  rd_en_flag     =  rd_en_d1 & (~rd_en_d2) ;always @(posedge clk or negedge rst) beginif (rst == 1'b0) begininit_calib_complete_d1 <= 1'b0;init_calib_complete_d2 <= 1'b0;endelse  begininit_calib_complete_d1<= init_calib_complete;init_calib_complete_d2<= init_calib_complete_d1;end
end//always @(posedge clk or negedge rst) begin
//    if (rst == 1'b0) begin
//        wen_d1 <= 1'b0;
//        wen_d2 <= 1'b0;
//    end
//    else  begin
//        wen_d1<= wen;
//         wen_d2<= wen_d1;
//    end
//end
//
//
//always @(posedge clk or negedge rst) begin
//    if (rst == 1'b0) begin
//        rd_en_d1 <= 1'b0;
//        rd_en_d2 <= 1'b0;
//    end
//    else  begin
//        rd_en_d1<= rd_en;
//        rd_en_d2<= rd_en_d1;
//    end
//end
//==============test==================always @(posedge clk or negedge rst) beginif (rst == 1'b0)test_cnt <=8'd0;else if( init_calib_complete_d2 == 1'b1  ) test_cnt <= test_cnt + 8'd1;else if (test_cnt  == 8'd100)test_cnt <=8'd0;else;
end//===========写地址==========
always @(posedge clk or negedge rst) beginif (rst == 1'b0)s_axi_awvalid_r <= 1'b0;else if(s_axi_awvalid && s_axi_awready ) s_axi_awvalid_r <= 1'b0;else if (s_axi_wlast_r == 1'b1 && wr_cnt_num != wr_len -1'b1 )s_axi_awvalid_r <= 1'b1;else if (test_cnt  == 8'd100 && init_calib_complete_d2 == 1'b1 )    //wen_d2 == 1'b1s_axi_awvalid_r <= 1'b1;else;
endalways @(posedge clk or negedge rst) beginif (rst == 1'b0)s_axi_awaddr_r <=31'd0;else if(s_axi_awvalid_r && s_axi_awready ) s_axi_awaddr_r <= s_axi_awaddr_r + 31'd256;else;
end
//==========写数据===========
always @(posedge clk or negedge rst) beginif (rst == 1'b0)s_axi_wvalid_r <= 1'b0;else if(s_axi_awvalid_r && s_axi_awready ) s_axi_wvalid_r <= 1'b1;else if (s_axi_wlast == 1'b1)s_axi_wvalid_r <= 1'b0;else;
endalways @(posedge clk or negedge rst) beginif (rst == 1'b0)w_cnt <= 32'd0;else if (s_axi_wlast_r == 1'b1)w_cnt <= 32'd0;else if(s_axi_wvalid_r == 1'b1 && s_axi_wready == 1'b1 ) w_cnt <= w_cnt + 1'b1;else;
endalways @(posedge clk or negedge rst) beginif (rst == 1'b0)wr_cnt_num <= 32'd0;else if (wr_cnt_num == wr_len -1'b1 )wr_cnt_num <= 32'd0;else if(s_axi_wvalid_r == 1'b1 && s_axi_wready == 1'b1 ) wr_cnt_num <= wr_cnt_num + 1'b1;else;
endalways @(posedge clk or negedge rst) beginif (rst == 1'b0)s_axi_wlast_r <= 1'b0;else if(w_cnt == 8'd254  ) s_axi_wlast_r <= 1'b1;else s_axi_wlast_r <= 1'b0;
endalways @(posedge clk or negedge rst) beginif (rst == 1'b0)s_axi_wdata_r <= 256'd0;else if(s_axi_wvalid_r == 1'b1 && s_axi_wready == 1'b1 ) s_axi_wdata_r <= s_axi_wdata_r + 1'b1;else;
end//==========响应=============//==========读地址===========always @(posedge clk or negedge rst) beginif (rst == 1'b0)s_axi_arvalid_r <= 1'b0;else if( s_axi_wlast_r == 1'b1 && init_calib_complete_d2 == 1'b1  )  //rd_en == 1'b1 s_axi_arvalid_r <= 1'b1;else if (s_axi_arvalid_r == 1'b1 && s_axi_arready == 1'b1 ) s_axi_arvalid_r <= 1'b0;
endalways @(posedge clk or negedge rst) beginif (rst == 1'b0)s_axi_araddr_r <= 31'd0;else if(s_axi_arvalid_r == 1'b1 && s_axi_arready == 1'b1 ) s_axi_araddr_r <=s_axi_araddr_r + 31'd256;else;
end//==========读数据=============always @(posedge clk or negedge rst) beginif (rst == 1'b0)s_axi_rready_r <= 1'b0;else if(s_axi_arvalid_r == 1'b1 && s_axi_arready == 1'b1  ) s_axi_rready_r <= 1'b1;else if (s_axi_rlast == 1'b1)s_axi_rready_r <= 1'b0;else;
endalways @(posedge clk or negedge rst) beginif (rst == 1'b0)s_axi_rdata_d <= 256'd0;else if (s_axi_rlast == 1'b1)s_axi_rdata_d <= 256'd0;else if(s_axi_rvalid == 1'b1 && s_axi_rready == 1'b1  ) s_axi_rdata_d <=s_axi_rdata;else;
endalways @(posedge clk or negedge rst) beginif (rst == 1'b0)r_cnt <= 32'd0;else if (s_axi_rlast == 1'b1)r_cnt <= 32'd0;else if(s_axi_rvalid == 1'b1 && s_axi_rready == 1'b1  ) r_cnt <= r_cnt + 1'b1;else;
endalways @(posedge clk or negedge rst) beginif (rst == 1'b0)rd_cnt_num <= 32'd0;else if (rd_cnt_num == rd_len -1'b1 )rd_cnt_num <= 32'd0;else if(s_axi_rvalid == 1'b1 && s_axi_rready == 1'b1 ) rd_cnt_num <= rd_cnt_num + 1'b1;else;
end endmodule

4.仿真

需要把xilinx的tb文件中的顶层改成自己的顶层

改成自己的

5仿真结果 

尤其是注意ddr的init_calib_complete 信号拉高,表示ddr初始化完成,但是对于模型的初始地址并不是0 ,这个仿真是需要10分钟左右才能看到他拉高。

写入0-255 读0-255

 读

 


文章转载自:

http://CQ2WnrzC.nssjy.cn
http://oNGwA49c.nssjy.cn
http://uoUAo2SL.nssjy.cn
http://BJWW22vI.nssjy.cn
http://8CQPdmNv.nssjy.cn
http://W3ZYS712.nssjy.cn
http://hM8XEZfY.nssjy.cn
http://WlO69GmA.nssjy.cn
http://jSakEoI7.nssjy.cn
http://1g2dcZib.nssjy.cn
http://3OYuXvJs.nssjy.cn
http://iQZVFNvJ.nssjy.cn
http://eexRfErG.nssjy.cn
http://d6JwzK2p.nssjy.cn
http://XZdJHMud.nssjy.cn
http://KUmeRHTU.nssjy.cn
http://38wbFphR.nssjy.cn
http://50OaavtP.nssjy.cn
http://8nBOy1Ff.nssjy.cn
http://p7VOE44H.nssjy.cn
http://R7hj5NCE.nssjy.cn
http://B2UaIKLE.nssjy.cn
http://cjU7Pitb.nssjy.cn
http://LC3PMdkG.nssjy.cn
http://VVm4xYCd.nssjy.cn
http://P2FePHE8.nssjy.cn
http://s1A5MuTx.nssjy.cn
http://r6vVpEWO.nssjy.cn
http://qWJ0z0qf.nssjy.cn
http://zQEv60do.nssjy.cn
http://www.dtcms.com/wzjs/625132.html

相关文章:

  • 国内网站绕过备案方法网站建设套定额
  • 简单的网站建设合同书北京网站定制流程
  • 上海网站托管永久免费crm都有什么
  • 台州市网站制作网络广告营销的概念
  • 旅游网站系统建设方案做同城购物网站
  • 广东做网站策划做竞价推广大概多少钱
  • 在线logo制作网站wordpress 换行符
  • a站播放量最高的视频架设网站服务器
  • 深圳做网站联雅新网站开发
  • 现代电子商务网站建设技术文化旅游做的好的网站
  • 阿里云建设网站教程自建网站推广
  • 整站优化多少钱新品发布会现场
  • 下列关于wap手机网站建网站的专业公司
  • 在什么网站做推广最好印刷网站开发策划书
  • 网站做app的软件有哪些用于网站开发的语言
  • 移动端网站制作模板网站说说模板.
  • wordpress网站生成app应用工程信息网站谁做
  • 影院网站怎么做定制产品
  • 网站和网络建设调研情况数据库网站开发教程
  • 启航做网站好吗wordpress贴吧主题
  • 提供网站建设运营公司资质房天下官网首页
  • 做外贸必须建网站吗百度快照怎么使用
  • 菲律宾做网站wordpress获取文章中的图片
  • 都江堰网站建设公司问答营销是基于什么的新型网络营销方式
  • 如何做一个网站的功能吗做图模板网站有哪些内容
  • 杭州企业网站制作怎样开公众号
  • 网站开发mvc架构昆山网站建设哪家便宜
  • 营销推广运营 网站有哪些做动图的网站
  • 卖衣服的网站排名房地产公司网站源码
  • 网站快速排名技巧产品网络推广方案范文