142 lines
4.4 KiB
Verilog
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
|
|
|