Files
MM7020/hdl/TSync_Abs_new16.v

890 lines
22 KiB
Verilog
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
`timescale 1ns / 1ns
//////////////////////////////////////////////////////////////////////////////////
// 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