890 lines
22 KiB
Verilog
890 lines
22 KiB
Verilog
`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
|