]> jspc29.x-matter.uni-frankfurt.de Git - trb5sc.git/blob
54ee87abd2510e3d511238049a2964e9bff12c55
[trb5sc.git] /
1 //**************************************************************************\r
2 // *************************************************************************\r
3 // *                LATTICE SEMICONDUCTOR CONFIDENTIAL                     *\r
4 // *                         PROPRIETARY NOTE                              *\r
5 // *                                                                       *\r
6 // *  This software contains information confidential and proprietary      *\r
7 // *  to Lattice Semiconductor Corporation.  It shall not be reproduced    *\r
8 // *  in whole or in part, or transferred to other documents, or disclosed *\r
9 // *  to third parties, or used for any purpose other than that for which  *\r
10 // *  it was obtained, without the prior written consent of Lattice        *\r
11 // *  Semiconductor Corporation.  All rights reserved.                     *\r
12 // *                                                                       *\r
13 // *************************************************************************\r
14 //**************************************************************************\r
15 \r
16 `timescale 1ns/100ps\r
17 \r
18 module sgmii_channel_smi (\r
19 \r
20         // Control Interface\r
21         rst_n,\r
22         gbe_mode,\r
23         sgmii_mode,\r
24         signal_detect,\r
25         debug_link_timer_short,\r
26         rx_compensation_err,\r
27 \r
28         // G/MII Interface\r
29         in_clk_gmii,\r
30         in_clk_mii,\r
31         data_in_mii,\r
32         en_in_mii,\r
33         err_in_mii,\r
34 \r
35         out_clk_gmii,\r
36         out_clk_mii,\r
37         data_out_mii,\r
38         dv_out_mii,\r
39         err_out_mii,\r
40         col_out_mii,\r
41         crs_out_mii,\r
42 \r
43         // 8-bit Interface\r
44         data_out_8bi,\r
45         kcntl_out_8bi,\r
46         disparity_cntl_out_8bi,\r
47 \r
48         serdes_recovered_clk,\r
49         data_in_8bi,\r
50         kcntl_in_8bi,\r
51         even_in_8bi,\r
52         disp_err_in_8bi,\r
53         cv_err_in_8bi,\r
54         err_decode_mode_8bi,\r
55 \r
56         // MDIO Port\r
57         mdc,\r
58         mdio,\r
59         port_id\r
60    );\r
61 \r
62 \r
63 \r
64 // I/O Declarations\r
65 input         rst_n ;       // System Reset, Active Low\r
66 input         signal_detect ;\r
67 input         gbe_mode ;  // GBE Mode   (0=SGMII    1=GBE)\r
68 input         sgmii_mode ;  // SGMII PCS Mode   (0=MAC    1=PHY)\r
69 input         debug_link_timer_short ;  // (0=NORMAL    1=SHORT)\r
70 output        rx_compensation_err;  // Active high pulse indicating RX_CTC_FIFO either underflowed or overflowed\r
71 \r
72 input         in_clk_mii ;      // G/MII Transmit clock 2.5Mhz/25Mhz/125Mhz \r
73 input [7:0]   data_in_mii ;        // G/MII Tx data\r
74 input         en_in_mii ;       // G/MII data valid\r
75 input         err_in_mii ;       // G/MII Tx error\r
76 \r
77 input         out_clk_mii ;      // G/MII Receice clock 2.5Mhz/25Mhz/125MHz \r
78 output [7:0]   data_out_mii ;       // G/MII Rx data\r
79 output         dv_out_mii ;      // G/MII Rx data valid\r
80 output         err_out_mii ;      // G/MII Rx error\r
81 output         col_out_mii ;        // G/MII collision detect \r
82 output         crs_out_mii ;        // G/MII carrier sense detect \r
83 \r
84 output [7:0]   data_out_8bi ;            // 8BI Tx Data\r
85 output         kcntl_out_8bi ;           // 8BI Tx Kcntl\r
86 output         disparity_cntl_out_8bi ;  // 8BI Tx Kcntl\r
87 \r
88 input         serdes_recovered_clk ;\r
89 input [7:0]   data_in_8bi  ;     // 8BI Rx Data\r
90 input         kcntl_in_8bi ;     // 8BI Rx Kcntl\r
91 input         even_in_8bi ;      // 8BI Rx Even\r
92 input         disp_err_in_8bi ;  // 8BI Rx Disparity Error\r
93 input         cv_err_in_8bi ;    // 8BI Rx Coding Violation Error\r
94 input         err_decode_mode_8bi ; // 8BI Error Decode Mode (0=NORMAL,  1=DECODE_MODE)\r
95 \r
96 input         in_clk_gmii ;     // GMII Transmit clock 125Mhz\r
97 input         out_clk_gmii ;     // GMII Receive clock 125Mhz\r
98 \r
99 input           mdc;\r
100 inout           mdio;\r
101 input [4:0]     port_id;\r
102 \r
103 \r
104 wire            mdin;\r
105 wire            mdout;\r
106 wire            mdout_en;\r
107 \r
108 // Internal Signals \r
109 \r
110 wire            mr_an_complete;\r
111 wire            mr_page_rx;\r
112 wire [15:0]     mr_lp_adv_ability;\r
113 \r
114 wire            mr_main_reset;\r
115 wire            mr_an_enable;\r
116 wire            mr_restart_an;\r
117 wire [15:0]     mr_adv_ability;\r
118 wire            mr_loopback_enable;\r
119 wire [1:0]      mr_speed_selection;\r
120 wire            mr_power_down;\r
121 wire            mr_isolate;\r
122 wire            mr_duplex_mode;\r
123 wire            mr_col_test;\r
124 wire            mr_unidir_enable;\r
125 wire            an_link_ok;\r
126 \r
127 wire [1:0]      operational_rate;\r
128 \r
129 \r
130 \r
131 \r
132 \r
133 \r
134 \r
135 \r
136 // SGMII PCS\r
137 USER_NAME USER_NAME_U (\r
138         // Clock and Reset\r
139         .rst_n (rst_n ),\r
140         .signal_detect (signal_detect),\r
141         .gbe_mode (gbe_mode),\r
142         .sgmii_mode (sgmii_mode),\r
143         .debug_link_timer_short (debug_link_timer_short), \r
144         .force_isolate (mr_isolate), \r
145         .force_loopback (mr_loopback_enable), \r
146         .force_unidir (mr_unidir_enable), \r
147         .operational_rate (operational_rate),\r
148         .rx_compensation_err (rx_compensation_err),\r
149         .ctc_drop_flag (),\r
150         .ctc_add_flag (),\r
151         .an_link_ok (an_link_ok),\r
152         .tx_clk_125 (in_clk_gmii),\r
153         .serdes_recovered_clk (serdes_recovered_clk),\r
154         .rx_clk_125 (out_clk_gmii),\r
155 \r
156         // Control\r
157 \r
158 \r
159         // (G)MII TX Port\r
160         .tx_clk_mii (in_clk_mii),\r
161         .tx_d (data_in_mii),\r
162         .tx_en (en_in_mii),\r
163         .tx_er (err_in_mii),\r
164 \r
165         // (G)MII RX Port\r
166         .rx_clk_mii (out_clk_mii),\r
167         .rx_d (data_out_mii),\r
168         .rx_dv (dv_out_mii),\r
169         .rx_er (err_out_mii),\r
170         .col (col_out_mii),\r
171         .crs (crs_out_mii),\r
172                   \r
173         // 8BI TX Port\r
174         .tx_data (data_out_8bi),\r
175         .tx_kcntl (kcntl_out_8bi),\r
176         .tx_disparity_cntl (disparity_cntl_out_8bi),\r
177         .xmit_autoneg (),\r
178 \r
179         // 8BI RX Port\r
180         .rx_data (data_in_8bi),\r
181         .rx_kcntl (kcntl_in_8bi),\r
182         .rx_even (even_in_8bi),\r
183         .rx_disp_err (disp_err_in_8bi),\r
184         .rx_cv_err (cv_err_in_8bi),\r
185         .rx_err_decode_mode (err_decode_mode_8bi),\r
186 \r
187         // Management Interface  I/O\r
188         .mr_adv_ability (mr_adv_ability),\r
189         .mr_an_enable (mr_an_enable), \r
190         .mr_main_reset (mr_main_reset),  \r
191         .mr_restart_an (mr_restart_an),   \r
192 \r
193         .mr_an_complete (mr_an_complete),   \r
194         .mr_lp_adv_ability (mr_lp_adv_ability), \r
195         .mr_page_rx (mr_page_rx)\r
196         );\r
197 \r
198 \r
199 \r
200 // SMI Register Interface for SGMII IP Core\r
201 register_interface_smi   ri (\r
202 \r
203         // Control Signals\r
204         .rst_n (rst_n),\r
205         .gbe_mode (gbe_mode),\r
206         .sgmii_mode (sgmii_mode),\r
207 \r
208         // MDIO Port\r
209         .mdc (mdc),\r
210         .mdin (mdin),\r
211         .mdout (mdout),\r
212         .mdout_en (mdout_en),\r
213         .port_id (port_id),\r
214 \r
215         // Register Outputs\r
216         .mr_main_reset (mr_main_reset),\r
217         .mr_loopback_enable (mr_loopback_enable),\r
218         .mr_speed_selection (mr_speed_selection),\r
219         .mr_an_enable (mr_an_enable),\r
220         .mr_power_down (mr_power_down),\r
221         .mr_isolate (mr_isolate),\r
222         .mr_restart_an (mr_restart_an),\r
223         .mr_duplex_mode (mr_duplex_mode),\r
224         .mr_col_test (mr_col_test),\r
225         .mr_unidir_enable (mr_unidir_enable),\r
226 \r
227         .mr_adv_ability (mr_adv_ability),\r
228 \r
229         // Register Inputs\r
230         .mr_stat_1000base_x_fd (1'b1),  // SUPPORTED \r
231         .mr_stat_1000base_x_hd (1'b0),\r
232         .mr_stat_1000base_t_fd (1'b0),\r
233         .mr_stat_1000base_t_hd (1'b0),\r
234 \r
235         .mr_stat_100base_t4 (1'b0),\r
236         .mr_stat_100base_x_fd (1'b0),\r
237         .mr_stat_100base_x_hd (1'b0),\r
238         .mr_stat_10mbps_fd (1'b0),\r
239         .mr_stat_10mbps_hd (1'b0),\r
240         .mr_stat_100base_t2_fd (1'b0),\r
241         .mr_stat_100base_t2_hd (1'b0),\r
242 \r
243         .mr_stat_extended_stat (1'b1),  // SUPPORTED\r
244         .mr_stat_unidir_able (mr_unidir_enable),\r
245         .mr_stat_preamb_supr (1'b0),\r
246         .mr_stat_an_complete (mr_an_complete),\r
247         .mr_stat_remote_fault (1'b0),\r
248         .mr_stat_an_able (1'b1),        // SUPPORTED\r
249         .mr_stat_link_stat (an_link_ok),\r
250         .mr_stat_jab_det (1'b0),\r
251         .mr_stat_extended_cap (1'b0),\r
252 \r
253         .mr_page_rx (mr_page_rx),\r
254         .mr_lp_adv_ability (mr_lp_adv_ability)\r
255         );\r
256 \r
257 \r
258 \r
259 // (G)MII Rate Resolution for SGMII IP Core\r
260 rate_resolution   rate_resolution (\r
261         .gbe_mode (gbe_mode),\r
262         .sgmii_mode (sgmii_mode),\r
263         .an_enable (mr_an_enable),\r
264         .advertised_rate (mr_adv_ability[11:10]),\r
265         .link_partner_rate (mr_lp_adv_ability[11:10]),\r
266         .non_an_rate (mr_speed_selection), // speed selected when auto-negotiation disabled\r
267 \r
268         .operational_rate (operational_rate)\r
269 );\r
270 \r
271 \r
272 \r
273 \r
274 \r
275 // Bidirectional Assignments\r
276 assign mdio = mdout_en ? mdout : 1'bz; // MDIO Output\r
277 assign mdin = mdio;                    // MDIO Input\r
278 \r
279 endmodule\r
280 \r