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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? huffman_en_full.v

?? A Huffman implementation reference design in both VHDL and Verilog is provided by the Xilinx
?? V
?? 第 1 頁 / 共 3 頁
字號:
       codelength1 <= 5'b0;  vlcode1 <= 18'b0;
       end
   else if (rdy_in == 1'b1 & cntr64 == 7'b0000010)
       begin
	    codelength1 <= {1'b0,codelength_dc};
       vlcode1 <= {8'b0,vlcode_dc};
       end
   else
      begin
		 codelength1 <= codelength_ac;
      vlcode1 <= {vlcode_ac};
      end
   end

/*****************************************************************************/

/* pipeline code and codelength. This is done to match the pipestages with
cl_sum_prev which is multiplied with vlcode. */

always @ (posedge CLK or posedge RST)
   begin
   if (RST)
       begin
       codelength2 <= 5'b0; 
       vlcode2 <= 18'b0; vlcode3 <= 18'b0;vlcode4 <= 18'b0;
       end
   else if (rdy_in == 1'b1)
       begin
	     codelength2 <= codelength1; 
       vlcode2 <= vlcode1; vlcode3 <= vlcode2;vlcode4 <= vlcode3;
       end
   end


/*****************************************************************************/
/* The maximum length of the vlc code can be 18 bits + 6 bits = 24 bits. This happens 
when a run level pair not defined in the table is encountered. In this case , a 6 bit 
escape code followed by 6 bit run code and 12 bit level code is used.  The minimum 
length of the vlc code is 2 bits. This happens when encoding an "EOB" symbol. After 
finding the vlc code for a particular run/level pair, the code is shifted into a 
barrel shifter.

Every time there are 16 bits in the barrel shifter, the contends of the shifter is
enabled out as the huffman_out signal. Each run length value is read in and the corresponding 
vlc code is found out (vlcode_dc or vlcode_ac1). For each code, the codelength is also
stored in a ROM. The codelengths are added up (cl_sum) and when it reaches 16 or 32, 
the code is sent out. 

The maximum  value for cl_sum happens when a 15 bit code is followed by a 24 bit
code. So the max. value for cl_sum is 15 + 24 = 39. The barrel shifter has 39 valid
registers. For ease of coding, 48 (3 * 16) registers are used. These registers are
divided into upper_reg, middle_reg and lower_reg. Each time upper_reg if full (ie., 
16 or more bits in barrel shifter), the contends are sent out. The remaining bits
, if any, in the middle_reg are moved up to the upper_reg. If the barrel shifter 
has 32 or more valid data, the upper and middle registers are full and the upper
reg data is sent out followed by the middle reg data. The remaining bits, if any 
in the lower register is moved up to the upper register.*/

/*****************************************************************************/
/* calculate sum of codelength. set half flag and full flag . Half flags indicates
that the upper_reg is full and full flag indicates that the lower register is full.
cl_sum_prev gives the sum of the codelengths which is used to set the flags. cl_sum
is used to find out the number of shifts to be done in the barrel shifts.*/

always @ (posedge CLK or posedge RST)
   begin
   if (RST)
       begin
       cl_sum <= 6'b100111; cl_sum_prev <= 6'b0;
       half_flag1 <= 1'b0; full_flag1 <= 1'b0;
       end
   else if ( cl_sum_rdy == 1'b1)
       begin
          if (cl_sum_prev < 6'd16)
            begin  
            cl_sum_prev <= codelength1 + cl_sum_prev;
            cl_sum <= (6'b100111 - cl_sum_prev);
            half_flag1 <= 1'b0;
            full_flag1 <= 1'b0;
			     end
          else if (cl_sum_prev <= 6'd32 && cl_sum_prev >= 6'd16)
            begin 
            cl_sum_prev <= codelength1 + (cl_sum_prev - 5'b10000);
            cl_sum <= (6'b100111 - cl_sum_prev);
            half_flag1 <= 1'b1;
            full_flag1 <= 1'b0;
			     end
          else if (cl_sum_prev >= 6'd32)
            begin 
            cl_sum_prev <= codelength1 + (cl_sum_prev - 6'b100000);
            cl_sum <= (6'b100111 - cl_sum_prev);
            half_flag1 <= 1'b1;
            full_flag1 <= 1'b1;
			     end
       end
   end

/*****************************************************************************/

/* barrel shifting done using multiplier. Barrel shifting coefficients are
stored in a ROM and selected depending on the value of cl_sum */

always @ (posedge CLK)
   begin
   if (RST)
       begin
       cl_sum_shift <= 39'b0; 
       end
  else 
    begin
    case (cl_sum)
       6'd0 : begin cl_sum_shift <=  39'b000000000000000000000000000000000000000; end   
       6'd1 : begin cl_sum_shift <=  39'b000000000000000000000000000000000000010; end   
       6'd2 : begin cl_sum_shift <=  39'b000000000000000000000000000000000000100; end   
       6'd3 : begin cl_sum_shift <=  39'b000000000000000000000000000000000001000; end   
       6'd4 : begin cl_sum_shift <=  39'b000000000000000000000000000000000010000; end   
       6'd5 : begin cl_sum_shift <=  39'b000000000000000000000000000000000100000; end   
       6'd6 : begin cl_sum_shift <=  39'b000000000000000000000000000000001000000; end   
       6'd7 : begin cl_sum_shift <=  39'b000000000000000000000000000000010000000; end   
       6'd8 : begin cl_sum_shift <=  39'b000000000000000000000000000000100000000; end   
       6'd9 : begin cl_sum_shift <=  39'b000000000000000000000000000001000000000; end   
       6'd10 : begin cl_sum_shift <= 39'b000000000000000000000000000010000000000; end   
       6'd11 : begin cl_sum_shift <= 39'b000000000000000000000000000100000000000; end   
       6'd12 : begin cl_sum_shift <= 39'b000000000000000000000000001000000000000; end   
       6'd13 : begin cl_sum_shift <= 39'b000000000000000000000000010000000000000; end   
       6'd14 : begin cl_sum_shift <= 39'b000000000000000000000000100000000000000; end   
       6'd15 : begin cl_sum_shift <= 39'b000000000000000000000001000000000000000; end   
       6'd16 : begin cl_sum_shift <= 39'b000000000000000000000010000000000000000; end   
       6'd17 : begin cl_sum_shift <= 39'b000000000000000000000100000000000000000; end   
       6'd18 : begin cl_sum_shift <= 39'b000000000000000000001000000000000000000; end   
       6'd19 : begin cl_sum_shift <= 39'b000000000000000000010000000000000000000; end   
       6'd20 : begin cl_sum_shift <= 39'b000000000000000000100000000000000000000; end   
       6'd21 : begin cl_sum_shift <= 39'b000000000000000001000000000000000000000; end   
       6'd22 : begin cl_sum_shift <= 39'b000000000000000010000000000000000000000; end   
       6'd23 : begin cl_sum_shift <= 39'b000000000000000100000000000000000000000; end   
       6'd24 : begin cl_sum_shift <= 39'b000000000000001000000000000000000000000; end   
       6'd25 : begin cl_sum_shift <= 39'b000000000000010000000000000000000000000; end   
       6'd26 : begin cl_sum_shift <= 39'b000000000000100000000000000000000000000; end   
       6'd27 : begin cl_sum_shift <= 39'b000000000001000000000000000000000000000; end   
       6'd28 : begin cl_sum_shift <= 39'b000000000010000000000000000000000000000; end   
       6'd29 : begin cl_sum_shift <= 39'b000000000100000000000000000000000000000; end   
       6'd30 : begin cl_sum_shift <= 39'b000000001000000000000000000000000000000; end   
       6'd31 : begin cl_sum_shift <= 39'b000000010000000000000000000000000000000; end   
       6'd32 : begin cl_sum_shift <= 39'b000000100000000000000000000000000000000; end   
       6'd33 : begin cl_sum_shift <= 39'b000001000000000000000000000000000000000; end   
       6'd34 : begin cl_sum_shift <= 39'b000010000000000000000000000000000000000; end   
       6'd35 : begin cl_sum_shift <= 39'b000100000000000000000000000000000000000; end   
       6'd36 : begin cl_sum_shift <= 39'b001000000000000000000000000000000000000; end   
       6'd37 : begin cl_sum_shift <= 39'b010000000000000000000000000000000000000; end   
       6'd38 : begin cl_sum_shift <= 39'b100000000000000000000000000000000000000; end    
       default : begin cl_sum_shift <= 39'b000000000000000000000000000000000000000; end  
       endcase
       end
end

/*****************************************************************************/
/* multiplier used to do barrel shifting of codeword. flags pipeleined to match
the pipe line stages of upper, middle and lower registers. */

always @ (posedge CLK or posedge RST)
   begin
   if (RST)
       begin
       mult_out <= 39'b0; 
       full_flag2 <= 1'b0; half_flag2 <= 1'b0;
       full_flag3 <= 1'b0; half_flag3 <= 1'b0;
       full_flag4 <= 1'b0; half_flag4 <= 1'b0;
       full_flag5 <= 1'b0; half_flag5 <= 1'b0;
       full_flag6 <= 1'b0;
       end
   else if (rdy_in == 1'b1)
       begin
         mult_out <= vlcode4 * cl_sum_shift;
         full_flag2 <= full_flag1; half_flag2 <= half_flag1;
         full_flag3 <= full_flag2; half_flag3 <= half_flag2;
         full_flag4 <= full_flag3; half_flag4 <= half_flag3;
         full_flag5 <= full_flag4; half_flag5 <= half_flag4;
         full_flag6 <= full_flag5; 
       end
end

/*****************************************************************************/
always @ (posedge CLK or posedge RST)
   begin
   if (RST)
       begin
       upper_reg1 <= 16'b0; middle_reg1 <= 16'b0; lower_reg1 <= 16'b0;
       end
   else if (rdy_in == 1'b1)
       begin
         case({full_flag4, half_flag4})
         2'b00: begin upper_reg1[16:1] <= mult_out[38:23] | upper_reg1[16:1];
                      middle_reg1 <= mult_out[22:7] ;
                      lower_reg1 <= {mult_out[6:0],9'b0 }; end
         2'b01: begin upper_reg1[16:1] <= mult_out[38:23] | middle_reg1[16:1];
                      middle_reg1 <= mult_out[22:7];
                      lower_reg1 <= {mult_out[6:0],9'b0}; end
         2'b11: begin upper_reg1 <= mult_out[38:23] | lower_reg1;
                      middle_reg1 <= mult_out[22:7];
                      lower_reg1 <= {16'b0}; end
         default:begin upper_reg1 <= upper_reg1;
                      middle_reg1 <= middle_reg1;
                      lower_reg1 <= lower_reg1; end
         endcase
       end     
   end

/*****************************************************************************/

always @ (posedge CLK or posedge RST)
   begin
   if (RST)
       begin
       upper_reg2 <= 16'b0; middle_reg2 <= 16'b0; 
       middle_reg3 <= 16'b0; 
       end
   else if (rdy_in == 1'b1)
       begin
          upper_reg2 <= upper_reg1;
          middle_reg2 <= middle_reg1;
          middle_reg3 <= middle_reg2;
          
       end     
   end

/*****************************************************************************/

always @ (posedge CLK or posedge RST)
   begin
   if (RST)
       begin
       huffman_out <= 16'b0; 
       end
   else if (rdy_in == 1'b1)
       begin
       if (half_flag5 == 1'b1)
           huffman_out <= upper_reg2;
       else if (full_flag6 == 1'b1)
           huffman_out <= middle_reg3;
			end
    end

/*****************************************************************************/

/* counter that counts upto 64. */

always @ (posedge CLK or posedge RST)
   begin
   if (RST)
       begin
       cntr64 <= 7'b1000000;
       end
   else if (rdy_in == 1'b1)
        begin
          if (cntr64 < 7'b1000000)
              cntr64 <= cntr64 + 1;
          else 
              cntr64 <= 7'b0000001;
        end
  end  

/* cl_sum starts after 2 clks from reset. */

always @ (posedge CLK or posedge RST)
   begin
   if (RST)
       begin
       cl_sum_rdy <= 1'b0;
       end
   else 
        begin
          if (cntr64 == 7'b0000010)
              cl_sum_rdy <= 1'b1;
          else 
              cl_sum_rdy <= cl_sum_rdy;
        end
  end  
/*****************************************************************************/

/* counter that counts upto 64. */

always @ (posedge CLK or posedge RST)
   begin
   if (RST)
       begin
       rdy_out <= 1'b0;
       end
   else if (rdy_in == 1'b1)
        begin
        rdy_out <= 1'b1;
        end
  end  

/*****************************************************************************/
endmodule

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲一区二区视频在线观看| 99精品欧美一区二区蜜桃免费| 国产99精品在线观看| 欧美成人精品福利| 国产一区二区视频在线| 国产欧美1区2区3区| 成人午夜电影久久影院| 亚洲丝袜美腿综合| 51午夜精品国产| 精品写真视频在线观看| 国产日产欧美一区二区视频| 成人国产免费视频| 亚洲愉拍自拍另类高清精品| 91.麻豆视频| 韩国成人在线视频| 中文字幕综合网| 欧美日本乱大交xxxxx| 免费在线观看一区二区三区| 国产欧美日韩在线| 在线观看免费一区| 毛片不卡一区二区| 国产情人综合久久777777| 91美女片黄在线| 日韩1区2区日韩1区2区| 国产日韩一级二级三级| 在线观看区一区二| 激情综合网激情| 亚洲欧美国产三级| 26uuu国产电影一区二区| 成人精品小蝌蚪| 日韩**一区毛片| 1024成人网| 精品88久久久久88久久久| 91丨porny丨国产| 精品一区二区国语对白| 亚洲一区二区在线免费观看视频| 精品国产电影一区二区| 91豆麻精品91久久久久久| 九九国产精品视频| 一区二区三区成人| 中文字幕精品三区| 制服.丝袜.亚洲.另类.中文| voyeur盗摄精品| 国内一区二区在线| 亚洲一级不卡视频| 国产清纯白嫩初高生在线观看91 | 91精品国产一区二区三区蜜臀 | 一本色道a无线码一区v| 久久精品国产澳门| 亚洲国产精品视频| 亚洲区小说区图片区qvod| 久久久久久久电影| 91精品国产品国语在线不卡| 99精品欧美一区| 国产高清精品网站| 激情久久五月天| 视频一区国产视频| 一区二区在线免费| 国产精品色呦呦| 精品黑人一区二区三区久久| 欧美久久婷婷综合色| 色丁香久综合在线久综合在线观看| 国产精品1区2区3区| 久久丁香综合五月国产三级网站| 午夜视频在线观看一区二区三区| 亚洲美腿欧美偷拍| 中文字幕一区二区三区在线播放| 国产三区在线成人av| 国产性色一区二区| 欧美精品一区在线观看| 精品伦理精品一区| 欧美tickling挠脚心丨vk| 欧美一级在线免费| 日韩欧美一级在线播放| 91精品黄色片免费大全| 911精品产国品一二三产区| 欧美伦理视频网站| 91精品国产一区二区三区蜜臀| 欧美精品久久久久久久多人混战| 欧美日韩色综合| 制服.丝袜.亚洲.中文.综合| 91精品国产乱| 日韩欧美国产三级| 久久综合视频网| 久久精品视频一区二区| 欧美激情一区二区三区| 日韩伦理免费电影| 夜夜嗨av一区二区三区网页| 亚洲美女免费视频| 亚洲一区在线观看免费观看电影高清| 亚洲欧美成人一区二区三区| 亚洲国产成人自拍| 亚洲激情av在线| 亚洲欧美福利一区二区| 亚洲欧美日韩国产一区二区三区 | 自拍偷拍国产精品| 伊人婷婷欧美激情| 一区二区三区免费网站| 亚洲第一会所有码转帖| 亚洲一区二区精品3399| 免费成人美女在线观看.| 欧美aⅴ一区二区三区视频| 国产裸体歌舞团一区二区| 国产麻豆视频一区二区| 91免费看片在线观看| 日本久久电影网| 欧美精品久久99| 久久伊99综合婷婷久久伊| 国产精品电影一区二区| 亚洲天堂精品在线观看| 免费精品99久久国产综合精品| 日本少妇一区二区| 国产成人精品免费在线| 91香蕉视频黄| 日韩欧美成人一区二区| 欧美色区777第一页| 欧美老肥妇做.爰bbww视频| 日韩欧美视频一区| 国产欧美一区二区精品婷婷| 亚洲bdsm女犯bdsm网站| 日韩av在线播放中文字幕| av男人天堂一区| 91成人网在线| 国产精品嫩草影院com| 国产天堂亚洲国产碰碰| 日日嗨av一区二区三区四区| 久久99这里只有精品| 成人午夜在线播放| 91精品国产入口| 国产精品污网站| 久久国产欧美日韩精品| 丁香五精品蜜臀久久久久99网站 | 自拍偷在线精品自拍偷无码专区| 亚洲精品中文在线| 国产精品资源在线| 欧美日韩一级黄| 成人免费小视频| 免费一级片91| 欧美视频三区在线播放| 欧美日韩黄视频| www亚洲一区| 亚洲国产精品精华液2区45| 蜜臀久久久久久久| 国产成人午夜精品影院观看视频| 在线观看亚洲专区| 国产精品久久三| 日韩影院精彩在线| 日本久久一区二区三区| 久久久精品tv| 午夜欧美在线一二页| 国产不卡免费视频| 欧美人xxxx| 国产精品丝袜久久久久久app| 亚洲香肠在线观看| 91福利社在线观看| 国产欧美一区二区精品性色 | 亚洲日本免费电影| 国产乱国产乱300精品| 5566中文字幕一区二区电影 | 欧美mv日韩mv| 日韩影院在线观看| 91国产免费看| 一区二区三区产品免费精品久久75| 国产乱码精品一区二区三区五月婷 | 色婷婷久久久综合中文字幕| 日韩欧美国产电影| 老司机一区二区| 99国产精品国产精品毛片| 国产精品福利一区二区三区| 国产一区二区精品在线观看| 豆国产96在线|亚洲| 久久蜜臀中文字幕| 蜜桃久久av一区| 日韩欧美色综合网站| 亚洲视频免费观看| 色狠狠av一区二区三区| 亚洲欧美在线高清| 色综合久久66| 亚洲精品一卡二卡| 制服丝袜日韩国产| 欧美极品aⅴ影院| 暴力调教一区二区三区| 亚洲欧美激情视频在线观看一区二区三区 | 亚洲成人7777| 欧美日本不卡视频| 亚洲午夜在线视频| 日韩欧美国产精品一区| 日本中文字幕一区二区有限公司| 欧美精品 国产精品| 久久不见久久见免费视频7| 91精品久久久久久久99蜜桃| 精品综合久久久久久8888| 欧美r级在线观看| 成人精品免费看| 中文字幕不卡的av| 欧美无砖专区一中文字| 日韩精品每日更新| 日韩三级在线免费观看| 国产精品自拍一区| 国产婷婷色一区二区三区四区|