亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? int_deint_adr_gen.v

?? 上傳的是WIMAX系統(tǒng)中
?? V
字號(hào):
///*********************************************************************
/// Copyright(c) 2006, ZTE.
/// All rights reserved.
///
/// Project name : ZXMBW-250(WIMAX)
/// File name    : int_deint_adr_gen.v
/// Author       : yuanliuqing
/// Department   : WiMAX department
/// Email        : yuan.liuqing@zte.com.cn
///
/// Module_name  : int_deint_adr_gen
/// Called by    : ctc_decoder_datapath_top  module
///---------------------------------------------------------------------
/// Module Hiberarchy:
///                       |----int_adr_ram_u
///                       |----int_deint_adr_gen_mul
/// int_deint_adr_gen-----|----int_deint_adr_gen_para_rom
///                       |----int_deint_adr_gen_div
///                       |----deint_adr_ram_u
///---------------------------------------------------------------------
///
/// Release History:
///---------------------------------------------------------------------
/// Version     |    Date     |       Author Description
///---------------------------------------------------------------------
/// 1.0-0       | 2006-06-22  | 建立文件
///---------------------------------------------------------------------
/// Main Function:
/// 1、CTC譯碼核交織解交織地址單元
///*********************************************************************

`timescale 1ns/100ps

module int_deint_adr_gen
    (
    ///system i/f
    input              clk_sys,                         ///系統(tǒng)時(shí)鐘信號(hào)
    input              rst_b,                           ///輸入復(fù)位信號(hào)
    ///input i/f
    input              int_deint_adr_gen_en,            ///交織/解交織地址計(jì)算使能
    input       [15:0] packet_length,                   ///包長(zhǎng)
    ///output i/f
    input              rd_int_ram0,                     ///交織地址ram0讀信號(hào)
    input       [11:0] adr_rd_int_ram0,                 ///交織地址ram0讀地址
    output wire [11:0] dat_rd_int_ram0,                 ///交織地址ram0輸出數(shù)據(jù)線
    input              rd_int_ram1,                     ///交織地址ram1讀信號(hào)
    input       [11:0] adr_rd_int_ram1,                 ///交織地址ram1讀地址
    output wire [11:0] dat_rd_int_ram1,                 ///交織地址ram1輸出數(shù)據(jù)線
    input              rd_deint_ram0,                   ///解交織地址ram0讀信號(hào)
    input       [11:0] adr_rd_deint_ram0,               ///解交織地址ram0讀地址
    output wire [11:0] dat_rd_deint_ram0,               ///解交織地址ram0輸出數(shù)據(jù)線
    input              rd_deint_ram1,                   ///解交織地址ram1讀信號(hào)
    input       [11:0] adr_rd_deint_ram1,               ///解交織地址ram1讀地址
    output wire [11:0] dat_rd_deint_ram1                ///解交織地址ram1輸出數(shù)據(jù)線
    );

///*********************************************************************
///內(nèi)部信號(hào)定義
///*********************************************************************
   reg [15:0]  packet_length_buf;
    reg [15:0]  packet_length_buf_1;
    reg [4:0]   adr_rd_para_rom;

    reg [11:0]  adr_gen_counter;
    reg adr_gen_counter_val;

    //buffer packet_length
    always @ ( posedge clk_sys or negedge rst_b )
        begin
            if( !rst_b )
                packet_length_buf <= 1'b0;
            else if( int_deint_adr_gen_en )
                packet_length_buf <= packet_length;
            else
                packet_length_buf <= packet_length_buf;
        end
///fyz修改,為了對(duì)準(zhǔn)時(shí)序
//    assign packet_length_buf_2 = int_deint_adr_gen_en ? packet_length : packet_length_buf_2;

    always @ ( posedge clk_sys or negedge rst_b )
        begin
            if( !rst_b )
                packet_length_buf_1 <= 1'b0;
            else if( int_deint_adr_gen_en )
                packet_length_buf_1 <= (packet_length>>1'b1);
            else
                packet_length_buf_1 <= packet_length_buf_1;
        end
    reg int_deint_adr_gen_en_d1;
    always @ ( posedge clk_sys or negedge rst_b )
        begin
            if( !rst_b )
                int_deint_adr_gen_en_d1 <= 1'b0;
            else
                int_deint_adr_gen_en_d1 <= int_deint_adr_gen_en;
        end

    always @ ( posedge clk_sys or negedge rst_b )
        if ( !rst_b )
            adr_rd_para_rom <= 5'd0;
        else
            case( packet_length_buf )
                16'd24:
                    adr_rd_para_rom <= 5'd0;
                16'd36:
                    adr_rd_para_rom <= 5'd1;
                16'd48:
                    adr_rd_para_rom <= 5'd2;
                16'd72:
                    adr_rd_para_rom <= 5'd3;
                16'd96:
                    adr_rd_para_rom <= 5'd4;
                16'd108:
                    adr_rd_para_rom <= 5'd5;
                16'd120:
                    adr_rd_para_rom <= 5'd6;
                16'd144:
                    adr_rd_para_rom <= 5'd7;
                16'd180:
                    adr_rd_para_rom <= 5'd8;
                16'd192:
                    adr_rd_para_rom <= 5'd9;
                16'd216:
                    adr_rd_para_rom <= 5'd10;
                16'd240:
                    adr_rd_para_rom <= 5'd11;
                16'd480:
                    adr_rd_para_rom <= 5'd12;
                16'd960:
                    adr_rd_para_rom <= 5'd13;
                16'd1440:
                    adr_rd_para_rom <= 5'd14;
                16'd1920:
                    adr_rd_para_rom <= 5'd15;
                16'd2400:
                    adr_rd_para_rom <= 5'd16;
                default:
                    adr_rd_para_rom <= 5'd0;
            endcase

    wire    [5:0]   p0;
    wire    [9:0]   p1,p2,p3;
    //int_deint_adr_gen_para_rom parameter: 36-b dat, 5-b adr, no output register
    ///p0,p1,p2,p3的產(chǎn)生延遲1 cycle,和adr_gen_counter同時(shí)有效
    int_deint_adr_gen_para_rom int_deint_adr_gen_para_rom
    (
        .address (adr_rd_para_rom),
        .clock   (clk_sys        ),
        .q       ({p0,p1,p2,p3}  )
        );

    //*************************************************************************
    //int/deint adr gen fsm
    //*************************************************************************

    parameter   READY = 2'b01,
                RUN   = 2'b10;

    reg [1:0] adr_gen_state_current;
    reg [1:0] adr_gen_state_next;

    //int/deint adr gen fsm
    always @ ( posedge clk_sys or negedge rst_b )
        if( !rst_b )
            adr_gen_state_current <= READY;
        else
            adr_gen_state_current <= adr_gen_state_next;

    always @ ( * )
        begin
            case( adr_gen_state_current )
                READY:
                    if( int_deint_adr_gen_en && !int_deint_adr_gen_en_d1 )
                        adr_gen_state_next = RUN;
                    else
                        adr_gen_state_next = READY;
                RUN:
                    if( adr_gen_counter == (packet_length_buf[11:0]-2'd2) )
                        adr_gen_state_next = READY;
                    else
                        adr_gen_state_next = RUN;
                default:
                    adr_gen_state_next = READY;
             endcase
        end

    //reg [11:0]  adr_gen_counter;
    //generate adr_gen_counter
    always @ ( posedge clk_sys or negedge rst_b )
        begin
            if( !rst_b )
                adr_gen_counter <= 1'b0;
            else
                case( adr_gen_state_current )
                    READY:
                        adr_gen_counter <= 1'b0;
                    RUN:
                        if( adr_gen_counter_val )
                            adr_gen_counter <= adr_gen_counter + 1'b1;
                        else
                            adr_gen_counter <= adr_gen_counter;
                    default:
                        adr_gen_counter <= 1'b0;
                endcase
        end

    //reg adr_gen_counter_val;
    //generate adr_gen_counter_val
    always @ ( posedge clk_sys or negedge rst_b )
        begin
            if( !rst_b )
                adr_gen_counter_val <= 1'b0;
            else
                case( adr_gen_state_current )
                    READY:
                        adr_gen_counter_val <= 1'b0;
                    RUN:
                        adr_gen_counter_val <= 1'b1;
                    default:
                        adr_gen_counter_val <= 1'b0;
                endcase
        end


    //*************************************************************************
    //data path for generating int/deint adr
    //*************************************************************************

    reg [11:0]  adr_gen_counter_d6,adr_gen_counter_d5,adr_gen_counter_d4,adr_gen_counter_d3,adr_gen_counter_d2,adr_gen_counter_d1;
    reg [11:0]  adr_gen_counter_d12,adr_gen_counter_d11,adr_gen_counter_d10,adr_gen_counter_d9,adr_gen_counter_d8,adr_gen_counter_d7;
    reg [11:0]  adr_gen_counter_d17,adr_gen_counter_d16,adr_gen_counter_d15,adr_gen_counter_d14,adr_gen_counter_d13;
    reg [17:0]  adr_gen_counter_val_d;
    //data path for generating int/deint adr
    //delay adr_gen_counter 9 cycles according adr_gen pipeline delay
    always @ ( posedge clk_sys or negedge rst_b )
        begin
            if( !rst_b )
                {                     adr_gen_counter_d17,adr_gen_counter_d16,
                  adr_gen_counter_d15,adr_gen_counter_d14,adr_gen_counter_d13,
                  adr_gen_counter_d12,adr_gen_counter_d11,adr_gen_counter_d10,
                  adr_gen_counter_d9,adr_gen_counter_d8,adr_gen_counter_d7,
                  adr_gen_counter_d6,adr_gen_counter_d5,adr_gen_counter_d4,
                  adr_gen_counter_d3,adr_gen_counter_d2,adr_gen_counter_d1 } <= 1'b0;
            else
                {                     adr_gen_counter_d17,adr_gen_counter_d16,
                  adr_gen_counter_d15,adr_gen_counter_d14,adr_gen_counter_d13,
                  adr_gen_counter_d12,adr_gen_counter_d11,adr_gen_counter_d10,
                  adr_gen_counter_d9,adr_gen_counter_d8,adr_gen_counter_d7,
                  adr_gen_counter_d6,adr_gen_counter_d5,adr_gen_counter_d4,
                  adr_gen_counter_d3,adr_gen_counter_d2,adr_gen_counter_d1 }
                            <=
                {                                         adr_gen_counter_d16,
                  adr_gen_counter_d15,adr_gen_counter_d14,adr_gen_counter_d13,
                  adr_gen_counter_d12,adr_gen_counter_d11,adr_gen_counter_d10,
                  adr_gen_counter_d9,adr_gen_counter_d8,adr_gen_counter_d7,
                  adr_gen_counter_d6,adr_gen_counter_d5,adr_gen_counter_d4,
                  adr_gen_counter_d3,adr_gen_counter_d2,adr_gen_counter_d1,
                  adr_gen_counter                                          };
        end


    //delay adr_gen_counter_val 9 cycles according adr_gen pipeline delay
    always @ ( posedge clk_sys or negedge rst_b )
        begin
            if( !rst_b )
                adr_gen_counter_val_d <= READY;
            else
                adr_gen_counter_val_d <= { adr_gen_counter_val_d[16:0], adr_gen_counter_val };
        end

    wire  [17:0]  mul_result;
    //mul, 2 cycles pipeline
    int_deint_adr_gen_mul int_deint_adr_gen_mul
    (
      .aclr   (!rst_b         ),
      .clock  (clk_sys        ),
      .dataa  (adr_gen_counter),
      .datab  (p0             ),
      .result (mul_result     )
      );
    reg [18:0]  add_result;
        //add, comb logic

      ///時(shí)序邏輯,增加2 cycle
      reg [17:0] add_1, add_2, add_3, add_4;
      reg [15:0] add_5;

      always @ ( posedge clk_sys or negedge rst_b )
          if(!rst_b) begin
              add_1 <= 18'd0;
              add_2 <= 18'd0;
              add_3 <= 18'd0;
              add_4 <= 18'd0;
              add_5 <= 16'd0;
          end
          else begin
              add_1 <= mul_result ;
              add_2 <= mul_result + p1;
              add_3 <= mul_result + p2;
              add_4 <= mul_result + p3;
              add_5 <= (packet_length_buf>>1'b1) + 1'b1;

          end
      always @ ( posedge clk_sys or negedge rst_b )
          if ( !rst_b )
              add_result <= 1'b0;
          else
              case( adr_gen_counter_d3[1:0] )
                  2'b00:
                      add_result <= add_1 + 1'b1;
                  2'b01:
                      add_result <= add_2 + add_5;
                  2'b10:
                      add_result <= add_3 + 1'b1;
                  2'b11:
                      add_result <= add_4 + add_5;
                  default:
                      add_result <= 1'b0;
              endcase

    wire [11:0]  mod_result;
    //mod, 7 cycles pipeline ///原來程序中注明6 cycle,實(shí)際調(diào)用的是7 cycle
    //mod, 13 cycles pipeline, fyz  ///此處增加了6 cycle
    int_deint_adr_gen_div int_deint_adr_gen_div
    (
        .aclr     (!rst_b                 ),
        .clock    (clk_sys                ),
        .denom    (packet_length_buf[11:0]),
        .numer    (add_result             ),
        .quotient (                       ),
        .remain   (mod_result             )
        );

    //**************************************************
    wire    [11:0]  address1,address2;

    assign address1 = (adr_gen_counter_val_d[16])?adr_gen_counter_d17:adr_rd_int_ram0;
    assign address2 = (adr_gen_counter_val_d[16])?mod_result:adr_rd_deint_ram0;

    int_deint_adr_ram int_adr_ram_u
    (
        .address_a (address1                ),
        .address_b (adr_rd_int_ram1         ),
        .clock     (clk_sys                 ),
        .data_a    (mod_result              ),
        .data_b    (12'b0                   ),
        .wren_a    (adr_gen_counter_val_d[16]),
        .wren_b    (1'b0                    ),
        .q_a       (dat_rd_int_ram0         ),
        .q_b       (dat_rd_int_ram1         )
    );

    int_deint_adr_ram deint_adr_ram_u
    (
        .address_a (address2                ),
        .address_b (adr_rd_deint_ram1       ),
        .clock     (clk_sys                 ),
        .data_a    (adr_gen_counter_d17     ),
        .data_b    (12'b0                   ),
        .wren_a    (adr_gen_counter_val_d[16]),
        .wren_b    (1'b0                    ),
        .q_a       (dat_rd_deint_ram0       ),
        .q_b       (dat_rd_deint_ram1       )
    );

endmodule  ///int_deint_adr_gen

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线免费一区三区| 成人的网站免费观看| 国产精品国产三级国产普通话99| 在线观看视频一区二区欧美日韩| 精品一区二区在线观看| 夜夜嗨av一区二区三区网页| 久久影院视频免费| 欧美老女人在线| 91亚洲国产成人精品一区二三| 另类成人小视频在线| 亚洲第一久久影院| 最新国产成人在线观看| 久久精品一区二区| 欧美一区二区三区视频| 色综合久久中文综合久久97| 成人影视亚洲图片在线| 极品美女销魂一区二区三区免费| 天天av天天翘天天综合网 | 日韩女同互慰一区二区| 欧美专区日韩专区| 99久久免费国产| 成人午夜电影网站| 国产传媒一区在线| 国产一区二区三区四区五区入口| 日韩中文字幕亚洲一区二区va在线| 亚洲美女偷拍久久| 亚洲欧美一区二区视频| 国产精品传媒入口麻豆| 欧美激情资源网| 国产日韩欧美麻豆| 久久久99精品久久| 久久久久久免费网| 国产视频一区二区在线观看| 久久婷婷综合激情| 久久精品人人做人人综合 | 欧美韩国一区二区| 久久人人97超碰com| 精品国产制服丝袜高跟| 精品乱码亚洲一区二区不卡| 欧美成人video| 久久久一区二区| 欧美极品xxx| 亚洲图片激情小说| 亚洲线精品一区二区三区| 亚洲一卡二卡三卡四卡| 亚洲1区2区3区视频| 日本女人一区二区三区| 蜜臀av性久久久久蜜臀av麻豆| 日韩精品一区第一页| 免费人成精品欧美精品| 久久国产精品色| 国产成人啪免费观看软件| 成人99免费视频| 色综合久久久久| 国产精品久久一卡二卡| 亚洲综合在线观看视频| 日日夜夜一区二区| 国内成人自拍视频| 波波电影院一区二区三区| 91在线视频18| 欧美日韩一区二区三区四区| 欧美va天堂va视频va在线| 精品999久久久| 亚洲视频综合在线| 午夜伦欧美伦电影理论片| 久久疯狂做爰流白浆xx| 国产成人综合在线| 欧美性极品少妇| 久久只精品国产| 亚洲精品ww久久久久久p站| 视频在线在亚洲| 丰满岳乱妇一区二区三区| 日本韩国欧美三级| 欧美mv日韩mv国产网站| 亚洲靠逼com| 狠狠色丁香久久婷婷综合_中 | 91麻豆精品一区二区三区| 欧美日韩亚洲国产综合| 久久夜色精品国产欧美乱极品| 亚洲日本va在线观看| 免费久久99精品国产| 成人手机电影网| 欧美日韩高清在线| 国产精品欧美一区喷水| 免费观看91视频大全| 97超碰欧美中文字幕| 欧美成人免费网站| 亚洲激情图片qvod| 精品亚洲免费视频| 在线亚洲高清视频| 亚洲国产高清在线观看视频| 日韩国产高清在线| 色偷偷一区二区三区| 久久久亚洲午夜电影| 天天影视涩香欲综合网| av高清不卡在线| 精品国产电影一区二区| 亚洲无线码一区二区三区| 国产福利一区在线| 日韩欧美国产小视频| 亚洲国产精品久久人人爱蜜臀| 国产麻豆成人传媒免费观看| 欧美一区二视频| 夜夜夜精品看看| 99视频国产精品| 国产亚洲精品aa午夜观看| 美腿丝袜亚洲综合| 欧美三级韩国三级日本三斤| 国产精品成人一区二区三区夜夜夜| 精品一区二区在线播放| 欧美一区二区三区在线观看视频| 一区二区在线看| av一区二区三区四区| 国产视频一区二区三区在线观看 | 99在线精品一区二区三区| 欧美精品一区二区久久婷婷| 琪琪久久久久日韩精品| 欧美日韩国产首页在线观看| 亚洲欧美日韩国产综合在线 | 亚洲国产综合色| 99久久伊人网影院| 国产精品久久久久久久久晋中 | 综合欧美一区二区三区| 国产99久久久国产精品潘金| 久久综合色8888| 久草精品在线观看| 欧美www视频| 精品一区二区免费看| 日韩一级免费观看| 日本不卡视频在线| 欧美一区在线视频| 蜜臀av性久久久久av蜜臀妖精| 欧美日本一道本| 日韩在线a电影| 制服丝袜av成人在线看| 日韩精品一区第一页| 欧美一区二区三区四区高清| 美女网站在线免费欧美精品| 欧美一区二区三区白人| 人人超碰91尤物精品国产| 8x福利精品第一导航| 男人的天堂亚洲一区| 日韩精品资源二区在线| 韩国午夜理伦三级不卡影院| 久久久99精品久久| 大陆成人av片| 尤物视频一区二区| 欧美日韩一区二区三区四区五区| 视频一区二区三区在线| 欧美成人a在线| 成人性视频网站| 亚洲综合在线观看视频| 91精品国产一区二区人妖| 精品一区二区免费在线观看| 中文字幕免费不卡| 91精品福利视频| 免费观看在线综合色| 国产色产综合色产在线视频| 99免费精品在线| 午夜精品福利一区二区三区蜜桃| 日韩手机在线导航| 高清不卡一区二区| 亚洲日本一区二区| 91精品国产综合久久国产大片| 国产成人av一区二区三区在线| 综合久久久久久| 91精品在线观看入口| 粉嫩在线一区二区三区视频| 亚洲综合精品久久| 精品国产sm最大网站| 91美女片黄在线| 麻豆精品在线播放| 亚洲欧洲日韩av| 欧美一区二区三区四区久久| 粉嫩av一区二区三区| 五月婷婷激情综合| 国产无一区二区| 欧美日韩国产综合一区二区三区 | 蜜臀av性久久久久蜜臀aⅴ流畅| 国产丝袜欧美中文另类| 欧美色窝79yyyycom| 极品瑜伽女神91| 亚洲图片自拍偷拍| 国产日韩欧美综合一区| 欧美伦理视频网站| av一区二区三区黑人| 久久精品av麻豆的观看方式| 综合久久国产九一剧情麻豆| 日韩免费观看2025年上映的电影 | 在线亚洲免费视频| 国产一区二区三区视频在线播放| 亚洲精品videosex极品| 国产调教视频一区| 日韩一区二区三区免费看| 波多野结衣精品在线| 国内精品国产三级国产a久久| 亚洲一区二区三区爽爽爽爽爽| 久久久高清一区二区三区| 91精品国产色综合久久不卡电影 | 亚洲欧洲精品成人久久奇米网|