📄 viterbi219_decoder.v
字号:
reg [15:0]cmet_in247;
reg [15:0]cmet_in248;
reg [15:0]cmet_in249;
reg [15:0]cmet_in250;
reg [15:0]cmet_in251;
reg [15:0]cmet_in252;
reg [15:0]cmet_in253;
reg [15:0]cmet_in254;
reg [15:0]cmet_in255;
reg [63:0] data;
reg [5:0] counter; //do 64 times back trace
always @(posedge clk)
if(reset)
counter <= 0;
else
counter <= counter + 1;
assign ready = (counter == 0);
wire data_out;
reg [7:0] endstate;
always @(posedge clk)
if(reset)
endstate <= 0;
else if(path63[endstate] == 1'b1)
endstate <= {1'b1,endstate[7:1]};
else
endstate <= {1'b0, endstate[7:1]};
assign data_out = (path63[endstate] == 1'b1) ? 1'b1:1'b0;
always @(posedge clk)
if(reset)
data <= 0;
else
data <= {data_out, data[63:1]};
//reg [3:0] mettab;
wire [4:0] metab0,metab1,metab2,metab3;
//get 2 symbol's 4 state metric
index_sym_met u1(.metab0(metab0), .metab1(metab1), .metab2(metab2), .metab3(metab3), .symbol0(symbol0), .symbol1(symbol1));//, .clk(clk), .reset(reset));
//memory path
always @(posedge clk)
if(reset)
begin
path01 <= 0;
path02 <= 0;
path03 <= 0;
path04 <= 0;
path05 <= 0;
path06 <= 0;
path07 <= 0;
path08 <= 0;
path09 <= 0;
path10 <= 0;
path11 <= 0;
path12 <= 0;
path13 <= 0;
path14 <= 0;
path15 <= 0;
path16 <= 0;
path17 <= 0;
path18 <= 0;
path19 <= 0;
path20 <= 0;
path21 <= 0;
path22 <= 0;
path23 <= 0;
path24 <= 0;
path25 <= 0;
path26 <= 0;
path27 <= 0;
path28 <= 0;
path29 <= 0;
path30 <= 0;
path31 <= 0;
path32 <= 0;
path33 <= 0;
path34 <= 0;
path35 <= 0;
path36 <= 0;
path37 <= 0;
path38 <= 0;
path39 <= 0;
path40 <= 0;
path41 <= 0;
path42 <= 0;
path43 <= 0;
path44 <= 0;
path45 <= 0;
path46 <= 0;
path47 <= 0;
path48 <= 0;
path49 <= 0;
path50 <= 0;
path51 <= 0;
path52 <= 0;
path53 <= 0;
path54 <= 0;
path55 <= 0;
path56 <= 0;
path57 <= 0;
path58 <= 0;
path59 <= 0;
path60 <= 0;
path61 <= 0;
path62 <= 0;
path63 <= 0;
end
else
begin
path01 <= path00;
path02 <= path01;
path03 <= path02;
path04 <= path03;
path05 <= path04;
path06 <= path05;
path07 <= path06;
path08 <= path07;
path09 <= path08;
path10 <= path09;
path11 <= path10;
path12 <= path11;
path13 <= path12;
path14 <= path13;
path15 <= path14;
path16 <= path15;
path17 <= path16;
path18 <= path17;
path19 <= path18;
path20 <= path19;
path21 <= path20;
path22 <= path21;
path23 <= path22;
path24 <= path23;
path25 <= path24;
path26 <= path25;
path27 <= path26;
path28 <= path27;
path29 <= path28;
path30 <= path29;
path31 <= path30;
path32 <= path31;
path33 <= path32;
path34 <= path33;
path35 <= path34;
path36 <= path35;
path37 <= path36;
path38 <= path37;
path39 <= path38;
path40 <= path39;
path41 <= path40;
path42 <= path41;
path43 <= path42;
path44 <= path43;
path45 <= path44;
path46 <= path45;
path47 <= path46;
path48 <= path47;
path49 <= path48;
path50 <= path49;
path51 <= path50;
path52 <= path51;
path53 <= path52;
path54 <= path53;
path55 <= path54;
path56 <= path55;
path57 <= path56;
path58 <= path57;
path59 <= path58;
path60 <= path59;
path61 <= path60;
path62 <= path61;
path63 <= path62;
end
always @(posedge clk)
if(reset)
begin
cmet_in000 <= 0;
cmet_in001 <= 0;
cmet_in002 <= 0;
cmet_in003 <= 0;
cmet_in004 <= 0;
cmet_in005 <= 0;
cmet_in006 <= 0;
cmet_in007 <= 0;
cmet_in008 <= 0;
cmet_in009 <= 0;
cmet_in010 <= 0;
cmet_in011 <= 0;
cmet_in012 <= 0;
cmet_in013 <= 0;
cmet_in014 <= 0;
cmet_in015 <= 0;
cmet_in016 <= 0;
cmet_in017 <= 0;
cmet_in018 <= 0;
cmet_in019 <= 0;
cmet_in020 <= 0;
cmet_in021 <= 0;
cmet_in022 <= 0;
cmet_in023 <= 0;
cmet_in024 <= 0;
cmet_in025 <= 0;
cmet_in026 <= 0;
cmet_in027 <= 0;
cmet_in028 <= 0;
cmet_in029 <= 0;
cmet_in030 <= 0;
cmet_in031 <= 0;
cmet_in032 <= 0;
cmet_in033 <= 0;
cmet_in034 <= 0;
cmet_in035 <= 0;
cmet_in036 <= 0;
cmet_in037 <= 0;
cmet_in038 <= 0;
cmet_in039 <= 0;
cmet_in040 <= 0;
cmet_in041 <= 0;
cmet_in042 <= 0;
cmet_in043 <= 0;
cmet_in044 <= 0;
cmet_in045 <= 0;
cmet_in046 <= 0;
cmet_in047 <= 0;
cmet_in048 <= 0;
cmet_in049 <= 0;
cmet_in050 <= 0;
cmet_in051 <= 0;
cmet_in052 <= 0;
cmet_in053 <= 0;
cmet_in054 <= 0;
cmet_in055 <= 0;
cmet_in056 <= 0;
cmet_in057 <= 0;
cmet_in058 <= 0;
cmet_in059 <= 0;
cmet_in060 <= 0;
cmet_in061 <= 0;
cmet_in062 <= 0;
cmet_in063 <= 0;
cmet_in064 <= 0;
cmet_in065 <= 0;
cmet_in066 <= 0;
cmet_in067 <= 0;
cmet_in068 <= 0;
cmet_in069 <= 0;
cmet_in070 <= 0;
cmet_in071 <= 0;
cmet_in072 <= 0;
cmet_in073 <= 0;
cmet_in074 <= 0;
cmet_in075 <= 0;
cmet_in076 <= 0;
cmet_in077 <= 0;
cmet_in078 <= 0;
cmet_in079 <= 0;
cmet_in080 <= 0;
cmet_in081 <= 0;
cmet_in082 <= 0;
cmet_in083 <= 0;
cmet_in084 <= 0;
cmet_in085 <= 0;
cmet_in086 <= 0;
cmet_in087 <= 0;
cmet_in088 <= 0;
cmet_in089 <= 0;
cmet_in090 <= 0;
cmet_in091 <= 0;
cmet_in092 <= 0;
cmet_in093 <= 0;
cmet_in094 <= 0;
cmet_in095 <= 0;
cmet_in096 <= 0;
cmet_in097 <= 0;
cmet_in098 <= 0;
cmet_in099 <= 0;
cmet_in100 <= 0;
cmet_in101 <= 0;
cmet_in102 <= 0;
cmet_in103 <= 0;
cmet_in104 <= 0;
cmet_in105 <= 0;
cmet_in106 <= 0;
cmet_in107 <= 0;
cmet_in108 <= 0;
cmet_in109 <= 0;
cmet_in110 <= 0;
cmet_in111 <= 0;
cmet_in112 <= 0;
cmet_in113 <= 0;
cmet_in114 <= 0;
cmet_in115 <= 0;
cmet_in116 <= 0;
cmet_in117 <= 0;
cmet_in118 <= 0;
cmet_in119 <= 0;
cmet_in120 <= 0;
cmet_in121 <= 0;
cmet_in122 <= 0;
cmet_in123 <= 0;
cmet_in124 <= 0;
cmet_in125 <= 0;
cmet_in126 <= 0;
cmet_in127 <= 0;
cmet_in128 <= 0;
cmet_in129 <= 0;
cmet_in130 <= 0;
cmet_in131 <= 0;
cmet_in132 <= 0;
cmet_in133 <= 0;
cmet_in134 <= 0;
cmet_in135 <= 0;
cmet_in136 <= 0;
cmet_in137 <= 0;
cmet_in138 <= 0;
cmet_in139 <= 0;
cmet_in140 <= 0;
cmet_in141 <= 0;
cmet_in142 <= 0;
cmet_in143 <= 0;
cmet_in144 <= 0;
cmet_in145 <= 0;
cmet_in146 <= 0;
cmet_in147 <= 0;
cmet_in148 <= 0;
cmet_in149 <= 0;
cmet_in150 <= 0;
cmet_in151 <= 0;
cmet_in152 <= 0;
cmet_in153 <= 0;
cmet_in154 <= 0;
cmet_in155 <= 0;
cmet_in156 <= 0;
cmet_in157 <= 0;
cmet_in158 <= 0;
cmet_in159 <= 0;
cmet_in160 <= 0;
cmet_in161 <= 0;
cmet_in162 <= 0;
cmet_in163 <= 0;
cmet_in164 <= 0;
cmet_in165 <= 0;
cmet_in166 <= 0;
cmet_in167 <= 0;
cmet_in168 <= 0;
cmet_in169 <= 0;
cmet_in170 <= 0;
cmet_in171 <= 0;
cmet_in172 <= 0;
cmet_in173 <= 0;
cmet_in174 <= 0;
cmet_in175 <= 0;
cmet_in176 <= 0;
cmet_in177 <= 0;
cmet_in178 <= 0;
cmet_in179 <= 0;
cmet_in180 <= 0;
cmet_in181 <= 0;
cmet_in182 <= 0;
cmet_in183 <= 0;
cmet_in184 <= 0;
cmet_in185 <= 0;
cmet_in186 <= 0;
cmet_in187 <= 0;
cmet_in188 <= 0;
cmet_in189 <= 0;
cmet_in190 <= 0;
cmet_in191 <= 0;
cmet_in192 <= 0;
cmet_in193 <= 0;
cmet_in194 <= 0;
cmet_in195 <= 0;
cmet_in196 <= 0;
cmet_in197 <= 0;
cmet_in198 <= 0;
cmet_in199 <= 0;
cmet_in200 <= 0;
cmet_in201 <= 0;
cmet_in202 <= 0;
cmet_in203 <= 0;
cmet_in204 <= 0;
cmet_in205 <= 0;
cmet_in206 <= 0;
cmet_in207 <= 0;
cmet_in208 <= 0;
cmet_in209 <= 0;
cmet_in210 <= 0;
cmet_in211 <= 0;
cmet_in212 <= 0;
cmet_in213 <= 0;
cmet_in214 <= 0;
cmet_in215 <= 0;
cmet_in216 <= 0;
cmet_in217 <= 0;
cmet_in218 <= 0;
cmet_in219 <= 0;
cmet_in220 <= 0;
cmet_in221 <= 0;
cmet_in222 <= 0;
cmet_in223 <= 0;
cmet_in224 <= 0;
cmet_in225 <= 0;
cmet_in226 <= 0;
cmet_in227 <= 0;
cmet_in228 <= 0;
cmet_in229 <= 0;
cmet_in230 <= 0;
cmet_in231 <= 0;
cmet_in232 <= 0;
cmet_in233 <= 0;
cmet_in234 <= 0;
cmet_in235 <= 0;
cmet_in236 <= 0;
cmet_in237 <= 0;
cmet_in238 <= 0;
cmet_in239 <= 0;
cmet_in240 <= 0;
cmet_in241 <= 0;
cmet_in242 <= 0;
cmet_in243 <= 0;
cmet_in244 <= 0;
cmet_in245 <= 0;
cmet_in246 <= 0;
cmet_in247 <= 0;
cmet_in248 <= 0;
cmet_in249 <= 0;
cmet_in250 <= 0;
cmet_in251 <= 0;
cmet_in252 <= 0;
cmet_in253 <= 0;
cmet_in254 <= 0;
cmet_in255 <= 0;
end
else
begin
cmet_in000 <= cmet000;
cmet_in001 <= cmet001;
cmet_in002 <= cmet002;
cmet_in003 <= cmet003;
cmet_in004 <= cmet004;
cmet_in005 <= cmet005;
cmet_in006 <= cmet006;
cmet_in007 <= cmet007;
cmet_in008 <= cmet008;
cmet_in009 <= cmet009;
cmet_in010 <= cmet010;
cmet_in011 <= cmet011;
cmet_in012 <= cmet012;
cmet_in013 <= cmet013;
cmet_in014 <= cmet014;
cmet_in015 <= cmet015;
cmet_in016 <= cmet016;
cmet_in017 <= cmet017;
cmet_in018 <= cmet018;
cmet_in019 <= cmet019;
cmet_in020 <= cmet020;
cmet_in021 <= cmet021;
cmet_in022 <= cmet022;
cmet_in023 <= cmet023;
cmet_in024 <= cmet024;
cmet_in025 <= cmet025;
cmet_in026 <= cmet026;
cmet_in027 <= cmet027;
cmet_in028 <= cmet028;
cmet_in029 <= cmet029;
cmet_in030 <= cmet030;
cmet_in031 <= cmet031;
cmet_in032 <= cmet032;
cmet_in033 <= cmet033;
cmet_in034 <= cmet034;
cmet_in035 <= cmet035;
cmet_in036 <= cmet036;
cmet_in037 <= cmet037;
cmet_in038 <= cmet038;
cmet_in039 <= cmet039;
cmet_in040 <= cmet040;
cmet_in041 <= cmet041;
cmet_in042 <= cmet042;
cmet_in043 <= cmet043;
cmet_in044 <= cmet044;
cmet_in045 <= cmet045;
cmet_in046 <= cmet046;
cmet_in047 <= cmet047;
cmet_in048 <= cmet048;
cmet_in049 <= cmet049;
cmet_in050 <= cmet050;
cmet_in051 <= cmet051;
cmet_in052 <= cmet052;
cmet_in053 <= cmet053;
cmet_in054 <= cmet054;
cmet_in055 <= cmet055;
cmet_in056 <= cmet056;
cmet_in057 <= cmet057;
cmet_in058 <= cmet058;
cmet_in059 <= cmet059;
cmet_in060 <= cmet060;
cmet_in061 <= cmet061;
cmet_in062 <= cmet062;
cmet_in063 <= cmet063;
cmet_in064 <= cmet064;
cmet_in065 <= cmet065;
cmet_in066 <= cmet066;
cmet_in067 <= cmet067;
cmet_in068 <= cmet068;
cmet_in069 <= cmet069;
cmet_in070 <= cmet070;
cmet_in071 <= cmet071;
cmet_in072 <= cmet072;
cmet_in073 <= cmet073;
cmet_in074 <= cmet074;
cmet_in075 <= cmet075;
cmet_in076 <= cmet076;
cmet_in077 <= cmet077;
cmet_in078 <= cmet078;
cmet_in079 <= cmet079;
cmet_in080 <= cmet080;
cmet_in081 <= cmet081;
cmet_in082 <= cmet082;
cmet_in083 <= cmet083;
cmet_in084 <= cmet084;
cmet_in085 <= cmet085;
cmet_in086 <= cmet086;
cmet_in087 <= cmet087;
cmet_in088 <= cmet088;
cmet_in089 <= cmet089;
cmet_in090 <= cmet090;
cmet_in091 <= cmet091;
cmet_in092 <= cmet092;
cmet_in093 <= cmet093;
cmet_in094 <= cmet094;
cmet_in095 <= cmet095;
cmet_in096 <= cmet096;
cmet_in097 <= cmet097;
cmet_in098 <= cmet098;
cmet_in099 <= cmet099;
cmet_in100 <= cmet100;
cmet_in101 <= cmet101;
cmet_in102 <= cmet102;
cmet_in103 <= cmet103;
cmet_in104 <= cmet104;
cmet_in105 <= cmet105;
cmet_in106 <= cmet106;
cmet_in107 <= cmet107;
cmet_in108 <= cmet108;
cmet_in109 <= cmet109;
cmet_in110 <= cmet110;
cmet_in111 <= cmet111;
cmet_in112 <= cmet112;
cmet_in113 <= cmet113;
cmet_in114 <= cmet114;
cmet_in115 <= cmet115;
cmet_in116 <= cmet116;
cmet_in117 <= cmet117;
cmet_in118 <= cmet118;
cmet_in119 <= cmet119;
cmet_in120 <= cmet120;
cmet_in121 <= cmet121;
cmet_in122 <= cmet122;
cmet_in123 <= cmet123;
cmet_in124 <= cmet124;
cmet_in125 <= cmet125;
cmet_in126 <= cmet126;
cmet_in127 <= cmet127;
cmet_in128 <= cmet128;
cmet_in129 <= cmet129;
cmet_in130 <= cmet130;
cmet_in131 <= cmet131;
cmet_in132 <= cmet132;
cmet_in133 <= cmet133;
cmet_in134 <= cmet134;
cmet_in135 <= cmet135;
cmet_in136 <= cmet136;
cmet_in137 <= cmet137;
cmet_in138 <= cmet138;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -