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;
|