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

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

?? filterbank.vhd

?? 這是一個用VHDL語言編寫的mp3編解碼實現。
?? VHD
字號:
---------------------------------------------------------------------------------
-- File Name: filterbank.vhd
-- Function Description:
--	This is the main module of component filterbank. Three packages are 
--	used in this module: all_types.vhd, mul.vhd and filterbank_package.vhd
---------------------------------------------------------------------------------
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_signed.all;
use IEEE.std_logic_arith.all;
use work.all_types.all;			-- this file contains all the type declarations
use work.mul.all;			-- contains divider and fixpoint multiplier
use work.filterbank_package.all;	-- constants, types and functions for this module

entity filterbank is
  port( clk   : in  std_logic;		-- clock input signal
        rst   : in  std_logic;		-- reset signal (active high)
        start : in  std_logic;		-- start=1 activated
        done  : out std_logic;		-- done=1 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;	-- singals to control memory
        frm   : in  frame_type		-- header and side information
      );
end;

architecture behavioral of filterbank is

  type state_type is ( IDLE, IDLE2, STARTSTATE, SEND_READ_ADDR, DO_NOTHING, READDATA, FILTERBANK, SEND_WRITE_ADDR, WRITEDATA, READY );
  signal cs, ns : state_type;
  
begin

  process( cs, frm, start)
    type V_type is array(0 to 1023) of integer;
    variable V : V_type;
    variable Voffset, sum, v_offset, index, V_index, counter_ss, counter_sb : integer;
    variable sample_value, t_sample_value : std_logic_vector(31 downto 0);
    variable samples, bandPtr_fix : samples_type;
    variable temp_V : pre_gen_return_type;
    
  begin

    case (cs) is
      when IDLE   =>		-- when rst is acivated
         V := (others=>0);
         Voffset := 64;
         v_offset := 0;

	 ns <= IDLE2;
	 
      when IDLE2 =>		-- enter once every channel
       
         index := 0;
         V_index:=0;
         sum := 0;
         sample_value:=(others=>'0');
         t_sample_value:=(others=>'0');
         for i in 0 to 31 loop
            samples(i):=(others=>'0');
            bandPtr_fix(i):=(others=>'0');
            temp_V(i):=0;
         end loop;
         counter_sb := 0;
         counter_ss := 0;
         done <= '0';
         
         ns <= STARTSTATE;
         
      when STARTSTATE =>         
         if (start = '1') then
            ns <= SEND_READ_ADDR;
         else 
            ns <= IDLE2;
         end if;
         
      when SEND_READ_ADDR =>		-- read memory
         memc.addr <= conv_std_logic_vector(counter_ss*32+counter_sb, 10);	
         memc.en <= '1';		-- active high
         memc.oe <= '1';		-- active high
         memc.we <= '0';		-- active high
	       
         ns <= DO_NOTHING;
         
      when DO_NOTHING =>		-- wait 1 cycle until data is available
         ns <= READDATA;
            
      when READDATA =>
         bandPtr_fix(counter_sb) := din;
 
         counter_sb := counter_sb+1; 
         if counter_sb=32 then
            counter_sb := 0;
            ns <= FILTERBANK;
         else
            ns <= SEND_READ_ADDR;
         end if;
         
      when FILTERBANK   => 
         v_offset := VOffset - 64 ;
         if v_offset<0 then
             v_offset:=v_offset+1024;
         end if;
         
         VOffset := v_offset;
         
         temp_V := subsyn_pre_gen(bandPtr_fix, v_offset ); -- matrixing calculation

         V(v_offset+17) := temp_V(0);
         V(v_offset+33) := temp_V(1);
         V(v_offset+25) := temp_V(2);
         V(v_offset+41) := temp_V(3);
         V(v_offset+21) := temp_V(4);
         V(v_offset+37) := temp_V(5);
         V(v_offset+29) := temp_V(6);
         V(v_offset+45) := temp_V(7);
         V(v_offset+19) := temp_V(8);
         V(v_offset+35) := temp_V(9);
         V(v_offset+27) := temp_V(10);
         V(v_offset+43) := temp_V(11);
         V(v_offset+23) := temp_V(12);
         V(v_offset+39) := temp_V(13);
         V(v_offset+31) := temp_V(14);
         V(v_offset+47) := temp_V(15);
         V(v_offset+18) := temp_V(16);
         V(v_offset+34) := temp_V(17);
         V(v_offset+26) := temp_V(18);
         V(v_offset+42) := temp_V(19);
         V(v_offset+22) := temp_V(20);
         V(v_offset+38) := temp_V(21);
         V(v_offset+30) := temp_V(22);
         V(v_offset+46) := temp_V(23);
         V(v_offset+20) := temp_V(24);
         V(v_offset+36) := temp_V(25);
         V(v_offset+28) := temp_V(26);
         V(v_offset+44) := temp_V(27);
         V(v_offset+24) := temp_V(28);
         V(v_offset+40) := temp_V(29);
         V(v_offset+32) := temp_V(30);
         V(v_offset+48) := temp_V(31);

    
         V(v_offset+16):=0;

         for i in 0 to 15 loop
             V(v_offset+i) := 0 - V(v_offset+32-i);
             V(v_offset+i+48) := V(v_offset+48-i);
         end loop;     
     
         for j in 0 to 31 loop
             sum := 0;
             index := j;
	     
	     -- subsyn_post_gen.c
	     for i in 0 to 15 loop
	        V_index := index + divide((i+1),2)*64 + v_offset;
	        if V_index > 1023 then
	           V_index := V_index-1024;
	        end if;
	        sum := sum + fix_mul(D(index), V(V_index));
	        index:=index+32;
	     end loop;


             t_sample_value := conv_std_logic_vector( (sum + 16384), 32 );
             if( t_sample_value(31)='0' ) then
	        sample_value := "000000000000000" & t_sample_value(31 downto 15);
	     else
	        sample_value := "111111111111111" & t_sample_value(31 downto 15);	       
	     end if;   
	     
             if (sample_value > MAX_OUTPUT_LIMIT) then
                 sample_value := conv_std_logic_vector(MAX_OUTPUT_LIMIT, 32);
	     end if;
	     
             if (sample_value < (0-MAX_OUTPUT_LIMIT)) then
                 sample_value := conv_std_logic_vector((0-MAX_OUTPUT_LIMIT), 32);
             end if;

             samples(j) := sample_value;

         end loop;
       
          ns <= SEND_WRITE_ADDR;	
          	
      when SEND_WRITE_ADDR =>		-- write back  to main memory
         dout <= samples(counter_sb);
         memc.addr <= conv_std_logic_vector(counter_ss*32+counter_sb, 10);
         memc.we <= '1';		-- active high	
         memc.en <= '1';		-- active high	
         memc.oe <= '0';		-- active high
      
         ns <= WRITEDATA;
      
      
      when WRITEDATA =>
         counter_sb := counter_sb+1;
         if counter_sb=32 then
            counter_sb:=0;
            counter_ss:=counter_ss+1;
            if counter_ss=18 then
                ns <= READY;
            else
                ns <= SEND_READ_ADDR;
            end if;    
         else
            ns <= SEND_WRITE_ADDR;
         end if;
      
          
      when READY  => 
         done <= '1';		
         ns <= IDLE2;
         
      when others => 
      
    end case;
    
  end process;
  
  -- sequentional update -------------------------------------------------------------------------

  process(clk, rst)
  begin
    if rst='1' then
       cs <= IDLE;
    elsif rising_edge(clk) then
      cs <= ns;
    end if;
  end process;

end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
天堂久久一区二区三区| 亚洲欧美日韩小说| 在线观看www91| av成人免费在线| 成人在线综合网站| 国产成人免费在线观看| 国产乱色国产精品免费视频| 久久精工是国产品牌吗| 日本va欧美va欧美va精品| 日韩中文字幕一区二区三区| 午夜精品久久久久久久99水蜜桃| 一区二区三区在线视频播放| 亚洲精品中文在线影院| 夜夜爽夜夜爽精品视频| 亚洲成人动漫在线免费观看| 午夜精品一区二区三区免费视频 | 首页亚洲欧美制服丝腿| 亚洲动漫第一页| 国内精品自线一区二区三区视频| 美女任你摸久久| 国产精品自拍毛片| 不卡一区二区在线| 91久久一区二区| 日韩一区二区三区电影 | 狠狠久久亚洲欧美| 国产成人一区二区精品非洲| 不卡一区中文字幕| 欧美无砖砖区免费| 亚洲精品在线一区二区| 中文字幕av一区 二区| 一区二区三区在线视频播放| 日本aⅴ亚洲精品中文乱码| 国产呦精品一区二区三区网站| 成人精品免费网站| 欧美二区三区的天堂| 亚洲精品在线观| 一区二区三区资源| 激情小说欧美图片| 色综合久久中文综合久久97| 日韩小视频在线观看专区| 国产精品毛片久久久久久| 亚洲午夜久久久久久久久电影院| 极品少妇xxxx精品少妇| 色噜噜夜夜夜综合网| 精品国产欧美一区二区| 一区二区激情视频| 国产在线一区观看| 在线一区二区观看| 亚洲国产精品精华液2区45| 亚洲电影在线播放| www.99精品| 欧美va在线播放| 亚洲一区视频在线| av一区二区三区| 日韩精品综合一本久道在线视频| 亚洲男人的天堂在线aⅴ视频| 极品少妇xxxx精品少妇偷拍| 欧美午夜精品一区二区三区| 国产视频亚洲色图| 久久成人综合网| 欧美美女一区二区在线观看| 国产精品成人午夜| 国产精品2024| 精品免费日韩av| 日本不卡一区二区三区| 欧美专区日韩专区| 亚洲视频资源在线| 成人中文字幕在线| 久久久久高清精品| 国产美女娇喘av呻吟久久| 91精品欧美久久久久久动漫 | 日日夜夜一区二区| 色偷偷成人一区二区三区91| 国产精品久久久久久久久免费桃花| 久久99精品久久久久久动态图| 欧美日韩一区二区三区不卡| 日韩美女精品在线| 91女神在线视频| 亚洲日本在线看| 日韩免费看的电影| 午夜精品福利在线| 欧美日韩另类一区| 亚洲成av人片一区二区| 欧美视频精品在线观看| 亚洲成人av中文| 欧美一三区三区四区免费在线看| 亚洲韩国精品一区| 欧美一区日韩一区| 久久99精品一区二区三区| 精品久久久三级丝袜| 精品亚洲成a人在线观看| 精品第一国产综合精品aⅴ| 久久99久久99| 国产精品九色蝌蚪自拍| 99久久99久久精品免费观看| 亚洲黄色尤物视频| 欧美日韩视频在线第一区| 日韩精品免费视频人成| 日韩免费一区二区| 成人少妇影院yyyy| 一区二区三区四区av| 制服丝袜成人动漫| 国产综合色视频| 中文字幕一区av| 欧美专区日韩专区| 日韩精品午夜视频| 久久久久久久电影| 91日韩一区二区三区| 亚洲国产精品久久人人爱蜜臀| 欧美一级片免费看| 成人h动漫精品| 视频一区欧美精品| 国产日韩欧美综合在线| 欧洲精品一区二区三区在线观看| 视频一区在线播放| 国产精品免费久久久久| 欧美片在线播放| 国产成人精品免费网站| 亚洲国产成人av网| 亚洲国产电影在线观看| 欧美三片在线视频观看 | 亚洲国产精品成人综合| 欧美在线啊v一区| 国产剧情一区在线| 香蕉乱码成人久久天堂爱免费| 国产亚洲人成网站| 欧美一级欧美一级在线播放| 91在线高清观看| 精品一区二区三区在线播放 | 欧美视频在线观看一区| 极品少妇一区二区| 午夜伊人狠狠久久| 中文字幕av资源一区| 精品久久久久99| 欧美视频第二页| 成人福利视频在线| 久久99久久精品| 三级一区在线视频先锋| 亚洲精品国产无天堂网2021| 久久久亚洲国产美女国产盗摄| 欧洲人成人精品| 91香蕉视频污在线| 成人免费视频视频在线观看免费| 美女高潮久久久| 日韩精品成人一区二区在线| 一区二区三区国产| 亚洲日本免费电影| 成人免费在线视频| 国产精品污www在线观看| 日韩欧美国产综合在线一区二区三区| 在线精品视频一区二区三四| av成人老司机| 97se亚洲国产综合自在线观| 国产精品99久久久久久久女警| 精品综合免费视频观看| 青椒成人免费视频| 日韩精品五月天| 青青草原综合久久大伊人精品 | 97精品久久久久中文字幕| 国产超碰在线一区| 国产寡妇亲子伦一区二区| 久久精品国产色蜜蜜麻豆| 蜜臀久久99精品久久久久宅男| 日本亚洲免费观看| 久久国产人妖系列| 国产在线播放一区| 国产精品18久久久久久久久久久久| 国产中文字幕精品| 成人app软件下载大全免费| 成人av网址在线| 欧洲人成人精品| 欧美日韩在线三级| 欧美一区二区二区| 久久亚洲一级片| 亚洲欧洲av在线| 亚洲最色的网站| 日本成人在线网站| 国产98色在线|日韩| 色综合色综合色综合色综合色综合| 91免费在线播放| 欧美高清精品3d| 久久亚洲捆绑美女| 国产精品久久久久婷婷二区次| 国产精品久久久久久久裸模| 亚洲国产综合在线| 久久99热国产| 99久久国产综合色|国产精品| 91国产丝袜在线播放| 日韩精品一区二区三区四区视频| 久久久影视传媒| 一区二区三区产品免费精品久久75| 午夜不卡av在线| 成人性生交大片免费看中文 | 亚洲在线观看免费| 精品中文字幕一区二区小辣椒| 高清在线观看日韩| 欧美蜜桃一区二区三区| 国产女人aaa级久久久级| 天堂va蜜桃一区二区三区| 国产xxx精品视频大全|