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

Subversion Repositories spacewiresystemc

[/] [spacewiresystemc/] [trunk/] [rtl/] [RTL_VB/] [tx_spw.v] - Diff between revs 25 and 33

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 25 Rev 33
Line 48... Line 48...
 
 
                //
                //
                input gotfct_tx,
                input gotfct_tx,
                input send_fct_now,
                input send_fct_now,
                //
                //
                output reg tx_dout,
                output reg tx_dout_e,
                output reg tx_sout,
                output reg tx_sout_e,
                //
                //
                output  reg ready_tx_data,
                output  reg ready_tx_data,
                output  reg ready_tx_timecode
                output  reg ready_tx_timecode
 
 
                );
                );
Line 111... Line 111...
        reg [5:0] fct_counter_receive;
        reg [5:0] fct_counter_receive;
 
 
        reg last_tx_dout;
        reg last_tx_dout;
        reg last_tx_sout;
        reg last_tx_sout;
 
 
 
        reg tx_dout;
 
        reg tx_sout;
 
 
 
        reg tx_dout_null;
 
        reg tx_dout_fct;
 
        reg tx_dout_timecode;
 
        reg tx_dout_data;
 
 
        reg block_sum;
        reg block_sum;
        reg block_sum_fct_send;
        reg block_sum_fct_send;
 
 
        reg [3:0] global_counter_transfer;
        reg [3:0] global_counter_transfer;
 
 
 
 
 
 
always@(*)
always@(*)
begin
begin
        tx_dout = 1'b0;
        tx_dout_null = 1'b0;
 
 
         if(!enable_tx)
         if(enable_null)
         begin
         begin
                tx_dout = 1'b0;
                 if(first_time  && global_counter_transfer[3:0] == 4'd0)
         end
 
         else if( enable_null & first_time  & global_counter_transfer == 4'd0)
 
         begin
         begin
                tx_dout = null_s[7];
                        tx_dout_null = null_s[7];
         end
         end
         else if( enable_null & !first_time & last_type == NULL  & global_counter_transfer == 4'd0)
                 else if(last_type == NULL  && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(null_s[6]^null_s[0]^null_s[1]);
                        tx_dout_null = !(null_s[6]^null_s[0]^null_s[1]);
         end
         end
         else if( enable_null & !first_time & last_type == FCT   & global_counter_transfer == 4'd0)
                 else if(last_type == FCT  && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(null_s[6]^fct_s[0]^fct_s[1]);
                        tx_dout_null = !(null_s[6]^fct_s[0]^fct_s[1]);
         end
         end
         else if( enable_null & !first_time & last_type == EOP   & global_counter_transfer == 4'd0)
                 else if(last_type == EOP  && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(null_s[6]^eop_s[0]^eop_s[1]);
                        tx_dout_null = !(null_s[6]^eop_s[0]^eop_s[1]);
         end
         end
         else if( enable_null & !first_time & last_type == EEP   & global_counter_transfer == 4'd0)
                 else if(last_type == EEP  && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(null_s[6]^eep_s[0]^eep_s[1]);
                        tx_dout_null = !(null_s[6]^eep_s[0]^eep_s[1]);
         end
         end
         else if( enable_null & !first_time & last_type == DATA  & global_counter_transfer == 4'd0)
                 else if(last_type == DATA  && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout =  !(null_s[6]^txdata_flagctrl_tx_last[0]^txdata_flagctrl_tx_last[1]^txdata_flagctrl_tx_last[2]^txdata_flagctrl_tx_last[3]^ txdata_flagctrl_tx_last[4]^txdata_flagctrl_tx_last[5]^txdata_flagctrl_tx_last[6]^txdata_flagctrl_tx_last[7]);
                        tx_dout_null =  !(null_s[6]^txdata_flagctrl_tx_last[0]^txdata_flagctrl_tx_last[1]^txdata_flagctrl_tx_last[2]^txdata_flagctrl_tx_last[3]^ txdata_flagctrl_tx_last[4]^txdata_flagctrl_tx_last[5]^txdata_flagctrl_tx_last[6]^txdata_flagctrl_tx_last[7]);
         end
         end
         else if( enable_null & !first_time & last_type == TIMEC & global_counter_transfer == 4'd0)
                 else if(last_type == TIMEC && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout =  !(null_s[6]^last_timein_control_flag_tx[7]^last_timein_control_flag_tx[6]^last_timein_control_flag_tx[5]^last_timein_control_flag_tx[4]^last_timein_control_flag_tx[3]^last_timein_control_flag_tx[2]^last_timein_control_flag_tx[1]^last_timein_control_flag_tx[0]);
                        tx_dout_null =  !(null_s[6]^last_timein_control_flag_tx[7]^last_timein_control_flag_tx[6]^last_timein_control_flag_tx[5]^last_timein_control_flag_tx[4]^last_timein_control_flag_tx[3]^last_timein_control_flag_tx[2]^last_timein_control_flag_tx[1]^last_timein_control_flag_tx[0]);
         end
         end
         else if( enable_null & !first_time & global_counter_transfer == 4'd1)
                 else if(global_counter_transfer[3:0] == 4'd1)
         begin
         begin
                tx_dout = null_s[6];
                        tx_dout_null = null_s[6];
         end
         end
         else if( enable_null & !first_time & global_counter_transfer == 4'd2)
                 else if(global_counter_transfer[3:0] == 4'd2)
         begin
         begin
                tx_dout = null_s[5];
                        tx_dout_null = null_s[5];
         end
         end
         else if( enable_null & !first_time & global_counter_transfer == 4'd3)
                 else if(global_counter_transfer[3:0] == 4'd3)
         begin
         begin
                tx_dout = null_s[4];
                        tx_dout_null = null_s[4];
         end
         end
         else if( enable_null & !first_time & global_counter_transfer == 4'd4)
                 else if(global_counter_transfer[3:0] == 4'd4)
         begin
         begin
                tx_dout = null_s[3];
                        tx_dout_null = null_s[3];
         end
         end
         else if( enable_null & !first_time & global_counter_transfer == 4'd5)
                 else if(global_counter_transfer[3:0] == 4'd5)
         begin
         begin
                tx_dout = null_s[2];
                        tx_dout_null = null_s[2];
         end
         end
         else if( enable_null & !first_time & global_counter_transfer == 4'd6)
                 else if(global_counter_transfer[3:0] == 4'd6)
         begin
         begin
                tx_dout = null_s[1];
                        tx_dout_null = null_s[1];
         end
         end
         else if( enable_null & !first_time & global_counter_transfer == 4'd7)
                 else if(global_counter_transfer[3:0] == 4'd7)
         begin
         begin
                tx_dout = null_s[0];
                        tx_dout_null = null_s[0];
 
                 end
 
        end
         end
         end
         else if( enable_fct  & !first_time & last_type == NULL  & global_counter_transfer == 4'd0)
 
 
 
 
always@(*)
 
begin
 
 
 
        tx_dout_fct = 1'b0;
 
 
 
        if(enable_fct)
 
        begin
 
 
 
                 if(last_type == NULL  && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(fct_s[2]^null_s[0]^null_s[1]);
                        tx_dout_fct = !(fct_s[2]^null_s[0]^null_s[1]);
         end
         end
         else if( enable_fct  & !first_time & last_type == FCT   & global_counter_transfer == 4'd0)
                 else if(last_type == FCT  && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(fct_s[2]^fct_s[0]^fct_s[1]);
                        tx_dout_fct = !(fct_s[2]^fct_s[0]^fct_s[1]);
         end
         end
         else if( enable_fct  & !first_time & last_type == EOP   & global_counter_transfer == 4'd0)
                 else if(last_type == EOP  && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(fct_s[2]^eop_s[0]^eop_s[1]);
                        tx_dout_fct = !(fct_s[2]^eop_s[0]^eop_s[1]);
         end
         end
         else if( enable_fct  & !first_time & last_type == EEP   & global_counter_transfer == 4'd0)
                 else if(last_type == EEP  && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(fct_s[2]^eep_s[0]^eep_s[1]);
                        tx_dout_fct = !(fct_s[2]^eep_s[0]^eep_s[1]);
         end
         end
         else if ( enable_fct  & !first_time & last_type == DATA  & global_counter_transfer == 4'd0)
                 else if (last_type == DATA && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(fct_s[2]^txdata_flagctrl_tx_last[0]^txdata_flagctrl_tx_last[1]^txdata_flagctrl_tx_last[2]^txdata_flagctrl_tx_last[3]^ txdata_flagctrl_tx_last[4]^txdata_flagctrl_tx_last[5]^txdata_flagctrl_tx_last[6]^txdata_flagctrl_tx_last[7]);
                        tx_dout_fct = !(fct_s[2]^txdata_flagctrl_tx_last[0]^txdata_flagctrl_tx_last[1]^txdata_flagctrl_tx_last[2]^txdata_flagctrl_tx_last[3]^ txdata_flagctrl_tx_last[4]^txdata_flagctrl_tx_last[5]^txdata_flagctrl_tx_last[6]^txdata_flagctrl_tx_last[7]);
         end
         end
         else if( enable_fct  & !first_time & last_type == TIMEC & global_counter_transfer == 4'd0)
                 else if(last_type == TIMEC && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(fct_s[2]^last_timein_control_flag_tx[7]^last_timein_control_flag_tx[6]^last_timein_control_flag_tx[5]^last_timein_control_flag_tx[4]^last_timein_control_flag_tx[3]^last_timein_control_flag_tx[2]^last_timein_control_flag_tx[1]^last_timein_control_flag_tx[0]);
                        tx_dout_fct = !(fct_s[2]^last_timein_control_flag_tx[7]^last_timein_control_flag_tx[6]^last_timein_control_flag_tx[5]^last_timein_control_flag_tx[4]^last_timein_control_flag_tx[3]^last_timein_control_flag_tx[2]^last_timein_control_flag_tx[1]^last_timein_control_flag_tx[0]);
         end
         end
         else if( enable_fct  & !first_time & global_counter_transfer == 4'd1)
                 else if(global_counter_transfer[3:0] == 4'd1)
         begin
         begin
                tx_dout = fct_s[2];
                        tx_dout_fct = fct_s[2];
         end
         end
         else if( enable_fct  & !first_time & global_counter_transfer == 4'd2)
                 else if(global_counter_transfer[3:0] == 4'd2)
         begin
         begin
                tx_dout = fct_s[1];
                        tx_dout_fct = fct_s[1];
         end
         end
         else if( enable_fct  & !first_time & global_counter_transfer == 4'd3)
                 else if(global_counter_transfer[3:0] == 4'd3)
         begin
         begin
                tx_dout = fct_s[0];
                        tx_dout_fct = fct_s[0];
 
                 end
 
 
         end
         end
         else if( enable_time_code & !first_time & last_type == NULL  & global_counter_transfer == 4'd0)
end
 
 
 
always@(*)
 
begin
 
        tx_dout_timecode = 1'b0;
 
 
 
        if(enable_time_code)
 
        begin
 
                 if(last_type == NULL  && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(timecode_s[12]^null_s[0]^null_s[1]);
                        tx_dout_timecode = !(timecode_s[12]^null_s[0]^null_s[1]);
         end
         end
         else if( enable_time_code & !first_time & last_type == FCT   & global_counter_transfer == 4'd0)
                 else if(last_type == FCT   && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(timecode_s[12]^fct_s[0]^fct_s[1]);
                        tx_dout_timecode = !(timecode_s[12]^fct_s[0]^fct_s[1]);
         end
         end
         else if ( enable_time_code & !first_time & last_type == EOP   & global_counter_transfer == 4'd0)
                 else if (last_type == EOP   && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(timecode_s[12]^eop_s[0]^eop_s[1]);
                        tx_dout_timecode = !(timecode_s[12]^eop_s[0]^eop_s[1]);
         end
         end
         else if( enable_time_code & !first_time & last_type == EEP   & global_counter_transfer == 4'd0)
                 else if( last_type == EEP   && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(timecode_s[12]^eep_s[0]^eep_s[1]);
                        tx_dout_timecode = !(timecode_s[12]^eep_s[0]^eep_s[1]);
         end
         end
         else if( enable_time_code & !first_time & last_type == DATA  & global_counter_transfer == 4'd0)
                 else if( last_type == DATA  && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(timecode_s[12]^txdata_flagctrl_tx_last[0]^txdata_flagctrl_tx_last[1]^txdata_flagctrl_tx_last[2]^txdata_flagctrl_tx_last[3]^ txdata_flagctrl_tx_last[4]^txdata_flagctrl_tx_last[5]^txdata_flagctrl_tx_last[6]^txdata_flagctrl_tx_last[7]);
                        tx_dout_timecode = !(timecode_s[12]^txdata_flagctrl_tx_last[0]^txdata_flagctrl_tx_last[1]^txdata_flagctrl_tx_last[2]^txdata_flagctrl_tx_last[3]^ txdata_flagctrl_tx_last[4]^txdata_flagctrl_tx_last[5]^txdata_flagctrl_tx_last[6]^txdata_flagctrl_tx_last[7]);
         end
         end
         else if( enable_time_code & !first_time & last_type == TIMEC & global_counter_transfer == 4'd0)
                 else if( last_type == TIMEC && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(timecode_s[12]^last_timein_control_flag_tx[7]^last_timein_control_flag_tx[6]^last_timein_control_flag_tx[5]^last_timein_control_flag_tx[4]^last_timein_control_flag_tx[3]^last_timein_control_flag_tx[2]^last_timein_control_flag_tx[1]^last_timein_control_flag_tx[0]);
                        tx_dout_timecode = !(timecode_s[12]^last_timein_control_flag_tx[7]^last_timein_control_flag_tx[6]^last_timein_control_flag_tx[5]^last_timein_control_flag_tx[4]^last_timein_control_flag_tx[3]^last_timein_control_flag_tx[2]^last_timein_control_flag_tx[1]^last_timein_control_flag_tx[0]);
         end
         end
         else if( enable_time_code & !first_time & global_counter_transfer == 4'd1)
                 else if( global_counter_transfer[3:0] == 4'd1)
         begin
         begin
                tx_dout = timecode_s[12];
                        tx_dout_timecode = timecode_s[12];
         end
         end
         else if( enable_time_code & !first_time & global_counter_transfer == 4'd2)
                 else if( global_counter_transfer[3:0] == 4'd2)
         begin
         begin
                tx_dout = timecode_s[11];
                        tx_dout_timecode = timecode_s[11];
         end
         end
         else if( enable_time_code & !first_time & global_counter_transfer == 4'd3)
                 else if( global_counter_transfer[3:0] == 4'd3)
         begin
         begin
                tx_dout = timecode_s[10];
                        tx_dout_timecode = timecode_s[10];
         end
         end
         else if( enable_time_code & !first_time & global_counter_transfer == 4'd4)
                 else if( global_counter_transfer[3:0] == 4'd4)
         begin
         begin
                tx_dout = timecode_s[9];
                        tx_dout_timecode = timecode_s[9];
         end
         end
         else if( enable_time_code & !first_time & global_counter_transfer == 4'd5)
                 else if( global_counter_transfer[3:0] == 4'd5)
         begin
         begin
                tx_dout = timecode_s[8];
                        tx_dout_timecode = timecode_s[8];
         end
         end
         else if( enable_time_code & !first_time & global_counter_transfer == 4'd6)
                 else if( global_counter_transfer[3:0] == 4'd6)
         begin
         begin
                tx_dout = timecode_s[0];
                        tx_dout_timecode = timecode_s[0];
         end
         end
         else if( enable_time_code & !first_time & global_counter_transfer == 4'd7)
                 else if( global_counter_transfer[3:0] == 4'd7)
         begin
         begin
                tx_dout = timecode_s[1];
                        tx_dout_timecode = timecode_s[1];
         end
         end
         else if( enable_time_code & !first_time & global_counter_transfer == 4'd8)
                 else if( global_counter_transfer[3:0] == 4'd8)
         begin
         begin
                tx_dout = timecode_s[2];
                        tx_dout_timecode = timecode_s[2];
         end
         end
         else if( enable_time_code & !first_time & global_counter_transfer == 4'd9)
                 else if(global_counter_transfer[3:0] == 4'd9)
         begin
         begin
                tx_dout = timecode_s[3];
                        tx_dout_timecode = timecode_s[3];
         end
         end
         else if( enable_time_code & !first_time & global_counter_transfer == 4'd10)
                 else if(global_counter_transfer[3:0] == 4'd10)
         begin
         begin
                tx_dout = timecode_s[4];
                        tx_dout_timecode = timecode_s[4];
         end
         end
         else if( enable_time_code & !first_time & global_counter_transfer == 4'd11)
                 else if(global_counter_transfer[3:0] == 4'd11)
         begin
         begin
                tx_dout = timecode_s[5];
                        tx_dout_timecode = timecode_s[5];
         end
         end
         else if( enable_time_code & !first_time & global_counter_transfer == 4'd12)
                 else if( global_counter_transfer[3:0] == 4'd12)
         begin
         begin
                tx_dout = timecode_s[6];
                        tx_dout_timecode = timecode_s[6];
         end
         end
         else if( enable_time_code & !first_time & global_counter_transfer == 4'd13)
                 else if(global_counter_transfer[3:0] == 4'd13)
         begin
         begin
                tx_dout = timecode_s[7];
                        tx_dout_timecode = timecode_s[7];
         end
         end
         else if( enable_n_char   & !data_tx_i[8] & !first_time & last_type == NULL  & global_counter_transfer == 4'd0)
        end
 
end
 
 
 
always@(*)
         begin
         begin
                tx_dout = !(data_tx_i[8]^null_s[0]^null_s[1]);
        tx_dout_data = 1'b0;
 
 
 
        if(enable_n_char)
 
        begin
 
                if(!data_tx_i[8] && last_type == NULL  && global_counter_transfer[3:0] == 4'd0)
 
                 begin
 
                        tx_dout_data = !(data_tx_i[8]^null_s[0]^null_s[1]);
         end
         end
         else if( enable_n_char   & !data_tx_i[8] & !first_time & last_type == FCT   & global_counter_transfer == 4'd0)
                 else if(!data_tx_i[8] && last_type == FCT && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(data_tx_i[8]^fct_s[0]^fct_s[1]);
                        tx_dout_data = !(data_tx_i[8]^fct_s[0]^fct_s[1]);
         end
         end
         else if( enable_n_char   & !data_tx_i[8] & !first_time & last_type == EOP   & global_counter_transfer == 4'd0)
                 else if(!data_tx_i[8] && last_type == EOP  && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(data_tx_i[8]^eop_s[0]^eop_s[1]);
                        tx_dout_data = !(data_tx_i[8]^eop_s[0]^eop_s[1]);
         end
         end
         else if( enable_n_char   & !data_tx_i[8] & !first_time & last_type == EEP   & global_counter_transfer == 4'd0)
                 else if(!data_tx_i[8] && last_type == EEP  && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(data_tx_i[8]^eep_s[0]^eep_s[1]);
                        tx_dout_data = !(data_tx_i[8]^eep_s[0]^eep_s[1]);
         end
         end
         else if( enable_n_char   & !data_tx_i[8] & !first_time & last_type == DATA  & global_counter_transfer == 4'd0)
                 else if(!data_tx_i[8] && last_type == DATA  && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(data_tx_i[8]^txdata_flagctrl_tx_last[0]^txdata_flagctrl_tx_last[1]^txdata_flagctrl_tx_last[2]^txdata_flagctrl_tx_last[3]^ txdata_flagctrl_tx_last[4]^txdata_flagctrl_tx_last[5]^txdata_flagctrl_tx_last[6]^txdata_flagctrl_tx_last[7]);
                        tx_dout_data = !(data_tx_i[8]^txdata_flagctrl_tx_last[0]^txdata_flagctrl_tx_last[1]^txdata_flagctrl_tx_last[2]^txdata_flagctrl_tx_last[3]^ txdata_flagctrl_tx_last[4]^txdata_flagctrl_tx_last[5]^txdata_flagctrl_tx_last[6]^txdata_flagctrl_tx_last[7]);
         end
         end
         else if( enable_n_char   & !data_tx_i[8] & !first_time & last_type == TIMEC & global_counter_transfer == 4'd0)
                 else if(!data_tx_i[8] && last_type == TIMEC && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(data_tx_i[8]^last_timein_control_flag_tx[7]^last_timein_control_flag_tx[6]^last_timein_control_flag_tx[5]^last_timein_control_flag_tx[4]^last_timein_control_flag_tx[3]^last_timein_control_flag_tx[2]^last_timein_control_flag_tx[1]^last_timein_control_flag_tx[0]);
                        tx_dout_data = !(data_tx_i[8]^last_timein_control_flag_tx[7]^last_timein_control_flag_tx[6]^last_timein_control_flag_tx[5]^last_timein_control_flag_tx[4]^last_timein_control_flag_tx[3]^last_timein_control_flag_tx[2]^last_timein_control_flag_tx[1]^last_timein_control_flag_tx[0]);
         end
         end
         else if( enable_n_char   & data_tx_i[8]  & data_tx_i[1:0] == 2'b00 &  !first_time & last_type == NULL  & global_counter_transfer == 4'd0)
                 else if(data_tx_i[8]  && data_tx_i[1:0] == 2'b00 && last_type == NULL  && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(eop_s[3]^null_s[0]^null_s[1]);
                        tx_dout_data = !(eop_s[2]^null_s[0]^null_s[1]);
         end
         end
         else if( enable_n_char   & !data_tx_i[8] & data_tx_i[1:0] == 2'b00 & !first_time & last_type == FCT   & global_counter_transfer == 4'd0)
                 else if(data_tx_i[8] && data_tx_i[1:0] == 2'b00 && last_type == FCT   && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(eop_s[3]^fct_s[0]^fct_s[1]);
                        tx_dout_data = !(eop_s[2]^fct_s[0]^fct_s[1]);
         end
         end
         else if( enable_n_char   & !data_tx_i[8] & data_tx_i[1:0] == 2'b00 & !first_time & last_type == EOP   & global_counter_transfer == 4'd0)
                 else if(data_tx_i[8] && data_tx_i[1:0] == 2'b00 && last_type == EOP  && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(eop_s[3]^eop_s[0]^eop_s[1]);
                        tx_dout_data = !(eop_s[2]^eop_s[0]^eop_s[1]);
         end
         end
         else if( enable_n_char   & !data_tx_i[8] & data_tx_i[1:0] == 2'b00 & !first_time & last_type == EEP   & global_counter_transfer == 4'd0)
                 else if(data_tx_i[8] && data_tx_i[1:0] == 2'b00 && last_type == EEP  && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(eop_s[3]^eep_s[0]^eep_s[1]);
                        tx_dout_data = !(eop_s[2]^eep_s[0]^eep_s[1]);
         end
         end
         else if( enable_n_char   & !data_tx_i[8]  & data_tx_i[1:0] == 2'b00 & !first_time & last_type == DATA  & global_counter_transfer == 4'd0)
                 else if(data_tx_i[8]  && data_tx_i[1:0] == 2'b00 && last_type == DATA  && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(eop_s[3]^txdata_flagctrl_tx_last[0]^txdata_flagctrl_tx_last[1]^txdata_flagctrl_tx_last[2]^txdata_flagctrl_tx_last[3]^ txdata_flagctrl_tx_last[4]^txdata_flagctrl_tx_last[5]^txdata_flagctrl_tx_last[6]^txdata_flagctrl_tx_last[7]);
                        tx_dout_data = !(eop_s[2]^txdata_flagctrl_tx_last[0]^txdata_flagctrl_tx_last[1]^txdata_flagctrl_tx_last[2]^txdata_flagctrl_tx_last[3]^ txdata_flagctrl_tx_last[4]^txdata_flagctrl_tx_last[5]^txdata_flagctrl_tx_last[6]^txdata_flagctrl_tx_last[7]);
         end
         end
         else if( enable_n_char   & !data_tx_i[8]  & data_tx_i[1:0] == 2'b00 & !first_time & last_type == TIMEC & global_counter_transfer == 4'd0)
                 else if(data_tx_i[8]  && data_tx_i[1:0] == 2'b00 && last_type == TIMEC && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(eop_s[3]^last_timein_control_flag_tx[7]^last_timein_control_flag_tx[6]^last_timein_control_flag_tx[5]^last_timein_control_flag_tx[4]^last_timein_control_flag_tx[3]^last_timein_control_flag_tx[2]^last_timein_control_flag_tx[1]^last_timein_control_flag_tx[0]);
                        tx_dout_data = !(eop_s[2]^last_timein_control_flag_tx[7]^last_timein_control_flag_tx[6]^last_timein_control_flag_tx[5]^last_timein_control_flag_tx[4]^last_timein_control_flag_tx[3]^last_timein_control_flag_tx[2]^last_timein_control_flag_tx[1]^last_timein_control_flag_tx[0]);
         end
         end
         else if( enable_n_char    &  data_tx_i[8] & data_tx_i[1:0] == 2'b00 & !first_time & global_counter_transfer == 4'd1)
                 else if(data_tx_i[8] && data_tx_i[1:0] == 2'b01 && last_type == NULL  && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = eop_s[2];
                        tx_dout_data = !(eep_s[2]^null_s[0]^null_s[1]);
         end
         end
         else if( enable_n_char    &  data_tx_i[8] & data_tx_i[1:0] == 2'b00 & !first_time & global_counter_transfer == 4'd2)
                 else if(data_tx_i[8] & data_tx_i[1:0] == 2'b01 && last_type == FCT  && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = eop_s[1];
                        tx_dout_data = !(eep_s[2]^fct_s[0]^fct_s[1]);
         end
         end
         else if( enable_n_char    &  data_tx_i[8] & data_tx_i[1:0] == 2'b00 & !first_time & global_counter_transfer == 4'd3)
                 else if(data_tx_i[8] && data_tx_i[1:0] == 2'b01 && last_type == EOP  && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = eop_s[0];
                        tx_dout_data = !(eep_s[2]^eop_s[0]^eop_s[1]);
         end
         end
         else if( enable_n_char   & data_tx_i[8]  & data_tx_i[1:0] == 2'b01 &  !first_time & last_type == NULL  & global_counter_transfer == 4'd0)
                 else if(data_tx_i[8] && data_tx_i[1:0] == 2'b01 && last_type == EEP && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(eep_s[3]^null_s[0]^null_s[1]);
                        tx_dout_data = !(eep_s[2]^eep_s[0]^eep_s[1]);
         end
         end
         else if( enable_n_char   & !data_tx_i[8] & data_tx_i[1:0] == 2'b01 & !first_time & last_type == FCT   & global_counter_transfer == 4'd0)
                 else if(data_tx_i[8]  && data_tx_i[1:0] == 2'b01 && last_type == DATA && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(eep_s[3]^fct_s[0]^fct_s[1]);
                        tx_dout_data = !(eep_s[2]^txdata_flagctrl_tx_last[0]^txdata_flagctrl_tx_last[1]^txdata_flagctrl_tx_last[2]^txdata_flagctrl_tx_last[3]^ txdata_flagctrl_tx_last[4]^txdata_flagctrl_tx_last[5]^txdata_flagctrl_tx_last[6]^txdata_flagctrl_tx_last[7]);
         end
         end
         else if( enable_n_char   & !data_tx_i[8] & data_tx_i[1:0] == 2'b01 & !first_time & last_type == EOP   & global_counter_transfer == 4'd0)
                 else if(data_tx_i[8]  &&  data_tx_i[1:0] == 2'b01 && last_type == TIMEC && global_counter_transfer[3:0] == 4'd0)
         begin
         begin
                tx_dout = !(eep_s[3]^eop_s[0]^eop_s[1]);
                        tx_dout_data = !(eep_s[2]^last_timein_control_flag_tx[7]^last_timein_control_flag_tx[6]^last_timein_control_flag_tx[5]^last_timein_control_flag_tx[4]^last_timein_control_flag_tx[3]^last_timein_control_flag_tx[2]^last_timein_control_flag_tx[1]^last_timein_control_flag_tx[0]);
         end
         end
         else if( enable_n_char   & !data_tx_i[8] & data_tx_i[1:0] == 2'b01 & !first_time & last_type == EEP   & global_counter_transfer == 4'd0)
                 else if(!data_tx_i[8] &&  global_counter_transfer[3:0] == 4'd1)
         begin
         begin
                tx_dout = !(eep_s[3]^eep_s[0]^eep_s[1]);
                        tx_dout_data = data_tx_i[8];
         end
         end
         else if( enable_n_char   & !data_tx_i[8]  & data_tx_i[1:0] == 2'b01 & !first_time & last_type == DATA  & global_counter_transfer == 4'd0)
                 else if(!data_tx_i[8] && global_counter_transfer[3:0] == 4'd2)
         begin
         begin
                tx_dout = !(eep_s[3]^txdata_flagctrl_tx_last[0]^txdata_flagctrl_tx_last[1]^txdata_flagctrl_tx_last[2]^txdata_flagctrl_tx_last[3]^ txdata_flagctrl_tx_last[4]^txdata_flagctrl_tx_last[5]^txdata_flagctrl_tx_last[6]^txdata_flagctrl_tx_last[7]);
                        tx_dout_data = data_tx_i[0];
         end
         end
         else if( enable_n_char   & !data_tx_i[8]  & data_tx_i[1:0] == 2'b01 & !first_time & last_type == TIMEC & global_counter_transfer == 4'd0)
                 else if(!data_tx_i[8] &&  global_counter_transfer[3:0] == 4'd3)
         begin
         begin
                tx_dout = !(eep_s[3]^last_timein_control_flag_tx[7]^last_timein_control_flag_tx[6]^last_timein_control_flag_tx[5]^last_timein_control_flag_tx[4]^last_timein_control_flag_tx[3]^last_timein_control_flag_tx[2]^last_timein_control_flag_tx[1]^last_timein_control_flag_tx[0]);
                        tx_dout_data = data_tx_i[1];
         end
         end
         else if( enable_n_char   & !data_tx_i[8] & !data_tx_i[8] & !first_time & global_counter_transfer == 4'd1)
                 else if( !data_tx_i[8] && global_counter_transfer[3:0] == 4'd4)
         begin
         begin
                tx_dout = data_tx_i[8];
                        tx_dout_data = data_tx_i[2];
         end
         end
         else if( enable_n_char    & !data_tx_i[8] & !first_time & global_counter_transfer == 4'd2)
                 else if(!data_tx_i[8]  && global_counter_transfer[3:0] == 4'd5)
         begin
         begin
                tx_dout = data_tx_i[0];
                        tx_dout_data = data_tx_i[3];
         end
         end
         else if( enable_n_char    & !data_tx_i[8] & !first_time & global_counter_transfer == 4'd3)
                 else if(!data_tx_i[8]  && global_counter_transfer[3:0] == 4'd6)
         begin
         begin
                tx_dout = data_tx_i[1];
                        tx_dout_data = data_tx_i[4];
         end
         end
         else if( enable_n_char    & !data_tx_i[8] & !first_time & global_counter_transfer == 4'd4)
                 else if(!data_tx_i[8]  && global_counter_transfer[3:0] == 4'd7)
         begin
         begin
                tx_dout = data_tx_i[2];
                        tx_dout_data = data_tx_i[5];
         end
         end
         else if( enable_n_char    & !data_tx_i[8] & !first_time & global_counter_transfer == 4'd5)
                 else if(!data_tx_i[8] &&  global_counter_transfer[3:0] == 4'd8)
         begin
         begin
                tx_dout = data_tx_i[3];
                        tx_dout_data = data_tx_i[6];
         end
         end
         else if( enable_n_char    & !data_tx_i[8] & !first_time & global_counter_transfer == 4'd6)
                 else if(!data_tx_i[8] &&  global_counter_transfer[3:0] == 4'd9)
         begin
         begin
                tx_dout = data_tx_i[4];
                        tx_dout_data = data_tx_i[7];
         end
         end
         else if( enable_n_char    & !data_tx_i[8] & !first_time & global_counter_transfer == 4'd7)
                 else if(data_tx_i[8] && data_tx_i[1:0] == 2'b01 && global_counter_transfer[3:0] == 4'd1)
         begin
         begin
                tx_dout = data_tx_i[5];
                        tx_dout_data = eep_s[2];
         end
         end
         else if( enable_n_char    & !data_tx_i[8] & !first_time & global_counter_transfer == 4'd8)
                 else if( data_tx_i[8] && data_tx_i[1:0] == 2'b01 && global_counter_transfer[3:0] == 4'd2)
         begin
         begin
                tx_dout = data_tx_i[6];
                        tx_dout_data = eep_s[1];
         end
         end
         else if( enable_n_char    & !data_tx_i[8] & !first_time & global_counter_transfer == 4'd9)
                 else if(data_tx_i[8] && data_tx_i[1:0] == 2'b01 && global_counter_transfer[3:0] == 4'd3)
         begin
         begin
                tx_dout = data_tx_i[7];
                        tx_dout_data = eep_s[0];
         end
         end
         else if( enable_n_char    &  data_tx_i[8] & data_tx_i[1:0] == 2'b01 & !first_time & global_counter_transfer == 4'd1)
                 else if(data_tx_i[8] && data_tx_i[1:0] == 2'b00 && global_counter_transfer[3:0] == 4'd1)
         begin
         begin
                tx_dout = eep_s[2];
                        tx_dout_data = eop_s[2];
         end
         end
         else if( enable_n_char    &  data_tx_i[8] & data_tx_i[1:0] == 2'b01 & !first_time & global_counter_transfer == 4'd2)
                 else if(data_tx_i[8] && data_tx_i[1:0] == 2'b00 && global_counter_transfer[3:0] == 4'd2)
         begin
         begin
                tx_dout = eep_s[1];
                        tx_dout_data = eop_s[1];
         end
         end
         else if( enable_n_char    &  data_tx_i[8] & data_tx_i[1:0] == 2'b01 & !first_time & global_counter_transfer == 4'd3)
                 else if(data_tx_i[8] && data_tx_i[1:0] == 2'b00 && global_counter_transfer[3:0] == 4'd3)
         begin
         begin
                tx_dout = eep_s[0];
                        tx_dout_data = eop_s[0];
 
                 end
         end
         end
end
end
 
 
//strobe
//strobe
always@(*)
always@(*)
Line 437... Line 473...
 
 
        if(!enable_tx)
        if(!enable_tx)
        begin
        begin
                tx_sout = 1'b0;
                tx_sout = 1'b0;
        end
        end
        else if((enable_null | enable_fct | enable_n_char | enable_time_code) && tx_dout == last_tx_dout)
        else if((enable_null | enable_fct | enable_n_char | enable_time_code) & tx_dout == last_tx_dout)
        begin
        begin
                tx_sout = !last_tx_sout;
                tx_sout = !last_tx_sout;
        end
        end
        else if((enable_null | enable_fct | enable_n_char | enable_time_code) && tx_dout != last_tx_dout)
        else if((enable_null | enable_fct | enable_n_char | enable_time_code) & tx_dout != last_tx_dout)
        begin
        begin
                tx_sout = last_tx_sout;
                tx_sout = last_tx_sout;
        end
        end
 
 
end
end
 
 
always@(*)
always@(*)
begin
begin
        fct_counter = 6'd0;
        fct_counter = 6'd0;
Line 585... Line 620...
        end
        end
        endcase
        endcase
 
 
end
end
 
 
 
 
 
always@(*)
 
begin
 
 
 
        tx_dout = 1'b0;
 
 
 
        if(enable_null)
 
        begin
 
                tx_dout = tx_dout_null;
 
        end
 
        else if(enable_fct)
 
        begin
 
                tx_dout = tx_dout_fct;
 
        end
 
        else if(enable_time_code)
 
        begin
 
                tx_dout = tx_dout_timecode;
 
        end
 
        else if(enable_n_char)
 
        begin
 
                tx_dout = tx_dout_data;
 
        end
 
end
 
 
 
 
 
always@(posedge pclk_tx or negedge enable_tx)
 
begin
 
        if(!enable_tx)
 
        begin
 
                tx_dout_e <= 1'b0;
 
                tx_sout_e <= 1'b0;
 
        end
 
        else
 
        begin
 
                if(enable_null)
 
                begin
 
                        tx_dout_e <= tx_dout;
 
                        tx_sout_e <= tx_sout;
 
                end
 
                else if(enable_fct)
 
                begin
 
                        tx_dout_e <= tx_dout;
 
                        tx_sout_e <= tx_sout;
 
                end
 
                else if(enable_time_code)
 
                begin
 
                        tx_dout_e <= tx_dout;
 
                        tx_sout_e <= tx_sout;
 
                end
 
                else if(enable_n_char)
 
                begin
 
                        tx_dout_e <= tx_dout;
 
                        tx_sout_e <= tx_sout;
 
                end
 
        end
 
end
 
 
always@(posedge pclk_tx or negedge enable_tx)
always@(posedge pclk_tx or negedge enable_tx)
begin
begin
        if(!enable_tx)
        if(!enable_tx)
        begin
        begin
 
 
Line 615... Line 707...
                block_sum  <= 1'b0;
                block_sum  <= 1'b0;
                block_sum_fct_send <= 1'b0;
                block_sum_fct_send <= 1'b0;
 
 
                last_tx_dout      <= 1'b0;
                last_tx_dout      <= 1'b0;
                last_tx_sout      <= 1'b0;
                last_tx_sout      <= 1'b0;
 
 
                state_tx <= tx_spw_start;
                state_tx <= tx_spw_start;
 
 
        end
        end
        else
        else
        begin
        begin
 
 
                //null_s        <= null_s;
 
                //fct_s         <= fct_s;
 
                //eop_s         <= eop_s;
 
                //eep_s         <= eep_s;
 
                //timecode_s    <= timecode_s;  
 
                //fct_flag      <= fct_flag;
 
 
 
                state_tx <= next_state_tx;
                state_tx <= next_state_tx;
                last_tx_dout <= tx_dout;
                last_tx_dout <= tx_dout;
                last_tx_sout <= tx_sout;
                last_tx_sout <= tx_sout;
 
 
                if(enable_null)
                if(enable_null)
Line 687... Line 773...
                                global_counter_transfer <= 4'd0;
                                global_counter_transfer <= 4'd0;
                        end
                        end
                end
                end
                else if(enable_fct)
                else if(enable_fct)
                begin
                begin
 
 
                        ready_tx_data <= 1'b0;
                        ready_tx_data <= 1'b0;
                        ready_tx_timecode <= 1'b0;
                        ready_tx_timecode <= 1'b0;
 
 
                        hold_null       <= 1'b0;
                        hold_null       <= 1'b0;
                        //hold_fct      <= 1'b0;
                        //hold_fct      <= 1'b0;
Line 737... Line 822...
                                last_type  <=FCT;
                                last_type  <=FCT;
                        end
                        end
                end
                end
                else if(enable_time_code)
                else if(enable_time_code)
                begin
                begin
 
 
                        hold_null       <= 1'b0;
                        hold_null       <= 1'b0;
                        hold_fct        <= 1'b0;
                        hold_fct        <= 1'b0;
                        hold_data       <= 1'b0;
                        hold_data       <= 1'b0;
                        //hold_time_code        <= 1'b0;
                        //hold_time_code        <= 1'b0;
 
 
Line 788... Line 874...
                                last_type  <= TIMEC;
                                last_type  <= TIMEC;
                        end
                        end
                end
                end
                else if(enable_n_char)
                else if(enable_n_char)
                begin
                begin
 
 
                        ready_tx_timecode <= 1'b0;
                        ready_tx_timecode <= 1'b0;
                        hold_null       <= 1'b0;
                        hold_null       <= 1'b0;
                        hold_fct        <= 1'b0;
                        hold_fct        <= 1'b0;
                        //hold_data     <= 1'b0;
                        //hold_data     <= 1'b0;
                        hold_time_code  <= 1'b0;
                        hold_time_code  <= 1'b0;

powered by: WebSVN 2.1.0

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