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

Subversion Repositories cavlc

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

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

Rev 6 Rev 7
 
//////////////////////////////////////////////////////////////////////
 
////                                                              ////
 
////  cavlc_read_levels                                           ////
 
////                                                              ////
 
////  Description                                                 ////
 
////      decode levels for coeffs                                ////
 
////                                                              ////
 
////  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-6      initiial revision
//2011-8-6      initiial revision
//2011-8-19     reverse the order of level
//2011-8-19 reverse the order of level
 
 
//  include TrailingOnes
//  include TrailingOnes
 
 
`include "defines.v"
`include "defines.v"
 
 
module cavlc_read_levels (
module cavlc_read_levels (
        clk,
    clk,
        rst_n,
    rst_n,
        ena,
    ena,
        t1s_sel,
    t1s_sel,
        prefix_sel,
    prefix_sel,
        suffix_sel,
    suffix_sel,
        calc_sel,
    calc_sel,
        TrailingOnes,
    TrailingOnes,
        TotalCoeff,
    TotalCoeff,
        rbsp,
    rbsp,
        i,
        i,
        level_0, level_1, level_2, level_3, level_4, level_5, level_6, level_7,
    level_0,
        level_8, level_9, level_10, level_11, level_12, level_13, level_14, level_15,
    level_1,
 
    level_2,
 
    level_3,
 
    level_4,
 
    level_5,
 
    level_6,
 
    level_7,
 
    level_8,
 
    level_9,
 
    level_10,
 
    level_11,
 
    level_12,
 
    level_13,
 
    level_14,
 
    level_15,
        len_comb
        len_comb
);
);
//------------------------
//------------------------
// ports
// ports
//------------------------
//------------------------
input   clk;
input   clk;
input   rst_n;
input   rst_n;
 
 
input   ena;
input   ena;
input   t1s_sel;
input   t1s_sel;
input   prefix_sel;
input   prefix_sel;
input   suffix_sel;
input   suffix_sel;
input   calc_sel;
input   calc_sel;
 
 
input   [1:0]    TrailingOnes;
input   [1:0]   TrailingOnes;
input   [4:0]    TotalCoeff;
input   [4:0]   TotalCoeff;
input   [0:15]   rbsp;
input   [0:15]  rbsp;
input   [3:0]    i;
input   [3:0]   i;
 
 
output  [8:0]    level_0, level_1, level_2, level_3, level_4, level_5, level_6, level_7;
output  [8:0]   level_0;
output  [8:0]    level_8, level_9, level_10, level_11, level_12, level_13, level_14, level_15;
output  [8:0]   level_1;
 
output  [8:0]   level_2;
 
output  [8:0]   level_3;
 
output  [8:0]   level_4;
 
output  [8:0]   level_5;
 
output  [8:0]   level_6;
 
output  [8:0]   level_7;
 
output  [8:0]   level_8;
 
output  [8:0]   level_9;
 
output  [8:0]   level_10;
 
output  [8:0]   level_11;
 
output  [8:0]   level_12;
 
output  [8:0]   level_13;
 
output  [8:0]   level_14;
 
output  [8:0]   level_15;
 
 
output  [4:0]    len_comb;
output  [4:0]    len_comb;
 
 
//------------------------
//------------------------
//  regs
//  regs
//------------------------
//------------------------
reg             [0:15]   rbsp_prefix;            //for level_prefix_comb
reg     [0:15]  rbsp_internal;        // reduce toggle rate
reg             [3:0]    level_prefix_comb;
reg             [3:0]    level_prefix_comb;
reg             [8:0]    level_suffix;
reg     [8:0]   level_suffix;
reg             [4:0]    len_comb;
reg     [4:0]   len_comb;
 
 
//------------------------
//------------------------
// FFs
// FFs
//------------------------
//------------------------
reg     [3:0]    level_prefix;
reg     [3:0]   level_prefix;
reg             [2:0]    suffixLength;   // range from 0 to 6
reg     [2:0]   suffixLength;   // range from 0 to 6
reg             [8:0]    level;
reg     [8:0]   level;
reg             [8:0]    level_abs;
reg     [8:0]   level_abs;
reg             [8:0]    level_code_tmp;
reg     [8:0]   level_code_tmp;
reg             [8:0]    level_0, level_1, level_2, level_3, level_4, level_5, level_6, level_7;
reg     [8:0]   level_0, level_1, level_2, level_3, level_4, level_5, level_6, level_7;
reg             [8:0]    level_8, level_9, level_10, level_11, level_12, level_13, level_14, level_15;
reg     [8:0]   level_8, level_9, level_10, level_11, level_12, level_13, level_14, level_15;
 
 
//------------------------
//------------------------
// level_prefix_comb
// level_prefix_comb
//------------------------
//------------------------
wire    level_prefix_refresh;
always @(*)
assign level_prefix_refresh = (prefix_sel && ena);
if ((t1s_sel || prefix_sel || suffix_sel)&& ena)
 
    rbsp_internal <= rbsp;
always @(level_prefix_refresh or rbsp)
 
if (level_prefix_refresh)
 
        rbsp_prefix <= rbsp;
 
else
else
        rbsp_prefix <= 'hffff;
    rbsp_internal <= 'hffff;
 
 
always @(*)
always @(*)
if (rbsp_prefix[0])              level_prefix_comb <= 0;
if (rbsp_internal[0])         level_prefix_comb <= 0;
else if (rbsp_prefix[1])        level_prefix_comb <= 1;
else if (rbsp_internal[1])    level_prefix_comb <= 1;
else if (rbsp_prefix[2])        level_prefix_comb <= 2;
else if (rbsp_internal[2])    level_prefix_comb <= 2;
else if (rbsp_prefix[3])        level_prefix_comb <= 3;
else if (rbsp_internal[3])    level_prefix_comb <= 3;
else if (rbsp_prefix[4])        level_prefix_comb <= 4;
else if (rbsp_internal[4])    level_prefix_comb <= 4;
else if (rbsp_prefix[5])        level_prefix_comb <= 5;
else if (rbsp_internal[5])    level_prefix_comb <= 5;
else if (rbsp_prefix[6])        level_prefix_comb <= 6;
else if (rbsp_internal[6])    level_prefix_comb <= 6;
else if (rbsp_prefix[7])        level_prefix_comb <= 7;
else if (rbsp_internal[7])    level_prefix_comb <= 7;
else if (rbsp_prefix[8])        level_prefix_comb <= 8;
else if (rbsp_internal[8])    level_prefix_comb <= 8;
else if (rbsp_prefix[9])        level_prefix_comb <= 9;
else if (rbsp_internal[9])    level_prefix_comb <= 9;
else if (rbsp_prefix[10])       level_prefix_comb <= 10;
else if (rbsp_internal[10])   level_prefix_comb <= 10;
else if (rbsp_prefix[11])       level_prefix_comb <= 11;
else if (rbsp_internal[11])   level_prefix_comb <= 11;
else if (rbsp_prefix[12])       level_prefix_comb <= 12;
else if (rbsp_internal[12])   level_prefix_comb <= 12;
else if (rbsp_prefix[13])       level_prefix_comb <= 13;
else if (rbsp_internal[13])   level_prefix_comb <= 13;
else if (rbsp_prefix[14])       level_prefix_comb <= 14;
else if (rbsp_internal[14])   level_prefix_comb <= 14;
else if (rbsp_prefix[15])       level_prefix_comb <= 15;
else if (rbsp_internal[15])   level_prefix_comb <= 15;
else                                            level_prefix_comb <= 'bx;
else                                            level_prefix_comb <= 'bx;
 
 
 
 
//------------------------
//------------------------
// level_prefix
// level_prefix
//------------------------
//------------------------
always @(posedge clk or negedge rst_n)
always @(posedge clk or negedge rst_n)
if (~rst_n)
if (!rst_n)
        level_prefix <= 0;
        level_prefix <= 0;
else if (level_prefix_refresh) begin
else if (prefix_sel && ena)
        level_prefix <= level_prefix_comb;
        level_prefix <= level_prefix_comb;
end
 
 
 
//------------------------
//------------------------
// suffixLength
// suffixLength
//------------------------
//------------------------
wire first_level;
wire first_level;
assign first_level = (i == TotalCoeff - TrailingOnes - 1);
assign first_level = (i == TotalCoeff - TrailingOnes - 1);
 
 
wire suffixLength_refresh;
 
assign suffixLength_refresh = prefix_sel && ena;
 
 
 
always @(posedge clk or negedge rst_n)
always @(posedge clk or negedge rst_n)
if (~rst_n) begin
if (!rst_n)
        suffixLength <= 0;
        suffixLength <= 0;
end
else if (prefix_sel && ena) begin
else if (suffixLength_refresh) begin
 
        if (TotalCoeff > 10 && TrailingOnes < 3 && first_level )        //initialize suffixLength before proceeding first level_suffix
        if (TotalCoeff > 10 && TrailingOnes < 3 && first_level )        //initialize suffixLength before proceeding first level_suffix
                suffixLength <= 1;
        suffixLength <= 1;
        else if (first_level)
    else if (first_level)
                suffixLength <= 0;
        suffixLength <= 0;
        else if (suffixLength == 0 && level_abs > 2'd3)
    else if (suffixLength == 0 && level_abs > 2'd3)
                suffixLength <= 2;
        suffixLength <= 2;
        else if (suffixLength == 0)
    else if (suffixLength == 0)
                suffixLength <= 1;
        suffixLength <= 1;
        else if (  level_abs > (2'd3 << (suffixLength - 1'b1) ) && suffixLength < 6)
    else if (  level_abs > (2'd3 << (suffixLength - 1'b1) ) && suffixLength < 6)
                suffixLength <= suffixLength + 1'b1;
        suffixLength <= suffixLength + 1'b1;
end
end
 
 
 
 
//------------------------
//------------------------
// level_suffix
// level_suffix
//------------------------
//------------------------
wire level_suffix_refresh;
 
assign level_suffix_refresh = suffix_sel && ena;
 
 
 
always @(*)
always @(*)
if (level_suffix_refresh) begin
if (suffixLength > 0 && level_prefix <= 14)
        if (suffixLength > 0 && level_prefix <= 14) begin
    level_suffix <= {3'b0, rbsp_internal[0:5] >> (3'd6 - suffixLength)};
                level_suffix <= {3'b0, rbsp[0:5] >> (3'd6 - suffixLength)};
else if (level_prefix == 14)   //level_prefix == 14 && suffixLength == 0
        end
    level_suffix <= {3'b0, rbsp_internal[0:3] };
        else if (level_prefix == 14) begin      //level_prefix == 14 && suffixLength == 0
else if (level_prefix == 15)
                level_suffix <= {3'b0, rbsp[0:3] };
    level_suffix <= rbsp_internal[3:11];
        end
else
        else if (level_prefix == 15) begin
 
                level_suffix <= rbsp[3:11];
 
        end
 
        else begin
 
                level_suffix <= 0;
 
        end
 
end
 
else begin
 
        level_suffix <= 0;
        level_suffix <= 0;
end
 
 
 
//------------------------
//------------------------
// level_code_tmp
// level_code_tmp
//------------------------
//------------------------
always @(posedge clk or negedge rst_n)
always @(posedge clk or negedge rst_n)
if (~rst_n) begin
if (!rst_n) begin
        level_code_tmp <=  0;
        level_code_tmp <=  0;
end
end
else if (level_suffix_refresh) begin
else if (suffix_sel && ena) begin
        level_code_tmp <= (level_prefix << suffixLength) + level_suffix +
        level_code_tmp <= (level_prefix << suffixLength) + level_suffix +
        ((suffixLength == 0 && level_prefix == 15) ? 4'd15 : 0);
    ((suffixLength == 0 && level_prefix == 15) ? 4'd15 : 0);
end
end
 
 
 
 
//------------------------
//------------------------
// level
// level
//------------------------
//------------------------
wire    [2:0]    tmp1;
wire    [2:0]   tmp1;
 
 
assign tmp1 = (first_level && TrailingOnes < 3)? 2'd2 : 2'd0;
assign tmp1 = (first_level && TrailingOnes < 3)? 2'd2 : 2'd0;
 
 
always @(*)
always @(*)
begin
begin
        if (level_code_tmp % 2 == 0) begin
    if (level_code_tmp % 2 == 0) begin
                level <= ( level_code_tmp + tmp1 + 2 ) >> 1;
        level <= ( level_code_tmp + tmp1 + 2 ) >> 1;
        end
    end
        else begin
    else begin
                level <= (-level_code_tmp - tmp1 - 1 ) >> 1;
        level <= (-level_code_tmp - tmp1 - 1 ) >> 1;
        end
    end
end
end
 
 
//------------------------
//------------------------
// level_abs
// level_abs
//------------------------
//------------------------
wire level_abs_refresh;
wire level_abs_refresh;
assign level_abs_refresh = calc_sel && ena;
assign level_abs_refresh = calc_sel && ena;
 
 
always @(posedge clk or negedge rst_n)
always @(posedge clk or negedge rst_n)
if (~rst_n) begin
if (!rst_n) begin
        level_abs <= 0;
        level_abs <= 0;
end
end
else if (level_abs_refresh) begin
else if (level_abs_refresh) begin
        level_abs <= level[8] ? -level : level;
    level_abs <= level[8] ? -level : level;
end
end
 
 
//------------------------
//------------------------
// level regfile
// level regfile
//------------------------
//------------------------
always @ (posedge clk or negedge rst_n)
always @ (posedge clk or negedge rst_n)
if (!rst_n) begin
if (!rst_n) begin
        level_0 <= 0;    level_1 <= 0;    level_2 <= 0;    level_3 <= 0;
    level_0 <= 0;   level_1 <= 0;   level_2 <= 0;   level_3 <= 0;
        level_4 <= 0;    level_5 <= 0;    level_6 <= 0;    level_7 <= 0;
    level_4 <= 0;   level_5 <= 0;   level_6 <= 0;   level_7 <= 0;
        level_8 <= 0;    level_9 <= 0;    level_10<= 0;    level_11<= 0;
    level_8 <= 0;   level_9 <= 0;   level_10<= 0;   level_11<= 0;
        level_12<= 0;    level_13<= 0;    level_14<= 0;    level_15<= 0;
    level_12<= 0;   level_13<= 0;   level_14<= 0;   level_15<= 0;
end
end
else if (t1s_sel && ena)
else if (t1s_sel && ena)
        case (i)
        case (i)
        0 : level_0 <= rbsp[0]? -1 : 1;
    0 : level_0 <= rbsp_internal[0]? -1 : 1;
        1 : begin
        1 : begin
                        level_1 <= rbsp[0]? -1 : 1;
            level_1 <= rbsp_internal[0]? -1 : 1;
                        if (TrailingOnes[1])
                        if (TrailingOnes[1])
                                level_0 <= rbsp[1]? -1 : 1;
                level_0 <= rbsp_internal[1]? -1 : 1;
                end
                end
        2 : begin
        2 : begin
                        level_2 <= rbsp[0]? -1 : 1;
            level_2 <= rbsp_internal[0]? -1 : 1;
                        if (TrailingOnes[1])
                        if (TrailingOnes[1])
                                level_1 <= rbsp[1]? -1 : 1;
                level_1 <= rbsp_internal[1]? -1 : 1;
                        if (TrailingOnes == 3)
                        if (TrailingOnes == 3)
                                level_0 <= rbsp[2]? -1 : 1;
                level_0 <= rbsp_internal[2]? -1 : 1;
                end
                end
        3 : begin
        3 : begin
                        level_3 <= rbsp[0]? -1 : 1;
            level_3 <= rbsp_internal[0]? -1 : 1;
                        if (TrailingOnes[1])
                        if (TrailingOnes[1])
                                level_2 <= rbsp[1]? -1 : 1;
                level_2 <= rbsp_internal[1]? -1 : 1;
                        if (TrailingOnes == 3)
                        if (TrailingOnes == 3)
                                level_1 <= rbsp[2]? -1 : 1;
                level_1 <= rbsp_internal[2]? -1 : 1;
                end
                end
        4 : begin
        4 : begin
                        level_4 <= rbsp[0]? -1 : 1;
            level_4 <= rbsp_internal[0]? -1 : 1;
                        if (TrailingOnes[1])
                        if (TrailingOnes[1])
                                level_3 <= rbsp[1]? -1 : 1;
                level_3 <= rbsp_internal[1]? -1 : 1;
                        if (TrailingOnes == 3)
                        if (TrailingOnes == 3)
                                level_2 <= rbsp[2]? -1 : 1;
                level_2 <= rbsp_internal[2]? -1 : 1;
                end
                end
        5 : begin
        5 : begin
                        level_5 <= rbsp[0]? -1 : 1;
            level_5 <= rbsp_internal[0]? -1 : 1;
                        if (TrailingOnes[1])
                        if (TrailingOnes[1])
                                level_4 <= rbsp[1]? -1 : 1;
                level_4 <= rbsp_internal[1]? -1 : 1;
                        if (TrailingOnes == 3)
                        if (TrailingOnes == 3)
                                level_3 <= rbsp[2]? -1 : 1;
                level_3 <= rbsp_internal[2]? -1 : 1;
                end
                end
        6 : begin
        6 : begin
                        level_6 <= rbsp[0]? -1 : 1;
            level_6 <= rbsp_internal[0]? -1 : 1;
                        if (TrailingOnes[1])
                        if (TrailingOnes[1])
                                level_5 <= rbsp[1]? -1 : 1;
                level_5 <= rbsp_internal[1]? -1 : 1;
                        if (TrailingOnes == 3)
                        if (TrailingOnes == 3)
                                level_4 <= rbsp[2]? -1 : 1;
                level_4 <= rbsp_internal[2]? -1 : 1;
                end
                end
        7 : begin
        7 : begin
                        level_7 <= rbsp[0]? -1 : 1;
            level_7 <= rbsp_internal[0]? -1 : 1;
                        if (TrailingOnes[1])
                        if (TrailingOnes[1])
                                level_6 <= rbsp[1]? -1 : 1;
                level_6 <= rbsp_internal[1]? -1 : 1;
                        if (TrailingOnes == 3)
                        if (TrailingOnes == 3)
                                level_5 <= rbsp[2]? -1 : 1;
                level_5 <= rbsp_internal[2]? -1 : 1;
                end
                end
        8 : begin
        8 : begin
                        level_8 <= rbsp[0]? -1 : 1;
            level_8 <= rbsp_internal[0]? -1 : 1;
                        if (TrailingOnes[1])
                        if (TrailingOnes[1])
                                level_7 <= rbsp[1]? -1 : 1;
                level_7 <= rbsp_internal[1]? -1 : 1;
                        if (TrailingOnes == 3)
                        if (TrailingOnes == 3)
                                level_6 <= rbsp[2]? -1 : 1;
                level_6 <= rbsp_internal[2]? -1 : 1;
                end
                end
        9 : begin
        9 : begin
                        level_9 <= rbsp[0]? -1 : 1;
            level_9 <= rbsp_internal[0]? -1 : 1;
                        if (TrailingOnes[1])
                        if (TrailingOnes[1])
                                level_8 <= rbsp[1]? -1 : 1;
                level_8 <= rbsp_internal[1]? -1 : 1;
                        if (TrailingOnes == 3)
                        if (TrailingOnes == 3)
                                level_7 <= rbsp[2]? -1 : 1;
                level_7 <= rbsp_internal[2]? -1 : 1;
                end
                end
        10: begin
        10: begin
                        level_10 <= rbsp[0]? -1 : 1;
            level_10 <= rbsp_internal[0]? -1 : 1;
                        if (TrailingOnes[1])
                        if (TrailingOnes[1])
                                level_9 <= rbsp[1]? -1 : 1;
                level_9 <= rbsp_internal[1]? -1 : 1;
                        if (TrailingOnes == 3)
                        if (TrailingOnes == 3)
                                level_8 <= rbsp[2]? -1 : 1;
                level_8 <= rbsp_internal[2]? -1 : 1;
                end
                end
        11: begin
        11: begin
                        level_11 <= rbsp[0]? -1 : 1;
            level_11 <= rbsp_internal[0]? -1 : 1;
                        if (TrailingOnes[1])
                        if (TrailingOnes[1])
                                level_10 <= rbsp[1]? -1 : 1;
                level_10 <= rbsp_internal[1]? -1 : 1;
                        if (TrailingOnes == 3)
                        if (TrailingOnes == 3)
                                level_9 <= rbsp[2]? -1 : 1;
                level_9 <= rbsp_internal[2]? -1 : 1;
                end
                end
        12: begin
        12: begin
                        level_12 <= rbsp[0]? -1 : 1;
            level_12 <= rbsp_internal[0]? -1 : 1;
                        if (TrailingOnes[1])
                        if (TrailingOnes[1])
                                level_11 <= rbsp[1]? -1 : 1;
                level_11 <= rbsp_internal[1]? -1 : 1;
                        if (TrailingOnes == 3)
                        if (TrailingOnes == 3)
                                level_10 <= rbsp[2]? -1 : 1;
                level_10 <= rbsp_internal[2]? -1 : 1;
                end
                end
        13: begin
        13: begin
                        level_13 <= rbsp[0]? -1 : 1;
            level_13 <= rbsp_internal[0]? -1 : 1;
                        if (TrailingOnes[1])
                        if (TrailingOnes[1])
                                level_12 <= rbsp[1]? -1 : 1;
                level_12 <= rbsp_internal[1]? -1 : 1;
                        if (TrailingOnes == 3)
                        if (TrailingOnes == 3)
                                level_11 <= rbsp[2]? -1 : 1;
                level_11 <= rbsp_internal[2]? -1 : 1;
                end
                end
        14: begin
        14: begin
                        level_14 <= rbsp[0]? -1 : 1;
            level_14 <= rbsp_internal[0]? -1 : 1;
                        if (TrailingOnes[1])
                        if (TrailingOnes[1])
                                level_13 <= rbsp[1]? -1 : 1;
                level_13 <= rbsp_internal[1]? -1 : 1;
                        if (TrailingOnes == 3)
                        if (TrailingOnes == 3)
                                level_12 <= rbsp[2]? -1 : 1;
                level_12 <= rbsp_internal[2]? -1 : 1;
                end
                end
        15: begin
        15: begin
                        level_15 <= rbsp[0]? -1 : 1;
            level_15 <= rbsp_internal[0]? -1 : 1;
                        if (TrailingOnes[1])
                        if (TrailingOnes[1])
                                level_14 <= rbsp[1]? -1 : 1;
                level_14 <= rbsp_internal[1]? -1 : 1;
                        if (TrailingOnes == 3)
                        if (TrailingOnes == 3)
                                level_13 <= rbsp[2]? -1 : 1;
                level_13 <= rbsp_internal[2]? -1 : 1;
                end
                end
endcase
endcase
else if (calc_sel && ena)
else if (calc_sel && ena)
case (i)
case (i)
        0 :level_0 <= level;
    0 :level_0 <= level;
        1 :level_1 <= level;
    1 :level_1 <= level;
        2 :level_2 <= level;
    2 :level_2 <= level;
        3 :level_3 <= level;
    3 :level_3 <= level;
        4 :level_4 <= level;
    4 :level_4 <= level;
        5 :level_5 <= level;
    5 :level_5 <= level;
        6 :level_6 <= level;
    6 :level_6 <= level;
        7 :level_7 <= level;
    7 :level_7 <= level;
        8 :level_8 <= level;
    8 :level_8 <= level;
        9 :level_9 <= level;
    9 :level_9 <= level;
        10:level_10<= level;
    10:level_10<= level;
        11:level_11<= level;
    11:level_11<= level;
        12:level_12<= level;
    12:level_12<= level;
        13:level_13<= level;
    13:level_13<= level;
        14:level_14<= level;
    14:level_14<= level;
        15:level_15<= level;
    15:level_15<= level;
endcase
endcase
 
 
always @(*)
always @(*)
if(t1s_sel)
if(t1s_sel)
        len_comb <= TrailingOnes;
    len_comb <= TrailingOnes;
else if(prefix_sel)
else if(prefix_sel)
        len_comb <= level_prefix_comb + 1;
    len_comb <= level_prefix_comb + 1;
else if(suffix_sel && suffixLength > 0 && level_prefix <= 14)
else if(suffix_sel && suffixLength > 0 && level_prefix <= 14)
        len_comb <= suffixLength;
    len_comb <= suffixLength;
else if(suffix_sel && level_prefix == 14)
else if(suffix_sel && level_prefix == 14)
        len_comb <= 4;
    len_comb <= 4;
else if(suffix_sel && level_prefix == 15)
else if(suffix_sel && level_prefix == 15)
        len_comb <= 12;
    len_comb <= 12;
else
else
        len_comb <= 0;
    len_comb <= 0;
 
 
endmodule
endmodule
 
 

powered by: WebSVN 2.1.0

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