📄 bmd_ep.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 + -