LIFI光通信——定位系统,源码公布2

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date:    15:33:18 09/28/2010 
// Design Name: 
// Module Name:    dac_inf 
// Project Name: 
// Target Devices: 
// Tool versions: 
// Description: 
//
// Dependencies: 
//
// Revision: 
// Revision 0.01 - File Created
// Additional Comments: 
//
module rx_link_lifi(
                input              sys_clk      ,
                input              rst          , 
                                                      
                output             O_adc_clk_p  ,
                output             O_adc_clk_n  ,
                                   
                input              I_adc_clk    ,
                input      [13:0]  I_adc_data   ,
                       
                output     [7:0]   O_adc_data   ,
                output             O_adc_en     ,
                output             O_crc_err    ,
                output     [31:0]  O_crc_err_num,
                output     [31:0]  O_ethc_num   ,
                
                input      [13:0]  I_reg_high_gate,
                //-------------------------------------
                input      [7:0]   I_hdm960_gc    ,
                output     [15:0]  O_power_out    ,
                output     [7:0]   O_hdm960_gc    
   
              
                                                 
       );
                    
                       

//--------------------------------------------------------------

  wire  [13:0] inf_adc_data     ;
  wire         inf_adc_en       ;
  
  wire  [7:0]  hd_gmii_data     ;
  wire         hd_gmii_dv       ;
  wire         hd_gmii_sop      ;
  wire         hd_gmii_eop      ;
  
  wire  [13:0] adc_add_data     ; 
  wire  [13:0] power_gate_calu  ;
  wire  [13:0] eq_adc_data      ;
  wire         capture_en_rising;
  wire         s_crc_check_ok   ;
  
  reg  [7:0]   value_in_d1  ;
reg  [7:0]   value_in_d2  ;
reg  [7:0]   value_in_d3  ;
reg  [7:0]   value_in_d4  ;
reg  [7:0]   value_in_d5  ;
reg  [7:0]   value_in_d6  ;
reg  [7:0]   value_in_d7  ;
reg  [7:0]   value_in_d8  ;
reg  [7:0]   value_in_d9  ;
reg  [7:0]   value_in_d10 ;
reg  [7:0]   value_in_d11 ;
reg  [7:0]   value_in_d12 ;
reg  [7:0]   value_in_d13 ;
reg  [7:0]   value_in_d14 ;
reg  [7:0]   value_in_d15 ;
reg  [7:0]   value_in_d16 ;
reg  [7:0]   value_in_d17 ;
reg  [7:0]   value_in_d18 ;
reg  [7:0]   value_in_d19 ;
reg  [7:0]   value_in_d20 ;
reg  [7:0]   value_in_d21 ;
reg  [7:0]   value_in_d22 ;
reg  [7:0]   value_in_d23 ;
reg  [7:0]   value_in_d24 ;
reg  [7:0]   value_in_d25 ;
reg  [7:0]   value_in_d26 ;
reg  [7:0]   value_in_d27 ;
reg  [7:0]   value_in_d28 ;
reg  [7:0]   value_in_d29 ;
reg  [7:0]   value_in_d30 ;
reg  [7:0]   value_in_d31 ;
reg  [7:0]   value_in_d32 ;
reg  [7:0]   value_in_d33 ;
reg  [7:0]   value_in_d34 ;
reg  [7:0]   value_in_d35 ;

reg          value_in_en_d1  ;
reg          value_in_en_d2  ;
reg          value_in_en_d3  ;
reg          value_in_en_d4  ;
reg          value_in_en_d5  ;
reg          value_in_en_d6  ;
reg          value_in_en_d7  ;
reg          value_in_en_d8  ;
reg          value_in_en_d9  ;
reg          value_in_en_d10 ;
reg          value_in_en_d11 ;
reg          value_in_en_d12 ;
reg          value_in_en_d13 ;
reg          value_in_en_d14 ;
reg          value_in_en_d15 ;
reg          value_in_en_d16 ;
reg          value_in_en_d17 ;
reg          value_in_en_d18 ;
reg          value_in_en_d19 ;
reg          value_in_en_d20 ;
reg          value_in_en_d21 ;
reg          value_in_en_d22 ;
reg          value_in_en_d23 ;
reg          value_in_en_d24 ;
reg          value_in_en_d25 ;
reg          value_in_en_d26 ;
reg          value_in_en_d27 ;
reg          value_in_en_d28 ;
reg          value_in_en_d29 ;
reg          value_in_en_d30 ;
reg          value_in_en_d31 ;
reg          value_in_en_d32 ;
reg          value_in_en_d33 ;
reg          value_in_en_d34 ;
reg          value_in_en_d35 ;

reg          value_in_sop_d1  ;
reg          value_in_sop_d2  ;
reg          value_in_sop_d3  ;
reg          value_in_sop_d4  ;
reg          value_in_sop_d5  ;
reg          value_in_sop_d6  ;
reg          value_in_sop_d7  ;
reg          value_in_sop_d8  ;
reg          value_in_sop_d9  ;
reg          value_in_sop_d10 ;
reg          value_in_sop_d11 ;
reg          value_in_sop_d12 ;
reg          value_in_sop_d13 ;
reg          value_in_sop_d14 ;
reg          value_in_sop_d15 ;
reg          value_in_sop_d16 ;
reg          value_in_sop_d17 ;
reg          value_in_sop_d18 ;
reg          value_in_sop_d19 ;
reg          value_in_sop_d20 ;
reg          value_in_sop_d21 ;
reg          value_in_sop_d22 ;
reg          value_in_sop_d23 ;
reg          value_in_sop_d24 ;
reg          value_in_sop_d25 ;
reg          value_in_sop_d26 ;
reg          value_in_sop_d27 ;
reg          value_in_sop_d28 ;
reg          value_in_sop_d29 ;
reg          value_in_sop_d30 ;
reg          value_in_sop_d31 ;
reg          value_in_sop_d32 ;
reg          value_in_sop_d33 ;
reg          value_in_sop_d34 ;
reg          value_in_sop_d35 ;

reg          value_in_eop_d1  ; 
reg          value_in_eop_d2  ; 
reg          value_in_eop_d3  ; 
reg          value_in_eop_d4  ; 
reg          value_in_eop_d5  ; 
reg          value_in_eop_d6  ; 
reg          value_in_eop_d7  ; 
reg          value_in_eop_d8  ; 
reg          value_in_eop_d9  ; 
reg          value_in_eop_d10 ; 
reg          value_in_eop_d11 ; 
reg          value_in_eop_d12 ; 
reg          value_in_eop_d13 ; 
reg          value_in_eop_d14 ; 
reg          value_in_eop_d15 ; 
reg          value_in_eop_d16 ; 
reg          value_in_eop_d17 ; 
reg          value_in_eop_d18 ; 
reg          value_in_eop_d19 ; 
reg          value_in_eop_d20 ; 
reg          value_in_eop_d21 ; 
reg          value_in_eop_d22 ; 
reg          value_in_eop_d23 ; 
reg          value_in_eop_d24 ; 
reg          value_in_eop_d25 ; 
reg          value_in_eop_d26 ; 
reg          value_in_eop_d27 ; 
reg          value_in_eop_d28 ; 
reg          value_in_eop_d29 ; 
reg          value_in_eop_d30 ; 
reg          value_in_eop_d31 ; 
reg          value_in_eop_d32 ; 
reg          value_in_eop_d33 ; 
reg          value_in_eop_d34 ; 
reg          value_in_eop_d35 ; 

                               
//---------------------------------------------------------------
adc_inf i_adc_inf(
               .sys_clk    (sys_clk      )  ,
               .rst        (rst          )  , 
                                         
               .O_adc_clk_p(O_adc_clk_p  )  ,
               .O_adc_clk_n(O_adc_clk_n  )  ,
                                         
               .I_adc_clk  (I_adc_clk    )  ,
               .I_adc_data (I_adc_data   )  ,
               
               .O_adc_data (inf_adc_data )  ,
               .O_adc_en   (inf_adc_en   )                                                  
       );
       
// add_cons_8191 i_add_cons_8191(
//               .clk(sys_clk     ), 
//               .a  ({inf_adc_data[13],inf_adc_data[13],inf_adc_data}), 
//               .b  (16'd8191    ), 
//               .s  (adc_add_data)
//);      

assign adc_add_data = 14'd16383 - {~inf_adc_data[13],inf_adc_data[12:0]}; //有符号转无符号              
      
rx_packet_extract i_rx_packet_extract(
                .sys_clk         (sys_clk        ),
                .rst             (rst            ), 
                .I_adc_data      (eq_adc_data    ),
                .I_adc_en        (inf_adc_en     ),
                .O_adc_data      (hd_gmii_data   ),
                .O_adc_data_en   (hd_gmii_dv     ),
                .O_data_sop      (hd_gmii_sop    ),
                .O_data_eop      (hd_gmii_eop    ),                
                //-----cpu config-------------------------------- 
                .I_reg_high_gate (power_gate_calu),
                //----------------------------------------
                .O_capture_en_rising (capture_en_rising),
                //-----power calu--------------------------------
                .O_power_out      (O_power_out      ),
                .I_hdm960_gc      (I_hdm960_gc      ),
                .O_hdm960_gc      (O_hdm960_gc      ),
                .I_crc_check_ok   (s_crc_check_ok   )

                                                 
       ); 
       
       
power_gate_calu i_power_gate_calu(
                .sys_clk         (sys_clk        ),
                .rst             (rst            ), 
                                 
                .I_data_in       (eq_adc_data    ),      
                .O_power_gate_out(power_gate_calu)
                   
                                          
       );        
       
eq_pro  i_eq_pro(
                  .sys_clk   (sys_clk     ) ,
                  .rst       (rst         ) , 
                            
                  .I_data_in (adc_add_data) ,      
                  .O_data_out(eq_adc_data )                                              
                 );   
              
                  
ge_crc_check  i_ge_crc_check(  
                         .clk           (sys_clk         ) ,
                         .rst           (rst             ) ,                                                  
                         .I_gmii_dv     (value_in_en_d27 ),//(hd_gmii_dv    ) ,
                         .I_gmii_data   (value_in_d27    ),//(hd_gmii_data  ) ,
                         .I_gmii_sop    (value_in_sop_d27),//(hd_gmii_sop   ) ,
                         .I_gmii_eop    (value_in_eop_d27),//(hd_gmii_eop   ) ,                      
                         .O_gmii_data   (O_adc_data      ) ,
                         .O_gmii_valid  (O_adc_en        ) ,                      
                         .O_crc_err     (O_crc_err       ) ,
                         .O_crc_err_num (O_crc_err_num   ) ,
                         .O_ethc_num    (O_ethc_num      ) ,
                         .O_crc_check_ok(s_crc_check_ok  )                     
                     ); 
                     
                     
//-----delay--------------------------------------------------------------------
always @(posedge sys_clk)
begin
  value_in_d1  <= hd_gmii_data;
  value_in_d2  <= value_in_d1 ;
  value_in_d3  <= value_in_d2 ;
  value_in_d4  <= value_in_d3 ;
  value_in_d5  <= value_in_d4 ;
  value_in_d6  <= value_in_d5 ;
  value_in_d7  <= value_in_d6 ;
  value_in_d8  <= value_in_d7 ;
  value_in_d9  <= value_in_d8 ;
  value_in_d10 <= value_in_d9 ;
  value_in_d11 <= value_in_d10;
  value_in_d12 <= value_in_d11;
  value_in_d13 <= value_in_d12;
  value_in_d14 <= value_in_d13;
  value_in_d15 <= value_in_d14;
  value_in_d16 <= value_in_d15;
  value_in_d17 <= value_in_d16;
  value_in_d18 <= value_in_d17;
  value_in_d19 <= value_in_d18;
  value_in_d20 <= value_in_d19;
  value_in_d21 <= value_in_d20;
  value_in_d22 <= value_in_d21;
  value_in_d23 <= value_in_d22;
  value_in_d24 <= value_in_d23;
  value_in_d25 <= value_in_d24;
  value_in_d26 <= value_in_d25;
  value_in_d27 <= value_in_d26;
  value_in_d28 <= value_in_d27;
  value_in_d29 <= value_in_d28;
  value_in_d30 <= value_in_d29;
  value_in_d31 <= value_in_d30;
  value_in_d32 <= value_in_d31;
  value_in_d33 <= value_in_d32;
  value_in_d34 <= value_in_d33;
  value_in_d35 <= value_in_d34;
end   

always @(posedge sys_clk)
begin
  value_in_en_d1  <= hd_gmii_dv     ;
  value_in_en_d2  <= value_in_en_d1 ;
  value_in_en_d3  <= value_in_en_d2 ;
  value_in_en_d4  <= value_in_en_d3 ;
  value_in_en_d5  <= value_in_en_d4 ;
  value_in_en_d6  <= value_in_en_d5 ;
  value_in_en_d7  <= value_in_en_d6 ;
  value_in_en_d8  <= value_in_en_d7 ;
  value_in_en_d9  <= value_in_en_d8 ;
  value_in_en_d10 <= value_in_en_d9 ;
  value_in_en_d11 <= value_in_en_d10;
  value_in_en_d12 <= value_in_en_d11;
  value_in_en_d13 <= value_in_en_d12;
  value_in_en_d14 <= value_in_en_d13;
  value_in_en_d15 <= value_in_en_d14;
  value_in_en_d16 <= value_in_en_d15;
  value_in_en_d17 <= value_in_en_d16;
  value_in_en_d18 <= value_in_en_d17;
  value_in_en_d19 <= value_in_en_d18;
  value_in_en_d20 <= value_in_en_d19;
  value_in_en_d21 <= value_in_en_d20;
  value_in_en_d22 <= value_in_en_d21;
  value_in_en_d23 <= value_in_en_d22;
  value_in_en_d24 <= value_in_en_d23;
  value_in_en_d25 <= value_in_en_d24;
  value_in_en_d26 <= value_in_en_d25;
  value_in_en_d27 <= value_in_en_d26;
  value_in_en_d28 <= value_in_en_d27;
  value_in_en_d29 <= value_in_en_d28;
  value_in_en_d30 <= value_in_en_d29;
  value_in_en_d31 <= value_in_en_d30;
  value_in_en_d32 <= value_in_en_d31;
  value_in_en_d33 <= value_in_en_d32;
  value_in_en_d34 <= value_in_en_d33;
  value_in_en_d35 <= value_in_en_d34;
end  

                         
always @(posedge sys_clk)
begin
  value_in_sop_d1  <= hd_gmii_sop     ;
  value_in_sop_d2  <= value_in_sop_d1 ;
  value_in_sop_d3  <= value_in_sop_d2 ;
  value_in_sop_d4  <= value_in_sop_d3 ;
  value_in_sop_d5  <= value_in_sop_d4 ;
  value_in_sop_d6  <= value_in_sop_d5 ;
  value_in_sop_d7  <= value_in_sop_d6 ;
  value_in_sop_d8  <= value_in_sop_d7 ;
  value_in_sop_d9  <= value_in_sop_d8 ;
  value_in_sop_d10 <= value_in_sop_d9 ;
  value_in_sop_d11 <= value_in_sop_d10;
  value_in_sop_d12 <= value_in_sop_d11;
  value_in_sop_d13 <= value_in_sop_d12;
  value_in_sop_d14 <= value_in_sop_d13;
  value_in_sop_d15 <= value_in_sop_d14;
  value_in_sop_d16 <= value_in_sop_d15;
  value_in_sop_d17 <= value_in_sop_d16;
  value_in_sop_d18 <= value_in_sop_d17;
  value_in_sop_d19 <= value_in_sop_d18;
  value_in_sop_d20 <= value_in_sop_d19;
  value_in_sop_d21 <= value_in_sop_d20;
  value_in_sop_d22 <= value_in_sop_d21;
  value_in_sop_d23 <= value_in_sop_d22;
  value_in_sop_d24 <= value_in_sop_d23;
  value_in_sop_d25 <= value_in_sop_d24;
  value_in_sop_d26 <= value_in_sop_d25;
  value_in_sop_d27 <= value_in_sop_d26;
  value_in_sop_d28 <= value_in_sop_d27;
  value_in_sop_d29 <= value_in_sop_d28;
  value_in_sop_d30 <= value_in_sop_d29;
  value_in_sop_d31 <= value_in_sop_d30;
  value_in_sop_d32 <= value_in_sop_d31;
  value_in_sop_d33 <= value_in_sop_d32;
  value_in_sop_d34 <= value_in_sop_d33;
  value_in_sop_d35 <= value_in_sop_d34;
end  

always @(posedge sys_clk)
begin
  value_in_eop_d1  <= hd_gmii_eop     ;
  value_in_eop_d2  <= value_in_eop_d1 ;
  value_in_eop_d3  <= value_in_eop_d2 ;
  value_in_eop_d4  <= value_in_eop_d3 ;
  value_in_eop_d5  <= value_in_eop_d4 ;
  value_in_eop_d6  <= value_in_eop_d5 ;
  value_in_eop_d7  <= value_in_eop_d6 ;
  value_in_eop_d8  <= value_in_eop_d7 ;
  value_in_eop_d9  <= value_in_eop_d8 ;
  value_in_eop_d10 <= value_in_eop_d9 ;
  value_in_eop_d11 <= value_in_eop_d10;
  value_in_eop_d12 <= value_in_eop_d11;
  value_in_eop_d13 <= value_in_eop_d12;
  value_in_eop_d14 <= value_in_eop_d13;
  value_in_eop_d15 <= value_in_eop_d14;
  value_in_eop_d16 <= value_in_eop_d15;
  value_in_eop_d17 <= value_in_eop_d16;
  value_in_eop_d18 <= value_in_eop_d17;
  value_in_eop_d19 <= value_in_eop_d18;
  value_in_eop_d20 <= value_in_eop_d19;
  value_in_eop_d21 <= value_in_eop_d20;
  value_in_eop_d22 <= value_in_eop_d21;
  value_in_eop_d23 <= value_in_eop_d22;
  value_in_eop_d24 <= value_in_eop_d23;
  value_in_eop_d25 <= value_in_eop_d24;
  value_in_eop_d26 <= value_in_eop_d25;
  value_in_eop_d27 <= value_in_eop_d26;
  value_in_eop_d28 <= value_in_eop_d27;
  value_in_eop_d29 <= value_in_eop_d28;
  value_in_eop_d30 <= value_in_eop_d29;
  value_in_eop_d31 <= value_in_eop_d30;
  value_in_eop_d32 <= value_in_eop_d31;
  value_in_eop_d33 <= value_in_eop_d32;
  value_in_eop_d34 <= value_in_eop_d33;
  value_in_eop_d35 <= value_in_eop_d34;
end           
endmodule

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值