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 68

Go to most recent revision | 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
    output wire                                S_AXI_REG_BVALID,
30
    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
  assign S_AXI_REG_BVALID  = S_AXI_REG_WVALID;
82
  assign S_AXI_REG_ARREADY = 1'b1;
83
  assign S_AXI_REG_RDATA   = up_data_rd;
84
  assign S_AXI_REG_RRESP   = 2'b00;
85
  always @(negedge S_AXI_REG_ARESETN or posedge S_AXI_REG_ACLK) begin
86
    if (!S_AXI_REG_ARESETN) S_AXI_REG_RVALID <= 1'b0;
87
    else                    S_AXI_REG_RVALID <= S_AXI_REG_ARVALID;
88
  end
89
 
90
  /////////////////////////////////////////////////////////////////////////////
91
  // Interrupt interface
92
  //
93
  // TODO: to support interrupt generation
94
  /////////////////////////////////////////////////////////////////////////////
95
  assign INTR_OUT = 1'b0;
96
 
97
  /////////////////////////////////////////////////////////////////////////////
98
  // Local Bus interface
99
  //
100
  /////////////////////////////////////////////////////////////////////////////
101 68 ash_riple
  assign up_wr      = S_AXI_REG_WVALID;
102
  assign up_rd      = S_AXI_REG_ARVALID;
103
  assign up_addr    = S_AXI_REG_AWVALID? S_AXI_REG_AWADDR : S_AXI_REG_ARADDR;
104
  assign up_data_wr = S_AXI_REG_WDATA;
105 66 ash_riple
 
106
ha1588 ha1588_inst (
107
  .rst(!S_AXI_REG_ARESETN),
108
  .clk(S_AXI_REG_ACLK),
109
  .wr_in(up_wr),
110
  .rd_in(up_rd),
111
  .addr_in(up_addr),
112
  .data_in(up_data_wr),
113
  .data_out(up_data_rd),
114
 
115
  .rtc_clk(rtc_clk),
116
  .rtc_time_ptp_ns(rtc_time_ptp_ns),
117
  .rtc_time_ptp_sec(rtc_time_ptp_sec),
118
  .rtc_time_one_pps(rtc_time_one_pps),
119
 
120
  .rx_gmii_clk(rx_gmii_clk),
121
  .rx_gmii_ctrl(rx_gmii_ctrl),
122
  .rx_gmii_data(rx_gmii_data),
123
  .rx_giga_mode(giga_mode),
124
  .tx_gmii_clk(tx_gmii_clk),
125
  .tx_gmii_ctrl(tx_gmii_ctrl),
126
  .tx_gmii_data(tx_gmii_data),
127
  .tx_giga_mode(giga_mode)
128
);
129
 
130
endmodule
131
 

powered by: WebSVN 2.1.0

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