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

📄 bmd_ep.v

📁 已经在xilinx的ML555开发板上实现的PCIEx4的设计
💻 V
字号:
//--------------------------------------------------------------------------------//--//-- This file is owned and controlled by Xilinx and must be used solely//-- for design, simulation, implementation and creation of design files//-- limited to Xilinx devices or technologies. Use with non-Xilinx//-- devices or technologies is expressly prohibited and immediately//-- terminates your license.//--//-- Xilinx products are not intended for use in life support//-- appliances, devices, or systems. Use in such applications is//-- expressly prohibited.//--//--            **************************************//--            ** Copyright (C) 2005, Xilinx, Inc. **//--            ** All Rights Reserved.             **//--            **************************************//--//--------------------------------------------------------------------------------//-- Filename: BMD_EP.v//--//-- Description: Bus Master Device I/O Endpoint module. //--//--------------------------------------------------------------------------------`timescale 1ns/1nsmodule BMD_EP (                        clk,                                         rst_n,                                      // LocalLink Tx                        trn_td,`ifdef BMD_64                        trn_trem_n,`endif // BMD_64                        trn_tsof_n,                        trn_teof_n,                        trn_tsrc_dsc_n,                        trn_tsrc_rdy_n,                        trn_tdst_dsc_n,                        trn_tdst_rdy_n,                                // LocalLink Rx                        trn_rd,`ifdef BMD_64                        trn_rrem_n,`endif // BMD_64                        trn_rsof_n,                        trn_reof_n,                        trn_rsrc_rdy_n,                        trn_rsrc_dsc_n,                        trn_rdst_rdy_n,                                // Turnoff access                        req_compl_o,                        compl_done_o,                        // Configuration access                                cfg_interrupt_n,                        cfg_interrupt_rdy_n,                                                cfg_interrupt_assert_n, // O                        cfg_interrupt_di,  		// O                        cfg_interrupt_do,  	 	// I                        cfg_interrupt_mmenable,   // I                        cfg_interrupt_msienable,   // I                        cfg_completer_id,                        cfg_ext_tag_en,                        cfg_max_rd_req_size,                        cfg_max_payload_size,                        cfg_bus_mstr_enable                               );    input              clk;    input              rst_n;    // LocalLink Tx    `ifdef BMD_64    output [63:0]     trn_td;    output [7:0]      trn_trem_n;`else // BMD_64    output [31:0]     trn_td;`endif // BMD_64    output            trn_tsof_n;    output            trn_teof_n;    output            trn_tsrc_dsc_n;    output            trn_tsrc_rdy_n;    input             trn_tdst_dsc_n;    input             trn_tdst_rdy_n;        // LocalLink Rx    `ifdef BMD_64    input [63:0]      trn_rd;    input [7:0]       trn_rrem_n;`else // BMD_64    input [31:0]      trn_rd;`endif // BMD_64    input             trn_rsof_n;    input             trn_reof_n;    input             trn_rsrc_rdy_n;    input             trn_rsrc_dsc_n;    output            trn_rdst_rdy_n;        output            req_compl_o;    output            compl_done_o;        output            cfg_interrupt_n;    input             cfg_interrupt_rdy_n;    output          cfg_interrupt_assert_n;    output [7:0]  cfg_interrupt_di;    input  [7:0]   cfg_interrupt_do;    input  [2:0]   cfg_interrupt_mmenable;    input            cfg_interrupt_msienable;        input [15:0]      cfg_completer_id;    input             cfg_ext_tag_en;    input [2:0]       cfg_max_rd_req_size;    input [2:0]       cfg_max_payload_size;    input             cfg_bus_mstr_enable;    // Local wires        wire  [10:0]      rd_addr;     wire  [3:0]       rd_be;     wire  [31:0]      rd_data;     wire  [10:0]      req_addr;     wire  [7:0]       wr_be;     wire  [31:0]      wr_data;     wire              wr_en;    wire              wr_busy;    wire              req_compl;    wire              compl_done;    wire  [2:0]       req_tc;    wire              req_td;     wire              req_ep;     wire  [1:0]       req_attr;     wire  [9:0]       req_len;    wire  [15:0]      req_rid;    wire  [7:0]       req_tag;    wire  [7:0]       req_be;    wire              init_rst;    wire              mwr_start;    wire              mwr_done;    wire  [31:0]      mwr_len;    wire  [7:0]       mwr_tag;    wire  [3:0]       mwr_lbe;    wire  [3:0]       mwr_fbe;    wire  [31:0]      mwr_addr;    wire  [31:0]      mwr_count;    wire  [31:0]      mwr_data;    wire              mrd_start;    wire              mrd_done;    wire  [31:0]      mrd_len;    wire  [7:0]       mrd_tag;    wire  [3:0]       mrd_lbe;    wire  [3:0]       mrd_fbe;    wire  [31:0]      mrd_addr;    wire  [31:0]      mrd_count;    wire  [7:0]       cpl_ur_found;    wire  [7:0]       cpl_ur_tag;    wire  [31:0]      cpld_found;    wire  [31:0]      cpld_size;    wire              cpld_malformed;	wire 			  int_src_rd;	wire              int_src_wr;	wire              int_clear;        //    // ENDPOINT MEMORY :     //     BMD_EP_MEM_ACCESS EP_MEM (                   .clk(clk),                           // I                   .rst_n(rst_n),                       // I                   .cfg_max_rd_req_size(cfg_max_rd_req_size),   // I [2:0]                   .cfg_max_payload_size(cfg_max_payload_size), // I [2:0]                   .addr_i(req_addr[6:0]),              // I [10:0]                   // Read Port                   .rd_be_i(rd_be),                     // I [3:0]                   .rd_data_o(rd_data),                 // O [31:0]                   // Write Port                   .wr_be_i(wr_be),                     // I [7:0]                   .wr_data_i(wr_data),                 // I [31:0]                   .wr_en_i(wr_en),                     // I                   .wr_busy_o(wr_busy),                 // O                   .init_rst_o(init_rst),               // O                   .mrd_start_o(mrd_start),             // O                   .mrd_done_o(mrd_done),               // O                   .mrd_addr_o(mrd_addr),               // O [31:0]                   .mrd_len_o(mrd_len),                 // O [31:0]                   .mrd_count_o(mrd_count),             // O [31:0]                   .mwr_start_o(mwr_start),             // O                   .mwr_done_i(mwr_done),               // I                   .mwr_addr_o(mwr_addr),               // O [31:0]                   .mwr_len_o(mwr_len),                 // O [31:0]                   .mwr_count_o(mwr_count),             // O [31:0]                   .mwr_data_o(mwr_data),               // O [31:0]                   .cpl_ur_found_i(cpl_ur_found),       // I [7:0]                   .cpl_ur_tag_i(cpl_ur_tag),           // I [7:0]                   .cpld_found_i(cpld_found),           // I [31:0]                   .cpld_data_size_i(cpld_size),        // I [31:0]                   .cpld_malformed_i(cpld_malformed),    // I                    .int_src_rd_i(int_src_rd),      // I                   .int_src_wr_i(int_src_wr),      // I                   .int_clear_o(int_clear)         // O                                         );    //    // Local-Link Receive Controller    //     `BMD_RX_ENGINE EP_RX (                   .clk(clk),                           // I                   .rst_n(rst_n),                       // I                   .init_rst_i(init_rst),               // I                   // LocalLink Rx                   .trn_rd(trn_rd),                     // I [63/31:0]`ifdef BMD_64                   .trn_rrem_n(trn_rrem_n),             // I [7:0]`endif // BMD_64                   .trn_rsof_n(trn_rsof_n),             // I                   .trn_reof_n(trn_reof_n),             // I                   .trn_rsrc_rdy_n(trn_rsrc_rdy_n),     // I                   .trn_rsrc_dsc_n(trn_rsrc_dsc_n),     // I                   .trn_rdst_rdy_n(trn_rdst_rdy_n),     // O                   // Handshake with Tx engine                    .req_compl_o(req_compl),             // O                   .compl_done_i(compl_done),           // I                   .addr_o(req_addr),                   // O [10:0]                   .req_tc_o(req_tc),                   // O [2:0]                   .req_td_o(req_td),                   // O                   .req_ep_o(req_ep),                   // O                   .req_attr_o(req_attr),               // O [1:0]                   .req_len_o(req_len),                 // O [9:0]                   .req_rid_o(req_rid),                 // O [15:0]                   .req_tag_o(req_tag),                 // O [7:0]                   .req_be_o(req_be),                   // O [7:0]                   // Memory Write Port                   .wr_be_o(wr_be),                     // O [7:0]                   .wr_data_o(wr_data),                 // O [31:0]                   .wr_en_o(wr_en),                     // O                   .wr_busy_i(wr_busy),                 // I                           .cpl_ur_found_o(cpl_ur_found),       // O [7:0]                   .cpl_ur_tag_o(cpl_ur_tag),           // O [7:0]                   .cpld_found_o(cpld_found),           // O [31:0]                   .cpld_data_size_o(cpld_size),        // O [31:0]                   .cpld_malformed_o(cpld_malformed)    // O                                       );    //    // Local-Link Transmit Controller    //     `BMD_TX_ENGINE EP_TX (                   .clk(clk),                         // I                   .rst_n(rst_n),                     // I                   // LocalLink Tx                   .trn_td(trn_td),                   // O [63/31:0]`ifdef BMD_64                   .trn_trem_n(trn_trem_n),           // O [7:0]`endif // BMD_64                   .trn_tsof_n(trn_tsof_n),           // O                   .trn_teof_n(trn_teof_n),           // O                   .trn_tsrc_dsc_n(trn_tsrc_dsc_n),   // O                   .trn_tsrc_rdy_n(trn_tsrc_rdy_n),   // O                   .trn_tdst_dsc_n(trn_tdst_dsc_n),   // I                   .trn_tdst_rdy_n(trn_tdst_rdy_n),   // I                   // Handshake with Rx engine                    .req_compl_i(req_compl),           // I                   .compl_done_o(compl_done),         // 0                   .req_tc_i(req_tc),                 // I [2:0]                   .req_td_i(req_td),                 // I                   .req_ep_i(req_ep),                 // I                   .req_attr_i(req_attr),             // I [1:0]                   .req_len_i(req_len),               // I [9:0]                   .req_rid_i(req_rid),               // I [15:0]                   .req_tag_i(req_tag),               // I [7:0]                   .req_be_i(req_be),                 // I [7:0]                   .req_addr_i(req_addr),             // I [10:0]                                       // Read Port                   .rd_addr_o(rd_addr[6:0]),         // I [10:0]                   .rd_be_o(rd_be),                  // I [3:0]                   .rd_data_i(rd_data),              // O [31:0]                   // Initiator Controls                   .init_rst_i(init_rst),            // I                   .mrd_start_i(mrd_start),          // I                   .mrd_done_i(mrd_done),            // I                   .mrd_addr_i(mrd_addr),            // I [31:0]                   .mrd_len_i(mrd_len),              // I [31:0]                   .mrd_count_i(mrd_count),          // I [31:0]                   .mrd_lbe_i(4'hF),                           .mrd_fbe_i(4'hF),                   .mrd_tag_i(8'h0),                   .mwr_start_i(mwr_start),          // I                   .mwr_done_o(mwr_done),            // O                   .mwr_addr_i(mwr_addr),            // I [31:0]                   .mwr_len_i(mwr_len),              // I [31:0]                   .mwr_count_i(mwr_count),          // I [31:0]                   .mwr_data_i(mwr_data),            // I [31:0]                    .mwr_lbe_i(4'hF),                   .mwr_fbe_i(4'hF),                   .mwr_tag_i(8'h0),                   .cfg_interrupt_n_o(cfg_interrupt_n),          // O                   .cfg_interrupt_rdy_n_i(cfg_interrupt_rdy_n),  // I                   .cfg_interrupt_assert_n_o(cfg_interrupt_assert_n),                              // O                   .cfg_interrupt_di_o(cfg_interrupt_di),  		// O                   .cfg_interrupt_do_i(cfg_interrupt_do),  	 	// I                   .cfg_interrupt_mmenable_i(cfg_interrupt_mmenable),   // I                   .cfg_interrupt_msienable_i(cfg_interrupt_msienable),   // I                       .completer_id_i(cfg_completer_id),            // I [15:0]                   .cfg_ext_tag_en_i(cfg_ext_tag_en),            // I                   .cfg_bus_mstr_enable_i(cfg_bus_mstr_enable),   // I                   .int_src_rd_o(int_src_rd),      		// O                   .int_src_wr_o(int_src_wr),      		// O                   .int_clear_i(int_clear)         		// I                      );  assign req_compl_o  = req_compl;  assign compl_done_o = compl_done;endmodule // BMD_EP

⌨️ 快捷键说明

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