?? matrix_op.v
字號:
end
if((count_127>=7'd11)&&(count_127<=7'd60)) //讀fifo輸出,輸出數(shù)據(jù)位
begin
data_out <= fifo_out;
end
if((count_127>=7'd2)&&(count_127<=7'd60)) //使能信號
begin
data_out_en<=1'b1;
end
else
begin
data_out_en<=1'b0;
end
end
else
begin
indication<= 1'b0;
data_out_en<=1'b0;
rd_en<=1'b0;
end
end
default : // 默認0.4碼率
begin
if(count_row == 0) // 最后一行運算
begin
case (count_127) // 輸出校驗位
7'd2 : data_out <= data_0; 7'd12 : data_out <= data_10; 7'd22 : data_out <= data_20; 7'd32 : data_out <= data_30;
7'd3 : data_out <= data_1; 7'd13 : data_out <= data_11; 7'd23 : data_out <= data_21; 7'd33 : data_out <= data_31;
7'd4 : data_out <= data_2; 7'd14 : data_out <= data_12; 7'd24 : data_out <= data_22; 7'd34 : data_out <= data_32;
7'd5 : data_out <= data_3; 7'd15 : data_out <= data_13; 7'd25 : data_out <= data_23; 7'd35 : data_out <= data_33;
7'd6 : data_out <= data_4; 7'd16 : data_out <= data_14; 7'd26 : data_out <= data_24; 7'd36 : data_out <= data_34;
7'd7 : data_out <= data_5; 7'd17 : data_out <= data_15; 7'd27 : data_out <= data_25;
7'd8 : data_out <= data_6; 7'd18 : data_out <= data_16; 7'd28 : data_out <= data_26;
7'd9 : data_out <= data_7; 7'd19 : data_out <= data_17; 7'd29 : data_out <= data_27;
7'd10 : data_out <= data_8; 7'd20 : data_out <= data_18; 7'd30 : data_out <= data_28;
7'd11 : data_out <= data_9; 7'd21 : data_out <= data_19; 7'd31 : data_out <= data_29;
endcase
if(count_127==2) // 輸出第一個127指示信號
begin
indication <= 1'b1;
end
else
begin
indication <= 1'b0;
end
if((count_127>=34)&&(count_127<=58)) //發(fā)出讀fifo指令
begin
rd_en<=1'b1;
end
else
begin
rd_en<=1'b0;
end
if((count_127>=36)&&(count_127<=60)) //讀fifo輸出,輸出數(shù)據(jù)位
begin
data_out <= fifo_out;
end
if((count_127>=2)&&(count_127<=60)) //使能信號
begin
data_out_en<=1'b1;
end
else
begin
data_out_en<=1'b0;
end
end
else
begin
indication<= 1'b0;
data_out_en<=1'b0;
rd_en<=1'b0;
end
end
endcase
end
end
end
wire[126:0] rom_data04;
wire[126:0] rom_data06;
wire[126:0] rom_data08;
wire data_media0,data_media1,data_media2,data_media3,data_media4,data_media5,data_media6,data_media7,data_media8,data_media9,
data_media10,data_media11,data_media12,data_media13,data_media14,data_media15,data_media16,data_media17,data_media18,data_media19,
data_media20,data_media21,data_media22,data_media23,data_media24,data_media25,data_media26,data_media27,data_media28,data_media29,
data_media30,data_media31,data_media32,data_media33,data_media34; // 數(shù)據(jù)
wire en_media0,en_media1,en_media2,en_media3,en_media4,en_media5,en_media6,en_media7,en_media8,en_media9,
en_media10,en_media11,en_media12,en_media13,en_media14,en_media15,en_media16,en_media17,en_media18,en_media19,
en_media20,en_media21,en_media22,en_media23,en_media24,en_media25,en_media26,en_media27,en_media28,en_media29,
en_media30,en_media31,en_media32,en_media33,en_media34; // 連接bit_en
wire first_media0,first_media1,first_media2,first_media3,first_media4,first_media5,first_media6,first_media7,first_media8,first_media9,
first_media10,first_media11,first_media12,first_media13,first_media14,first_media15,first_media16,first_media17,first_media18,first_media19,
first_media20,first_media21,first_media22,first_media23,first_media24,first_media25,first_media26,first_media27,first_media28,first_media29,
first_media30,first_media31,first_media32,first_media33,first_media34;
wire[126:0] data_0,data_1,data_2,data_3,data_4,data_5,data_6,data_7,data_8,data_9,
data_10,data_11,data_12,data_13,data_14,data_15,data_16,data_17,data_18,data_19,
data_20,data_21,data_22,data_23,data_24,data_25,data_26,data_27,data_28,data_29,
data_30,data_31,data_32,data_33,data_34;
matrix_op m0( .clk(clk),.reset(reset),.bit_in(bit_in),.bit_in_en(bit_in_en), .media_in(rom_data),.media_in_en(media_en[0]),
.coder_first(coder_first),.bit_out(data_media0),.bit_out_en(en_media0), .first_out(first_media0),.data_out(data_0));
matrix_op m1( .clk(clk),.reset(reset),.bit_in(data_media0),.bit_in_en(en_media0), .media_in(rom_data),.media_in_en(media_en[1]),
.coder_first(first_media0),.bit_out(data_media1),.bit_out_en(en_media1), .first_out(first_media1),.data_out(data_1));
matrix_op m2( .clk(clk),.reset(reset),.bit_in(data_media1),.bit_in_en(en_media1), .media_in(rom_data),.media_in_en(media_en[2]),
.coder_first(first_media1),.bit_out(data_media2),.bit_out_en(en_media2), .first_out(first_media2),.data_out(data_2) );
matrix_op m3( .clk(clk),.reset(reset),.bit_in(data_media2),.bit_in_en(en_media2), .media_in(rom_data),.media_in_en(media_en[3]),
.coder_first(first_media2),.bit_out(data_media3),.bit_out_en(en_media3), .first_out(first_media3),.data_out(data_3) );
matrix_op m4( .clk(clk),.reset(reset),.bit_in(data_media3),.bit_in_en(en_media3), .media_in(rom_data),.media_in_en(media_en[4]),
.coder_first(first_media3),.bit_out(data_media4),.bit_out_en(en_media4), .first_out(first_media4),.data_out(data_4) );
matrix_op m5( .clk(clk),.reset(reset),.bit_in(data_media4),.bit_in_en(en_media4), .media_in(rom_data),.media_in_en(media_en[5]),
.coder_first(first_media4),.bit_out(data_media5),.bit_out_en(en_media5), .first_out(first_media5),.data_out(data_5) );
matrix_op m6( .clk(clk),.reset(reset),.bit_in(data_media5),.bit_in_en(en_media5), .media_in(rom_data),.media_in_en(media_en[6]),
.coder_first(first_media5),.bit_out(data_media6),.bit_out_en(en_media6), .first_out(first_media6),.data_out(data_6));
matrix_op m7( .clk(clk),.reset(reset),.bit_in(data_media6),.bit_in_en(en_media6), .media_in(rom_data),.media_in_en(media_en[7]),
.coder_first(first_media6),.bit_out(data_media7),.bit_out_en(en_media7), .first_out(first_media7),.data_out(data_7) );
matrix_op m8( .clk(clk),.reset(reset),.bit_in(data_media7),.bit_in_en(en_media7), .media_in(rom_data),.media_in_en(media_en[8]),
.coder_first(first_media7),.bit_out(data_media8),.bit_out_en(en_media8), .first_out(first_media8),.data_out(data_8));
matrix_op m9( .clk(clk),.reset(reset),.bit_in(data_media8),.bit_in_en(en_media8), .media_in(rom_data),.media_in_en(media_en[9]),
.coder_first(first_media8),.bit_out(data_media9),.bit_out_en(en_media9), .first_out(first_media9),.data_out(data_9));
matrix_op m10( .clk(clk),.reset(reset),.bit_in(data_media9),.bit_in_en(en_media9), .media_in(rom_data),.media_in_en(media_en[10]),
.coder_first(first_media9),.bit_out(data_media10),.bit_out_en(en_media10), .first_out(first_media10),.data_out(data_10) );
matrix_op m11( .clk(clk),.reset(reset),.bit_in(data_media10),.bit_in_en(en_media10), .media_in(rom_data),.media_in_en(media_en[11]),
.coder_first(first_media10),.bit_out(data_media11),.bit_out_en(en_media11), .first_out(first_media11),.data_out(data_11) );
matrix_op m12( .clk(clk),.reset(reset),.bit_in(data_media11),.bit_in_en(en_media11), .media_in(rom_data),.media_in_en(media_en[12]),
.coder_first(first_media11),.bit_out(data_media12),.bit_out_en(en_media12), .first_out(first_media12),.data_out(data_12) );
matrix_op m13( .clk(clk),.reset(reset),.bit_in(data_media12),.bit_in_en(en_media12), .media_in(rom_data),.media_in_en(media_en[13]),
.coder_first(first_media12),.bit_out(data_media13),.bit_out_en(en_media13), .first_out(first_media13),.data_out(data_13) );
matrix_op m14( .clk(clk),.reset(reset),.bit_in(data_media13),.bit_in_en(en_media13), .media_in(rom_data),.media_in_en(media_en[14]),
.coder_first(first_media13),.bit_out(data_media14),.bit_out_en(en_media14), .first_out(first_media14),.data_out(data_14) );
matrix_op m15( .clk(clk),.reset(reset),.bit_in(data_media14),.bit_in_en(en_media14), .media_in(rom_data),.media_in_en(media_en[15]),
.coder_first(first_media14),.bit_out(data_media15),.bit_out_en(en_media15), .first_out(first_media15),.data_out(data_15) );
matrix_op m16( .clk(clk),.reset(reset),.bit_in(data_media15),.bit_in_en(en_media15), .media_in(rom_data),.media_in_en(media_en[16]),
.coder_first(first_media15),.bit_out(data_media16),.bit_out_en(en_media16), .first_out(first_media16),.data_out(data_16) );
matrix_op m17( .clk(clk),.reset(reset),.bit_in(data_media16),.bit_in_en(en_media16), .media_in(rom_data),.media_in_en(media_en[17]),
.coder_first(first_media16),.bit_out(data_media17),.bit_out_en(en_media17), .first_out(first_media17),.data_out(data_17) );
matrix_op m18( .clk(clk),.reset(reset),.bit_in(data_media17),.bit_in_en(en_media17), .media_in(rom_data),.media_in_en(media_en[18]),
.coder_first(first_media17),.bit_out(data_media18),.bit_out_en(en_media18), .first_out(first_media18),.data_out(data_18) );
matrix_op m19( .clk(clk),.reset(reset),.bit_in(data_media18),.bit_in_en(en_media18), .media_in(rom_data),.media_in_en(media_en[19]),
.coder_first(first_media18),.bit_out(data_media19),.bit_out_en(en_media19), .first_out(first_media19),.data_out(data_19) );
matrix_op m20( .clk(clk),.reset(reset),.bit_in(data_media19),.bit_in_en(en_media19), .media_in(rom_data),.media_in_en(media_en[20]),
.coder_first(first_media19),.bit_out(data_media20),.bit_out_en(en_media20), .first_out(first_media20),.data_out(data_20) );
matrix_op m21( .clk(clk),.reset(reset),.bit_in(data_media20),.bit_in_en(en_media20), .media_in(rom_data),.media_in_en(media_en[21]),
.coder_first(first_media20),.bit_out(data_media21),.bit_out_en(en_media21), .first_out(first_media21),.data_out(data_21) );
matrix_op m22( .clk(clk),.reset(reset),.bit_in(data_media21),.bit_in_en(en_media21), .media_in(rom_data),.media_in_en(media_en[22]),
.coder_first(first_media21),.bit_out(data_media22),.bit_out_en(en_media22), .first_out(first_media22),.data_out(data_22));
matrix_op m23( .clk(clk),.reset(reset),.bit_in(data_media22),.bit_in_en(en_media22), .media_in(rom_data),.media_in_en(media_en[23]),
.coder_first(first_media22),.bit_out(data_media23),.bit_out_en(en_media23), .first_out(first_media23),.data_out(data_23));
matrix_op m24( .clk(clk),.reset(reset),.bit_in(data_media23),.bit_in_en(en_media23), .media_in(rom_data),.media_in_en(media_en[24]),
.coder_first(first_media23),.bit_out(data_media24),.bit_out_en(en_media24), .first_out(first_media24),.data_out(data_24));
matrix_op m25( .clk(clk),.reset(reset),.bit_in(data_media24),.bit_in_en(en_media24), .media_in(rom_data),.media_in_en(media_en[25]),
.coder_first(first_media24),.bit_out(data_media25),.bit_out_en(en_media25), .first_out(first_media25),.data_out(data_25));
matrix_op m26( .clk(clk),.reset(reset),.bit_in(data_media25),.bit_in_en(en_media25), .media_in(rom_data),.media_in_en(media_en[26]),
.coder_first(first_media25),.bit_out(data_media26),.bit_out_en(en_media26), .first_out(first_media26),.data_out(data_26) );
matrix_op m27( .clk(clk),.reset(reset),.bit_in(data_media26),.bit_in_en(en_media26), .media_in(rom_data),.media_in_en(media_en[27]),
.coder_first(first_media26),.bit_out(data_media27),.bit_out_en(en_media27), .first_out(first_media27),.data_out(data_27));
matrix_op m28( .clk(clk),.reset(reset),.bit_in(data_media27),.bit_in_en(en_media27), .media_in(rom_data),.media_in_en(media_en[28]),
.coder_first(first_media27),.bit_out(data_media28),.bit_out_en(en_media28), .first_out(first_media28),.data_out(data_28));
matrix_op m29( .clk(clk),.reset(reset),.bit_in(data_media28),.bit_in_en(en_media28), .media_in(rom_data),.media_in_en(media_en[29]),
.coder_first(first_media28),.bit_out(data_media29),.bit_out_en(en_media29), .first_out(first_media29),.data_out(data_29));
matrix_op m30( .clk(clk),.reset(reset),.bit_in(data_media29),.bit_in_en(en_media29), .media_in(rom_data),.media_in_en(media_en[30]),
.coder_first(first_media29),.bit_out(data_media30),.bit_out_en(en_media30), .first_out(first_media30),.data_out(data_30));
matrix_op m31( .clk(clk),.reset(reset),.bit_in(data_media30),.bit_in_en(en_media30), .media_in(rom_data),.media_in_en(media_en[31]),
.coder_first(first_media30),.bit_out(data_media31),.bit_out_en(en_media31), .first_out(first_media31),.data_out(data_31) );
matrix_op m32( .clk(clk),.reset(reset),.bit_in(data_media31),.bit_in_en(en_media31), .media_in(rom_data),.media_in_en(media_en[32]),
.coder_first(first_media31),.bit_out(data_media32),.bit_out_en(en_media32), .first_out(first_media32),.data_out(data_32) );
matrix_op m33( .clk(clk),.reset(reset),.bit_in(data_media32),.bit_in_en(en_media32), .media_in(rom_data),.media_in_en(media_en[33]),
.coder_first(first_media32),.bit_out(data_media33),.bit_out_en(en_media33), .first_out(first_media33),.data_out(data_33) );
matrix_op m34( .clk(clk),.reset(reset),.bit_in(data_media33),.bit_in_en(en_media33), .media_in(rom_data),.media_in_en(media_en[34]),
.coder_first(first_media33),.bit_out(data_media34),.bit_out_en(en_media34), .first_out(first_media34),.data_out(data_34) );
altsyncram altsyncram_component_04 (
.clock0 (clk),
.address_a (address_04),
.q_a (rom_data04),
.aclr0 (1'b0),
.aclr1 (1'b0),
.q_b (),
.clocken1 (1'b1),
.clocken0 (1'b1),
.data_b (1'b1),
.wren_a (1'b0),
.data_a ({127{1'b1}}),
.rden_b (1'b1),
.address_b (1'b1),
.wren_b (1'b0),
.byteena_b (1'b1),
.addressstall_a (1'b0),
.byteena_a (1'b1),
.addressstall_b (1'b0),
.clock1 (1'b1));
defparam
altsyncram_component_04.address_aclr_a = "NONE",
altsyncram_component_04.init_file = "0.4轉(zhuǎn)換矩.mif",
altsyncram_component_04.intended_device_family = "Stratix",
altsyncram_component_04.lpm_hint = "ENABLE_RUNTIME_MOD=NO",
altsyncram_component_04.lpm_type = "altsyncram",
altsyncram_component_04.numwords_a = 840,
altsyncram_component_04.operation_mode = "ROM",
altsyncram_component_04.outdata_aclr_a = "NONE",
altsyncram_component_04.outdata_reg_a = "CLOCK0",
altsyncram_component_04.widthad_a = 10,
altsyncram_component_04.width_a = 127,
altsyncram_component_04.width_byteena_a = 1;
altsyncram altsyncram_component_06 (
.clock0 (clk),
.address_a (address_06),
.q_a (rom_data06),
.aclr0 (1'b0),
.aclr1 (1'b0),
.q_b (),
.clocken1 (1'b1),
.clocken0 (1'b1),
.data_b (1'b1),
.wren_a (1'b0),
.data_a ({127{1'b1}}),
.rden_b (1'b1),
.address_b (1'b1),
.wren_b (1'b0),
.byteena_b (1'b1),
.addressstall_a (1'b0),
.byteena_a (1'b1),
.addressstall_b (1'b0),
.clock1 (1'b1));
defparam
altsyncram_component_06.address_aclr_a = "NONE",
altsyncram_component_06.init_file = "0.6轉(zhuǎn)換矩.mif",
altsyncram_component_06.intended_device_family = "Stratix",
altsyncram_component_06.lpm_hint = "ENABLE_RUNTIME_MOD=NO",
altsyncram_component_06.lpm_type = "altsyncram",
altsyncram_component_06.numwords_a = 828,
altsyncram_component_06.operation_mode = "ROM",
altsyncram_component_06.outdata_aclr_a = "NONE",
altsyncram_component_06.outdata_reg_a = "CLOCK0",
altsyncram_component_06.widthad_a = 10,
altsyncram_component_06.width_a = 127,
altsyncram_component_06.width_byteena_a = 1;
altsyncram altsyncram_component_08 (
.clock0 (clk),
.address_a (address_08),
.q_a (rom_data08),
.aclr0 (1'b0),
.aclr1 (1'b0),
.q_b (),
.clocken1 (1'b1),
.clocken0 (1'b1),
.data_b (1'b1),
.wren_a (1'b0),
.data_a ({127{1'b1}}),
.rden_b (1'b1),
.address_b (1'b1),
.wren_b (1'b0),
.byteena_b (1'b1),
.addressstall_a (1'b0),
.byteena_a (1'b1),
.addressstall_b (1'b0),
.clock1 (1'b1));
defparam
altsyncram_component_08.address_aclr_a = "NONE",
altsyncram_component_08.init_file = "0.8轉(zhuǎn)換矩.mif",
altsyncram_component_08.intended_device_family = "Stratix",
altsyncram_component_08.lpm_hint = "ENABLE_RUNTIME_MOD=NO",
altsyncram_component_08.lpm_type = "altsyncram",
altsyncram_component_08.numwords_a = 528,
altsyncram_component_08.operation_mode = "ROM",
altsyncram_component_08.outdata_aclr_a = "NONE",
altsyncram_component_08.outdata_reg_a = "CLOCK0",
altsyncram_component_08.widthad_a = 10,
altsyncram_component_08.width_a = 127,
altsyncram_component_08.width_byteena_a = 1;
scfifo scfifo_component (
.rdreq (rd_en),
.clock (clk),
.wrreq (wr_en),
.data (wr_data),
.q (fifo_out)
// synopsys translate_off
,
.usedw (),
.almost_empty (),
.sclr (),
.almost_full (),
.aclr (),
.empty (),
.full ()
// synopsys translate_on
);
defparam
scfifo_component.add_ram_output_register = "OFF",
scfifo_component.intended_device_family = "Stratix",
scfifo_component.lpm_numwords = 64,
scfifo_component.lpm_showahead = "OFF",
scfifo_component.lpm_type = "scfifo",
scfifo_component.lpm_width = 127,
scfifo_component.lpm_widthu = 6,
scfifo_component.overflow_checking = "ON",
scfifo_component.underflow_checking = "ON",
scfifo_component.use_eab = "ON";
endmodule
module LDPC (clk,reset,
data_in,
data_in_en,//輸入使能端
velocity, /*輸入信號碼率選擇*/
data_out,
data_out_en,//輸出使能端
indication /*輸出信號,第一個127要刪除前5成7488,指示第一個127*/
);
input clk,reset;
input data_in,data_in_en;
input[1:0] velocity; //選擇碼率信號
output[126:0] data_out;//輸出信號
output data_out_en;
output indication;
parameter row_4 = 6'd24-1'b1; //信息碼流被分成24段,每段有127bit // parameter column_4 = 6'd35-1'b1; //0.4碼率
parameter row_6 = 6'd36-1'b1; //信息碼流// parameter column_6 = 6'd23-1'b1; //0.6碼率
parameter row_8 = 6'd48-1'b1; //信息碼部
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -