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

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

?? imdct.vhd

?? MP3的VHDL源碼
?? VHD
字號:
---------------------------------------------------------------------------------
-- File Name: imdct.vhd
-- Function Description:
--	This is the main module of component IMDCT. Two packages are 
--	used in this module: all_types.vhd, and imdct_package.vhd
---------------------------------------------------------------------------------
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use IEEE.std_logic_arith.all;
use work.all_types.all;	
use work.imdct_package.all;
use work.mul.all;

entity imdct is
  port( clk   : in  std_logic;		-- clock input signal
        rst   : in  std_logic;		-- reset signal (1 = reset)
        start : in  std_logic;		-- start=1 means that this block is activated
        done  : out std_logic;		-- generate a done signal for one clock pulse when finished
        din  : in  std_logic_vector(31 downto 0);	-- signals from memory
        dout  : out std_logic_vector(31 downto 0);	   -- signals to memory
		  memc: out mem_control_type;                   -- signals to memory
        frm   : in  frame_type);		-- contains all header and side information for the current frame
 end imdct;                                  

architecture behavioral of imdct is

  type state_type is (rst_prev_block,idle,judge1,send_addr,idle1,get_data,judge2,send_data_to_comp,calc,judge3,send_data,judge4,done1);
  signal present_state,next_state: state_type;
  type type_dct_out is array (0 to 575) of std_logic_vector(31 downto 0);
  signal dct_in,dct0_in,dct1_in,dct2_in,dct3_in,dct0_out,dct1_out,dct2_out,dct3_out : type_dct;
  signal prev_line0_in,prev_line1_in,prev_line2_in,prev_line3_in,prev_line0_out,prev_line1_out,prev_line2_out,prev_line3_out:type_dct;
  signal dct_out : type_dct_out;
  signal sig_memc: mem_control_type;
  signal memo_en:std_logic_vector(2 downto 0); 
  signal sig_block_type:std_logic_vector(1 downto 0);
  signal prev_block:type_dct_out; 
 
  component imdct0_gen
            port (dct_in: in type_dct;
				      dct_out: out type_dct;
						prev_line_in: in type_dct;
						prev_line_out: out type_dct);
			  end component;
			                  	  
  component imdct1_gen
             port( dct_in: in type_dct;
				      dct_out: out type_dct;
						prev_line_in: in type_dct;
						prev_line_out: out type_dct);
			   end component;
 
  component imdct2_gen
             port(dct_in: in type_dct;
				      dct_out: out type_dct;
						prev_line_in: in type_dct;
						prev_line_out: out type_dct); 
				end component;


  component imdct3_gen
             port(dct_in: in type_dct;
				      dct_out: out type_dct;
						prev_line_in: in type_dct;
						prev_line_out: out type_dct );
            end component;
 
  begin
    memc<=sig_memc;
 	 	
   c0: imdct0_gen
	   port map  ( dct_in => dct0_in, 
				      dct_out => dct0_out,
					  	prev_line_in => prev_line0_in,
						prev_line_out => prev_line0_out);

   c1: imdct1_gen
	   port map( dct_in => dct1_in,
				      dct_out => dct1_out,
					  	prev_line_in => prev_line1_in,
						prev_line_out => prev_line1_out);


  c2: imdct2_gen
	   port map( dct_in => dct2_in,
				      dct_out => dct2_out,
					  	prev_line_in => prev_line2_in,
						prev_line_out => prev_line2_out);

  c3:imdct3_gen
	   port map( dct_in => dct3_in,
				      dct_out => dct3_out,
					  	prev_line_in => prev_line3_in,
						prev_line_out => prev_line3_out);


 process(clk)  
     begin
       if(clk'event and clk='1')then
          if rst ='1' then               
	  present_state<= rst_prev_block;
     	   else
          present_state<=next_state;
         end if ;
      end if;
  end process;

 process(present_state)
    variable sb_count,ss_count,data_count:integer; 
 
     begin 
	         
	  case present_state is
	  when rst_prev_block =>
	                       for i in 0 to 575 loop
	                         prev_block(i) <=(others=>'0');
	                        end loop;
	                        next_state<=idle;
	           
	  when idle  => sig_memc.en<='0';
                        sig_memc.we<='0';
                        sig_memc.oe<='0';
	                
	                 sb_count:=0;
						  data_count:=0;
						  ss_count := 0;
						  done<='0';

						  for i in 0 to 17 loop
						  dct_in(i)<=(others=>'0');
						
						  end loop;
					   
						  
						  sig_memc.addr<=(others=>'0');
						 

						  next_state<= judge1;  

                                              


	when judge1=>
                    if start ='1' then
						    next_state<=send_addr;
						  else
                      next_state<=idle;
						  end if;
						  
						  
	when send_addr =>sig_memc.we<='0';
	                 sig_memc.en<='1';
			 sig_memc.oe<='1';
			 dout <= (others=>'0'); 
	                 sig_memc.addr<= conv_std_logic_vector((sb_count*18+ss_count),10); 					  
	                 
                       
                                     
			 next_state <= idle1;
                       
     when idle1 =>      next_state<= get_data;
                        
		 			  
	  	                 
    when get_data =>     ss_count:=ss_count+1;

	                 dct_in(ss_count-1)<=din;
                          			 
			  if ss_count=18 then			  
			  	next_state<= judge2;
			  else
			  	next_state <= send_addr;
			  end if;

    
    when judge2 =>  ss_count:=0;
                    if sb_count < 2 and frm.sideinfo.blocksplit_flag ='1' and frm.sideinfo.switch_point ='1' then       
    						  sig_block_type <="00";
                    else  						     
		     sig_block_type<=frm.sideinfo.block_type;
		    end if;
                     next_state<=send_data_to_comp;              	  
						  


   when send_data_to_comp => if sig_block_type ="00" then
                                  for i in 0 to 17 loop
				     dct0_in(i) <=  dct_in(i);
				     prev_line0_in(i)<=prev_block(sb_count*18+i);
			          end loop;	     
                             end if;     
   
                              if sig_block_type ="01" then
                                     for i in 0 to 17 loop
				      dct1_in(i) <=  dct_in(i);
				      prev_line1_in(i)<=prev_block(sb_count*18+i);
				     end loop;	     
                             end if;   
   
                              if sig_block_type = "10" then
	                              for i in 0 to 17 loop
				       dct2_in(i) <=  dct_in(i);
				       prev_line2_in(i)<=prev_block(sb_count*18+i);
				      end loop;	     
                              end if;   
   
                               if sig_block_type ="11" then
                                   for i in 0 to 17 loop
				    dct3_in(i) <=  dct_in(i);
				    prev_line3_in(i)<=prev_block(sb_count*18+i);
				   end loop;	     
                               end if;   
   
                          next_state<= calc;
   
   
   
   when calc =>
                 if sig_block_type ="00" then
                     			    for i in 0 to 17 loop
      			            prev_block(sb_count*18+i)<=prev_line0_out(i);
				
   				     dct_out(sb_count*18 +i)<=dct0_out(i);
    			    end loop;
      		 end if;
            
	            if sig_block_type ="01" then
                 
			        for i in 0 to 17 loop
					     prev_block(sb_count*18+i)<=prev_line1_out(i);
				        
 	  				dct_out(sb_count*18 +i)<=dct1_out(i);
   			     end loop;
               end if;
       	   	                
  		       if sig_block_type = "10" then
	               		    for i in 0 to 17 loop
					   prev_block(sb_count*18+i)<=prev_line2_out(i);
				     
 				    dct_out(sb_count*18 +i)<=dct2_out(i);
				    end loop;
   		   end if;

			 if sig_block_type ="11" then
              
				  for i in 0 to 17 loop
				     prev_block(sb_count*18+i)<=prev_line3_out(i);
				     dct_out(sb_count*18 +i)<=dct3_out(i); 
				  end loop;
	   	  end if;

			  sb_count:=sb_count+1;
			  next_state<=judge3;  
	  when judge3 => 
			  if sb_count = 32 then
			  sb_count:=0;
			  next_state <=send_data;
			  else
			  next_state<=send_addr;
			  end if;
		                              
	  when send_data=>       sig_memc.oe<='0';
 	 	                 sig_memc.en<='1';
		 		 sig_memc.we<='1';
				 sig_memc.addr<=conv_std_logic_vector(data_count,10);
				 dout<=dct_out(data_count);
				 data_count:=data_count+1;
             next_state<=judge4;  
	  when judge4=>				
				 if data_count =576 then
 				   next_state<= done1;
 				   data_count:=0;
				 else
				   next_state<=send_data;
				 end if;

    when done1 => done <='1';
                                 next_state<=idle;

 when others => next_state <=idle;
 end case;
 end process;
 end behavioral ;        
    
       
  

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美日韩综合aⅴ视频| 欧美视频完全免费看| 蜜桃视频一区二区三区| 亚洲精品网站在线观看| 亚洲日本电影在线| 国产精品理论片在线观看| 中文成人av在线| 国产精品不卡一区二区三区| 国产精品久久久久久久蜜臀| 国产精品乱子久久久久| 国产精品白丝在线| 一区二区三区四区不卡在线 | 欧美一区二区三区在线观看 | 中文字幕一区二区三区乱码在线 | 欧美日韩精品一区二区三区蜜桃| 91老师片黄在线观看| 在线观看国产91| 欧美高清激情brazzers| 日韩欧美亚洲国产另类| 久久久综合视频| 中文字幕一区二区三区乱码在线| 亚洲乱码精品一二三四区日韩在线 | 色域天天综合网| 欧美性受xxxx黑人xyx性爽| 欧美三级三级三级| 日韩欧美中文字幕公布| 国产欧美一二三区| 一区二区三区高清| 久色婷婷小香蕉久久| 福利一区二区在线| 欧美又粗又大又爽| 久久综合成人精品亚洲另类欧美| 亚洲天堂免费看| 免费人成精品欧美精品| 国产成人在线视频网址| 欧美私模裸体表演在线观看| 欧美成人午夜电影| 一区二区三区四区激情| 国产一区二区看久久| 欧洲精品中文字幕| 久久久久久久精| 亚洲成人动漫一区| 成人理论电影网| 欧美一区二区久久久| 亚洲国产高清不卡| 日本不卡高清视频| 色婷婷激情综合| 久久精品亚洲精品国产欧美 | 色综合一区二区| 日韩欧美久久久| 亚洲一区欧美一区| 99久久综合狠狠综合久久| 欧美一区中文字幕| 一区二区视频免费在线观看| 久久69国产一区二区蜜臀| 欧美日韩一区久久| 亚洲日本韩国一区| 高清shemale亚洲人妖| 欧美刺激午夜性久久久久久久| 亚洲乱码中文字幕| 99久久精品免费看| 久久婷婷成人综合色| 蜜桃一区二区三区在线| 欧美视频日韩视频| 一区二区三区加勒比av| 91看片淫黄大片一级| 国产欧美久久久精品影院| 久久av中文字幕片| 日韩三级伦理片妻子的秘密按摩| 亚洲综合一区二区精品导航| 91浏览器打开| 亚洲欧美激情在线| 色网综合在线观看| 亚洲日本电影在线| 色婷婷亚洲一区二区三区| 国产精品久线在线观看| 99精品热视频| 亚洲久草在线视频| 欧美色偷偷大香| 丝袜诱惑制服诱惑色一区在线观看| 99精品视频一区| 亚洲欧美aⅴ...| 91亚洲精品久久久蜜桃网站 | 香蕉久久夜色精品国产使用方法| 欧美影院一区二区三区| 日韩国产欧美一区二区三区| 9191久久久久久久久久久| 婷婷综合久久一区二区三区| 欧美人牲a欧美精品| 久久国产精品免费| 久久精品夜夜夜夜久久| 95精品视频在线| 午夜精品久久一牛影视| 日韩美女在线视频| 成人污污视频在线观看| 亚洲精品国久久99热| 欧美精品在线观看播放| 精品无人区卡一卡二卡三乱码免费卡| 26uuu亚洲| 91浏览器在线视频| 天天综合日日夜夜精品| 精品国产不卡一区二区三区| 成人精品鲁一区一区二区| 亚洲五月六月丁香激情| 日韩美女一区二区三区| 成人午夜视频免费看| 亚洲国产视频一区二区| 精品1区2区在线观看| 91视频你懂的| 日本成人在线电影网| 国产精品欧美一区喷水| 欧美日韩国产精品成人| 国产乱码字幕精品高清av| 亚洲激情成人在线| 久久亚洲综合色| 在线视频亚洲一区| 国产成人综合亚洲网站| 日本亚洲三级在线| 国产欧美日韩视频在线观看| 欧美色偷偷大香| 不卡av在线网| 国内精品伊人久久久久av一坑| 亚洲精品成a人| 久久久不卡网国产精品一区| 欧美三区在线观看| 国产成人精品免费| 日韩av一区二区在线影视| 综合久久国产九一剧情麻豆| 日韩一区二区三区在线| 欧美三级一区二区| 色老汉一区二区三区| 成人永久看片免费视频天堂| 日韩专区中文字幕一区二区| 日韩美女啊v在线免费观看| 精品国产第一区二区三区观看体验| 在线亚洲高清视频| 一本久久a久久精品亚洲| 国产在线精品一区在线观看麻豆| 午夜av一区二区| 亚洲高清免费视频| 一区二区在线看| 亚洲视频免费在线观看| 国产精品青草久久| 国产精品天美传媒沈樵| 国产日本欧美一区二区| 久久网这里都是精品| 精品少妇一区二区三区在线播放 | 欧美精品一区二区三区一线天视频 | 欧美变态tickling挠脚心| 欧美美女直播网站| 在线精品视频免费观看| 91视频精品在这里| 99re这里只有精品6| 91麻豆精品视频| 色婷婷综合久久久中文一区二区| 99久久国产综合精品女不卡| 波多野结衣在线一区| 9l国产精品久久久久麻豆| 成年人国产精品| 一本一道久久a久久精品| 欧洲在线/亚洲| 3d成人动漫网站| 精品乱人伦小说| 久久只精品国产| 国产精品福利影院| 亚洲精品久久嫩草网站秘色| 亚洲国产成人av| 六月丁香综合在线视频| 久久国产人妖系列| 国产999精品久久久久久| 99热精品一区二区| 在线观看欧美精品| 日韩午夜在线观看| 国产亚洲精品bt天堂精选| 国产精品视频yy9299一区| 亚洲美女区一区| 青青草97国产精品免费观看 | 亚洲欧洲日韩综合一区二区| 亚洲女爱视频在线| 日本特黄久久久高潮| 国产成a人无v码亚洲福利| 99精品欧美一区二区蜜桃免费| 欧美体内she精高潮| 亚洲精品在线观看网站| 亚洲欧洲99久久| 五月天丁香久久| 成人久久18免费网站麻豆| 欧美另类高清zo欧美| 欧美国产成人在线| 视频一区国产视频| 成人精品国产免费网站| 91精品国产欧美一区二区| 久久久久国产精品麻豆ai换脸| 亚洲乱码国产乱码精品精的特点 | 国产精品一区免费在线观看| 91国内精品野花午夜精品| 欧美一区二区日韩一区二区| 中文字幕一区二区三区不卡在线| 麻豆视频一区二区| 色香蕉久久蜜桃|