387 lines
19 KiB
Verilog
387 lines
19 KiB
Verilog
`timescale 1ns / 1ns
|
|
//////////////////////////////////////////////////////////////////////////////////
|
|
// Company:
|
|
// Engineer:
|
|
//
|
|
// Create Date: 2019/11/18 23:18:07
|
|
// Design Name:
|
|
// Module Name: CK_PRO
|
|
// Project Name:
|
|
// Target Devices:
|
|
// Tool Versions:
|
|
// Description:
|
|
//
|
|
// Dependencies:
|
|
//
|
|
// Revision:
|
|
// Revision 0.01 - File Created
|
|
// Additional Comments:
|
|
//
|
|
//////////////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
module CK_PRO
|
|
#(
|
|
parameter Index_p1_row_01_dec_01_01=0, Index_p1_row_01_dec_02_01=0,
|
|
parameter Index_p1_row_02_dec_02_01=0, Index_p1_row_02_dec_03_01=0,
|
|
parameter Index_p1_row_03_dec_03_01=0, Index_p1_row_03_dec_04_01=0,
|
|
parameter Index_p1_row_04_dec_04_01=0, Index_p1_row_04_dec_01_01=112,
|
|
|
|
parameter Index_p2_row_01_dec_05_01=0, Index_p2_row_01_dec_05_02=25, Index_p2_row_01_dec_08_01=31,Index_p2_row_01_dec_07_01=39,
|
|
parameter Index_p2_row_02_dec_06_01=0, Index_p2_row_02_dec_06_02=75, Index_p2_row_02_dec_05_01=23,Index_p2_row_02_dec_08_01=16,
|
|
parameter Index_p2_row_03_dec_07_01=0, Index_p2_row_03_dec_07_02=120,Index_p2_row_03_dec_06_01=54,Index_p2_row_03_dec_05_01=0,
|
|
parameter Index_p2_row_04_dec_08_01=0, Index_p2_row_04_dec_08_02=93, Index_p2_row_04_dec_07_01=9, Index_p2_row_04_dec_06_01=83,
|
|
|
|
parameter Index_p3_row_01_dec_09_01=0, Index_p3_row_01_dec_09_02=13, Index_p3_row_01_dec_11_01=97, Index_p3_row_01_dec_10_01=0, Index_p3_row_01_dec_12_01=34,
|
|
parameter Index_p3_row_02_dec_10_01=0, Index_p3_row_02_dec_10_02=69, Index_p3_row_02_dec_12_01=64, Index_p3_row_02_dec_11_01=6, Index_p3_row_02_dec_09_01=98,
|
|
parameter Index_p3_row_03_dec_11_01=0, Index_p3_row_03_dec_11_02=127,Index_p3_row_03_dec_09_01=78, Index_p3_row_03_dec_12_01=35, Index_p3_row_03_dec_10_01=26,
|
|
parameter Index_p3_row_04_dec_12_01=0, Index_p3_row_04_dec_12_02=29, Index_p3_row_04_dec_10_01=81, Index_p3_row_04_dec_09_01=99, Index_p3_row_04_dec_11_01=59
|
|
)
|
|
(
|
|
input clk,
|
|
input rst_OUTCK,
|
|
input start_OUTCK,
|
|
input nd_OUTCK,
|
|
input [0:0] DR_din_01,
|
|
input [0:0] DR_din_02,
|
|
input [0:0] DR_din_03,
|
|
input [0:0] DR_din_04,
|
|
input [0:0] DR_din_05,
|
|
|
|
output reg [8:0] gd_frames=9'd0,//译码好帧计数
|
|
output reg [8:0] bd_frames=9'd0,//译码坏帧计数
|
|
output reg [8:0] tl_frames=9'd0 //译码总帧数计数
|
|
);
|
|
|
|
reg [127:0] dec_01 = 128'd0, dec_02 = 128'd0, dec_03 = 128'd0, dec_04 = 128'd0;
|
|
reg [127:0] dec_05 = 128'd0, dec_06 = 128'd0, dec_07 = 128'd0, dec_08 = 128'd0;
|
|
reg [127:0] dec_09 = 128'd0, dec_10 = 128'd0, dec_11 = 128'd0, dec_12 = 128'd0;
|
|
reg [127:0] dec_01_d1 = 128'd0, dec_02_d1 = 128'd0, dec_03_d1 = 128'd0, dec_04_d1 = 128'd0;
|
|
reg [127:0] dec_05_d1 = 128'd0, dec_06_d1 = 128'd0, dec_07_d1 = 128'd0, dec_08_d1 = 128'd0;
|
|
reg [127:0] dec_09_d1 = 128'd0, dec_10_d1 = 128'd0, dec_11_d1 = 128'd0, dec_12_d1 = 128'd0;
|
|
|
|
reg [10:0] cnt_CK=11'd0;
|
|
reg deal_end=1'd0,deal_end_d1=1'd0,deal_end_d2=1'd0,deal_end_d3=1'd0,deal_end_d4=1'd0,deal_end_d5=1'd0,dec_proc=1'd0;
|
|
// 产生本模块的计数器
|
|
always @ (posedge clk) begin
|
|
if (rst_OUTCK) begin
|
|
dec_proc <= 1'd0;
|
|
cnt_CK <= 11'd0;
|
|
end else begin
|
|
if (start_OUTCK) begin
|
|
dec_proc <= 1'd1;
|
|
cnt_CK <= 11'd0;
|
|
end else begin
|
|
if (dec_proc) begin
|
|
if (cnt_CK < 11'd560) begin
|
|
cnt_CK <= cnt_CK + 11'd1;
|
|
dec_proc <= dec_proc;
|
|
end else begin
|
|
cnt_CK <= cnt_CK;
|
|
dec_proc <= 1'd0;
|
|
end
|
|
end else begin
|
|
cnt_CK <= cnt_CK;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
parameter DELAY_DIN = 11'd0;
|
|
always @ (posedge clk) begin
|
|
if (rst_OUTCK || start_OUTCK) begin
|
|
dec_01 <= 128'd0; dec_01_d1 <= 128'd0;
|
|
dec_02 <= 128'd0; dec_02_d1 <= 128'd0;
|
|
dec_03 <= 128'd0; dec_03_d1 <= 128'd0;
|
|
dec_04 <= 128'd0; dec_04_d1 <= 128'd0;
|
|
|
|
dec_05 <= 128'd0; dec_05_d1 <= 128'd0;
|
|
dec_06 <= 128'd0; dec_06_d1 <= 128'd0;
|
|
dec_07 <= 128'd0; dec_07_d1 <= 128'd0;
|
|
dec_08 <= 128'd0; dec_08_d1 <= 128'd0;
|
|
|
|
dec_09 <= 128'd0; dec_09_d1 <= 128'd0;
|
|
dec_10 <= 128'd0; dec_10_d1 <= 128'd0;
|
|
dec_11 <= 128'd0; dec_11_d1 <= 128'd0;
|
|
dec_12 <= 128'd0; dec_12_d1 <= 128'd0;
|
|
|
|
deal_end <= 1'd0;
|
|
end else begin
|
|
// 本来3行5列的H矩阵转置后变成5行3列
|
|
// 第1列(4*128=512)个校验子求解过程
|
|
if (cnt_CK >= 11'd1 + DELAY_DIN && cnt_CK < 11'd129 + DELAY_DIN) begin
|
|
dec_01[Index_p1_row_01_dec_01_01] <= DR_din_03 ^ DR_din_05;
|
|
dec_02[Index_p1_row_01_dec_02_01] <= DR_din_05;
|
|
end else if (cnt_CK >= 11'd129 + DELAY_DIN && cnt_CK < 11'd257 + DELAY_DIN) begin
|
|
dec_01[Index_p1_row_01_dec_01_01] <= 1'd0;
|
|
dec_02[Index_p1_row_02_dec_02_01] <= DR_din_03 ^ DR_din_05;
|
|
dec_03[Index_p1_row_02_dec_03_01] <= DR_din_05;
|
|
end else if (cnt_CK >= 11'd257 + DELAY_DIN && cnt_CK < 11'd385 + DELAY_DIN) begin
|
|
dec_03[Index_p1_row_03_dec_03_01] <= DR_din_03 ^ DR_din_05;
|
|
dec_04[Index_p1_row_03_dec_04_01] <= DR_din_05;
|
|
end else if (cnt_CK >= 11'd385 + DELAY_DIN && cnt_CK < 11'd513 + DELAY_DIN) begin
|
|
dec_04[Index_p1_row_04_dec_04_01] <= DR_din_03 ^ DR_din_05;
|
|
dec_01[Index_p1_row_04_dec_01_01] <= DR_din_05;
|
|
end else begin
|
|
dec_01 <= dec_01;
|
|
dec_02 <= dec_02;
|
|
dec_03 <= dec_03;
|
|
dec_04 <= dec_04;
|
|
end
|
|
|
|
if (cnt_CK >= 11'd2 + DELAY_DIN && cnt_CK < 11'd130 + DELAY_DIN) begin
|
|
dec_01_d1 <= {dec_01_d1[0],dec_01_d1[127:1]} ^ dec_01;
|
|
dec_02_d1 <= {dec_02_d1[0],dec_02_d1[127:1]} ^ dec_02;
|
|
end else if (cnt_CK >= 11'd130 + DELAY_DIN && cnt_CK < 11'd258 + DELAY_DIN) begin
|
|
dec_02_d1 <= {dec_02_d1[0],dec_02_d1[127:1]} ^ dec_02;
|
|
dec_03_d1 <= {dec_03_d1[0],dec_03_d1[127:1]} ^ dec_03;
|
|
end else if (cnt_CK >= 11'd258 + DELAY_DIN && cnt_CK < 11'd386 + DELAY_DIN) begin
|
|
dec_03_d1 <= {dec_03_d1[0],dec_03_d1[127:1]} ^ dec_03;
|
|
dec_04_d1 <= {dec_04_d1[0],dec_04_d1[127:1]} ^ dec_04;
|
|
end else if (cnt_CK >= 11'd386 + DELAY_DIN && cnt_CK < 11'd514 + DELAY_DIN) begin
|
|
dec_04_d1 <= {dec_04_d1[0],dec_04_d1[127:1]} ^ dec_04;
|
|
dec_01_d1 <= {dec_01_d1[0],dec_01_d1[127:1]} ^ dec_01;
|
|
end else if (cnt_CK == 11'd514 + DELAY_DIN) begin
|
|
dec_01_d1 <= {dec_01_d1[0],dec_01_d1[127:1]};
|
|
dec_02_d1 <= {dec_02_d1[0],dec_02_d1[127:1]};
|
|
dec_03_d1 <= {dec_03_d1[0],dec_03_d1[127:1]};
|
|
dec_04_d1 <= {dec_04_d1[0],dec_04_d1[127:1]};
|
|
end else begin
|
|
dec_01_d1 <= dec_01_d1;
|
|
dec_02_d1 <= dec_02_d1;
|
|
dec_03_d1 <= dec_03_d1;
|
|
dec_04_d1 <= dec_04_d1;
|
|
deal_end <= 1'd0;
|
|
end
|
|
|
|
|
|
|
|
// 第2列(4*128=512)个校验子求解过程
|
|
if (cnt_CK >= 11'd1 + DELAY_DIN && cnt_CK < 11'd129 + DELAY_DIN) begin
|
|
dec_05[Index_p2_row_01_dec_05_01] <= DR_din_01 ^ DR_din_02 ^ DR_din_04;
|
|
dec_05[Index_p2_row_01_dec_05_02] <= DR_din_05;
|
|
dec_08[Index_p2_row_01_dec_08_01] <= DR_din_05;
|
|
dec_07[Index_p2_row_01_dec_07_01] <= DR_din_05;
|
|
end else if (cnt_CK >= 11'd129 + DELAY_DIN && cnt_CK < 11'd257 + DELAY_DIN) begin
|
|
dec_06[Index_p2_row_02_dec_06_01] <= DR_din_01 ^ DR_din_02 ^ DR_din_04;
|
|
dec_06[Index_p2_row_02_dec_06_02] <= DR_din_05;
|
|
dec_05[Index_p2_row_02_dec_05_01] <= DR_din_05;
|
|
dec_05[Index_p2_row_01_dec_05_01] <= 1'd0;
|
|
dec_05[Index_p2_row_01_dec_05_02] <= 1'd0;
|
|
dec_08[Index_p2_row_02_dec_08_01] <= DR_din_05;
|
|
dec_08[Index_p2_row_01_dec_08_01] <= 1'd0;
|
|
dec_07[Index_p2_row_01_dec_07_01] <= 1'd0; //xhx
|
|
end else if (cnt_CK >= 11'd257 + DELAY_DIN && cnt_CK < 11'd385 + DELAY_DIN) begin
|
|
dec_07[Index_p2_row_03_dec_07_01] <= DR_din_01 ^ DR_din_02 ^ DR_din_04;
|
|
dec_07[Index_p2_row_03_dec_07_02] <= DR_din_05;
|
|
dec_06[Index_p2_row_03_dec_06_01] <= DR_din_05;
|
|
dec_06[Index_p2_row_02_dec_06_01] <= 1'd0;
|
|
dec_06[Index_p2_row_02_dec_06_02] <= 1'd0;
|
|
dec_05[Index_p2_row_03_dec_05_01] <= DR_din_05;
|
|
dec_05[Index_p2_row_02_dec_05_01] <= 1'd0;
|
|
dec_08[Index_p2_row_02_dec_08_01] <= 1'd0; //xhx
|
|
end else if (cnt_CK >= 11'd385 + DELAY_DIN && cnt_CK < 11'd513 + DELAY_DIN) begin
|
|
dec_08[Index_p2_row_04_dec_08_01] <= DR_din_01 ^ DR_din_02 ^ DR_din_04;
|
|
dec_08[Index_p2_row_04_dec_08_02] <= DR_din_05;
|
|
dec_07[Index_p2_row_04_dec_07_01] <= DR_din_05;
|
|
dec_07[Index_p2_row_03_dec_07_01] <= 1'd0;
|
|
dec_07[Index_p2_row_03_dec_07_02] <= 1'd0;
|
|
dec_06[Index_p2_row_04_dec_06_01] <= DR_din_05;
|
|
dec_06[Index_p2_row_03_dec_06_01] <= 1'd0;
|
|
dec_05[Index_p2_row_03_dec_05_01] <= 1'd0; //xhx
|
|
end else begin
|
|
dec_05 <= dec_05;
|
|
dec_06 <= dec_06;
|
|
dec_07 <= dec_07;
|
|
dec_08 <= dec_08;
|
|
end
|
|
|
|
if (cnt_CK >= 11'd2 + DELAY_DIN && cnt_CK < 11'd130 + DELAY_DIN) begin
|
|
dec_05_d1 <= {dec_05_d1[0],dec_05_d1[127:1]} ^ dec_05;
|
|
dec_07_d1 <= {dec_07_d1[0],dec_07_d1[127:1]} ^ dec_07;
|
|
dec_08_d1 <= {dec_08_d1[0],dec_08_d1[127:1]} ^ dec_08;
|
|
end else if (cnt_CK >= 11'd130 + DELAY_DIN && cnt_CK < 11'd258 + DELAY_DIN) begin
|
|
dec_05_d1 <= {dec_05_d1[0],dec_05_d1[127:1]} ^ dec_05;
|
|
dec_06_d1 <= {dec_06_d1[0],dec_06_d1[127:1]} ^ dec_06;
|
|
dec_08_d1 <= {dec_08_d1[0],dec_08_d1[127:1]} ^ dec_08;
|
|
end else if (cnt_CK >= 11'd258 + DELAY_DIN && cnt_CK < 11'd386 + DELAY_DIN) begin
|
|
dec_05_d1 <= {dec_05_d1[0],dec_05_d1[127:1]} ^ dec_05;
|
|
dec_06_d1 <= {dec_06_d1[0],dec_06_d1[127:1]} ^ dec_06;
|
|
dec_07_d1 <= {dec_07_d1[0],dec_07_d1[127:1]} ^ dec_07;
|
|
end else if (cnt_CK >= 11'd386 + DELAY_DIN && cnt_CK < 11'd514 + DELAY_DIN) begin
|
|
dec_06_d1 <= {dec_06_d1[0],dec_06_d1[127:1]} ^ dec_06;
|
|
dec_07_d1 <= {dec_07_d1[0],dec_07_d1[127:1]} ^ dec_07;
|
|
dec_08_d1 <= {dec_08_d1[0],dec_08_d1[127:1]} ^ dec_08;
|
|
end else if (cnt_CK == 11'd514 + DELAY_DIN) begin
|
|
dec_05_d1 <= {dec_05_d1[0],dec_05_d1[127:1]};
|
|
dec_06_d1 <= {dec_06_d1[0],dec_06_d1[127:1]};
|
|
dec_07_d1 <= {dec_07_d1[0],dec_07_d1[127:1]};
|
|
dec_08_d1 <= {dec_08_d1[0],dec_08_d1[127:1]};
|
|
end else begin
|
|
dec_05_d1 <= dec_05_d1;
|
|
dec_06_d1 <= dec_06_d1;
|
|
dec_07_d1 <= dec_07_d1;
|
|
dec_08_d1 <= dec_08_d1;
|
|
end
|
|
|
|
|
|
// 第3列(4*128=512)个校验子求解过程
|
|
if (cnt_CK >= 11'd1 + DELAY_DIN && cnt_CK < 11'd129 + DELAY_DIN) begin
|
|
dec_09[Index_p3_row_01_dec_09_01] <= DR_din_01 ^ DR_din_05;
|
|
dec_09[Index_p3_row_01_dec_09_02] <= DR_din_04;
|
|
dec_11[Index_p3_row_01_dec_11_01] <= DR_din_02;
|
|
dec_10[Index_p3_row_01_dec_10_01] <= DR_din_02;
|
|
dec_12[Index_p3_row_01_dec_12_01] <= DR_din_04;
|
|
end else if (cnt_CK >= 11'd129 + DELAY_DIN && cnt_CK < 11'd257 + DELAY_DIN) begin
|
|
dec_10[Index_p3_row_02_dec_10_01] <= DR_din_01 ^ DR_din_05;
|
|
dec_10[Index_p3_row_02_dec_10_02] <= DR_din_04;
|
|
dec_12[Index_p3_row_02_dec_12_01] <= DR_din_02;
|
|
dec_12[Index_p3_row_01_dec_12_01] <= 1'd0;
|
|
dec_11[Index_p3_row_02_dec_11_01] <= DR_din_02;
|
|
dec_11[Index_p3_row_01_dec_11_01] <= 1'd0;
|
|
dec_09[Index_p3_row_02_dec_09_01] <= DR_din_04;
|
|
dec_09[Index_p3_row_01_dec_09_01] <= 1'd0;
|
|
dec_09[Index_p3_row_01_dec_09_02] <= 1'd0;
|
|
end else if (cnt_CK >= 11'd257 + DELAY_DIN && cnt_CK < 11'd385 + DELAY_DIN) begin
|
|
dec_11[Index_p3_row_03_dec_11_01] <= DR_din_01 ^ DR_din_05;
|
|
dec_11[Index_p3_row_03_dec_11_02] <= DR_din_04;
|
|
dec_11[Index_p3_row_02_dec_11_01] <= 1'd0;
|
|
dec_09[Index_p3_row_03_dec_09_01] <= DR_din_02;
|
|
dec_09[Index_p3_row_02_dec_09_01] <= 1'd0;
|
|
dec_12[Index_p3_row_03_dec_12_01] <= DR_din_02;
|
|
dec_12[Index_p3_row_02_dec_12_01] <= 1'd0;
|
|
dec_10[Index_p3_row_03_dec_10_01] <= DR_din_04;
|
|
dec_10[Index_p3_row_02_dec_10_01] <= 1'd0;
|
|
dec_10[Index_p3_row_02_dec_10_02] <= 1'd0;
|
|
end else if (cnt_CK >= 11'd385 + DELAY_DIN && cnt_CK < 11'd513 + DELAY_DIN) begin
|
|
dec_12[Index_p3_row_04_dec_12_01] <= DR_din_01 ^ DR_din_05;
|
|
dec_12[Index_p3_row_04_dec_12_02] <= DR_din_04;
|
|
dec_12[Index_p3_row_03_dec_12_01] <= 1'd0;
|
|
dec_10[Index_p3_row_04_dec_10_01] <= DR_din_02;
|
|
dec_10[Index_p3_row_03_dec_10_01] <= 1'd0;
|
|
dec_09[Index_p3_row_04_dec_09_01] <= DR_din_02;
|
|
dec_09[Index_p3_row_03_dec_09_01] <= 1'd0;
|
|
dec_11[Index_p3_row_04_dec_11_01] <= DR_din_04;
|
|
dec_11[Index_p3_row_03_dec_11_01] <= 1'd0;
|
|
dec_11[Index_p3_row_03_dec_11_02] <= 1'd0;
|
|
end else begin
|
|
dec_09 <= dec_09;
|
|
dec_10 <= dec_10;
|
|
dec_11 <= dec_11;
|
|
dec_12 <= dec_12;
|
|
end
|
|
|
|
if (cnt_CK >= 11'd2 + DELAY_DIN && cnt_CK < 11'd130 + DELAY_DIN) begin
|
|
dec_09_d1 <= {dec_09_d1[0],dec_09_d1[127:1]} ^ dec_09;
|
|
dec_10_d1 <= {dec_10_d1[0],dec_10_d1[127:1]} ^ dec_10;
|
|
dec_11_d1 <= {dec_11_d1[0],dec_11_d1[127:1]} ^ dec_11;
|
|
dec_12_d1 <= {dec_12_d1[0],dec_12_d1[127:1]} ^ dec_12;
|
|
end else if (cnt_CK >= 11'd130 + DELAY_DIN && cnt_CK < 11'd258 + DELAY_DIN) begin
|
|
dec_09_d1 <= {dec_09_d1[0],dec_09_d1[127:1]} ^ dec_09;
|
|
dec_10_d1 <= {dec_10_d1[0],dec_10_d1[127:1]} ^ dec_10;
|
|
dec_11_d1 <= {dec_11_d1[0],dec_11_d1[127:1]} ^ dec_11;
|
|
dec_12_d1 <= {dec_12_d1[0],dec_12_d1[127:1]} ^ dec_12;
|
|
end else if (cnt_CK >= 11'd258 + DELAY_DIN && cnt_CK < 11'd386 + DELAY_DIN) begin
|
|
dec_09_d1 <= {dec_09_d1[0],dec_09_d1[127:1]} ^ dec_09;
|
|
dec_10_d1 <= {dec_10_d1[0],dec_10_d1[127:1]} ^ dec_10;
|
|
dec_11_d1 <= {dec_11_d1[0],dec_11_d1[127:1]} ^ dec_11;
|
|
dec_12_d1 <= {dec_12_d1[0],dec_12_d1[127:1]} ^ dec_12;
|
|
end else if (cnt_CK >= 11'd386 + DELAY_DIN && cnt_CK < 11'd514 + DELAY_DIN) begin
|
|
dec_09_d1 <= {dec_09_d1[0],dec_09_d1[127:1]} ^ dec_09;
|
|
dec_10_d1 <= {dec_10_d1[0],dec_10_d1[127:1]} ^ dec_10;
|
|
dec_11_d1 <= {dec_11_d1[0],dec_11_d1[127:1]} ^ dec_11;
|
|
dec_12_d1 <= {dec_12_d1[0],dec_12_d1[127:1]} ^ dec_12;
|
|
end else if (cnt_CK == 11'd514 + DELAY_DIN) begin
|
|
dec_09_d1 <= {dec_09_d1[0],dec_09_d1[127:1]};
|
|
dec_10_d1 <= {dec_10_d1[0],dec_10_d1[127:1]};
|
|
dec_11_d1 <= {dec_11_d1[0],dec_11_d1[127:1]};
|
|
dec_12_d1 <= {dec_12_d1[0],dec_12_d1[127:1]};
|
|
end else begin
|
|
dec_09_d1 <= dec_09_d1;
|
|
dec_10_d1 <= dec_10_d1;
|
|
dec_11_d1 <= dec_11_d1;
|
|
dec_12_d1 <= dec_12_d1;
|
|
end
|
|
|
|
// 产生标志位
|
|
if (cnt_CK == 11'd514 + DELAY_DIN)
|
|
deal_end <= 1'd1;
|
|
else
|
|
deal_end <= 1'd0;
|
|
end
|
|
end
|
|
|
|
//2019.02.28添加:打一拍,尝试避免时序问题
|
|
reg deal_end_d6 = 1'd0;
|
|
reg flag_judge1 = 1'd0;
|
|
reg flag_judge2 = 1'd0;
|
|
reg flag_judge3 = 1'd0;
|
|
always@(posedge clk) begin
|
|
if(rst_OUTCK) begin
|
|
flag_judge1 <= 1'd0;
|
|
flag_judge2 <= 1'd0;
|
|
flag_judge3 <= 1'd0;
|
|
end
|
|
else begin
|
|
if(deal_end_d5) begin
|
|
if(dec_01_d1 == 128'd0 && dec_02_d1 == 128'd0 && dec_03_d1 == 128'd0 && dec_04_d1 == 128'd0 ) flag_judge1 <= 1'd0;
|
|
else flag_judge1 <= 1'd1;
|
|
if(dec_05_d1 == 128'd0 && dec_06_d1 == 128'd0 && dec_07_d1 == 128'd0 && dec_08_d1 == 128'd0 ) flag_judge2 <= 1'd0;
|
|
else flag_judge2 <= 1'd1;
|
|
if(dec_09_d1 == 128'd0 && dec_10_d1 == 128'd0 && dec_11_d1 == 128'd0 && dec_12_d1 == 128'd0 ) flag_judge3 <= 1'd0;
|
|
else flag_judge3 <= 1'd1;
|
|
end
|
|
else begin
|
|
flag_judge1 <= flag_judge1;
|
|
flag_judge2 <= flag_judge2;
|
|
flag_judge3 <= flag_judge3;
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
always@(posedge clk) begin
|
|
if(rst_OUTCK) begin
|
|
gd_frames <= 9'd0;
|
|
bd_frames <= 9'd0;
|
|
tl_frames <= 9'd0;
|
|
deal_end_d1 <= 1'd0;
|
|
deal_end_d2 <= 1'd0;
|
|
deal_end_d3 <= 1'd0;
|
|
deal_end_d4 <= 1'd0;
|
|
deal_end_d5 <= 1'd0;
|
|
deal_end_d6 <= 1'd0; //2019.02.28添加
|
|
end else begin
|
|
deal_end_d1 <= deal_end;
|
|
deal_end_d2 <= deal_end_d1;
|
|
deal_end_d3 <= deal_end_d2;
|
|
deal_end_d4 <= deal_end_d3;
|
|
deal_end_d5 <= deal_end_d4;
|
|
deal_end_d6 <= deal_end_d5; //2019.02.28添加
|
|
if(deal_end_d6) begin
|
|
if(flag_judge1 == 1'd0 && flag_judge2 == 1'd0 && flag_judge3 == 1'd0 ) begin
|
|
// if(dec_01_d1 == 128'd0 && dec_02_d1 == 128'd0 && dec_03_d1 == 128'd0 && dec_04_d1 == 128'd0 &&
|
|
// dec_05_d1 == 128'd0 && dec_06_d1 == 128'd0 && dec_07_d1 == 128'd0 && dec_08_d1 == 128'd0 &&
|
|
// dec_09_d1 == 128'd0 && dec_10_d1 == 128'd0 && dec_11_d1 == 128'd0 && dec_12_d1 == 128'd0 ) begin
|
|
gd_frames <= gd_frames + 9'd1;
|
|
bd_frames <= bd_frames;
|
|
tl_frames <= tl_frames + 9'd1;
|
|
end else begin
|
|
gd_frames <= gd_frames;
|
|
bd_frames <= bd_frames + 9'd1;
|
|
tl_frames <= tl_frames + 9'd1;
|
|
end
|
|
end else begin
|
|
gd_frames <= gd_frames;
|
|
bd_frames <= bd_frames;
|
|
tl_frames <= tl_frames;
|
|
end
|
|
end
|
|
end
|
|
|
|
|
|
endmodule
|
|
|
|
|
|
|