OpenCores
URL https://opencores.org/ocsvn/ha1588/ha1588/trunk

Subversion Repositories ha1588

[/] [ha1588/] [trunk/] [rtl/] [bus/] [xps/] [pcores/] [ha1588_axi_v1_00_a/] [hdl/] [verilog/] [ha1588_axi.v] - Blame information for rev 73

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 66 ash_riple
`timescale 1ns/1ns
2
 
3
module ha1588_axi
4
  #(
5
    parameter integer C_S_AXI_REG_ADDR_WIDTH             = 32,
6
    parameter integer C_S_AXI_REG_DATA_WIDTH             = 32,
7
 
8
    parameter integer C_EXTERNAL_INTR_OUT_WIDTH          = 1
9
   )
10
  (
11
    // Register Slave System Signals
12
    input wire                                 S_AXI_REG_ACLK,
13
    input wire                                 S_AXI_REG_ARESETN,
14
 
15
    // Register Slave Interface Write Address Ports
16
    input  wire [C_S_AXI_REG_ADDR_WIDTH-1:0]   S_AXI_REG_AWADDR,
17
    input  wire [3-1:0]                        S_AXI_REG_AWPROT,
18
    input  wire                                S_AXI_REG_AWVALID,
19
    output wire                                S_AXI_REG_AWREADY,
20
 
21
    // Register Slave Interface Write Data Ports
22
    input  wire [C_S_AXI_REG_DATA_WIDTH-1:0]   S_AXI_REG_WDATA,
23
    input  wire [C_S_AXI_REG_DATA_WIDTH/8-1:0] S_AXI_REG_WSTRB,
24
    input  wire                                S_AXI_REG_WVALID,
25
    output wire                                S_AXI_REG_WREADY,
26
 
27
    // Register Slave Interface Write Response Ports
28
    output wire [2-1:0]                        S_AXI_REG_BRESP,
29 73 ash_riple
    output reg                                 S_AXI_REG_BVALID,
30 66 ash_riple
    input  wire                                S_AXI_REG_BREADY,
31
 
32
    // Register Slave Interface Read Address Ports
33
    input  wire [C_S_AXI_REG_ADDR_WIDTH-1:0]   S_AXI_REG_ARADDR,
34
    input  wire [3-1:0]                        S_AXI_REG_ARPROT,
35
    input  wire                                S_AXI_REG_ARVALID,
36
    output wire                                S_AXI_REG_ARREADY,
37
 
38
    // Register Slave Interface Read Data Ports
39
    output wire [C_S_AXI_REG_DATA_WIDTH-1:0]   S_AXI_REG_RDATA,
40
    output wire [2-1:0]                        S_AXI_REG_RRESP,
41
    output reg                                 S_AXI_REG_RVALID,
42
    input  wire                                S_AXI_REG_RREADY,
43
 
44
    // Interrupt Output Ports
45
    output wire                                INTR_OUT,
46
 
47
    // RTC and TSU Ports
48
    input  wire        rtc_clk,
49
    output wire [31:0] rtc_time_ptp_ns,
50
    output wire [47:0] rtc_time_ptp_sec,
51
    output wire        rtc_time_one_pps,
52
 
53
    input  wire        rx_gmii_clk,
54
    input  wire        rx_gmii_ctrl,
55
    input  wire [ 7:0] rx_gmii_data,
56
    input  wire        rx_giga_mode,
57
    input  wire        tx_gmii_clk,
58
    input  wire        tx_gmii_ctrl,
59
    input  wire [ 7:0] tx_gmii_data,
60
    input  wire        tx_giga_mode
61
  );
62
 
63
  wire        up_wr;
64
  wire        up_rd;
65
  wire [ 7:0] up_addr;
66
  wire [31:0] up_data_wr;
67
  wire [31:0] up_data_rd;
68
 
69
  //////////////////////////////////////////////////////////////////////////////
70
  // AXI interface
71
  //
72
  // TODO: to support interleaved write address channel and write data channel,
73
  //       with FIFO for each channel.
74
  // TODO: to support write data byte select
75
  // TODO: to support write response channel holding
76
  // TODO: to support read response channel holding
77
  //////////////////////////////////////////////////////////////////////////////
78
  assign S_AXI_REG_AWREADY = 1'b1;
79
  assign S_AXI_REG_WREADY  = 1'b1;
80
  assign S_AXI_REG_BRESP   = 2'b00;
81 73 ash_riple
  always @(negedge S_AXI_REG_ARESETN or posedge S_AXI_REG_ACLK) begin
82
    if (!S_AXI_REG_ARESETN) S_AXI_REG_BVALID <= 1'b0;
83
    else                    S_AXI_REG_BVALID <= S_AXI_REG_WVALID;
84
  end
85 66 ash_riple
  assign S_AXI_REG_ARREADY = 1'b1;
86
  assign S_AXI_REG_RDATA   = up_data_rd;
87
  assign S_AXI_REG_RRESP   = 2'b00;
88
  always @(negedge S_AXI_REG_ARESETN or posedge S_AXI_REG_ACLK) begin
89
    if (!S_AXI_REG_ARESETN) S_AXI_REG_RVALID <= 1'b0;
90
    else                    S_AXI_REG_RVALID <= S_AXI_REG_ARVALID;
91
  end
92
 
93
  /////////////////////////////////////////////////////////////////////////////
94
  // Interrupt interface
95
  //
96
  // TODO: to support interrupt generation
97
  /////////////////////////////////////////////////////////////////////////////
98
  assign INTR_OUT = 1'b0;
99
 
100
  /////////////////////////////////////////////////////////////////////////////
101
  // Local Bus interface
102
  //
103
  /////////////////////////////////////////////////////////////////////////////
104 68 ash_riple
  assign up_wr      = S_AXI_REG_WVALID;
105
  assign up_rd      = S_AXI_REG_ARVALID;
106
  assign up_addr    = S_AXI_REG_AWVALID? S_AXI_REG_AWADDR : S_AXI_REG_ARADDR;
107
  assign up_data_wr = S_AXI_REG_WDATA;
108 66 ash_riple
 
109
ha1588 ha1588_inst (
110
  .rst(!S_AXI_REG_ARESETN),
111
  .clk(S_AXI_REG_ACLK),
112
  .wr_in(up_wr),
113
  .rd_in(up_rd),
114
  .addr_in(up_addr),
115
  .data_in(up_data_wr),
116
  .data_out(up_data_rd),
117
 
118
  .rtc_clk(rtc_clk),
119
  .rtc_time_ptp_ns(rtc_time_ptp_ns),
120
  .rtc_time_ptp_sec(rtc_time_ptp_sec),
121
  .rtc_time_one_pps(rtc_time_one_pps),
122
 
123
  .rx_gmii_clk(rx_gmii_clk),
124
  .rx_gmii_ctrl(rx_gmii_ctrl),
125
  .rx_gmii_data(rx_gmii_data),
126
  .rx_giga_mode(giga_mode),
127
  .tx_gmii_clk(tx_gmii_clk),
128
  .tx_gmii_ctrl(tx_gmii_ctrl),
129
  .tx_gmii_data(tx_gmii_data),
130
  .tx_giga_mode(giga_mode)
131
);
132
 
133
endmodule
134
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.