OpenCores
URL https://opencores.org/ocsvn/cavlc/cavlc/trunk

Subversion Repositories cavlc

[/] [cavlc/] [trunk/] [rtl/] [cavlc_read_total_coeffs.v] - Diff between revs 6 and 7

Only display areas with differences | Details | Blame | View Log

Rev 6 Rev 7
 
//////////////////////////////////////////////////////////////////////
 
////                                                              ////
 
////  cavlc_read_total_coeffs                                     ////
 
////                                                              ////
 
////  Description                                                 ////
 
////      decode total_coeffs and trailing ones                   ////
 
////                                                              ////
 
////  Author(s):                                                  ////
 
////      - bin qiu, qiubin@opencores.org                         ////
 
////                                                              ////
 
//////////////////////////////////////////////////////////////////////
 
////                                                              ////
 
//// Copyright (C) 2011 Authors and OPENCORES.ORG                 ////
 
////                                                              ////
 
//// This source file may be used and distributed without         ////
 
//// restriction provided that this copyright statement is not    ////
 
//// removed from the file and that any derivative work contains  ////
 
//// the original copyright notice and the associated disclaimer. ////
 
////                                                              ////
 
//// This source file is free software; you can redistribute it   ////
 
//// and/or modify it under the terms of the GNU Lesser General   ////
 
//// Public License as published by the Free Software Foundation; ////
 
//// either version 2.1 of the License, or (at your option) any   ////
 
//// later version.                                               ////
 
////                                                              ////
 
//// This source is distributed in the hope that it will be       ////
 
//// useful, but WITHOUT ANY WARRANTY; without even the implied   ////
 
//// warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      ////
 
//// PURPOSE.  See the GNU Lesser General Public License for more ////
 
//// details.                                                     ////
 
////                                                              ////
 
//// You should have received a copy of the GNU Lesser General    ////
 
//// Public License along with this source; if not, download it   ////
 
//// from http://www.opencores.org/lgpl.shtml                     ////
 
////                                                              ////
 
//////////////////////////////////////////////////////////////////////
 
 
//2011-8-7      initial creation
//2011-8-7      initial creation
//2011-8-9      optimize output mux
//2011-8-9      optimize output mux
//2011-9-10     reduce nC to 5 bits
 
 
 
 
 
`include "defines.v"
`include "defines.v"
 
 
module cavlc_read_total_coeffs(
module cavlc_read_total_coeffs
        clk, rst_n,
(
 
    clk,
 
    rst_n,
        ena,
        ena,
 
 
        start,
        start,
        sel,
    sel,
        rbsp, nC,
        rbsp, nC,
 
    TrailingOnes,
        TrailingOnes, TotalCoeff,
    TotalCoeff,
        TrailingOnes_comb, TotalCoeff_comb,
    TrailingOnes_comb,
 
    TotalCoeff_comb,
        len_comb
        len_comb
);
);
//------------------------
//------------------------
//ports
//ports
//------------------------
//------------------------
input   clk, rst_n;
input   clk;
 
input   rst_n;
input   ena;
input   ena;
 
 
input   start;
input   start;
input   sel;
input   sel;
 
 
 
 
input   [0:15]   rbsp;
input   [0:15]   rbsp;
input   signed  [4:0]    nC;
input   signed   [5:0]   nC;
 
 
output  [4:0]    TotalCoeff;             //range from 0 to 16
output  [4:0]  TotalCoeff;        //range from 0 to 16
output  [1:0]    TrailingOnes;   //range from 0 to 3   
output  [1:0]  TrailingOnes;      //range from 0 to 3   
output  [4:0]    TotalCoeff_comb;                //unsaved result of TotalCoeff_comb
output  [4:0]  TotalCoeff_comb;   //unsaved result of TotalCoeff_comb
output  [1:0]    TrailingOnes_comb;      //unsaved result of TrailingOnes_comb
output  [1:0]  TrailingOnes_comb; //unsaved result of TrailingOnes_comb
output  [4:0]    len_comb;                               //indicate how many rbsp bit consumed, range from 0 to 16
output  [4:0]  len_comb;          //indicate how many rbsp bit consumed, range from 0 to 16
 
 
 
 
//------------------------
//------------------------
//regs
//regs
//------------------------
//------------------------
reg             [4:0]    TotalCoeff_comb;
reg     [4:0]   TotalCoeff_comb;
reg             [1:0]    TrailingOnes_comb;
reg     [1:0]   TrailingOnes_comb;
reg             [4:0]    len_comb;
reg     [4:0]   len_comb;
 
 
//for nC >= 0 && nC < 2
//for nC >= 0 && nC < 2
reg             [4:0]    TotalCoeff_1;
reg     [4:0]   TotalCoeff_1;
reg             [1:0]    TrailingOnes_1;
reg     [1:0]   TrailingOnes_1;
reg             [4:0]    len_1;
reg     [4:0]   len_1;
 
 
//for nC >= 2 && nC < 4
//for nC >= 2 && nC < 4
reg             [4:0]    TotalCoeff_2;
reg     [4:0]   TotalCoeff_2;
reg             [1:0]    TrailingOnes_2;
reg     [1:0]   TrailingOnes_2;
reg             [4:0]    len_2;
reg     [4:0]   len_2;
 
 
//for nC >= 4 && nC < 8
//for nC >= 4 && nC < 8
reg             [4:0]    TotalCoeff_3;
reg     [4:0]   TotalCoeff_3;
reg             [1:0]    TrailingOnes_3;
reg     [1:0]   TrailingOnes_3;
reg             [4:0]    len_3;
reg     [4:0]   len_3;
 
 
//for nC >= 8
//for nC >= 8
reg             [4:0]    TotalCoeff_4;
reg     [4:0]   TotalCoeff_4;
reg             [1:0]    TrailingOnes_4;
reg     [1:0]   TrailingOnes_4;
reg             [4:0]    len_4;
reg     [4:0]   len_4;
 
 
//for nC == -1
//for nC == -1
reg             [4:0]    TotalCoeff_5;
reg     [4:0]   TotalCoeff_5;
reg             [1:0]    TrailingOnes_5;
reg     [1:0]   TrailingOnes_5;
reg             [4:0]    len_5;
reg     [4:0]   len_5;
 
 
 
 
//------------------------
//------------------------
//FFs
//FFs
//------------------------
//------------------------
//len is not necessary to be saved
//len is not necessary to be saved
//TotalCoeff & TrailingOnes should be valid when cavlc_state == `cavlc_read_total_coeffs_s
//TotalCoeff & TrailingOnes should be valid when cavlc_state == `cavlc_read_total_coeffs_s
//to do that,combinational result "TotalCoeff_comb & TrailingOnes_comb" are outputed
//to do that,combinational result "TotalCoeff_comb & TrailingOnes_comb" are outputed
reg             [0:15]   rbsp_1;
reg     [0:15]  rbsp_1;
reg             [0:13]   rbsp_2;
reg     [0:13]  rbsp_2;
reg             [0:9]    rbsp_3;
reg     [0:9]   rbsp_3;
reg             [0:5]    rbsp_4;
reg     [0:5]   rbsp_4;
reg             [0:7]    rbsp_5;
reg     [0:7]   rbsp_5;
 
 
reg             [4:0]    TotalCoeff;
reg     [4:0]   TotalCoeff;
reg             [1:0]    TrailingOnes;
reg     [1:0]   TrailingOnes;
 
 
//------------------------
//------------------------
//input mux
//input mux
//------------------------
//------------------------
wire rbsp_refresh =  ena && start;
 
 
 
always @(posedge clk or negedge rst_n)
always @(posedge clk or negedge rst_n)
if (!rst_n)
if (!rst_n)
begin
begin
                rbsp_1 <=  0;
        rbsp_1 <=  0;
                rbsp_2 <=  0;
        rbsp_2 <=  0;
                rbsp_3 <=  0;
        rbsp_3 <=  0;
                rbsp_4 <=  0;
        rbsp_4 <=  0;
                rbsp_5 <=  0;
        rbsp_5 <=  0;
 
 
end
end
else if (rbsp_refresh)
else if (ena && start)
begin
begin
        if (nC[4])
    if (nC[5])
                rbsp_5 <=  rbsp[0:7];
                rbsp_5 <=  rbsp[0:7];
        else if (nC[3])
    else if ( nC[4] || nC[3])
                rbsp_4 <= rbsp[0:5];
                rbsp_4 <= rbsp[0:5];
        else if (nC[2])
    else if (nC[2])
                rbsp_3 <= rbsp[0:9];
        rbsp_3 <= rbsp[0:9];
        else if (nC[1])
    else if (nC[1])
                rbsp_2 <= rbsp[0:13];
        rbsp_2 <= rbsp[0:13];
        else
    else
                rbsp_1 <= rbsp;
        rbsp_1 <= rbsp;
end
end
//------------------------
//------------------------
//nC >= 0 && nC < 2                                 
//nC >= 0 && nC < 2                 
//------------------------
//------------------------
always @(rbsp_1)
always @(rbsp_1)
case (1'b1)
case (1'b1)
rbsp_1[0] : begin
rbsp_1[0] : begin
        TrailingOnes_1  <= 0;
    TrailingOnes_1  <= 0;
        TotalCoeff_1    <= 0;
    TotalCoeff_1    <= 0;
        len_1                   <= 1;
    len_1           <= 1;
end
end
rbsp_1[1] : begin
rbsp_1[1] : begin
        TrailingOnes_1  <= 1;
    TrailingOnes_1  <= 1;
        TotalCoeff_1    <= 1;
    TotalCoeff_1    <= 1;
        len_1                   <= 2;
    len_1           <= 2;
end
end
rbsp_1[2] : begin
rbsp_1[2] : begin
        TrailingOnes_1  <= 2;
    TrailingOnes_1  <= 2;
        TotalCoeff_1    <= 2;
    TotalCoeff_1    <= 2;
        len_1                   <= 3;
    len_1           <= 3;
end
end
rbsp_1[3] : begin
rbsp_1[3] : begin
        if (rbsp_1[4] == 'b1) begin
    if (rbsp_1[4] == 'b1) begin
                TrailingOnes_1  <= 3;
        TrailingOnes_1  <= 3;
                TotalCoeff_1    <= 3;
        TotalCoeff_1    <= 3;
                len_1                   <= 5;
        len_1           <= 5;
        end
    end
        else if (rbsp_1[5] == 'b1) begin
    else if (rbsp_1[5] == 'b1) begin
                TrailingOnes_1  <= 0;
        TrailingOnes_1  <= 0;
                TotalCoeff_1    <= 1;
        TotalCoeff_1    <= 1;
                len_1                   <= 6;
        len_1           <= 6;
        end
    end
        else begin
    else begin
                TrailingOnes_1  <= 1;
        TrailingOnes_1  <= 1;
                TotalCoeff_1    <= 2;
        TotalCoeff_1    <= 2;
                len_1                   <= 6;
        len_1           <= 6;
        end
    end
end
end
rbsp_1[4] : begin
rbsp_1[4] : begin
        if (rbsp_1[5] == 'b1) begin
    if (rbsp_1[5] == 'b1) begin
                TrailingOnes_1  <= 3;
        TrailingOnes_1  <= 3;
                TotalCoeff_1    <= 4;
        TotalCoeff_1    <= 4;
                len_1                   <= 6;
        len_1           <= 6;
        end
    end
        else if (rbsp_1[6] == 'b1) begin
    else if (rbsp_1[6] == 'b1) begin
                TrailingOnes_1  <= 2;
        TrailingOnes_1  <= 2;
                TotalCoeff_1    <= 3;
        TotalCoeff_1    <= 3;
                len_1                   <= 7;
        len_1           <= 7;
        end
    end
        else begin
    else begin
                TrailingOnes_1  <= 3;
        TrailingOnes_1  <= 3;
                TotalCoeff_1    <= 5;
        TotalCoeff_1    <= 5;
                len_1                   <= 7;
        len_1           <= 7;
        end
    end
end
end
rbsp_1[5] : begin
rbsp_1[5] : begin
        len_1                   <= 8;
    len_1           <= 8;
        if (rbsp_1[6:7] == 'b11) begin
    if (rbsp_1[6:7] == 'b11) begin
                TrailingOnes_1  <= 0;
        TrailingOnes_1  <= 0;
                TotalCoeff_1    <= 2;
        TotalCoeff_1    <= 2;
        end
    end
        else if (rbsp_1[6:7] == 'b10) begin
    else if (rbsp_1[6:7] == 'b10) begin
                TrailingOnes_1  <= 1;
        TrailingOnes_1  <= 1;
                TotalCoeff_1    <= 3;
        TotalCoeff_1    <= 3;
        end
    end
        else if (rbsp_1[6:7] == 'b01) begin
    else if (rbsp_1[6:7] == 'b01) begin
                TrailingOnes_1  <= 2;
        TrailingOnes_1  <= 2;
                TotalCoeff_1    <= 4;
        TotalCoeff_1    <= 4;
        end
    end
        else begin
    else begin
                TrailingOnes_1  <= 3;
        TrailingOnes_1  <= 3;
                TotalCoeff_1    <= 6;
        TotalCoeff_1    <= 6;
        end
    end
end
end
rbsp_1[6] : begin
rbsp_1[6] : begin
        len_1                   <= 9;
    len_1           <= 9;
        if (rbsp_1[7:8] == 2'b11) begin
    if (rbsp_1[7:8] == 2'b11) begin
                TrailingOnes_1  <= 0;
        TrailingOnes_1  <= 0;
                TotalCoeff_1    <= 3;
        TotalCoeff_1    <= 3;
        end
    end
        else if (rbsp_1[7:8] == 2'b10) begin
    else if (rbsp_1[7:8] == 2'b10) begin
                TrailingOnes_1  <= 1;
        TrailingOnes_1  <= 1;
                TotalCoeff_1    <= 4;
        TotalCoeff_1    <= 4;
        end
    end
        else if (rbsp_1[7:8] == 2'b01) begin
    else if (rbsp_1[7:8] == 2'b01) begin
                TrailingOnes_1  <= 2;
        TrailingOnes_1  <= 2;
                TotalCoeff_1    <= 5;
        TotalCoeff_1    <= 5;
        end
    end
        else  begin
    else  begin
                TrailingOnes_1  <= 3;
        TrailingOnes_1  <= 3;
                TotalCoeff_1    <= 7;
        TotalCoeff_1    <= 7;
        end
    end
end
end
rbsp_1[7] : begin
rbsp_1[7] : begin
        len_1                   <= 10;
    len_1           <= 10;
        if (rbsp_1[8:9] == 2'b11) begin
    if (rbsp_1[8:9] == 2'b11) begin
                TrailingOnes_1  <= 0;
        TrailingOnes_1  <= 0;
                TotalCoeff_1    <= 4;
        TotalCoeff_1    <= 4;
        end
    end
        else if (rbsp_1[8:9] == 2'b10) begin
    else if (rbsp_1[8:9] == 2'b10) begin
                TrailingOnes_1  <= 1;
        TrailingOnes_1  <= 1;
                TotalCoeff_1    <= 5;
        TotalCoeff_1    <= 5;
        end
    end
        else if (rbsp_1[8:9] == 2'b01) begin
    else if (rbsp_1[8:9] == 2'b01) begin
                TrailingOnes_1  <= 2;
        TrailingOnes_1  <= 2;
                TotalCoeff_1    <= 6;
        TotalCoeff_1    <= 6;
        end
    end
        else begin
    else begin
                TrailingOnes_1  <= 3;
        TrailingOnes_1  <= 3;
                TotalCoeff_1    <= 8;
        TotalCoeff_1    <= 8;
        end
    end
end
end
rbsp_1[8] : begin
rbsp_1[8] : begin
        len_1                   <= 11;
    len_1           <= 11;
        if (rbsp_1[9:10] == 2'b11) begin
    if (rbsp_1[9:10] == 2'b11) begin
                TrailingOnes_1  <= 0;
        TrailingOnes_1  <= 0;
                TotalCoeff_1    <= 5;
        TotalCoeff_1    <= 5;
        end
    end
        else if (rbsp_1[9:10] == 2'b10) begin
    else if (rbsp_1[9:10] == 2'b10) begin
                TrailingOnes_1  <= 1;
        TrailingOnes_1  <= 1;
                TotalCoeff_1    <= 6;
        TotalCoeff_1    <= 6;
        end
    end
        else if (rbsp_1[9:10] == 2'b01) begin
    else if (rbsp_1[9:10] == 2'b01) begin
                TrailingOnes_1  <= 2;
        TrailingOnes_1  <= 2;
                TotalCoeff_1    <= 7;
        TotalCoeff_1    <= 7;
        end
    end
        else begin
    else begin
                TrailingOnes_1  <= 3;
        TrailingOnes_1  <= 3;
                TotalCoeff_1    <= 9;
        TotalCoeff_1    <= 9;
        end
    end
end
end
rbsp_1[9] : begin
rbsp_1[9] : begin
        len_1                   <= 13;
    len_1           <= 13;
        if (rbsp_1[10:12] == 3'b111) begin
    if (rbsp_1[10:12] == 3'b111) begin
                TrailingOnes_1  <= 0;
        TrailingOnes_1  <= 0;
                TotalCoeff_1    <= 6;
        TotalCoeff_1    <= 6;
        end
    end
        else if (rbsp_1[10:12] == 3'b011) begin
    else if (rbsp_1[10:12] == 3'b011) begin
                TrailingOnes_1  <= 0;
        TrailingOnes_1  <= 0;
                TotalCoeff_1    <= 7;
        TotalCoeff_1    <= 7;
        end
    end
        else if (rbsp_1[10:12] == 3'b110) begin
    else if (rbsp_1[10:12] == 3'b110) begin
                TrailingOnes_1  <= 1;
        TrailingOnes_1  <= 1;
                TotalCoeff_1    <= 7;
        TotalCoeff_1    <= 7;
        end
    end
        else if (rbsp_1[10:12] == 3'b000) begin
    else if (rbsp_1[10:12] == 3'b000) begin
                TrailingOnes_1  <= 0;
        TrailingOnes_1  <= 0;
                TotalCoeff_1    <= 8;
        TotalCoeff_1    <= 8;
        end
    end
        else if (rbsp_1[10:12] == 3'b010) begin
    else if (rbsp_1[10:12] == 3'b010) begin
                TrailingOnes_1  <= 1;
        TrailingOnes_1  <= 1;
                TotalCoeff_1    <= 8;
        TotalCoeff_1    <= 8;
        end
    end
        else if (rbsp_1[10:12] == 3'b101) begin
    else if (rbsp_1[10:12] == 3'b101) begin
                TrailingOnes_1  <= 2;
        TrailingOnes_1  <= 2;
                TotalCoeff_1    <= 8;
        TotalCoeff_1    <= 8;
        end
    end
        else if (rbsp_1[10:12] == 3'b001) begin
    else if (rbsp_1[10:12] == 3'b001) begin
                TrailingOnes_1  <= 2;
        TrailingOnes_1  <= 2;
                TotalCoeff_1    <= 9;
        TotalCoeff_1    <= 9;
        end
    end
        else begin
    else begin
                TrailingOnes_1  <= 3;
        TrailingOnes_1  <= 3;
                TotalCoeff_1    <= 10;
        TotalCoeff_1    <= 10;
        end
    end
end
end
rbsp_1[10] : begin
rbsp_1[10] : begin
        len_1                   <= 14;
    len_1           <= 14;
        if (rbsp_1[11:13] == 3'b111) begin
    if (rbsp_1[11:13] == 3'b111) begin
                TrailingOnes_1  <= 0;
        TrailingOnes_1  <= 0;
                TotalCoeff_1    <= 9;
        TotalCoeff_1    <= 9;
        end
    end
        else if (rbsp_1[11:13] == 3'b110) begin
    else if (rbsp_1[11:13] == 3'b110) begin
                TrailingOnes_1  <= 1;
        TrailingOnes_1  <= 1;
                TotalCoeff_1    <= 9;
        TotalCoeff_1    <= 9;
        end
    end
        else if (rbsp_1[11:13] == 3'b011) begin
    else if (rbsp_1[11:13] == 3'b011) begin
                TrailingOnes_1  <= 0;
        TrailingOnes_1  <= 0;
                TotalCoeff_1    <= 10;
        TotalCoeff_1    <= 10;
        end
    end
        else if (rbsp_1[11:13] == 3'b010) begin
    else if (rbsp_1[11:13] == 3'b010) begin
                TrailingOnes_1  <= 1;
        TrailingOnes_1  <= 1;
                TotalCoeff_1    <= 10;
        TotalCoeff_1    <= 10;
        end
    end
        else if (rbsp_1[11:13] == 3'b101) begin
    else if (rbsp_1[11:13] == 3'b101) begin
                TrailingOnes_1  <= 2;
        TrailingOnes_1  <= 2;
                TotalCoeff_1    <= 10;
        TotalCoeff_1    <= 10;
        end
    end
        else if (rbsp_1[11:13] == 3'b001) begin
    else if (rbsp_1[11:13] == 3'b001) begin
                TrailingOnes_1  <= 2;
        TrailingOnes_1  <= 2;
                TotalCoeff_1    <= 11;
        TotalCoeff_1    <= 11;
        end
    end
        else if (rbsp_1[11:13] == 3'b100) begin
    else if (rbsp_1[11:13] == 3'b100) begin
                TrailingOnes_1  <= 3;
        TrailingOnes_1  <= 3;
                TotalCoeff_1    <= 11;
        TotalCoeff_1    <= 11;
        end
    end
        else begin
    else begin
                TrailingOnes_1  <= 3;
        TrailingOnes_1  <= 3;
                TotalCoeff_1    <= 12;
        TotalCoeff_1    <= 12;
        end
    end
end
end
rbsp_1[11] : begin
rbsp_1[11] : begin
        len_1                   <= 15;
    len_1           <= 15;
        if (rbsp_1[12:14] == 3'b111) begin
    if (rbsp_1[12:14] == 3'b111) begin
                TrailingOnes_1  <= 0;
        TrailingOnes_1  <= 0;
                TotalCoeff_1    <= 11;
        TotalCoeff_1    <= 11;
        end
    end
        else if (rbsp_1[12:14] == 3'b110) begin
    else if (rbsp_1[12:14] == 3'b110) begin
                TrailingOnes_1  <= 1;
        TrailingOnes_1  <= 1;
                TotalCoeff_1    <= 11;
        TotalCoeff_1    <= 11;
        end
    end
        else if (rbsp_1[12:14] == 3'b011) begin
    else if (rbsp_1[12:14] == 3'b011) begin
                TrailingOnes_1  <= 0;
        TrailingOnes_1  <= 0;
                TotalCoeff_1    <= 12;
        TotalCoeff_1    <= 12;
        end
    end
        else if (rbsp_1[12:14] == 3'b010) begin
    else if (rbsp_1[12:14] == 3'b010) begin
                TrailingOnes_1  <= 1;
        TrailingOnes_1  <= 1;
                TotalCoeff_1    <= 12;
        TotalCoeff_1    <= 12;
        end
    end
        else if (rbsp_1[12:14] == 3'b101) begin
    else if (rbsp_1[12:14] == 3'b101) begin
                TrailingOnes_1  <= 2;
        TrailingOnes_1  <= 2;
                TotalCoeff_1    <= 12;
        TotalCoeff_1    <= 12;
        end
    end
        else if (rbsp_1[12:14] == 3'b001) begin
    else if (rbsp_1[12:14] == 3'b001) begin
                TrailingOnes_1  <= 2;
        TrailingOnes_1  <= 2;
                TotalCoeff_1    <= 13;
        TotalCoeff_1    <= 13;
        end
    end
        else if (rbsp_1[12:14] == 3'b100) begin
    else if (rbsp_1[12:14] == 3'b100) begin
                TrailingOnes_1  <= 3;
        TrailingOnes_1  <= 3;
                TotalCoeff_1    <= 13;
        TotalCoeff_1    <= 13;
        end
    end
        else begin
    else begin
                TrailingOnes_1  <= 3;
        TrailingOnes_1  <= 3;
                TotalCoeff_1    <= 14;
        TotalCoeff_1    <= 14;
        end
    end
end
end
rbsp_1[12] : begin
rbsp_1[12] : begin
        len_1                   <= 16;
    len_1           <= 16;
        if (rbsp_1[13:15] == 3'b111) begin
    if (rbsp_1[13:15] == 3'b111) begin
                TrailingOnes_1  <= 0;
        TrailingOnes_1  <= 0;
                TotalCoeff_1    <= 13;
        TotalCoeff_1    <= 13;
        end
    end
        else if (rbsp_1[13:15] == 3'b011) begin
    else if (rbsp_1[13:15] == 3'b011) begin
                TrailingOnes_1  <= 0;
        TrailingOnes_1  <= 0;
                TotalCoeff_1    <= 14;
        TotalCoeff_1    <= 14;
        end
    end
        else if (rbsp_1[13:15] == 3'b110) begin
    else if (rbsp_1[13:15] == 3'b110) begin
                TrailingOnes_1  <= 1;
        TrailingOnes_1  <= 1;
                TotalCoeff_1    <= 14;
        TotalCoeff_1    <= 14;
        end
    end
        else if (rbsp_1[13:15] == 3'b101) begin
    else if (rbsp_1[13:15] == 3'b101) begin
                TrailingOnes_1  <= 2;
        TrailingOnes_1  <= 2;
                TotalCoeff_1    <= 14;
        TotalCoeff_1    <= 14;
        end
    end
        else if (rbsp_1[13:15] == 3'b010) begin
    else if (rbsp_1[13:15] == 3'b010) begin
                TrailingOnes_1  <= 1;
        TrailingOnes_1  <= 1;
                TotalCoeff_1    <= 15;
        TotalCoeff_1    <= 15;
        end
    end
        else if (rbsp_1[13:15] == 3'b001) begin
    else if (rbsp_1[13:15] == 3'b001) begin
                TrailingOnes_1  <= 2;
        TrailingOnes_1  <= 2;
                TotalCoeff_1    <= 15;
        TotalCoeff_1    <= 15;
        end
    end
        else if (rbsp_1[13:15] == 3'b100) begin
    else if (rbsp_1[13:15] == 3'b100) begin
                TrailingOnes_1  <= 3;
        TrailingOnes_1  <= 3;
                TotalCoeff_1    <= 15;
        TotalCoeff_1    <= 15;
        end
    end
        else begin
    else begin
                TrailingOnes_1  <= 3;
        TrailingOnes_1  <= 3;
                TotalCoeff_1    <= 16;
        TotalCoeff_1    <= 16;
        end
    end
end
end
rbsp_1[13] : begin
rbsp_1[13] : begin
        len_1                   <= 16;
    len_1           <= 16;
        if (rbsp_1[14:15] == 2'b11) begin
    if (rbsp_1[14:15] == 2'b11) begin
                TrailingOnes_1  <= 0;
        TrailingOnes_1  <= 0;
                TotalCoeff_1    <= 15;
        TotalCoeff_1    <= 15;
        end
    end
        else if (rbsp_1[14:15] == 2'b00) begin
    else if (rbsp_1[14:15] == 2'b00) begin
                TrailingOnes_1  <= 0;
        TrailingOnes_1  <= 0;
                TotalCoeff_1    <= 16;
        TotalCoeff_1    <= 16;
        end
    end
        else if (rbsp_1[14:15] == 2'b10) begin
    else if (rbsp_1[14:15] == 2'b10) begin
                TrailingOnes_1  <= 1;
        TrailingOnes_1  <= 1;
                TotalCoeff_1    <= 16;
        TotalCoeff_1    <= 16;
        end
    end
        else begin
    else begin
                TrailingOnes_1  <= 2;
        TrailingOnes_1  <= 2;
                TotalCoeff_1    <= 16;
        TotalCoeff_1    <= 16;
        end
    end
end
end
default : begin
default : begin
        len_1                   <= 15;
    len_1           <= 15;
        TrailingOnes_1  <= 1;
    TrailingOnes_1  <= 1;
        TotalCoeff_1    <= 13;
    TotalCoeff_1    <= 13;
end
end
endcase
endcase
 
 
//------------------------
//------------------------
//nC >= 2 && nC < 4
//nC >= 2 && nC < 4
//------------------------
//------------------------
always @(rbsp_2)
always @(rbsp_2)
case (1'b1)
case (1'b1)
rbsp_2[0] : begin
rbsp_2[0] : begin
        len_2                   <= 2;
    len_2           <= 2;
        if (rbsp_2[1] == 'b1) begin
    if (rbsp_2[1] == 'b1) begin
                TrailingOnes_2  <= 0;
        TrailingOnes_2  <= 0;
                TotalCoeff_2    <= 0;
        TotalCoeff_2    <= 0;
        end
    end
        else begin
    else begin
                TrailingOnes_2  <= 1;
        TrailingOnes_2  <= 1;
                TotalCoeff_2    <= 1;
        TotalCoeff_2    <= 1;
        end
    end
end
end
rbsp_2[1] : begin
rbsp_2[1] : begin
        if (rbsp_2[2] == 'b1) begin
    if (rbsp_2[2] == 'b1) begin
                TrailingOnes_2  <= 2;
        TrailingOnes_2  <= 2;
                TotalCoeff_2    <= 2;
        TotalCoeff_2    <= 2;
                len_2                   <= 3;
        len_2           <= 3;
        end
    end
        else if (rbsp_2[3] == 'b1) begin
    else if (rbsp_2[3] == 'b1) begin
                TrailingOnes_2  <= 3;
        TrailingOnes_2  <= 3;
                TotalCoeff_2    <= 3;
        TotalCoeff_2    <= 3;
                len_2                   <= 4;
        len_2           <= 4;
        end
    end
        else begin
    else begin
                TrailingOnes_2  <= 3;
        TrailingOnes_2  <= 3;
                TotalCoeff_2    <= 4;
        TotalCoeff_2    <= 4;
                len_2                   <= 4;
        len_2           <= 4;
        end
    end
end
end
rbsp_2[2] : begin
rbsp_2[2] : begin
        if (rbsp_2[3:4] == 'b11) begin
    if (rbsp_2[3:4] == 'b11) begin
                TrailingOnes_2  <= 1;
        TrailingOnes_2  <= 1;
                TotalCoeff_2    <= 2;
        TotalCoeff_2    <= 2;
                len_2                   <= 5;
        len_2           <= 5;
        end
    end
        else if (rbsp_2[3:4] == 'b10) begin
    else if (rbsp_2[3:4] == 'b10) begin
                TrailingOnes_2  <= 3;
        TrailingOnes_2  <= 3;
                TotalCoeff_2    <= 5;
        TotalCoeff_2    <= 5;
                len_2                   <= 5;
        len_2           <= 5;
        end
    end
        else if (rbsp_2[4:5] == 'b11) begin
    else if (rbsp_2[4:5] == 'b11) begin
                TrailingOnes_2  <= 0;
        TrailingOnes_2  <= 0;
                TotalCoeff_2    <= 1;
        TotalCoeff_2    <= 1;
                len_2                   <= 6;
        len_2           <= 6;
        end
    end
        else if (rbsp_2[4:5] == 'b10) begin
    else if (rbsp_2[4:5] == 'b10) begin
                TrailingOnes_2  <= 1;
        TrailingOnes_2  <= 1;
                TotalCoeff_2    <= 3;
        TotalCoeff_2    <= 3;
                len_2                   <= 6;
        len_2           <= 6;
        end
    end
        else if (rbsp_2[4:5] == 'b01) begin
    else if (rbsp_2[4:5] == 'b01) begin
                TrailingOnes_2  <= 2;
        TrailingOnes_2  <= 2;
                TotalCoeff_2    <= 3;
        TotalCoeff_2    <= 3;
                len_2                   <= 6;
        len_2           <= 6;
        end
    end
        else begin
    else begin
                TrailingOnes_2  <= 3;
        TrailingOnes_2  <= 3;
                TotalCoeff_2    <= 6;
        TotalCoeff_2    <= 6;
                len_2                   <= 6;
        len_2           <= 6;
        end
    end
end
end
rbsp_2[3] : begin
rbsp_2[3] : begin
        len_2                   <= 6;
    len_2           <= 6;
        if (rbsp_2[4:5] == 'b11) begin
    if (rbsp_2[4:5] == 'b11) begin
                TrailingOnes_2  <= 0;
        TrailingOnes_2  <= 0;
                TotalCoeff_2    <= 2;
        TotalCoeff_2    <= 2;
        end
    end
        else if (rbsp_2[4:5] == 'b10) begin
    else if (rbsp_2[4:5] == 'b10) begin
                TrailingOnes_2  <= 1;
        TrailingOnes_2  <= 1;
                TotalCoeff_2    <= 4;
        TotalCoeff_2    <= 4;
        end
    end
        else if (rbsp_2[4:5] == 'b01) begin
    else if (rbsp_2[4:5] == 'b01) begin
                TrailingOnes_2  <= 2;
        TrailingOnes_2  <= 2;
                TotalCoeff_2    <= 4;
        TotalCoeff_2    <= 4;
        end
    end
        else begin
    else begin
                TrailingOnes_2  <= 3;
        TrailingOnes_2  <= 3;
                TotalCoeff_2    <= 7;
        TotalCoeff_2    <= 7;
        end
    end
end
end
rbsp_2[4] : begin
rbsp_2[4] : begin
        len_2                   <= 7;
    len_2           <= 7;
        if (rbsp_2[5:6] == 'b11) begin
    if (rbsp_2[5:6] == 'b11) begin
                TrailingOnes_2  <= 0;
        TrailingOnes_2  <= 0;
                TotalCoeff_2    <= 3;
        TotalCoeff_2    <= 3;
        end
    end
        else if (rbsp_2[5:6] == 'b10) begin
    else if (rbsp_2[5:6] == 'b10) begin
                TrailingOnes_2  <= 1;
        TrailingOnes_2  <= 1;
                TotalCoeff_2    <= 5;
        TotalCoeff_2    <= 5;
        end
    end
        else if (rbsp_2[5:6] == 'b01) begin
    else if (rbsp_2[5:6] == 'b01) begin
                TrailingOnes_2  <= 2;
        TrailingOnes_2  <= 2;
                TotalCoeff_2    <= 5;
        TotalCoeff_2    <= 5;
        end
    end
        else begin
    else begin
                TrailingOnes_2  <= 3;
        TrailingOnes_2  <= 3;
                TotalCoeff_2    <= 8;
        TotalCoeff_2    <= 8;
        end
    end
end
end
rbsp_2[5] : begin
rbsp_2[5] : begin
        len_2                   <= 8;
    len_2           <= 8;
        if (rbsp_2[6:7] == 'b11) begin
    if (rbsp_2[6:7] == 'b11) begin
                TrailingOnes_2  <= 0;
        TrailingOnes_2  <= 0;
                TotalCoeff_2    <= 4;
        TotalCoeff_2    <= 4;
        end
    end
        else if (rbsp_2[6:7] == 'b00) begin
    else if (rbsp_2[6:7] == 'b00) begin
                TrailingOnes_2  <= 0;
        TrailingOnes_2  <= 0;
                TotalCoeff_2    <= 5;
        TotalCoeff_2    <= 5;
        end
    end
        else if (rbsp_2[6:7] == 'b10) begin
    else if (rbsp_2[6:7] == 'b10) begin
                TrailingOnes_2  <= 1;
        TrailingOnes_2  <= 1;
                TotalCoeff_2    <= 6;
        TotalCoeff_2    <= 6;
        end
    end
        else begin
    else begin
                TrailingOnes_2  <= 2;
        TrailingOnes_2  <= 2;
                TotalCoeff_2    <= 6;
        TotalCoeff_2    <= 6;
        end
    end
end
end
rbsp_2[6] : begin
rbsp_2[6] : begin
        len_2                   <= 9;
    len_2           <= 9;
        if (rbsp_2[7:8] == 'b11) begin
    if (rbsp_2[7:8] == 'b11) begin
                TrailingOnes_2  <= 0;
        TrailingOnes_2  <= 0;
                TotalCoeff_2    <= 6;
        TotalCoeff_2    <= 6;
        end
    end
        else if (rbsp_2[7:8] == 'b10) begin
    else if (rbsp_2[7:8] == 'b10) begin
                TrailingOnes_2  <= 1;
        TrailingOnes_2  <= 1;
                TotalCoeff_2    <= 7;
        TotalCoeff_2    <= 7;
        end
    end
        else if (rbsp_2[7:8] == 'b01) begin
    else if (rbsp_2[7:8] == 'b01) begin
                TrailingOnes_2  <= 2;
        TrailingOnes_2  <= 2;
                TotalCoeff_2    <= 7;
        TotalCoeff_2    <= 7;
        end
    end
        else begin
    else begin
                TrailingOnes_2  <= 3;
        TrailingOnes_2  <= 3;
                TotalCoeff_2    <= 9;
        TotalCoeff_2    <= 9;
        end
    end
end
end
rbsp_2[7] : begin
rbsp_2[7] : begin
        len_2                   <= 11;
    len_2           <= 11;
        if (rbsp_2[8:10] == 'b111) begin
    if (rbsp_2[8:10] == 'b111) begin
                TrailingOnes_2  <= 0;
        TrailingOnes_2  <= 0;
                TotalCoeff_2    <= 7;
        TotalCoeff_2    <= 7;
        end
    end
        else if (rbsp_2[8:10] == 'b011) begin
    else if (rbsp_2[8:10] == 'b011) begin
                TrailingOnes_2  <= 0;
        TrailingOnes_2  <= 0;
                TotalCoeff_2    <= 8;
        TotalCoeff_2    <= 8;
        end
    end
        else if (rbsp_2[8:10] == 'b110) begin
    else if (rbsp_2[8:10] == 'b110) begin
                TrailingOnes_2  <= 1;
        TrailingOnes_2  <= 1;
                TotalCoeff_2    <= 8;
        TotalCoeff_2    <= 8;
        end
    end
        else if (rbsp_2[8:10] == 'b101) begin
    else if (rbsp_2[8:10] == 'b101) begin
                TrailingOnes_2  <= 2;
        TrailingOnes_2  <= 2;
                TotalCoeff_2    <= 8;
        TotalCoeff_2    <= 8;
        end
    end
        else if (rbsp_2[8:10] == 'b010) begin
    else if (rbsp_2[8:10] == 'b010) begin
                TrailingOnes_2  <= 1;
        TrailingOnes_2  <= 1;
                TotalCoeff_2    <= 9;
        TotalCoeff_2    <= 9;
        end
    end
        else if (rbsp_2[8:10] == 'b001) begin
    else if (rbsp_2[8:10] == 'b001) begin
                TrailingOnes_2  <= 2;
        TrailingOnes_2  <= 2;
                TotalCoeff_2    <= 9;
        TotalCoeff_2    <= 9;
        end
    end
        else if (rbsp_2[8:10] == 'b100) begin
    else if (rbsp_2[8:10] == 'b100) begin
                TrailingOnes_2  <= 3;
        TrailingOnes_2  <= 3;
                TotalCoeff_2    <= 10;
        TotalCoeff_2    <= 10;
        end
    end
        else begin
    else begin
                TrailingOnes_2  <= 3;
        TrailingOnes_2  <= 3;
                TotalCoeff_2    <= 11;
        TotalCoeff_2    <= 11;
        end
    end
end
end
rbsp_2[8] : begin
rbsp_2[8] : begin
        len_2                   <= 12;
    len_2           <= 12;
        if (rbsp_2[9:11] == 'b111) begin
    if (rbsp_2[9:11] == 'b111) begin
                TrailingOnes_2  <= 0;
        TrailingOnes_2  <= 0;
                TotalCoeff_2    <= 9;
        TotalCoeff_2    <= 9;
        end
    end
        else if (rbsp_2[9:11] == 'b011) begin
    else if (rbsp_2[9:11] == 'b011) begin
                TrailingOnes_2  <= 0;
        TrailingOnes_2  <= 0;
                TotalCoeff_2    <= 10;
        TotalCoeff_2    <= 10;
        end
    end
        else if (rbsp_2[9:11] == 'b110) begin
    else if (rbsp_2[9:11] == 'b110) begin
                TrailingOnes_2  <= 1;
        TrailingOnes_2  <= 1;
                TotalCoeff_2    <= 10;
        TotalCoeff_2    <= 10;
        end
    end
        else if (rbsp_2[9:11] == 'b101) begin
    else if (rbsp_2[9:11] == 'b101) begin
                TrailingOnes_2  <= 2;
        TrailingOnes_2  <= 2;
                TotalCoeff_2    <= 10;
        TotalCoeff_2    <= 10;
        end
    end
        else if (rbsp_2[9:11] == 'b000) begin
    else if (rbsp_2[9:11] == 'b000) begin
                TrailingOnes_2  <= 0;
        TrailingOnes_2  <= 0;
                TotalCoeff_2    <= 11;
        TotalCoeff_2    <= 11;
        end
    end
        else if (rbsp_2[9:11] == 'b010) begin
    else if (rbsp_2[9:11] == 'b010) begin
                TrailingOnes_2  <= 1;
        TrailingOnes_2  <= 1;
                TotalCoeff_2    <= 11;
        TotalCoeff_2    <= 11;
        end
    end
        else if (rbsp_2[9:11] == 'b001) begin
    else if (rbsp_2[9:11] == 'b001) begin
                TrailingOnes_2  <= 2;
        TrailingOnes_2  <= 2;
                TotalCoeff_2    <= 11;
        TotalCoeff_2    <= 11;
        end
    end
        else  begin
    else  begin
                TrailingOnes_2  <= 3;
        TrailingOnes_2  <= 3;
                TotalCoeff_2    <= 12;
        TotalCoeff_2    <= 12;
        end
    end
end
end
rbsp_2[9] : begin
rbsp_2[9] : begin
        len_2                   <= 13;
    len_2           <= 13;
        if (rbsp_2[10:12] == 'b111) begin
    if (rbsp_2[10:12] == 'b111) begin
                TrailingOnes_2  <= 0;
        TrailingOnes_2  <= 0;
                TotalCoeff_2    <= 12;
        TotalCoeff_2    <= 12;
        end
    end
        else if (rbsp_2[10:12] == 'b110) begin
    else if (rbsp_2[10:12] == 'b110) begin
                TrailingOnes_2  <= 1;
        TrailingOnes_2  <= 1;
                TotalCoeff_2    <= 12;
        TotalCoeff_2    <= 12;
        end
    end
        else if (rbsp_2[10:12] == 'b101) begin
    else if (rbsp_2[10:12] == 'b101) begin
                TrailingOnes_2  <= 2;
        TrailingOnes_2  <= 2;
                TotalCoeff_2    <= 12;
        TotalCoeff_2    <= 12;
        end
    end
        else if (rbsp_2[10:12] == 'b011) begin
    else if (rbsp_2[10:12] == 'b011) begin
                TrailingOnes_2  <= 0;
        TrailingOnes_2  <= 0;
                TotalCoeff_2    <= 13;
        TotalCoeff_2    <= 13;
        end
    end
        else if (rbsp_2[10:12] == 'b010) begin
    else if (rbsp_2[10:12] == 'b010) begin
                TrailingOnes_2  <= 1;
        TrailingOnes_2  <= 1;
                TotalCoeff_2    <= 13;
        TotalCoeff_2    <= 13;
        end
    end
        else if (rbsp_2[10:12] == 'b001) begin
    else if (rbsp_2[10:12] == 'b001) begin
                TrailingOnes_2  <= 2;
        TrailingOnes_2  <= 2;
                TotalCoeff_2    <= 13;
        TotalCoeff_2    <= 13;
        end
    end
        else if (rbsp_2[10:12] == 'b100) begin
    else if (rbsp_2[10:12] == 'b100) begin
                TrailingOnes_2  <= 3;
        TrailingOnes_2  <= 3;
                TotalCoeff_2    <= 13;
        TotalCoeff_2    <= 13;
        end
    end
        else begin
    else begin
                TrailingOnes_2  <= 3;
        TrailingOnes_2  <= 3;
                TotalCoeff_2    <= 14;
        TotalCoeff_2    <= 14;
        end
    end
end
end
rbsp_2[10] : begin
rbsp_2[10] : begin
        if (rbsp_2[11:12] == 'b11) begin
    if (rbsp_2[11:12] == 'b11) begin
                TrailingOnes_2  <= 0;
        TrailingOnes_2  <= 0;
                TotalCoeff_2    <= 14;
        TotalCoeff_2    <= 14;
                len_2                   <= 13;
        len_2           <= 13;
        end
    end
        else if (rbsp_2[11:12] == 'b10) begin
    else if (rbsp_2[11:12] == 'b10) begin
                TrailingOnes_2  <= 2;
        TrailingOnes_2  <= 2;
                TotalCoeff_2    <= 14;
        TotalCoeff_2    <= 14;
                len_2                   <= 13;
        len_2           <= 13;
        end
    end
        else if (rbsp_2[12:13] == 'b11) begin
    else if (rbsp_2[12:13] == 'b11) begin
                TrailingOnes_2  <= 1;
        TrailingOnes_2  <= 1;
                TotalCoeff_2    <= 14;
        TotalCoeff_2    <= 14;
                len_2                   <= 14;
        len_2           <= 14;
        end
    end
        else if (rbsp_2[12:13] == 'b01) begin
    else if (rbsp_2[12:13] == 'b01) begin
                TrailingOnes_2  <= 0;
        TrailingOnes_2  <= 0;
                TotalCoeff_2    <= 15;
        TotalCoeff_2    <= 15;
                len_2                   <= 14;
        len_2           <= 14;
        end
    end
        else if (rbsp_2[12:13] == 'b00) begin
    else if (rbsp_2[12:13] == 'b00) begin
                TrailingOnes_2  <= 1;
        TrailingOnes_2  <= 1;
                TotalCoeff_2    <= 15;
        TotalCoeff_2    <= 15;
                len_2                   <= 14;
        len_2           <= 14;
        end
    end
        else begin
    else begin
                TrailingOnes_2  <= 2;
        TrailingOnes_2  <= 2;
                TotalCoeff_2    <= 15;
        TotalCoeff_2    <= 15;
                len_2                   <= 14;
        len_2           <= 14;
        end
    end
end
end
rbsp_2[11] : begin
rbsp_2[11] : begin
        len_2                   <= 14;
    len_2           <= 14;
        if (rbsp_2[12:13] == 'b11) begin
    if (rbsp_2[12:13] == 'b11) begin
                TrailingOnes_2  <= 0;
        TrailingOnes_2  <= 0;
                TotalCoeff_2    <= 16;
        TotalCoeff_2    <= 16;
        end
    end
        else if (rbsp_2[12:13] == 'b10) begin
    else if (rbsp_2[12:13] == 'b10) begin
                TrailingOnes_2  <= 1;
        TrailingOnes_2  <= 1;
                TotalCoeff_2    <= 16;
        TotalCoeff_2    <= 16;
        end
    end
        else if (rbsp_2[12:13] == 'b01) begin
    else if (rbsp_2[12:13] == 'b01) begin
                TrailingOnes_2  <= 2;
        TrailingOnes_2  <= 2;
                TotalCoeff_2    <= 16;
        TotalCoeff_2    <= 16;
        end
    end
        else begin
    else begin
                TrailingOnes_2  <= 3;
        TrailingOnes_2  <= 3;
                TotalCoeff_2    <= 16;
        TotalCoeff_2    <= 16;
        end
    end
end
end
default : begin
default : begin
        TrailingOnes_2  <= 3;
    TrailingOnes_2  <= 3;
        TotalCoeff_2    <= 15;
    TotalCoeff_2    <= 15;
        len_2                   <= 13;
    len_2           <= 13;
end
end
endcase
endcase
 
 
//------------------------
//------------------------
// nC >= 4 && nC < 8
// nC >= 4 && nC < 8
//------------------------
//------------------------
always @(rbsp_3)
always @(rbsp_3)
case (1'b1)
case (1'b1)
rbsp_3[0] : begin
rbsp_3[0] : begin
        len_3                   <= 4;
    len_3           <= 4;
        case (rbsp_3[1:3])
    case (rbsp_3[1:3])
                'b111 : begin
        'b111 : begin
                        TrailingOnes_3  <= 0;
            TrailingOnes_3  <= 0;
                        TotalCoeff_3    <= 0;
            TotalCoeff_3    <= 0;
                end
        end
                'b110 : begin
        'b110 : begin
                        TrailingOnes_3  <= 1;
            TrailingOnes_3  <= 1;
                        TotalCoeff_3    <= 1;
            TotalCoeff_3    <= 1;
                end
        end
                'b101 : begin
        'b101 : begin
                        TrailingOnes_3  <= 2;
            TrailingOnes_3  <= 2;
                        TotalCoeff_3    <= 2;
            TotalCoeff_3    <= 2;
                end
        end
                'b100 : begin
        'b100 : begin
                        TrailingOnes_3  <= 3;
            TrailingOnes_3  <= 3;
                        TotalCoeff_3    <= 3;
            TotalCoeff_3    <= 3;
                end
        end
                'b011 : begin
        'b011 : begin
                        TrailingOnes_3  <= 3;
            TrailingOnes_3  <= 3;
                        TotalCoeff_3    <= 4;
            TotalCoeff_3    <= 4;
                end
        end
                'b010 : begin
        'b010 : begin
                        TrailingOnes_3  <= 3;
            TrailingOnes_3  <= 3;
                        TotalCoeff_3    <= 5;
            TotalCoeff_3    <= 5;
                end
        end
                'b001 : begin
        'b001 : begin
                        TrailingOnes_3  <= 3;
            TrailingOnes_3  <= 3;
                        TotalCoeff_3    <= 6;
            TotalCoeff_3    <= 6;
                end
        end
                'b000 : begin
        'b000 : begin
                        TrailingOnes_3  <= 3;
            TrailingOnes_3  <= 3;
                        TotalCoeff_3    <= 7;
            TotalCoeff_3    <= 7;
                end
        end
        endcase
    endcase
end
end
rbsp_3[1] : begin
rbsp_3[1] : begin
        len_3                   <= 5;
    len_3           <= 5;
        case (rbsp_3[2:4])
    case (rbsp_3[2:4])
                'b111 : begin
        'b111 : begin
                        TrailingOnes_3  <= 1;
            TrailingOnes_3  <= 1;
                        TotalCoeff_3    <= 2;
            TotalCoeff_3    <= 2;
                end
        end
                'b100 : begin
        'b100 : begin
                        TrailingOnes_3  <= 1;
            TrailingOnes_3  <= 1;
                        TotalCoeff_3    <= 3;
            TotalCoeff_3    <= 3;
                end
        end
                'b110 : begin
        'b110 : begin
                        TrailingOnes_3  <= 2;
            TrailingOnes_3  <= 2;
                        TotalCoeff_3    <= 3;
            TotalCoeff_3    <= 3;
                end
        end
                'b010 : begin
        'b010 : begin
                        TrailingOnes_3  <= 1;
            TrailingOnes_3  <= 1;
                        TotalCoeff_3    <= 4;
            TotalCoeff_3    <= 4;
                end
        end
                'b011 : begin
        'b011 : begin
                        TrailingOnes_3  <= 2;
            TrailingOnes_3  <= 2;
                        TotalCoeff_3    <= 4;
            TotalCoeff_3    <= 4;
                end
        end
                'b000 : begin
        'b000 : begin
                        TrailingOnes_3  <= 1;
            TrailingOnes_3  <= 1;
                        TotalCoeff_3    <= 5;
            TotalCoeff_3    <= 5;
                end
        end
                'b001 : begin
        'b001 : begin
                        TrailingOnes_3  <= 2;
            TrailingOnes_3  <= 2;
                        TotalCoeff_3    <= 5;
            TotalCoeff_3    <= 5;
                end
        end
                'b101 : begin
        'b101 : begin
                        TrailingOnes_3  <= 3;
            TrailingOnes_3  <= 3;
                        TotalCoeff_3    <= 8;
            TotalCoeff_3    <= 8;
                end
        end
        endcase
    endcase
end
end
rbsp_3[2] : begin
rbsp_3[2] : begin
        len_3                   <= 6;
    len_3           <= 6;
        case (rbsp_3[3:5])
    case (rbsp_3[3:5])
                3'b111 : begin
        3'b111 : begin
                        TrailingOnes_3  <= 0;
            TrailingOnes_3  <= 0;
                        TotalCoeff_3    <= 1;
            TotalCoeff_3    <= 1;
                end
        end
                3'b011 : begin
        3'b011 : begin
                        TrailingOnes_3  <= 0;
            TrailingOnes_3  <= 0;
                        TotalCoeff_3    <= 2;
            TotalCoeff_3    <= 2;
                end
        end
                3'b000 : begin
        3'b000 : begin
                        TrailingOnes_3  <= 0;
            TrailingOnes_3  <= 0;
                        TotalCoeff_3    <= 3;
            TotalCoeff_3    <= 3;
                end
        end
                3'b110 : begin
        3'b110 : begin
                        TrailingOnes_3  <= 1;
            TrailingOnes_3  <= 1;
                        TotalCoeff_3    <= 6;
            TotalCoeff_3    <= 6;
                end
        end
                3'b101 : begin
        3'b101 : begin
                        TrailingOnes_3  <= 2;
            TrailingOnes_3  <= 2;
                        TotalCoeff_3    <= 6;
            TotalCoeff_3    <= 6;
                end
        end
                3'b010 : begin
        3'b010 : begin
                        TrailingOnes_3  <= 1;
            TrailingOnes_3  <= 1;
                        TotalCoeff_3    <= 7;
            TotalCoeff_3    <= 7;
                end
        end
                3'b001 : begin
        3'b001 : begin
                        TrailingOnes_3  <= 2;
            TrailingOnes_3  <= 2;
                        TotalCoeff_3    <= 7;
            TotalCoeff_3    <= 7;
                end
        end
                3'b100 : begin
        3'b100 : begin
                        TrailingOnes_3  <= 3;
            TrailingOnes_3  <= 3;
                        TotalCoeff_3    <= 9;
            TotalCoeff_3    <= 9;
                end
        end
        endcase
    endcase
end
end
rbsp_3[3] : begin
rbsp_3[3] : begin
        len_3                   <= 7;
    len_3           <= 7;
        case (rbsp_3[4:6])
    case (rbsp_3[4:6])
                'b111 : begin
        'b111 : begin
                        TrailingOnes_3  <= 0;
            TrailingOnes_3  <= 0;
                        TotalCoeff_3    <= 4;
            TotalCoeff_3    <= 4;
                end
        end
                'b011 : begin
        'b011 : begin
                        TrailingOnes_3  <= 0;
            TrailingOnes_3  <= 0;
                        TotalCoeff_3    <= 5;
            TotalCoeff_3    <= 5;
                end
        end
                'b001 : begin
        'b001 : begin
                        TrailingOnes_3  <= 0;
            TrailingOnes_3  <= 0;
                        TotalCoeff_3    <= 6;
            TotalCoeff_3    <= 6;
                end
        end
                'b000 : begin
        'b000 : begin
                        TrailingOnes_3  <= 0;
            TrailingOnes_3  <= 0;
                        TotalCoeff_3    <= 7;
            TotalCoeff_3    <= 7;
                end
        end
                'b110 : begin
        'b110 : begin
                        TrailingOnes_3  <= 1;
            TrailingOnes_3  <= 1;
                        TotalCoeff_3    <= 8;
            TotalCoeff_3    <= 8;
                end
        end
                'b101 : begin
        'b101 : begin
                        TrailingOnes_3  <= 2;
            TrailingOnes_3  <= 2;
                        TotalCoeff_3    <= 8;
            TotalCoeff_3    <= 8;
                end
        end
 
 
                'b010 : begin
        'b010 : begin
                        TrailingOnes_3  <= 2;
            TrailingOnes_3  <= 2;
                        TotalCoeff_3    <= 9;
            TotalCoeff_3    <= 9;
                end
        end
                'b100 : begin
        'b100 : begin
                        TrailingOnes_3  <= 3;
            TrailingOnes_3  <= 3;
                        TotalCoeff_3    <= 10;
            TotalCoeff_3    <= 10;
                end
        end
        endcase
    endcase
end
end
rbsp_3[4] : begin
rbsp_3[4] : begin
        len_3                   <= 8;
    len_3           <= 8;
        case (rbsp_3[5:7])
    case (rbsp_3[5:7])
                'b111 : begin
        'b111 : begin
                        TrailingOnes_3  <= 0;
            TrailingOnes_3  <= 0;
                        TotalCoeff_3    <= 8;
            TotalCoeff_3    <= 8;
                end
        end
                'b011 : begin
        'b011 : begin
                        TrailingOnes_3  <= 0;
            TrailingOnes_3  <= 0;
                        TotalCoeff_3    <= 9;
            TotalCoeff_3    <= 9;
                end
        end
                'b110 : begin
        'b110 : begin
                        TrailingOnes_3  <= 1;
            TrailingOnes_3  <= 1;
                        TotalCoeff_3    <= 9;
            TotalCoeff_3    <= 9;
                end
        end
                'b010 : begin
        'b010 : begin
                        TrailingOnes_3  <= 1;
            TrailingOnes_3  <= 1;
                        TotalCoeff_3    <= 10;
            TotalCoeff_3    <= 10;
                end
        end
                'b101 : begin
        'b101 : begin
                        TrailingOnes_3  <= 2;
            TrailingOnes_3  <= 2;
                        TotalCoeff_3    <= 10;
            TotalCoeff_3    <= 10;
                end
        end
                'b001 : begin
        'b001 : begin
                        TrailingOnes_3  <= 2;
            TrailingOnes_3  <= 2;
                        TotalCoeff_3    <= 11;
            TotalCoeff_3    <= 11;
                end
        end
                'b100 : begin
        'b100 : begin
                        TrailingOnes_3  <= 3;
            TrailingOnes_3  <= 3;
                        TotalCoeff_3    <= 11;
            TotalCoeff_3    <= 11;
                end
        end
                'b000 : begin
        'b000 : begin
                        TrailingOnes_3  <= 3;
            TrailingOnes_3  <= 3;
                        TotalCoeff_3    <= 12;
            TotalCoeff_3    <= 12;
                end
        end
        endcase
    endcase
end
end
rbsp_3[5] : begin
rbsp_3[5] : begin
        len_3                   <= 9;
    len_3           <= 9;
        case (rbsp_3[6:8])
    case (rbsp_3[6:8])
                'b111 : begin
        'b111 : begin
                        TrailingOnes_3  <= 0;
            TrailingOnes_3  <= 0;
                        TotalCoeff_3    <= 10;
            TotalCoeff_3    <= 10;
                end
        end
                'b011 : begin
        'b011 : begin
                        TrailingOnes_3  <= 0;
            TrailingOnes_3  <= 0;
                        TotalCoeff_3    <= 11;
            TotalCoeff_3    <= 11;
                end
        end
                'b110 : begin
        'b110 : begin
                        TrailingOnes_3  <= 1;
            TrailingOnes_3  <= 1;
                        TotalCoeff_3    <= 11;
            TotalCoeff_3    <= 11;
                end
        end
                'b000 : begin
        'b000 : begin
                        TrailingOnes_3  <= 0;
            TrailingOnes_3  <= 0;
                        TotalCoeff_3    <= 12;
            TotalCoeff_3    <= 12;
                end
        end
                'b010 : begin
        'b010 : begin
                        TrailingOnes_3  <= 1;
            TrailingOnes_3  <= 1;
                        TotalCoeff_3    <= 12;
            TotalCoeff_3    <= 12;
                end
        end
                'b101 : begin
        'b101 : begin
                        TrailingOnes_3  <= 2;
            TrailingOnes_3  <= 2;
                        TotalCoeff_3    <= 12;
            TotalCoeff_3    <= 12;
                end
        end
                'b001 : begin
        'b001 : begin
                        TrailingOnes_3  <= 2;
            TrailingOnes_3  <= 2;
                        TotalCoeff_3    <= 13;
            TotalCoeff_3    <= 13;
                end
        end
                'b100 : begin
        'b100 : begin
                        TrailingOnes_3  <= 3;
            TrailingOnes_3  <= 3;
                        TotalCoeff_3    <= 13;
            TotalCoeff_3    <= 13;
                end
        end
        endcase
    endcase
end
end
rbsp_3[6] : begin
rbsp_3[6] : begin
        if (rbsp_3[7:8] == 'b11)begin
    if (rbsp_3[7:8] == 'b11)begin
                TrailingOnes_3  <= 1;
        TrailingOnes_3  <= 1;
                TotalCoeff_3    <= 13;
        TotalCoeff_3    <= 13;
                len_3                   <= 9;
        len_3           <= 9;
        end
    end
        else if (rbsp_3[7:9] == 'b101)begin
    else if (rbsp_3[7:9] == 'b101)begin
                TrailingOnes_3  <= 0;
        TrailingOnes_3  <= 0;
                TotalCoeff_3    <= 13;
        TotalCoeff_3    <= 13;
                len_3                   <= 10;
        len_3           <= 10;
        end
    end
        else if (rbsp_3[7:9] == 'b001)begin
    else if (rbsp_3[7:9] == 'b001)begin
                TrailingOnes_3  <= 0;
        TrailingOnes_3  <= 0;
                TotalCoeff_3    <= 14;
        TotalCoeff_3    <= 14;
                len_3                   <= 10;
        len_3           <= 10;
        end
    end
        else if (rbsp_3[7:9] == 'b100)begin
    else if (rbsp_3[7:9] == 'b100)begin
                TrailingOnes_3  <= 1;
        TrailingOnes_3  <= 1;
                TotalCoeff_3    <= 14;
        TotalCoeff_3    <= 14;
                len_3                   <= 10;
        len_3           <= 10;
        end
    end
        else if (rbsp_3[7:9] == 'b011)begin
    else if (rbsp_3[7:9] == 'b011)begin
                TrailingOnes_3  <= 2;
        TrailingOnes_3  <= 2;
                TotalCoeff_3    <= 14;
        TotalCoeff_3    <= 14;
                len_3                   <= 10;
        len_3           <= 10;
        end
    end
        else if (rbsp_3[7:9] == 'b010)begin
    else if (rbsp_3[7:9] == 'b010)begin
                TrailingOnes_3  <= 3;
        TrailingOnes_3  <= 3;
                TotalCoeff_3    <= 14;
        TotalCoeff_3    <= 14;
                len_3                   <= 10;
        len_3           <= 10;
        end
    end
        else begin
    else begin
                TrailingOnes_3  <= 1;
        TrailingOnes_3  <= 1;
                TotalCoeff_3    <= 15;
        TotalCoeff_3    <= 15;
                len_3                   <= 10;
        len_3           <= 10;
        end
    end
end
end
rbsp_3[7] : begin
rbsp_3[7] : begin
        len_3                   <= 10;
    len_3           <= 10;
        case (rbsp_3[8:9])
    case (rbsp_3[8:9])
                'b01 : begin
        'b01 : begin
                        TrailingOnes_3  <= 0;
            TrailingOnes_3  <= 0;
                        TotalCoeff_3    <= 15;
            TotalCoeff_3    <= 15;
                end
        end
                'b11 : begin
        'b11 : begin
                        TrailingOnes_3  <= 2;
            TrailingOnes_3  <= 2;
                        TotalCoeff_3    <= 15;
            TotalCoeff_3    <= 15;
                end
        end
                'b10 : begin
        'b10 : begin
                        TrailingOnes_3  <= 3;
            TrailingOnes_3  <= 3;
                        TotalCoeff_3    <= 15;
            TotalCoeff_3    <= 15;
                end
        end
                'b00 : begin
        'b00 : begin
                        TrailingOnes_3  <= 1;
            TrailingOnes_3  <= 1;
                        TotalCoeff_3    <= 16;
            TotalCoeff_3    <= 16;
                end
        end
        endcase
    endcase
end
end
rbsp_3[8] : begin
rbsp_3[8] : begin
        len_3                   <= 10;
    len_3           <= 10;
        if (rbsp_3[9] == 'b1)begin
    if (rbsp_3[9] == 'b1)begin
                TrailingOnes_3  <= 2;
        TrailingOnes_3  <= 2;
                TotalCoeff_3    <= 16;
        TotalCoeff_3    <= 16;
        end
    end
        else begin
    else begin
                TrailingOnes_3  <= 3;
        TrailingOnes_3  <= 3;
                TotalCoeff_3    <= 16;
        TotalCoeff_3    <= 16;
        end
    end
end
end
default : begin
default : begin
        len_3                   <= 10;
    len_3           <= 10;
        TrailingOnes_3  <= 0;
    TrailingOnes_3  <= 0;
        TotalCoeff_3    <= 16;
    TotalCoeff_3    <= 16;
end
end
endcase
endcase
 
 
//------------------ Colum 4 : nC >= 8---------------------
//------------------------
 
// nC > 8
 
//------------------------
always @(rbsp_4)
always @(rbsp_4)
begin
begin
        len_4 <= 6;
    len_4 <= 6;
        if (rbsp_4[0:4] == 5'b00001) begin
    if (rbsp_4[0:4] == 5'b00001) begin
                TrailingOnes_4  <= 0;
        TrailingOnes_4  <= 0;
                TotalCoeff_4    <= 0;
        TotalCoeff_4    <= 0;
        end
    end
        else begin
    else begin
                TrailingOnes_4  <= rbsp_4[4:5];
        TrailingOnes_4  <= rbsp_4[4:5];
                TotalCoeff_4    <= rbsp_4[0:3] + 1'b1;
        TotalCoeff_4    <= rbsp_4[0:3] + 1'b1;
        end
    end
end
end
 
 
//------------------------
//------------------------
// nC == -1
// nC == -1
//------------------------
//------------------------
always @(rbsp_5)
always @(rbsp_5)
case (1'b1)
case (1'b1)
rbsp_5[0] : begin
rbsp_5[0] : begin
        TrailingOnes_5  <= 1;
    TrailingOnes_5  <= 1;
        TotalCoeff_5    <= 1;
    TotalCoeff_5    <= 1;
        len_5                   <= 1;
    len_5           <= 1;
end
end
rbsp_5[1] : begin
rbsp_5[1] : begin
        TrailingOnes_5  <= 0;
    TrailingOnes_5  <= 0;
        TotalCoeff_5    <= 0;
    TotalCoeff_5    <= 0;
        len_5                   <= 2;
    len_5           <= 2;
end
end
rbsp_5[2] : begin
rbsp_5[2] : begin
        TrailingOnes_5  <= 2;
    TrailingOnes_5  <= 2;
        TotalCoeff_5    <= 2;
    TotalCoeff_5    <= 2;
        len_5                   <= 3;
    len_5           <= 3;
end
end
rbsp_5[3] : begin
rbsp_5[3] : begin
        len_5                   <= 6;
    len_5           <= 6;
        if (rbsp_5[4:5] == 'b11) begin
    if (rbsp_5[4:5] == 'b11) begin
                TrailingOnes_5  <= 0;
        TrailingOnes_5  <= 0;
                TotalCoeff_5    <= 1;
        TotalCoeff_5    <= 1;
        end
    end
        else if (rbsp_5[4:5] == 'b00) begin
    else if (rbsp_5[4:5] == 'b00) begin
                TrailingOnes_5  <= 0;
        TrailingOnes_5  <= 0;
                TotalCoeff_5    <= 2;
        TotalCoeff_5    <= 2;
        end
    end
        else if (rbsp_5[4:5] == 'b10) begin
    else if (rbsp_5[4:5] == 'b10) begin
                TrailingOnes_5  <= 1;
        TrailingOnes_5  <= 1;
                TotalCoeff_5    <= 2;
        TotalCoeff_5    <= 2;
        end
    end
        else begin
    else begin
                TrailingOnes_5  <= 3;
        TrailingOnes_5  <= 3;
                TotalCoeff_5    <= 3;
        TotalCoeff_5    <= 3;
        end
    end
end
end
rbsp_5[4] : begin
rbsp_5[4] : begin
        len_5                   <= 6;
    len_5           <= 6;
        if (rbsp_5[5] == 'b1) begin
    if (rbsp_5[5] == 'b1) begin
                TrailingOnes_5  <= 0;
        TrailingOnes_5  <= 0;
                TotalCoeff_5    <= 3;
        TotalCoeff_5    <= 3;
        end
    end
        else begin
    else begin
                TrailingOnes_5  <= 0;
        TrailingOnes_5  <= 0;
                TotalCoeff_5    <= 4;
        TotalCoeff_5    <= 4;
        end
    end
end
end
rbsp_5[5] : begin
rbsp_5[5] : begin
        len_5                   <= 7;
    len_5           <= 7;
        if (rbsp_5[6] == 'b1) begin
    if (rbsp_5[6] == 'b1) begin
                TrailingOnes_5  <= 1;
        TrailingOnes_5  <= 1;
                TotalCoeff_5    <= 3;
        TotalCoeff_5    <= 3;
        end
    end
        else begin
    else begin
                TrailingOnes_5  <= 2;
        TrailingOnes_5  <= 2;
                TotalCoeff_5    <= 3;
        TotalCoeff_5    <= 3;
        end
    end
end
end
rbsp_5[6] : begin
rbsp_5[6] : begin
        len_5                   <= 8;
    len_5           <= 8;
        if (rbsp_5[7] == 'b1) begin
    if (rbsp_5[7] == 'b1) begin
                TrailingOnes_5  <= 1;
        TrailingOnes_5  <= 1;
                TotalCoeff_5    <= 4;
        TotalCoeff_5    <= 4;
        end
    end
        else begin
    else begin
                TrailingOnes_5  <= 2;
        TrailingOnes_5  <= 2;
                TotalCoeff_5    <= 4;
        TotalCoeff_5    <= 4;
        end
    end
end
end
default : begin
default : begin
        len_5                   <= 7;
    len_5           <= 7;
        TrailingOnes_5  <= 3;
    TrailingOnes_5  <= 3;
        TotalCoeff_5    <= 4;
    TotalCoeff_5    <= 4;
end
end
endcase
endcase
 
 
//------------------------
//------------------------
//output mux
//output mux
//------------------------
//------------------------
//startect a colum according to nC
//startect a colum according to nC
always @(*)
always @(*)
begin
begin
        if (nC == -1) begin
    if (nC == -1) begin
                TrailingOnes_comb       <= TrailingOnes_5;
        TrailingOnes_comb   <= TrailingOnes_5;
                TotalCoeff_comb         <= TotalCoeff_5;
        TotalCoeff_comb     <= TotalCoeff_5;
                len_comb                        <= len_5;
        len_comb            <= len_5;
        end
        end
        else if (nC[3]) begin
    else if (nC[4] | nC[3]) begin
                TrailingOnes_comb       <= TrailingOnes_4;
                TrailingOnes_comb       <= TrailingOnes_4;
                TotalCoeff_comb         <= TotalCoeff_4;
        TotalCoeff_comb     <= TotalCoeff_4;
                len_comb                        <= len_4;
        len_comb            <= len_4;
        end
    end
        else if (nC[2]) begin
    else if (nC[2]) begin
                TrailingOnes_comb       <= TrailingOnes_3;
        TrailingOnes_comb   <= TrailingOnes_3;
                TotalCoeff_comb         <= TotalCoeff_3;
        TotalCoeff_comb     <= TotalCoeff_3;
                len_comb                        <= len_3;
        len_comb            <= len_3;
        end
    end
        else if (nC[1]) begin
    else if (nC[1]) begin
                TrailingOnes_comb       <= TrailingOnes_2;
        TrailingOnes_comb   <= TrailingOnes_2;
                TotalCoeff_comb         <= TotalCoeff_2;
        TotalCoeff_comb     <= TotalCoeff_2;
                len_comb                        <= len_2;
        len_comb            <= len_2;
        end
    end
        else begin
    else begin
                TrailingOnes_comb       <= TrailingOnes_1;
        TrailingOnes_comb   <= TrailingOnes_1;
                TotalCoeff_comb         <= TotalCoeff_1;
        TotalCoeff_comb     <= TotalCoeff_1;
                len_comb                        <= len_1;
        len_comb            <= len_1;
        end
    end
end
end
 
 
//------------------------
//------------------------
//TrailingOnes & TotalCoeff
//TrailingOnes & TotalCoeff
//------------------------
//------------------------
wire output_refresh =  ena && sel;
 
 
 
always @(posedge clk or negedge rst_n)
always @(posedge clk or negedge rst_n)
if (~rst_n) begin
if (!rst_n) begin
        TrailingOnes    <= 0;
        TrailingOnes    <= 0;
        TotalCoeff              <= 0;
    TotalCoeff      <= 0;
end
end
else if (output_refresh) begin
else if (ena && sel) begin
        TrailingOnes    <= TrailingOnes_comb;
        TrailingOnes    <= TrailingOnes_comb;
        TotalCoeff              <= TotalCoeff_comb;
    TotalCoeff      <= TotalCoeff_comb;
end
end
 
 
endmodule
endmodule
 
 
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.