`timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: // // Create Date: 2019/11/18 21:03:55 // Design Name: // Module Name: TSync_Abs_new16 // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // ////////////////////////////////////////////////////////////////////////////////// //4倍过采样内插至16 //帧内不更新 module TSync_Abs_new16( input clk, input rst, input framesync_Interpolation, output reg framesync_out16 = 1'd0, input [9:0] datain1_i, input [9:0] datain1_q, input [9:0] datain2_i, input [9:0] datain2_q, input [9:0] datain3_i, input [9:0] datain3_q, input [9:0] datain4_i, input [9:0] datain4_q, output reg TSyncout_nd = 1'd0, output reg [9:0] TSyncout_i = 10'd0, output reg [9:0] TSyncout_q = 10'd0, //debug output reg [1:0] cnt = 2'd0, //12.5 output reg [1:0] flag_clk16 = 2'd0, //12.5 output reg [1:0] flag_num16 = 2'd0 ); //-------------------------------------状态机控制----------------------------------------------// // reg [3:0] cnt = 4'd0; reg nd_1 = 1'd0; reg flag_framesync = 1'd0; // reg [3:0] flag_clk = 4'd0; // reg [1:0] flag_num = 2'd0; always @(posedge clk)begin if(rst)begin cnt <= 2'd3; nd_1 <= 1'd0; TSyncout_nd <= 1'd0; TSyncout_i <= 10'd0; TSyncout_q <= 10'd0; flag_framesync <= 1'd0; framesync_out16 <= 1'd0; end else begin cnt <= cnt + 2'd1; if(cnt == 2'd3) nd_1 <= 1'd1; else nd_1 <= 1'd0; if(framesync_Interpolation) begin if(cnt == flag_clk16) begin framesync_out16 <= 1'd1; TSyncout_nd <= 1'd1; case(flag_num16) 2'd0:begin TSyncout_i <= datain1_i; TSyncout_q <= datain1_q; end 2'd1:begin TSyncout_i <= datain2_i; TSyncout_q <= datain2_q; end 2'd2:begin TSyncout_i <= datain3_i; TSyncout_q <= datain3_q; end 2'd3:begin TSyncout_i <= datain4_i; TSyncout_q <= datain4_q; end endcase flag_framesync <= 1'd0; end else begin framesync_out16 <= 1'd0; TSyncout_nd <= 1'd0; flag_framesync <= 1'd1; end end else begin framesync_out16 <= 1'd0; flag_framesync <= 1'd0; TSyncout_nd <= 1'd0; TSyncout_i <= 10'd0; TSyncout_q <= 10'd0; end end end //---------------------------------------求近似模值Abs,delay=6-------------------------------------// wire [10:0] data_1; ApproxAbs_v2 ApproxAbs_v2_tsync1 ( .clk (clk), .ND (1'd1), .Din_I (datain1_i), .Din_Q (datain1_q), .Dout (data_1), .Rdy () ); wire [10:0] data_2; ApproxAbs_v2 ApproxAbs_v2_tsync2 ( .clk (clk), .ND (1'd1), .Din_I (datain2_i), .Din_Q (datain2_q), .Dout (data_2), .Rdy () ); wire [10:0] data_3; ApproxAbs_v2 ApproxAbs_v2_tsync3 ( .clk (clk), .ND (1'd1), .Din_I (datain3_i), .Din_Q (datain3_q), .Dout (data_3), .Rdy () ); wire [10:0] data_4; ApproxAbs_v2 ApproxAbs_v2_tsync4 ( .clk (clk), .ND (1'd1), .Din_I (datain4_i), .Din_Q (datain4_q), .Dout (data_4), .Rdy () ); reg nd_2 = 1'd0; reg nd_3 = 1'd0; reg nd_4 = 1'd0; reg nd_5 = 1'd0; reg nd_6 = 1'd0; reg nd_7 = 1'd0; always @(posedge clk)begin nd_2 <= nd_1; nd_3 <= nd_2; nd_4 <= nd_3; nd_5 <= nd_4; nd_6 <= nd_5; nd_7 <= nd_6; end //-------------------------------------累加,delay=1-------------------------------------------------// reg [19:0] acc_01 = 20'd0; reg [19:0] acc_02 = 20'd0; reg [19:0] acc_03 = 20'd0; reg [19:0] acc_04 = 20'd0; reg [19:0] acc_05 = 20'd0; reg [19:0] acc_06 = 20'd0; reg [19:0] acc_07 = 20'd0; reg [19:0] acc_08 = 20'd0; reg [19:0] acc_09 = 20'd0; reg [19:0] acc_10 = 20'd0; reg [19:0] acc_11 = 20'd0; reg [19:0] acc_12 = 20'd0; reg [19:0] acc_13 = 20'd0; reg [19:0] acc_14 = 20'd0; reg [19:0] acc_15 = 20'd0; reg [19:0] acc_16 = 20'd0; reg [1:0] cnt_4 =2'd0; reg nd_acc = 1'd0; reg nd_flag = 1'd0; reg flag_cnt_0 = 1'd0; reg [5:0] cnt_64 = 6'd0; reg [6:0] cnt_128 = 7'd0; reg [7:0] cnt_256 = 8'd0; reg [8:0] cnt_512 = 9'd0; reg [9:0] cnt_1024 = 10'd0; reg [2:0] state_tsync4 = 3'd0; always @(posedge clk)begin if(rst)begin acc_01 <= 20'd0; acc_02 <= 20'd0; acc_03 <= 20'd0; acc_04 <= 20'd0; acc_05 <= 20'd0; acc_06 <= 20'd0; acc_07 <= 20'd0; acc_08 <= 20'd0; acc_09 <= 20'd0; acc_10 <= 20'd0; acc_11 <= 20'd0; acc_12 <= 20'd0; acc_13 <= 20'd0; acc_14 <= 20'd0; acc_15 <= 20'd0; acc_16 <= 20'd0; cnt_4 <= 2'd3; nd_acc <= 1'd0; nd_flag<= 1'd0; cnt_64 <= 6'd0; cnt_128 <= 7'd0; cnt_256 <= 8'd0; cnt_512 <= 9'd0; cnt_1024 <= 10'd0; flag_cnt_0 <= 1'd0; state_tsync4 <= 3'd0; end else begin if(nd_6) cnt_4 <= 4'd0; else cnt_4 <= cnt_4 + 4'd1; if (nd_6) nd_flag <= 1'd1; else nd_flag <= nd_flag; case(state_tsync4) //等待第一次的数据幅值估计结果(与nd_7对齐) 3'd0:begin if(nd_6) state_tsync4 <= 3'd1; else state_tsync4 <= state_tsync4; end //此clk内nd_7、第一次的数据幅值估计结果同时到来,cnt_4结果为4'd0。 //累积,直到最后一个累积结束后转至下一状态 3'd1:begin if(cnt_4==2'd3) begin cnt_64 <=cnt_64 +6'd1; cnt_128 <=cnt_128 +7'd1; cnt_256 <=cnt_256 +8'd1; cnt_512 <=cnt_512 +9'd1; cnt_1024 <=cnt_1024 +10'd1; if(cnt_512==9'd511) flag_cnt_0 <= 1'd1; else flag_cnt_0 <= 1'd0; end else begin cnt_64 <= cnt_64; cnt_128 <= cnt_128 ; cnt_256 <= cnt_256 ; cnt_512 <= cnt_512 ; cnt_1024 <= cnt_1024; flag_cnt_0 <= 1'd0; end if(cnt_512==9'd0) begin case(cnt_4) 2'd0:begin acc_01 <= {9'd0,data_1}; acc_02 <= {9'd0,data_2}; acc_03 <= {9'd0,data_3}; acc_04 <= {9'd0,data_4}; nd_acc <= 1'd0; end 2'd1:begin acc_05 <= {9'd0,data_1}; acc_06 <= {9'd0,data_2}; acc_07 <= {9'd0,data_3}; acc_08 <= {9'd0,data_4}; nd_acc <= 1'd0; end 2'd2:begin acc_09 <= {9'd0,data_1}; acc_10 <= {9'd0,data_2}; acc_11 <= {9'd0,data_3}; acc_12 <= {9'd0,data_4}; nd_acc <= 1'd0; end 2'd3:begin acc_13 <= {9'd0,data_1}; acc_14 <= {9'd0,data_2}; acc_15 <= {9'd0,data_3}; acc_16 <= {9'd0,data_4}; nd_acc <= 1'd1; end endcase end else begin case(cnt_4) 2'd0:begin acc_01 <= acc_01 + {9'd0,data_1}; acc_02 <= acc_02 + {9'd0,data_2}; acc_03 <= acc_03 + {9'd0,data_3}; acc_04 <= acc_04 + {9'd0,data_4}; nd_acc <= 1'd0; end 2'd1:begin acc_05 <= acc_05 + {9'd0,data_1}; acc_06 <= acc_06 + {9'd0,data_2}; acc_07 <= acc_07 + {9'd0,data_3}; acc_08 <= acc_08 + {9'd0,data_4}; nd_acc <= 1'd0; end 2'd2:begin acc_09 <= acc_09 + {9'd0,data_1}; acc_10 <= acc_10 + {9'd0,data_2}; acc_11 <= acc_11 + {9'd0,data_3}; acc_12 <= acc_12 + {9'd0,data_4}; nd_acc <= 1'd0; end 2'd3:begin acc_13 <= acc_13 + {9'd0,data_1}; acc_14 <= acc_14 + {9'd0,data_2}; acc_15 <= acc_15 + {9'd0,data_3}; acc_16 <= acc_16 + {9'd0,data_4}; nd_acc <= 1'd1; end endcase end if(cnt_512==9'd511&&cnt_4==2'd3) state_tsync4 <= 3'd2; else state_tsync4 <= state_tsync4; end 3'd2:begin state_tsync4 <= state_tsync4; flag_cnt_0 <= 1'd0; end default:state_tsync4 <= 3'd0; endcase end end //---------------------------------------排序找最大值,delay=3-------------------------------------------------// reg [19:0] temp_1_01 = 20'd0; reg [19:0] temp_1_02 = 20'd0; reg [19:0] temp_1_03 = 20'd0; reg [19:0] temp_1_04 = 20'd0; reg [19:0] temp_1_05 = 20'd0; reg [19:0] temp_1_06 = 20'd0; reg [19:0] temp_1_07 = 20'd0; reg [19:0] temp_1_08 = 20'd0; reg [1:0] flag_clk_1_01 =2'd0; reg [1:0] flag_clk_1_02 =2'd0; reg [1:0] flag_clk_1_03 =2'd0; reg [1:0] flag_clk_1_04 =2'd0; reg [1:0] flag_clk_1_05 =2'd0; reg [1:0] flag_clk_1_06 =2'd0; reg [1:0] flag_clk_1_07 =2'd0; reg [1:0] flag_clk_1_08 =2'd0; reg [1:0] flag_num_1_01 =2'd0; reg [1:0] flag_num_1_02 =2'd0; reg [1:0] flag_num_1_03 =2'd0; reg [1:0] flag_num_1_04 =2'd0; reg [1:0] flag_num_1_05 =2'd0; reg [1:0] flag_num_1_06 =2'd0; reg [1:0] flag_num_1_07 =2'd0; reg [1:0] flag_num_1_08 =2'd0; reg nd_acc1 = 1'd0; //ila用 reg [19:0] acc_01_reg = 20'd0; reg [19:0] acc_02_reg = 20'd0; reg [19:0] acc_03_reg = 20'd0; reg [19:0] acc_04_reg = 20'd0; reg [19:0] acc_05_reg = 20'd0; reg [19:0] acc_06_reg = 20'd0; reg [19:0] acc_07_reg = 20'd0; reg [19:0] acc_08_reg = 20'd0; reg [19:0] acc_09_reg = 20'd0; reg [19:0] acc_10_reg = 20'd0; reg [19:0] acc_11_reg = 20'd0; reg [19:0] acc_12_reg = 20'd0; reg [19:0] acc_13_reg = 20'd0; reg [19:0] acc_14_reg = 20'd0; reg [19:0] acc_15_reg = 20'd0; reg [19:0] acc_16_reg = 20'd0; always @(posedge clk)begin if(rst)begin temp_1_01 <= 20'd0; temp_1_02 <= 20'd0; temp_1_03 <= 20'd0; temp_1_04 <= 20'd0; temp_1_05 <= 20'd0; temp_1_06 <= 20'd0; temp_1_07 <= 20'd0; temp_1_08 <= 20'd0; flag_clk_1_01 <=2'd0; flag_clk_1_02 <=2'd0; flag_clk_1_03 <=2'd0; flag_clk_1_04 <=2'd0; flag_clk_1_05 <=2'd0; flag_clk_1_06 <=2'd0; flag_clk_1_07 <=2'd0; flag_clk_1_08 <=2'd0; flag_num_1_01 <=2'd0; flag_num_1_02 <=2'd0; flag_num_1_03 <=2'd0; flag_num_1_04 <=2'd0; flag_num_1_05 <=2'd0; flag_num_1_06 <=2'd0; flag_num_1_07 <=2'd0; flag_num_1_08 <=2'd0; nd_acc1 <= 1'd0; //ila用 acc_01_reg <= 20'd0; acc_02_reg <= 20'd0; acc_03_reg <= 20'd0; acc_04_reg <= 20'd0; acc_05_reg <= 20'd0; acc_06_reg <= 20'd0; acc_07_reg <= 20'd0; acc_08_reg <= 20'd0; acc_09_reg <= 20'd0; acc_10_reg <= 20'd0; acc_11_reg <= 20'd0; acc_12_reg <= 20'd0; acc_13_reg <= 20'd0; acc_14_reg <= 20'd0; acc_15_reg <= 20'd0; acc_16_reg <= 20'd0; end else begin if(nd_acc&&flag_cnt_0) begin nd_acc1 <= 1'd1; //ila用 acc_01_reg <= acc_01; acc_02_reg <= acc_02; acc_03_reg <= acc_03; acc_04_reg <= acc_04; acc_05_reg <= acc_05; acc_06_reg <= acc_06; acc_07_reg <= acc_07; acc_08_reg <= acc_08; acc_09_reg <= acc_09; acc_10_reg <= acc_10; acc_11_reg <= acc_11; acc_12_reg <= acc_12; acc_13_reg <= acc_13; acc_14_reg <= acc_14; acc_15_reg <= acc_15; acc_16_reg <= acc_16; //ila用 if(acc_01>=acc_02) begin temp_1_01 <= acc_01; flag_clk_1_01 <= 2'd0; flag_num_1_01 <= 2'd0; end else begin temp_1_01 <= acc_02; flag_clk_1_01 <= 2'd0; flag_num_1_01 <= 2'd1; end if(acc_03>=acc_04) begin temp_1_02 <= acc_03; flag_clk_1_02 <= 2'd0; flag_num_1_02 <= 2'd2; end else begin temp_1_02 <= acc_04; flag_clk_1_02 <= 2'd0; flag_num_1_02 <= 2'd3; end if(acc_05>=acc_06) begin temp_1_03 <= acc_05; flag_clk_1_03 <= 2'd1; flag_num_1_03 <= 2'd0; end else begin temp_1_03 <= acc_06; flag_clk_1_03 <= 2'd1; flag_num_1_03 <= 2'd1; end if(acc_07>=acc_08) begin temp_1_04 <= acc_07; flag_clk_1_04 <= 2'd1; flag_num_1_04 <= 2'd2; end else begin temp_1_04 <= acc_08; flag_clk_1_04 <= 2'd1; flag_num_1_04 <= 2'd3; end if(acc_09>=acc_10) begin temp_1_05 <= acc_09; flag_clk_1_05 <= 2'd2; flag_num_1_05 <= 2'd0; end else begin temp_1_05 <= acc_10; flag_clk_1_05 <= 2'd2; flag_num_1_05 <= 2'd1; end if(acc_11>=acc_12) begin temp_1_06 <= acc_11; flag_clk_1_06 <= 2'd2; flag_num_1_06 <= 2'd2; end else begin temp_1_06 <= acc_12; flag_clk_1_06 <= 2'd2; flag_num_1_06 <= 2'd3; end if(acc_13>=acc_14) begin temp_1_07 <= acc_13; flag_clk_1_07 <= 2'd3; flag_num_1_07 <= 2'd0; end else begin temp_1_07 <= acc_14; flag_clk_1_07 <= 2'd3; flag_num_1_07 <= 2'd1; end if(acc_15>=acc_16) begin temp_1_08 <= acc_15; flag_clk_1_08 <= 2'd3; flag_num_1_08 <= 2'd2; end else begin temp_1_08 <= acc_16; flag_clk_1_08 <= 2'd3; flag_num_1_08 <= 2'd3; end end else nd_acc1 <= 1'd0; end end reg [19:0] temp_2_01 = 20'd0; reg [19:0] temp_2_02 = 20'd0; reg [19:0] temp_2_03 = 20'd0; reg [19:0] temp_2_04 = 20'd0; reg [1:0] flag_clk_2_01 = 2'd0; reg [1:0] flag_clk_2_02 = 2'd0; reg [1:0] flag_clk_2_03 = 2'd0; reg [1:0] flag_clk_2_04 = 2'd0; reg [1:0] flag_num_2_01 = 2'd0; reg [1:0] flag_num_2_02 = 2'd0; reg [1:0] flag_num_2_03 = 2'd0; reg [1:0] flag_num_2_04 = 2'd0; reg nd_acc2 = 1'd0; always @(posedge clk)begin if(rst)begin temp_2_01 <= 20'd0; temp_2_02 <= 20'd0; temp_2_03 <= 20'd0; temp_2_04 <= 20'd0; flag_clk_2_01 <= 2'd0; flag_clk_2_02 <= 2'd0; flag_clk_2_03 <= 2'd0; flag_clk_2_04 <= 2'd0; flag_num_2_01 <= 2'd0; flag_num_2_02 <= 2'd0; flag_num_2_03 <= 2'd0; flag_num_2_04 <= 2'd0; nd_acc2 <= 1'd0; end else begin nd_acc2 <= nd_acc1; if(nd_acc1) begin if(temp_1_01>=temp_1_02) begin temp_2_01 <= temp_1_01; flag_clk_2_01 <= flag_clk_1_01; flag_num_2_01 <= flag_num_1_01; end else begin temp_2_01 <= temp_1_02; flag_clk_2_01 <= flag_clk_1_02; flag_num_2_01 <= flag_num_1_02; end if(temp_1_03>=temp_1_04) begin temp_2_02 <= temp_1_03; flag_clk_2_02 <= flag_clk_1_03; flag_num_2_02 <= flag_num_1_03; end else begin temp_2_02 <= temp_1_04; flag_clk_2_02 <= flag_clk_1_04; flag_num_2_02 <= flag_num_1_04; end if(temp_1_05>=temp_1_06) begin temp_2_03 <= temp_1_05; flag_clk_2_03 <= flag_clk_1_05; flag_num_2_03 <= flag_num_1_05; end else begin temp_2_03 <= temp_1_06; flag_clk_2_03 <= flag_clk_1_06; flag_num_2_03 <= flag_num_1_06; end if(temp_1_07>=temp_1_08) begin temp_2_04 <= temp_1_07; flag_clk_2_04 <= flag_clk_1_07; flag_num_2_04 <= flag_num_1_07; end else begin temp_2_04 <= temp_1_08; flag_clk_2_04 <= flag_clk_1_08; flag_num_2_04 <= flag_num_1_08; end end end end reg [19:0] temp_3_1 = 20'd0; reg [19:0] temp_3_2 = 20'd0; reg [1:0] flag_clk_3_1 = 2'd0; reg [1:0] flag_clk_3_2 = 2'd0; reg [1:0] flag_num_3_1 = 2'd0; reg [1:0] flag_num_3_2 = 2'd0; reg nd_acc3 = 1'd0; always @(posedge clk)begin if(rst)begin temp_3_1 <= 20'd0; temp_3_2 <= 20'd0; flag_clk_3_1 <= 2'd0; flag_clk_3_2 <= 2'd0; flag_num_3_1 <= 2'd0; flag_num_3_2 <= 2'd0; nd_acc3 <= 1'd0; end else begin nd_acc3 <= nd_acc2; if(nd_acc2) begin if(temp_2_01>=temp_2_02) begin temp_3_1 <= temp_2_01; flag_clk_3_1 <= flag_clk_2_01; flag_num_3_1 <= flag_num_2_01; end else begin temp_3_1 <= temp_2_02; flag_clk_3_1 <= flag_clk_2_02; flag_num_3_1 <= flag_num_2_02; end if(temp_2_03>=temp_2_04) begin temp_3_2 <= temp_2_03; flag_clk_3_2 <= flag_clk_2_03; flag_num_3_2 <= flag_num_2_03; end else begin temp_3_2 <= temp_2_04; flag_clk_3_2 <= flag_clk_2_04; flag_num_3_2 <= flag_num_2_04; end end end end //----------------------------------------------------给采样标志,delay=1--------------------------------------// reg nd_acc4 = 1'd0; always @(posedge clk)begin if(rst)begin flag_clk16 <= 2'd0; nd_acc4 <= 1'd0; end else begin nd_acc4 <= nd_acc3; if(nd_acc3) begin if(temp_3_1>=temp_3_2) begin flag_clk16 <= flag_clk_3_1; flag_num16 <= flag_num_3_1; end else begin flag_clk16 <= flag_clk_3_2; flag_num16 <= flag_num_3_2; end end end end //ila用 // reg [6:0] state_check = 7'd0; // always @(posedge clk)begin // if(rst)begin // state_check <= 7'd0; // flag_TSync_check<= 1'd0; // cnt_tsync_shixu <= 4'd0; // flag_tongdao <= 1'd0; // acc_tsync <= 20'd0; // num_tsync <= num_tsync; // end // else begin // case(state_check) // 7'd0:begin // if(nd_acc4) begin // flag_TSync_check<= 1'd0; // state_check <= 7'd1; // end // else begin // flag_TSync_check<= 1'd0; // state_check <= state_check; // end // cnt_tsync_shixu <= 4'd0; // flag_tongdao <= 1'd0; // acc_tsync <= acc_tsync; // num_tsync <= num_tsync; // end // 7'd1:begin // if(flag_save) begin // flag_TSync_check<= 1'd0; // state_check <= 7'd2; // end // else begin // flag_TSync_check<= 1'd0; // state_check <= state_check; // end // cnt_tsync_shixu <= 4'd1 + cnt_tsync_shixu; // flag_tongdao <= 1'd0; // acc_tsync <= acc_tsync; // num_tsync <= num_tsync; // end // 7'd2:begin // if(cnt==2'd3) begin // flag_TSync_check<= 1'd1; // state_check <= 7'd3; // end // else begin // flag_TSync_check<= 1'd0; // state_check <= state_check; // end // cnt_tsync_shixu <= 4'd1 + cnt_tsync_shixu; // flag_tongdao <= 1'd0; // acc_tsync <= acc_tsync; // num_tsync <= num_tsync; // end // 7'd03:begin acc_tsync <= acc_01_reg; num_tsync <= 6'd00; flag_tongdao <= 1'd1; flag_TSync_check<= 1'd0; cnt_tsync_shixu <= 4'd0; state_check <=7'd04; end // 7'd04:begin acc_tsync <= acc_02_reg; num_tsync <= 6'd01; flag_tongdao <= 1'd1; flag_TSync_check<= 1'd0; cnt_tsync_shixu <= 4'd0; state_check <=7'd05; end // 7'd05:begin acc_tsync <= acc_03_reg; num_tsync <= 6'd02; flag_tongdao <= 1'd1; flag_TSync_check<= 1'd0; cnt_tsync_shixu <= 4'd0; state_check <=7'd06; end // 7'd06:begin acc_tsync <= acc_04_reg; num_tsync <= 6'd03; flag_tongdao <= 1'd1; flag_TSync_check<= 1'd0; cnt_tsync_shixu <= 4'd0; state_check <=7'd07; end // 7'd07:begin acc_tsync <= acc_05_reg; num_tsync <= 6'd04; flag_tongdao <= 1'd1; flag_TSync_check<= 1'd0; cnt_tsync_shixu <= 4'd0; state_check <=7'd08; end // 7'd08:begin acc_tsync <= acc_06_reg; num_tsync <= 6'd05; flag_tongdao <= 1'd1; flag_TSync_check<= 1'd0; cnt_tsync_shixu <= 4'd0; state_check <=7'd09; end // 7'd09:begin acc_tsync <= acc_07_reg; num_tsync <= 6'd06; flag_tongdao <= 1'd1; flag_TSync_check<= 1'd0; cnt_tsync_shixu <= 4'd0; state_check <=7'd10; end // 7'd10:begin acc_tsync <= acc_08_reg; num_tsync <= 6'd07; flag_tongdao <= 1'd1; flag_TSync_check<= 1'd0; cnt_tsync_shixu <= 4'd0; state_check <=7'd11; end // 7'd11:begin acc_tsync <= acc_09_reg; num_tsync <= 6'd08; flag_tongdao <= 1'd1; flag_TSync_check<= 1'd0; cnt_tsync_shixu <= 4'd0; state_check <=7'd12; end // 7'd12:begin acc_tsync <= acc_10_reg; num_tsync <= 6'd09; flag_tongdao <= 1'd1; flag_TSync_check<= 1'd0; cnt_tsync_shixu <= 4'd0; state_check <=7'd13; end // 7'd13:begin acc_tsync <= acc_11_reg; num_tsync <= 6'd10; flag_tongdao <= 1'd1; flag_TSync_check<= 1'd0; cnt_tsync_shixu <= 4'd0; state_check <=7'd14; end // 7'd14:begin acc_tsync <= acc_12_reg; num_tsync <= 6'd11; flag_tongdao <= 1'd1; flag_TSync_check<= 1'd0; cnt_tsync_shixu <= 4'd0; state_check <=7'd15; end // 7'd15:begin acc_tsync <= acc_13_reg; num_tsync <= 6'd12; flag_tongdao <= 1'd1; flag_TSync_check<= 1'd0; cnt_tsync_shixu <= 4'd0; state_check <=7'd16; end // 7'd16:begin acc_tsync <= acc_14_reg; num_tsync <= 6'd13; flag_tongdao <= 1'd1; flag_TSync_check<= 1'd0; cnt_tsync_shixu <= 4'd0; state_check <=7'd17; end // 7'd17:begin acc_tsync <= acc_15_reg; num_tsync <= 6'd14; flag_tongdao <= 1'd1; flag_TSync_check<= 1'd0; cnt_tsync_shixu <= 4'd0; state_check <=7'd18; end // 7'd18:begin acc_tsync <= acc_16_reg; num_tsync <= 6'd15; flag_tongdao <= 1'd1; flag_TSync_check<= 1'd0; cnt_tsync_shixu <= 4'd0; state_check <=7'd0; end // endcase // end // end // integer handle01; // integer handle02; // reg enable = 0; // initial begin // handle01=$fopen("TSyncout_i.txt","w"); $fclose(handle01); // handle02=$fopen("TSyncout_q.txt","w"); $fclose(handle02); // #10; // enable = 1; // end // always@(posedge clk)begin // if(enable)begin // if(TSyncout_nd)begin // handle01=$fopen("TSyncout_i.txt","a+");$fwrite(handle01,"%d\n",$signed(TSyncout_i));$fclose(handle01); // handle02=$fopen("TSyncout_q.txt","a+");$fwrite(handle02,"%d\n",$signed(TSyncout_q));$fclose(handle02); // end // end // end integer handle01; integer handle02; integer handle03; integer handle04; reg enable1 = 0; reg flag_save = 0; initial begin handle01=$fopen("data_1.txt","w"); $fclose(handle01); handle02=$fopen("data_2.txt","w"); $fclose(handle02); handle03=$fopen("data_3.txt","w"); $fclose(handle03); handle04=$fopen("data_4.txt","w"); $fclose(handle04); #10; enable1 = 1; end always@(posedge clk)begin if(enable1)begin if(nd_6) flag_save <= 1'd1; else flag_save <= flag_save; if(flag_save) begin handle01=$fopen("data_1.txt","a+");$fwrite(handle01,"%d\n",$signed(data_1));$fclose(handle01); handle02=$fopen("data_2.txt","a+");$fwrite(handle02,"%d\n",$signed(data_2));$fclose(handle02); handle03=$fopen("data_3.txt","a+");$fwrite(handle03,"%d\n",$signed(data_3));$fclose(handle03); handle04=$fopen("data_4.txt","a+");$fwrite(handle04,"%d\n",$signed(data_4));$fclose(handle04); end end end endmodule