URL
https://opencores.org/ocsvn/spacewiresystemc/spacewiresystemc/trunk
Subversion Repositories spacewiresystemc
Compare Revisions
- This comparison shows the changes necessary to convert path
/spacewiresystemc/trunk
- from Rev 38 to Rev 39
- ↔ Reverse comparison
Rev 38 → Rev 39
/rtl/RTL_VB/fifo_rx.v
218,7 → 218,6
mem[62] <= {(DWIDTH){1'b0}}; |
mem[63] <= {(DWIDTH){1'b0}}; |
|
overflow_credit_error<=1'b0; |
state_data_write <= 2'd0; |
end |
else |
229,13 → 228,6
case(state_data_write) |
2'd0: |
begin |
if(credit_counter > 6'd55) |
begin |
overflow_credit_error <= 1'b1; |
end |
else |
overflow_credit_error <= 1'b0; |
|
mem[wr_ptr]<=data_in; |
end |
2'd1: |
265,8 → 257,7
begin |
if (!reset) |
begin |
f_full <= 1'b0; |
f_empty <= 1'b1; |
overflow_credit_error<=1'b0; |
counter <= {(AWIDTH){1'b0}}; |
credit_counter <= 6'd55; |
end |
275,7 → 266,10
|
if (state_data_write == 2'd2) |
begin |
credit_counter <= credit_counter - 6'd1; |
if(credit_counter == 6'd0) |
credit_counter <= credit_counter; |
else |
credit_counter <= credit_counter - 6'd1; |
end |
else if(state_data_read == 2'd2) |
begin |
286,9 → 280,18
else |
credit_counter <= credit_counter + 6'd7; |
end |
else |
credit_counter <= credit_counter; |
end |
else |
credit_counter <= credit_counter; |
begin |
if(credit_counter > 6'd55) |
begin |
overflow_credit_error <= 1'b1; |
end |
else |
overflow_credit_error <= 1'b0; |
end |
|
if (state_data_write == 2'd2) |
begin |
308,27 → 311,27
begin |
counter <= counter; |
end |
end |
end |
|
if(counter == 6'd63) |
begin |
f_full <= 1'b1; |
end |
else |
begin |
f_full <= 1'b0; |
end |
always@(*) |
begin |
|
if(counter == 6'd0) |
begin |
f_empty <= 1'b1; |
end |
else |
begin |
f_empty <= 1'b0; |
end |
end |
f_full = 1'b0; |
f_empty = 1'b0; |
|
if(counter == 6'd63) |
begin |
f_full = 1'b1; |
end |
|
if(counter == 6'd0) |
begin |
f_empty = 1'b1; |
end |
|
end |
|
//Read pointer |
always@(posedge clock or negedge reset) |
begin |
/rtl/RTL_VB/fifo_tx.v
222,11 → 222,12
case(state_data_write) |
2'd0: |
begin |
mem[wr_ptr]<=data_in; |
mem[wr_ptr]<=mem[wr_ptr]; |
wr_ptr <= wr_ptr; |
end |
2'd1: |
begin |
mem[wr_ptr]<=mem[wr_ptr]; |
mem[wr_ptr]<=data_in; |
end |
2'd2: |
begin |
246,14 → 247,12
begin |
if (!reset) |
begin |
f_full <= 1'b0; |
f_empty <= 1'b1; |
counter <= {(AWIDTH){1'b0}}; |
end |
else |
begin |
|
if (state_data_write == 2'd2) |
if(state_data_write == 2'd2) |
begin |
if(counter == 6'd63) |
counter <= counter; |
272,24 → 271,26
counter <= counter; |
end |
|
if(counter == 6'd63) |
begin |
f_full <= 1'b1; |
end |
else |
begin |
f_full <= 1'b0; |
end |
end |
end |
|
if(counter == 6'd0) |
begin |
f_empty <= 1'b1; |
end |
else |
begin |
f_empty <= 1'b0; |
end |
|
always@(*) |
begin |
|
f_full = 1'b0; |
f_empty = 1'b0; |
|
if(counter == 6'd63) |
begin |
f_full = 1'b1; |
end |
|
if(counter == 6'd0) |
begin |
f_empty = 1'b1; |
end |
|
end |
|
//Read pointer |
312,12 → 313,12
if(rd_en) |
begin |
write_tx<= 1'b0; |
data_out <= data_out; |
rd_ptr <= rd_ptr+ 6'd1; |
rd_ptr <= rd_ptr + 6'd1; |
end |
else |
begin |
data_out <= mem[rd_ptr]; |
|
if(counter > 6'd0) |
begin |
write_tx<= 1'b1; |
334,7 → 335,7
2'd2: |
begin |
write_tx<= 1'b0; |
data_out <= data_out; |
data_out <= mem[rd_ptr]; |
end |
default: |
begin |
/rtl/RTL_VB/rx_spw.v
407,45 → 407,58
end |
end |
|
always@(*) |
always@(posedge ready_data_p or negedge rx_resetn ) |
begin |
|
rx_error_d = 1'b0; |
|
if(last_is_control && ready_data_p) |
if(!rx_resetn) |
begin |
if(!(dta_timec[8]^control[0]^control[1]) != parity_rec_d) |
begin |
rx_error_d = 1'b1; |
end |
rx_error_d <= 1'b0; |
end |
else if(last_is_data && ready_data_p) |
else |
begin |
if(!(dta_timec[8]^data[7]^data[6]^data[5]^data[4]^data[3]^data[2]^data[1]^data[0]) != parity_rec_d) |
if(last_is_control) |
begin |
rx_error_d = 1'b1; |
if(!(dta_timec[8]^control[0]^control[1]) != parity_rec_d) |
begin |
rx_error_d <= 1'b1; |
end |
end |
else if(last_is_data) |
begin |
if(!(dta_timec[8]^data[7]^data[6]^data[5]^data[4]^data[3]^data[2]^data[1]^data[0]) != parity_rec_d) |
begin |
rx_error_d <= 1'b1; |
end |
end |
end |
end |
|
always@(*) |
always@(posedge ready_control_p or negedge rx_resetn ) |
begin |
rx_error_c = 1'b0; |
|
if(last_is_control && ready_control_p) |
if(!rx_resetn) |
begin |
if(!(control_r[2]^control[0]^control[1]) != parity_rec_c) |
begin |
rx_error_c = 1'b1; |
end |
rx_error_c <= 1'b0; |
|
end |
else if(last_is_data && ready_control_p) |
else |
begin |
if(!(control_r[2]^data[7]^data[6]^data[5]^data[4]^data[3]^data[2]^data[1]^data[0]) != parity_rec_c) |
if(last_is_control) |
begin |
rx_error_c = 1'b1; |
if(!(control_r[2]^control[0]^control[1]) != parity_rec_c) |
begin |
rx_error_c <= 1'b1; |
end |
end |
else if(last_is_data) |
begin |
if(!(control_r[2]^data[7]^data[6]^data[5]^data[4]^data[3]^data[2]^data[1]^data[0]) != parity_rec_c) |
begin |
rx_error_c <= 1'b1; |
end |
end |
end |
|
end |
|
always@(posedge negedge_clk or negedge rx_resetn) |
/rtl/RTL_VB/tx_spw.v
64,7 → 64,8
tx_spw_null_c = 7'b0000100, |
tx_spw_fct_c = 7'b0001000, |
tx_spw_data_c = 7'b0010000, |
tx_spw_time_code_c = 7'b0100000; |
tx_spw_data_c_0 = 7'b0100000, |
tx_spw_time_code_c = 7'b1000000; |
|
localparam [5:0] NULL = 6'b000001, |
FCT = 6'b000010, |
99,9 → 100,11
reg [5:0] last_type; |
reg [8:0] txdata_flagctrl_tx_last; |
reg [8:0] tx_data_in; |
reg [8:0] tx_data_took; |
reg [8:0] tx_data_in_0; |
reg process_data; |
reg process_data_0; |
reg last_process_data; |
|
|
reg [7:0] last_timein_control_flag_tx; |
reg [7:0] tx_tcode_in; |
reg tcode_rdy_trnsp; |
111,7 → 114,6
|
reg [5:0] fct_counter_receive; |
|
reg data_ready_took; |
reg block_decrement; |
reg char_sent; |
|
132,67 → 134,79
|
|
|
always@(*) |
always@(posedge pclk_tx or negedge enable_tx) |
begin |
tx_dout = last_tx_dout; |
|
if(!enable_tx) |
begin |
tx_dout <= 1'b0; |
end |
else |
begin |
case(state_tx) |
tx_spw_start: |
begin |
if(send_null_tx && enable_tx) |
begin |
tx_dout <= !(null_s[6]^null_s[0]^null_s[1]); |
end |
else |
begin |
tx_dout <= 1'b0; |
end |
end |
tx_spw_null,tx_spw_null_c: |
begin |
if(last_type == NULL && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(null_s[6]^null_s[0]^null_s[1]); |
tx_dout <= !(null_s[6]^null_s[0]^null_s[1]); |
end |
else if(last_type == FCT && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(null_s[6]^fct_s[0]^fct_s[1]); |
tx_dout <= !(null_s[6]^fct_s[0]^fct_s[1]); |
end |
else if(last_type == EOP && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(null_s[6]^eop_s[0]^eop_s[1]); |
tx_dout <= !(null_s[6]^eop_s[0]^eop_s[1]); |
end |
else if(last_type == EEP && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(null_s[6]^eep_s[0]^eep_s[1]); |
tx_dout <= !(null_s[6]^eep_s[0]^eep_s[1]); |
end |
else if(last_type == DATA && global_counter_transfer[3:0] == 4'd0) |
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_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 |
else if(last_type == TIMEC && global_counter_transfer[3:0] == 4'd0) |
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_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 |
else if(global_counter_transfer[3:0] == 4'd1) |
begin |
tx_dout = null_s[6]; |
tx_dout <= null_s[6]; |
end |
else if(global_counter_transfer[3:0] == 4'd2) |
begin |
tx_dout = null_s[5]; |
tx_dout <= null_s[5]; |
end |
else if(global_counter_transfer[3:0] == 4'd3) |
begin |
tx_dout = null_s[4]; |
tx_dout <= null_s[4]; |
end |
else if(global_counter_transfer[3:0] == 4'd4) |
begin |
tx_dout = null_s[3]; |
tx_dout <= null_s[3]; |
end |
else if(global_counter_transfer[3:0] == 4'd5) |
begin |
tx_dout = null_s[2]; |
tx_dout <= null_s[2]; |
end |
else if(global_counter_transfer[3:0] == 4'd6) |
begin |
tx_dout = null_s[1]; |
tx_dout <= null_s[1]; |
end |
else if(global_counter_transfer[3:0] == 4'd7) |
begin |
tx_dout = null_s[0]; |
tx_dout <= null_s[0]; |
end |
end |
tx_spw_fct,tx_spw_fct_c: |
199,39 → 213,39
begin |
if(last_type == NULL && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(fct_s[2]^null_s[0]^null_s[1]); |
tx_dout <= !(fct_s[2]^null_s[0]^null_s[1]); |
end |
else if(last_type == FCT && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(fct_s[2]^fct_s[0]^fct_s[1]); |
tx_dout <= !(fct_s[2]^fct_s[0]^fct_s[1]); |
end |
else if(last_type == EOP && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(fct_s[2]^eop_s[0]^eop_s[1]); |
tx_dout <= !(fct_s[2]^eop_s[0]^eop_s[1]); |
end |
else if(last_type == EEP && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(fct_s[2]^eep_s[0]^eep_s[1]); |
tx_dout <= !(fct_s[2]^eep_s[0]^eep_s[1]); |
end |
else if (last_type == DATA && global_counter_transfer[3:0] == 4'd0) |
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_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 |
else if(last_type == TIMEC && global_counter_transfer[3:0] == 4'd0) |
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_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 |
else if(global_counter_transfer[3:0] == 4'd1) |
begin |
tx_dout = fct_s[2]; |
tx_dout <= fct_s[2]; |
end |
else if(global_counter_transfer[3:0] == 4'd2) |
begin |
tx_dout = fct_s[1]; |
tx_dout <= fct_s[1]; |
end |
else if(global_counter_transfer[3:0] == 4'd3) |
begin |
tx_dout = fct_s[0]; |
tx_dout <= fct_s[0]; |
end |
end |
tx_spw_data_c: |
238,214 → 252,349
begin |
if(!tx_data_in[8] && last_type == NULL && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(tx_data_in[8]^null_s[0]^null_s[1]); |
tx_dout <= !(tx_data_in[8]^null_s[0]^null_s[1]); |
end |
else if(!tx_data_in[8] && last_type == FCT && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(tx_data_in[8]^fct_s[0]^fct_s[1]); |
tx_dout <= !(tx_data_in[8]^fct_s[0]^fct_s[1]); |
end |
else if(!tx_data_in[8] && last_type == EOP && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(tx_data_in[8]^eop_s[0]^eop_s[1]); |
tx_dout <= !(tx_data_in[8]^eop_s[0]^eop_s[1]); |
end |
else if(!tx_data_in[8] && last_type == EEP && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(tx_data_in[8]^eep_s[0]^eep_s[1]); |
tx_dout <= !(tx_data_in[8]^eep_s[0]^eep_s[1]); |
end |
else if(!tx_data_in[8] && last_type == DATA && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(tx_data_in[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 <= !(tx_data_in[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 |
else if(!tx_data_in[8] && last_type == TIMEC && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(tx_data_in[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 <= !(tx_data_in[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 |
else if(tx_data_in[8] && tx_data_in[1:0] == 2'b00 && last_type == NULL && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(eop_s[2]^null_s[0]^null_s[1]); |
tx_dout <= !(eop_s[2]^null_s[0]^null_s[1]); |
end |
else if(tx_data_in[8] && tx_data_in[1:0] == 2'b00 && last_type == FCT && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(eop_s[2]^fct_s[0]^fct_s[1]); |
tx_dout <= !(eop_s[2]^fct_s[0]^fct_s[1]); |
end |
else if(tx_data_in[8] && tx_data_in[1:0] == 2'b00 && last_type == EOP && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(eop_s[2]^eop_s[0]^eop_s[1]); |
tx_dout <= !(eop_s[2]^eop_s[0]^eop_s[1]); |
end |
else if(tx_data_in[8] && tx_data_in[1:0] == 2'b00 && last_type == EEP && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(eop_s[2]^eep_s[0]^eep_s[1]); |
tx_dout <= !(eop_s[2]^eep_s[0]^eep_s[1]); |
end |
else if(tx_data_in[8] && tx_data_in[1:0] == 2'b00 && last_type == DATA && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(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]); |
tx_dout <= !(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 |
else if(tx_data_in[8] && tx_data_in[1:0] == 2'b00 && last_type == TIMEC && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(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]); |
tx_dout <= !(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 |
else if(tx_data_in[8] && tx_data_in[1:0] == 2'b01 && last_type == NULL && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(eep_s[2]^null_s[0]^null_s[1]); |
tx_dout <= !(eep_s[2]^null_s[0]^null_s[1]); |
end |
else if(tx_data_in[8] && tx_data_in[1:0] == 2'b01 && last_type == FCT && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(eep_s[2]^fct_s[0]^fct_s[1]); |
tx_dout <= !(eep_s[2]^fct_s[0]^fct_s[1]); |
end |
else if(tx_data_in[8] && tx_data_in[1:0] == 2'b01 && last_type == EOP && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(eep_s[2]^eop_s[0]^eop_s[1]); |
tx_dout <= !(eep_s[2]^eop_s[0]^eop_s[1]); |
end |
else if(tx_data_in[8] && tx_data_in[1:0] == 2'b01 && last_type == EEP && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(eep_s[2]^eep_s[0]^eep_s[1]); |
tx_dout <= !(eep_s[2]^eep_s[0]^eep_s[1]); |
end |
else if(tx_data_in[8] && tx_data_in[1:0] == 2'b01 && last_type == DATA && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(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]); |
tx_dout <= !(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 |
else if(tx_data_in[8] && tx_data_in[1:0] == 2'b01 && last_type == TIMEC && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(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]); |
tx_dout <= !(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 |
else if(!tx_data_in[8] && global_counter_transfer[3:0] == 4'd1) |
begin |
tx_dout = tx_data_in[8]; |
tx_dout <= tx_data_in[8]; |
end |
else if(!tx_data_in[8] && global_counter_transfer[3:0] == 4'd2) |
begin |
tx_dout = tx_data_in[0]; |
tx_dout <= tx_data_in[0]; |
end |
else if(!tx_data_in[8] && global_counter_transfer[3:0] == 4'd3) |
begin |
tx_dout = tx_data_in[1]; |
tx_dout <= tx_data_in[1]; |
end |
else if(!tx_data_in[8] && global_counter_transfer[3:0] == 4'd4) |
begin |
tx_dout = tx_data_in[2]; |
tx_dout <= tx_data_in[2]; |
end |
else if(!tx_data_in[8] && global_counter_transfer[3:0] == 4'd5) |
begin |
tx_dout = tx_data_in[3]; |
tx_dout <= tx_data_in[3]; |
end |
else if(!tx_data_in[8] && global_counter_transfer[3:0] == 4'd6) |
begin |
tx_dout = tx_data_in[4]; |
tx_dout <= tx_data_in[4]; |
end |
else if(!tx_data_in[8] && global_counter_transfer[3:0] == 4'd7) |
begin |
tx_dout = tx_data_in[5]; |
tx_dout <= tx_data_in[5]; |
end |
else if(!tx_data_in[8] && global_counter_transfer[3:0] == 4'd8) |
begin |
tx_dout = tx_data_in[6]; |
tx_dout <= tx_data_in[6]; |
end |
else if(!tx_data_in[8] && global_counter_transfer[3:0] == 4'd9) |
begin |
tx_dout = tx_data_in[7]; |
tx_dout <= tx_data_in[7]; |
end |
else if(tx_data_in[8] && tx_data_in[1:0] == 2'b01 && global_counter_transfer[3:0] == 4'd1) |
begin |
tx_dout = eep_s[2]; |
tx_dout <= eep_s[2]; |
end |
else if( tx_data_in[8] && tx_data_in[1:0] == 2'b01 && global_counter_transfer[3:0] == 4'd2) |
begin |
tx_dout = eep_s[1]; |
tx_dout <= eep_s[1]; |
end |
else if(tx_data_in[8] && tx_data_in[1:0] == 2'b01 && global_counter_transfer[3:0] == 4'd3) |
begin |
tx_dout = eep_s[0]; |
tx_dout <= eep_s[0]; |
end |
else if(tx_data_in[8] && tx_data_in[1:0] == 2'b00 && global_counter_transfer[3:0] == 4'd1) |
begin |
tx_dout = eop_s[2]; |
tx_dout <= eop_s[2]; |
end |
else if(tx_data_in[8] && tx_data_in[1:0] == 2'b00 && global_counter_transfer[3:0] == 4'd2) |
begin |
tx_dout = eop_s[1]; |
tx_dout <= eop_s[1]; |
end |
else if(tx_data_in[8] && tx_data_in[1:0] == 2'b00 && global_counter_transfer[3:0] == 4'd3) |
begin |
tx_dout = eop_s[0]; |
tx_dout <= eop_s[0]; |
end |
end |
tx_spw_data_c_0: |
begin |
if(!tx_data_in_0[8] && last_type == NULL && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout <= !(tx_data_in_0[8]^null_s[0]^null_s[1]); |
end |
else if(!tx_data_in_0[8] && last_type == FCT && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout <= !(tx_data_in_0[8]^fct_s[0]^fct_s[1]); |
end |
else if(!tx_data_in_0[8] && last_type == EOP && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout <= !(tx_data_in_0[8]^eop_s[0]^eop_s[1]); |
end |
else if(!tx_data_in_0[8] && last_type == EEP && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout <= !(tx_data_in_0[8]^eep_s[0]^eep_s[1]); |
end |
else if(!tx_data_in_0[8] && last_type == DATA && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout <= !(tx_data_in_0[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 |
else if(!tx_data_in_0[8] && last_type == TIMEC && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout <= !(tx_data_in_0[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 |
else if(tx_data_in_0[8] && tx_data_in_0[1:0] == 2'b00 && last_type == NULL && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout <= !(eop_s[2]^null_s[0]^null_s[1]); |
end |
else if(tx_data_in_0[8] && tx_data_in_0[1:0] == 2'b00 && last_type == FCT && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout <= !(eop_s[2]^fct_s[0]^fct_s[1]); |
end |
else if(tx_data_in_0[8] && tx_data_in_0[1:0] == 2'b00 && last_type == EOP && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout <= !(eop_s[2]^eop_s[0]^eop_s[1]); |
end |
else if(tx_data_in_0[8] && tx_data_in_0[1:0] == 2'b00 && last_type == EEP && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout <= !(eop_s[2]^eep_s[0]^eep_s[1]); |
end |
else if(tx_data_in_0[8] && tx_data_in_0[1:0] == 2'b00 && last_type == DATA && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout <= !(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 |
else if(tx_data_in_0[8] && tx_data_in_0[1:0] == 2'b00 && last_type == TIMEC && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout <= !(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 |
else if(tx_data_in_0[8] && tx_data_in_0[1:0] == 2'b01 && last_type == NULL && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout <= !(eep_s[2]^null_s[0]^null_s[1]); |
end |
else if(tx_data_in_0[8] && tx_data_in_0[1:0] == 2'b01 && last_type == FCT && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout <= !(eep_s[2]^fct_s[0]^fct_s[1]); |
end |
else if(tx_data_in_0[8] && tx_data_in_0[1:0] == 2'b01 && last_type == EOP && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout <= !(eep_s[2]^eop_s[0]^eop_s[1]); |
end |
else if(tx_data_in_0[8] && tx_data_in_0[1:0] == 2'b01 && last_type == EEP && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout <= !(eep_s[2]^eep_s[0]^eep_s[1]); |
end |
else if(tx_data_in_0[8] && tx_data_in_0[1:0] == 2'b01 && last_type == DATA && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout <= !(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 |
else if(tx_data_in_0[8] && tx_data_in_0[1:0] == 2'b01 && last_type == TIMEC && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout <= !(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 |
else if(!tx_data_in_0[8] && global_counter_transfer[3:0] == 4'd1) |
begin |
tx_dout <= tx_data_in_0[8]; |
end |
else if(!tx_data_in_0[8] && global_counter_transfer[3:0] == 4'd2) |
begin |
tx_dout <= tx_data_in_0[0]; |
end |
else if(!tx_data_in_0[8] && global_counter_transfer[3:0] == 4'd3) |
begin |
tx_dout <= tx_data_in_0[1]; |
end |
else if(!tx_data_in_0[8] && global_counter_transfer[3:0] == 4'd4) |
begin |
tx_dout <= tx_data_in_0[2]; |
end |
else if(!tx_data_in_0[8] && global_counter_transfer[3:0] == 4'd5) |
begin |
tx_dout <= tx_data_in_0[3]; |
end |
else if(!tx_data_in_0[8] && global_counter_transfer[3:0] == 4'd6) |
begin |
tx_dout <= tx_data_in_0[4]; |
end |
else if(!tx_data_in_0[8] && global_counter_transfer[3:0] == 4'd7) |
begin |
tx_dout <= tx_data_in_0[5]; |
end |
else if(!tx_data_in_0[8] && global_counter_transfer[3:0] == 4'd8) |
begin |
tx_dout <= tx_data_in_0[6]; |
end |
else if(!tx_data_in_0[8] && global_counter_transfer[3:0] == 4'd9) |
begin |
tx_dout <= tx_data_in_0[7]; |
end |
else if(tx_data_in_0[8] && tx_data_in_0[1:0] == 2'b01 && global_counter_transfer[3:0] == 4'd1) |
begin |
tx_dout <= eep_s[2]; |
end |
else if( tx_data_in_0[8] && tx_data_in_0[1:0] == 2'b01 && global_counter_transfer[3:0] == 4'd2) |
begin |
tx_dout <= eep_s[1]; |
end |
else if(tx_data_in_0[8] && tx_data_in_0[1:0] == 2'b01 && global_counter_transfer[3:0] == 4'd3) |
begin |
tx_dout <= eep_s[0]; |
end |
else if(tx_data_in_0[8] && tx_data_in_0[1:0] == 2'b00 && global_counter_transfer[3:0] == 4'd1) |
begin |
tx_dout <= eop_s[2]; |
end |
else if(tx_data_in_0[8] && tx_data_in_0[1:0] == 2'b00 && global_counter_transfer[3:0] == 4'd2) |
begin |
tx_dout <= eop_s[1]; |
end |
else if(tx_data_in_0[8] && tx_data_in_0[1:0] == 2'b00 && global_counter_transfer[3:0] == 4'd3) |
begin |
tx_dout <= eop_s[0]; |
end |
end |
tx_spw_time_code_c: |
begin |
if(last_type == NULL && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(timecode_s[12]^null_s[0]^null_s[1]); |
tx_dout <= !(timecode_s[12]^null_s[0]^null_s[1]); |
end |
else if(last_type == FCT && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(timecode_s[12]^fct_s[0]^fct_s[1]); |
tx_dout <= !(timecode_s[12]^fct_s[0]^fct_s[1]); |
end |
else if (last_type == EOP && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(timecode_s[12]^eop_s[0]^eop_s[1]); |
tx_dout <= !(timecode_s[12]^eop_s[0]^eop_s[1]); |
end |
else if( last_type == EEP && global_counter_transfer[3:0] == 4'd0) |
begin |
tx_dout = !(timecode_s[12]^eep_s[0]^eep_s[1]); |
tx_dout <= !(timecode_s[12]^eep_s[0]^eep_s[1]); |
end |
else if( last_type == DATA && global_counter_transfer[3:0] == 4'd0) |
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_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 |
else if( last_type == TIMEC && global_counter_transfer[3:0] == 4'd0) |
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_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 |
else if( global_counter_transfer[3:0] == 4'd1) |
begin |
tx_dout = timecode_s[12]; |
tx_dout <= timecode_s[12]; |
end |
else if( global_counter_transfer[3:0] == 4'd2) |
begin |
tx_dout = timecode_s[11]; |
tx_dout <= timecode_s[11]; |
end |
else if( global_counter_transfer[3:0] == 4'd3) |
begin |
tx_dout = timecode_s[10]; |
tx_dout <= timecode_s[10]; |
end |
else if( global_counter_transfer[3:0] == 4'd4) |
begin |
tx_dout = timecode_s[9]; |
tx_dout <= timecode_s[9]; |
end |
else if( global_counter_transfer[3:0] == 4'd5) |
begin |
tx_dout = timecode_s[8]; |
tx_dout <= timecode_s[8]; |
end |
else if( global_counter_transfer[3:0] == 4'd6) |
begin |
tx_dout = timecode_s[0]; |
tx_dout <= timecode_s[0]; |
end |
else if( global_counter_transfer[3:0] == 4'd7) |
begin |
tx_dout = timecode_s[1]; |
tx_dout <= timecode_s[1]; |
end |
else if( global_counter_transfer[3:0] == 4'd8) |
begin |
tx_dout = timecode_s[2]; |
tx_dout <= timecode_s[2]; |
end |
else if(global_counter_transfer[3:0] == 4'd9) |
begin |
tx_dout = timecode_s[3]; |
tx_dout <= timecode_s[3]; |
end |
else if(global_counter_transfer[3:0] == 4'd10) |
begin |
tx_dout = timecode_s[4]; |
tx_dout <= timecode_s[4]; |
end |
else if(global_counter_transfer[3:0] == 4'd11) |
begin |
tx_dout = timecode_s[5]; |
tx_dout <= timecode_s[5]; |
end |
else if( global_counter_transfer[3:0] == 4'd12) |
begin |
tx_dout = timecode_s[6]; |
tx_dout <= timecode_s[6]; |
end |
else if(global_counter_transfer[3:0] == 4'd13) |
begin |
tx_dout = timecode_s[7]; |
tx_dout <= timecode_s[7]; |
end |
end |
default: |
452,6 → 601,7
begin |
end |
endcase |
end |
end |
|
//strobe |
490,14 → 640,7
end |
3'd1: |
begin |
if(global_counter_transfer > 4'd0 && global_counter_transfer < 4'd12) |
begin |
next_state_fct_send = 3'd2; |
end |
else |
begin |
next_state_fct_send = 3'd1; |
end |
next_state_fct_send = 3'd2; |
end |
3'd2: |
begin |
512,14 → 655,7
end |
3'd3: |
begin |
if(global_counter_transfer > 4'd0 && global_counter_transfer < 4'd12) |
begin |
next_state_fct_send = 3'd4; |
end |
else |
begin |
next_state_fct_send = 3'd3; |
end |
next_state_fct_send = 3'd4; |
end |
3'd4: |
begin |
557,7 → 693,7
end |
3'd1: |
begin |
if(global_counter_transfer > 4'd0 && global_counter_transfer < 4'd12) |
if(fct_flag < 3'd7) |
fct_flag <= fct_flag + 3'd1; |
else |
fct_flag <= fct_flag; |
568,7 → 704,7
end |
3'd3: |
begin |
if(global_counter_transfer > 4'd0 && global_counter_transfer < 4'd12) |
if(fct_flag > 3'd0) |
fct_flag <= fct_flag - 3'd1; |
else |
fct_flag <= fct_flag; |
606,14 → 742,8
end |
3'd1: |
begin |
if(global_counter_transfer > 4'd0 && global_counter_transfer < 4'd12) |
begin |
next_state_fct_receive = 3'd2; |
end |
else |
begin |
next_state_fct_receive = 3'd1; |
end |
|
next_state_fct_receive = 3'd2; |
end |
3'd2: |
begin |
628,14 → 758,7
end |
3'd3: |
begin |
if(global_counter_transfer > 4'd0 && global_counter_transfer < 4'd12) |
begin |
next_state_fct_receive = 3'd4; |
end |
else |
begin |
next_state_fct_receive = 3'd3; |
end |
next_state_fct_receive = 3'd4; |
end |
3'd4: |
begin |
675,19 → 798,14
end |
3'd1: |
begin |
if(global_counter_transfer > 4'd0 && global_counter_transfer < 4'd12) |
if(fct_counter_receive < 6'd48) |
begin |
if(fct_counter_receive < 6'd48) |
begin |
fct_counter_receive <= fct_counter_receive + 6'd8; |
end |
else |
begin |
fct_counter_receive <= fct_counter_receive + 6'd7; |
end |
fct_counter_receive <= fct_counter_receive + 6'd8; |
end |
else |
fct_counter_receive <= fct_counter_receive; |
begin |
fct_counter_receive <= fct_counter_receive + 6'd7; |
end |
end |
3'd2: |
begin |
695,15 → 813,10
end |
3'd3: |
begin |
if(global_counter_transfer > 4'd0 && global_counter_transfer < 4'd12) |
begin |
if(fct_counter_receive == 6'd0) |
fct_counter_receive <= fct_counter_receive; |
else |
fct_counter_receive <= fct_counter_receive - 6'd1; |
end |
if(fct_counter_receive == 6'd0) |
fct_counter_receive <= fct_counter_receive; |
else |
fct_counter_receive <= fct_counter_receive; |
fct_counter_receive <= fct_counter_receive - 6'd1; |
end |
3'd4: |
begin |
717,106 → 830,8
end |
end |
|
|
always@(*) |
begin |
next_state_data_fifo = state_data_fifo; |
|
case(state_data_fifo) |
3'd0: |
begin |
if(!ready_tx_data && txwrite_tx) |
begin |
next_state_data_fifo = 3'd1; |
end |
else |
next_state_data_fifo = 3'd0; |
end |
3'd1: |
begin |
next_state_data_fifo = 3'd2; |
end |
3'd2: |
begin |
|
if(state_tx == tx_spw_null_c && global_counter_transfer > 4'd1 && global_counter_transfer < 4'd7) |
next_state_data_fifo = 3'd3; |
else if(state_tx == tx_spw_data_c && global_counter_transfer > 4'd1 && global_counter_transfer < 4'd9) |
next_state_data_fifo = 3'd3; |
else |
next_state_data_fifo = 3'd2; |
end |
3'd3: |
begin |
if(!ready_tx_data && txwrite_tx) |
begin |
next_state_data_fifo = 3'd3; |
end |
else |
begin |
next_state_data_fifo = 3'd0; |
end |
end |
default: |
begin |
next_state_data_fifo = 3'd0; |
end |
endcase |
end |
|
always@(posedge pclk_tx or negedge enable_tx) |
begin |
if(!enable_tx) |
begin |
data_ready_took <= 1'b0; |
state_data_fifo <= 3'd0; |
tx_data_took <= 9'd0; |
end |
else |
begin |
|
state_data_fifo <= next_state_data_fifo; |
|
case(state_data_fifo) |
3'd0: |
begin |
//tx_data_took <= tx_data_took; |
end |
3'd1: |
begin |
tx_data_took <= data_tx_i; |
end |
3'd2: |
begin |
tx_data_took <= data_tx_i; |
|
if(state_tx == tx_spw_null_c && global_counter_transfer > 4'd0 && global_counter_transfer < 4'd7) |
data_ready_took <= 1'b1; |
else if(state_tx == tx_spw_data_c && global_counter_transfer > 4'd0 && global_counter_transfer < 4'd9) |
data_ready_took <= 1'b1; |
else |
data_ready_took <= 1'b0; |
end |
3'd3: |
begin |
if(!ready_tx_data && txwrite_tx) |
begin |
data_ready_took <= 1'b1; |
end |
else |
begin |
data_ready_took <= 1'b0; |
end |
end |
default: |
begin |
end |
endcase |
end |
end |
|
always@(*) |
begin |
next_state_tx = state_tx; |
|
case(state_tx) |
875,10 → 890,14
begin |
next_state_tx = tx_spw_fct_c; |
end |
else if(data_ready_took && !gotfct_tx && fct_counter_receive > 6'd0) |
else if(process_data && !gotfct_tx && fct_counter_receive > 6'd0) |
begin |
next_state_tx = tx_spw_data_c; |
end |
else if(process_data_0 && !gotfct_tx && fct_counter_receive > 6'd0) |
begin |
next_state_tx = tx_spw_data_c_0; |
end |
else |
begin |
next_state_tx = tx_spw_null_c; |
922,9 → 941,9
begin |
next_state_tx = tx_spw_fct_c; |
end |
else if(data_ready_took && !gotfct_tx && fct_counter_receive > 6'd0) |
else if(process_data_0 && !gotfct_tx && fct_counter_receive > 6'd0) |
begin |
next_state_tx = tx_spw_data_c; |
next_state_tx = tx_spw_data_c_0; |
end |
else |
begin |
957,6 → 976,56
|
|
end |
tx_spw_data_c_0: |
begin |
|
if(!tx_data_in_0[8]) |
begin |
if(global_counter_transfer == 4'd9) |
begin |
if(tickin_tx && !ready_tx_timecode && tcode_rdy_trnsp) |
begin |
next_state_tx = tx_spw_time_code_c; |
end |
else if(fct_flag > 3'd0 && !send_fct_now) |
begin |
next_state_tx = tx_spw_fct_c; |
end |
else if(process_data && !gotfct_tx && fct_counter_receive > 6'd0) |
begin |
next_state_tx = tx_spw_data_c; |
end |
else |
begin |
next_state_tx = tx_spw_null_c; |
end |
end |
else |
next_state_tx = tx_spw_data_c_0; |
end |
else if(tx_data_in_0[8]) |
begin |
if(global_counter_transfer == 4'd3) |
begin |
if(tickin_tx && !ready_tx_timecode && tcode_rdy_trnsp) |
begin |
next_state_tx = tx_spw_time_code_c; |
end |
else if(fct_flag > 3'd0 && !send_fct_now) |
begin |
next_state_tx = tx_spw_fct_c; |
end |
else |
begin |
next_state_tx = tx_spw_null_c; |
end |
end |
else |
next_state_tx = tx_spw_data_c_0; |
end |
|
|
end |
tx_spw_time_code_c: |
begin |
if(global_counter_transfer == 4'd13) |
965,10 → 1034,14
begin |
next_state_tx = tx_spw_fct_c; |
end |
else if(data_ready_took && !gotfct_tx && fct_counter_receive > 6'd0 ) |
else if(process_data && !gotfct_tx && fct_counter_receive > 6'd0 ) |
begin |
next_state_tx = tx_spw_data_c; |
end |
else if(process_data_0 && !gotfct_tx && fct_counter_receive > 6'd0) |
begin |
next_state_tx = tx_spw_data_c_0; |
end |
else |
begin |
next_state_tx = tx_spw_null_c; |
1002,6 → 1075,11
global_counter_transfer <= 4'd0; |
txdata_flagctrl_tx_last <= 9'd0; |
tx_data_in <= 9'd0; |
tx_data_in_0 <= 9'd0; |
|
process_data <= 1'b0; |
process_data_0 <= 1'b0; |
|
last_timein_control_flag_tx <= 8'd0; |
|
char_sent<= 1'b0; |
1026,7 → 1104,16
case(state_tx) |
tx_spw_start: |
begin |
global_counter_transfer <= 4'd0; |
|
if(send_null_tx && enable_tx) |
begin |
global_counter_transfer <= global_counter_transfer + 4'd1; |
end |
else |
begin |
global_counter_transfer <= 4'd0; |
end |
|
end |
tx_spw_null: |
begin |
1034,8 → 1121,8
last_tx_dout <= tx_dout; |
last_tx_sout <= tx_sout; |
|
tx_dout_e <= last_tx_dout; |
tx_sout_e <= last_tx_sout; |
tx_dout_e <= tx_dout; |
tx_sout_e <= tx_sout; |
|
|
if(tickin_tx && global_counter_transfer == 4'd5) |
1064,8 → 1151,8
last_tx_dout <= tx_dout; |
last_tx_sout <= tx_sout; |
|
tx_dout_e <= last_tx_dout; |
tx_sout_e <= last_tx_sout; |
tx_dout_e <= tx_dout; |
tx_sout_e <= tx_sout; |
|
if(global_counter_transfer == 4'd3) |
begin |
1089,21 → 1176,37
last_tx_dout <= tx_dout; |
last_tx_sout <= tx_sout; |
|
tx_dout_e <= last_tx_dout; |
tx_sout_e <= last_tx_sout; |
|
tx_dout_e <= tx_dout; |
tx_sout_e <= tx_sout; |
|
if(global_counter_transfer == 4'd7) |
begin |
fct_sent <= 1'b0; |
last_type <= NULL; |
global_counter_transfer <= 4'd0; |
|
if(data_ready_took) |
tx_data_in <= tx_data_took; |
else |
tx_data_in <= tx_data_in; |
end |
else |
begin |
|
if(process_data_0) |
begin |
process_data_0 <= process_data_0; |
end |
else |
begin |
if(txwrite_tx) |
begin |
tx_data_in <= data_tx_i; |
process_data <= 1'b1; |
end |
else |
begin |
tx_data_in <= tx_data_in; |
process_data <= 1'b0; |
end |
process_data_0 <= 1'b0; |
end |
|
char_sent <= 1'b0; |
fct_sent <= 1'b0; |
ready_tx_timecode <= 1'b0; |
1117,8 → 1220,8
last_tx_dout <= tx_dout; |
last_tx_sout <= tx_sout; |
|
tx_dout_e <= last_tx_dout; |
tx_sout_e <= last_tx_sout; |
tx_dout_e <= tx_dout; |
tx_sout_e <= tx_sout; |
|
if(global_counter_transfer == 4'd3) |
begin |
1129,11 → 1232,12
end |
else |
begin |
if(fct_flag > 3'd0) |
fct_sent <= 1'b1; |
else |
fct_sent <= fct_sent; |
char_sent <= 1'b0; |
process_data <= process_data; |
process_data_0 <= process_data_0; |
|
fct_sent <= 1'b1; |
|
global_counter_transfer <= global_counter_transfer + 4'd1; |
end |
end |
1143,43 → 1247,142
last_tx_dout <= tx_dout; |
last_tx_sout <= tx_sout; |
|
tx_dout_e <= last_tx_dout; |
tx_sout_e <= last_tx_sout; |
tx_dout_e <= tx_dout; |
tx_sout_e <= tx_sout; |
|
fct_sent <= 1'b0; |
|
if(!tx_data_in[8]) |
begin |
|
if(global_counter_transfer == 4'd9) |
begin |
fct_sent <= 1'b0; |
char_sent <= 1'b1; |
last_type <= DATA; |
global_counter_transfer <= 4'd0; |
|
if(data_ready_took) |
tx_data_in <= tx_data_took; |
else |
tx_data_in <= tx_data_in; |
end |
else |
begin |
|
if(global_counter_transfer == 4'd1) |
if(global_counter_transfer < 4'd3) |
begin |
txdata_flagctrl_tx_last <= tx_data_in; |
ready_tx_data <= 1'b1; |
end |
else |
txdata_flagctrl_tx_last <= txdata_flagctrl_tx_last; |
begin |
fct_sent <= 1'b0; |
ready_tx_data <= 1'b0; |
|
if(global_counter_transfer == 4'd3) |
begin |
txdata_flagctrl_tx_last <= tx_data_in; |
end |
else |
txdata_flagctrl_tx_last <= txdata_flagctrl_tx_last; |
|
if(global_counter_transfer >= 4'd2 && global_counter_transfer < 4'd5) |
if(txwrite_tx) |
begin |
tx_data_in_0 <= data_tx_i; |
process_data_0 <= 1'b1; |
end |
else |
begin |
tx_data_in_0 <= tx_data_in_0; |
process_data_0 <= 1'b0; |
end |
end |
|
process_data <= 1'b0; |
char_sent <= 1'b0; |
ready_tx_timecode <= 1'b0; |
global_counter_transfer <= global_counter_transfer + 4'd1; |
|
end |
|
end |
else if(tx_data_in[8]) |
begin |
|
if(global_counter_transfer == 4'd3) |
begin |
char_sent <= 1'b1; |
fct_sent <= 1'b0; |
if(tx_data_in[1:0] == 2'b00) |
begin |
last_type <=EOP; |
end |
else if(tx_data_in[1:0] == 2'b01) |
begin |
last_type <=EEP; |
end |
|
ready_tx_data <= 1'b0; |
global_counter_transfer <= 4'd0; |
end |
else |
begin |
fct_sent <= 1'b0; |
char_sent <= 1'b0; |
process_data <= 1'b0; |
process_data_0 <= 1'b0; |
txdata_flagctrl_tx_last <= txdata_flagctrl_tx_last; |
ready_tx_data <= 1'b1; |
ready_tx_timecode <= 1'b0; |
global_counter_transfer <= global_counter_transfer + 4'd1; |
end |
end |
|
end |
tx_spw_data_c_0: |
begin |
|
last_tx_dout <= tx_dout; |
last_tx_sout <= tx_sout; |
|
tx_dout_e <= tx_dout; |
tx_sout_e <= tx_sout; |
|
if(!tx_data_in_0[8]) |
begin |
|
if(global_counter_transfer == 4'd9) |
begin |
fct_sent <= 1'b0; |
char_sent <= 1'b1; |
last_type <= DATA; |
global_counter_transfer <= 4'd0; |
end |
else |
begin |
|
if(global_counter_transfer < 4'd3) |
begin |
ready_tx_data <= 1'b1; |
end |
else |
begin |
ready_tx_data <= 1'b0; |
|
if(global_counter_transfer == 4'd3) |
begin |
txdata_flagctrl_tx_last <= tx_data_in_0; |
end |
else |
txdata_flagctrl_tx_last <= txdata_flagctrl_tx_last; |
|
if(txwrite_tx) |
begin |
tx_data_in <= data_tx_i; |
process_data <= 1'b1; |
end |
else |
begin |
tx_data_in <= tx_data_in; |
process_data <= 1'b0; |
end |
end |
|
fct_sent <= 1'b0; |
process_data_0 <= 1'b0; |
char_sent <= 1'b0; |
ready_tx_timecode <= 1'b0; |
global_counter_transfer <= global_counter_transfer + 4'd1; |
1187,18 → 1390,19
end |
|
end |
else if(tx_data_in[8]) |
else if(tx_data_in_0[8]) |
begin |
|
if(global_counter_transfer == 4'd3) |
begin |
fct_sent <= 1'b0; |
char_sent <= 1'b1; |
|
if(tx_data_in[1:0] == 2'b00) |
if(tx_data_in_0[1:0] == 2'b00) |
begin |
last_type <=EOP; |
end |
else if(tx_data_in[1:0] == 2'b01) |
else if(tx_data_in_0[1:0] == 2'b01) |
begin |
last_type <=EEP; |
end |
1208,9 → 1412,13
end |
else |
begin |
fct_sent <= 1'b0; |
process_data <= 1'b0; |
process_data_0 <= 1'b0; |
txdata_flagctrl_tx_last <= txdata_flagctrl_tx_last; |
ready_tx_data <= 1'b1; |
ready_tx_timecode <= 1'b0; |
char_sent <= 1'b0; |
global_counter_transfer <= global_counter_transfer + 4'd1; |
end |
end |
1218,22 → 1426,43
end |
tx_spw_time_code_c: |
begin |
|
fct_sent <= 1'b0; |
|
|
last_tx_dout <= tx_dout; |
last_tx_sout <= tx_sout; |
|
tx_dout_e <= last_tx_dout; |
tx_sout_e <= last_tx_sout; |
|
tx_dout_e <= tx_dout; |
tx_sout_e <= tx_sout; |
|
|
if(global_counter_transfer == 4'd13) |
begin |
fct_sent <= 1'b0; |
ready_tx_timecode <= 1'b1; |
global_counter_transfer <= 4'd0; |
end |
else |
begin |
if(process_data_0) |
begin |
|
process_data_0 <= process_data_0; |
end |
else |
begin |
if(txwrite_tx) |
begin |
tx_data_in <= data_tx_i; |
process_data <= 1'b1; |
end |
else |
begin |
tx_data_in <= tx_data_in; |
process_data <= 1'b0; |
end |
process_data_0 <= 1'b0; |
end |
fct_sent <= 1'b0; |
char_sent <= 1'b0; |
ready_tx_timecode <= 1'b0; |
global_counter_transfer <= global_counter_transfer + 4'd1; |
end |
1253,6 → 1482,8
end |
default: |
begin |
fct_sent <= 1'b0; |
char_sent <= 1'b0; |
last_type <= last_type; |
global_counter_transfer <= global_counter_transfer; |
tx_dout_e <= tx_dout_e; |