Files
MM7020/hdl/CCSDS_LDPC_DEC_K1024_R12_TOPP.v

142 lines
4.4 KiB
Verilog

`timescale 1ns / 1ns
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 2019/11/14 17:44:48
// Design Name:
// Module Name: CCSDS_LDPC_DEC_K1024_R12_TOPP
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
module CCSDS_LDPC_DEC_K1024_R12_TOPP #(
parameter MAX_ITER_NUM = 6'd14, //最大迭代次数常量
parameter WIDTH = 4'd8, //量化比特
parameter OUT_ONLY_INFORMATION = 1'b1 //译码输出格式选择标志,1:只输出信息位;0:输出整个码字
) (
input clk, //工作时钟,100MHz
input Rst, //同步复位信号,高有效
input FrameSync, //帧同步标志,高脉冲
input Nd, //译码输入数据有效标志,高有效
input [WIDTH-1:0] Din, //译码输入数据,软信息
output LDPC_SyncOut, //LDPC 模块帧同步输出信号,高脉冲,指示帧起点
output Rdy, //译码输出信号有效标志,高有效
output [0:0] LDPC_Dout, //译码输出信号,MSB输出
output [8:0] good_frames, //译码好帧计数
output [8:0] bad_frames, //译码坏帧计数
output [8:0] total_frames //译码总帧数计数
);
wire FrameSync_A_TM;
wire Nd_A_TM;
wire [WIDTH-1:0] Din_A_TM;
wire FrameSync_B_TM;
wire Nd_B_TM;
wire [WIDTH-1:0] Din_B_TM;
wire LDPC_SyncOut_A;
wire Rdy_A;
wire [ 0:0] LDPC_Dout_A;
wire [ 8:0] good_frames_A;
wire [ 8:0] bad_frames_A;
wire [ 8:0] total_frames_A;
wire LDPC_SyncOut_B;
wire Rdy_B;
wire [ 0:0] LDPC_Dout_B;
wire [ 8:0] good_frames_B;
wire [ 8:0] bad_frames_B;
wire [ 8:0] total_frames_B;
LDPC_TopManage_2 #(
.WIDTH(WIDTH)
) TM (
.clk (clk),
.Rst (Rst),
.FrameSync_TM (FrameSync),
.Nd_TM (Nd),
.Din_TM (Din),
.FrameSync_A_TM (FrameSync_A_TM),
.Nd_A_TM (Nd_A_TM),
.Din_A_TM (Din_A_TM),
.FrameSync_B_TM (FrameSync_B_TM),
.Nd_B_TM (Nd_B_TM),
.Din_B_TM (Din_B_TM),
.LDPC_SyncOut_A_TM(LDPC_SyncOut_A),
.Rdy_A_TM (Rdy_A),
.LDPC_Dout_A_TM (LDPC_Dout_A),
.good_frames_A_TM (good_frames_A),
.bad_frames_A_TM (bad_frames_A),
.total_frames_A_TM(total_frames_A),
.LDPC_SyncOut_B_TM(LDPC_SyncOut_B),
.Rdy_B_TM (Rdy_B),
.LDPC_Dout_B_TM (LDPC_Dout_B),
.good_frames_B_TM (good_frames_B),
.bad_frames_B_TM (bad_frames_B),
.total_frames_B_TM(total_frames_B),
.LDPC_SyncOut_TM (LDPC_SyncOut),
.Rdy_TM (Rdy),
.LDPC_Dout_TM (LDPC_Dout),
.good_frames_TM (good_frames),
.bad_frames_TM (bad_frames),
.total_frames_TM (total_frames)
);
CCSDS_LDPC_DEC_K1024_R12 #(
.MAX_ITER_NUM(MAX_ITER_NUM),
.WIDTH(WIDTH),
.OUT_ONLY_INFORMATION(OUT_ONLY_INFORMATION)
) inst_DEC_A (
.clk (clk),
.Rst (Rst),
.FrameSync (FrameSync_A_TM),
.Nd (Nd_A_TM),
.Din (Din_A_TM),
.LDPC_SyncOut(LDPC_SyncOut_A),
.Rdy (Rdy_A),
.LDPC_Dout (LDPC_Dout_A),
.good_frames (good_frames_A),
.bad_frames (bad_frames_A),
.total_frames(total_frames_A)
);
CCSDS_LDPC_DEC_K1024_R12 #(
.MAX_ITER_NUM(MAX_ITER_NUM),
.WIDTH(WIDTH),
.OUT_ONLY_INFORMATION(OUT_ONLY_INFORMATION)
) inst_DEC_B (
.clk (clk),
.Rst (Rst),
.FrameSync (FrameSync_B_TM),
.Nd (Nd_B_TM),
.Din (Din_B_TM),
.LDPC_SyncOut(LDPC_SyncOut_B),
.Rdy (Rdy_B),
.LDPC_Dout (LDPC_Dout_B),
.good_frames (good_frames_B),
.bad_frames (bad_frames_B),
.total_frames(total_frames_B)
);
endmodule