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

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

?? rx_i2s_wbd.vhd

?? I2S verilog HDL code including test environment
?? VHD
字號(hào):
----------------------------------------------------------------------
----                                                              ----
---- WISHBONE I2S Interface IP Core                               ----
----                                                              ----
---- This file is part of the I2S Interface project               ----
---- http://www.opencores.org/cores/i2s_interface/                ----
----                                                              ----
---- Description                                                  ----
---- I2S receiver Wishbone bus cycle decoder.                     ----
----                                                              ----
---- To Do:                                                       ----
---- -                                                            ----
----                                                              ----
---- Author(s):                                                   ----
---- - Geir Drange, gedra@opencores.org                           ----
----                                                              ----
----------------------------------------------------------------------
----                                                              ----
---- Copyright (C) 2004 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 General          ----
---- Public License as published by the Free Software Foundation; ----
---- either version 2.0 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 General Public License for more details.----
----                                                              ----
---- You should have received a copy of the GNU General           ----
---- Public License along with this source; if not, download it   ----
---- from http://www.gnu.org/licenses/gpl.txt                     ----
----                                                              ----
----------------------------------------------------------------------
--
-- CVS Revision History
--
-- $Log: rx_i2s_wbd.vhd,v $
-- Revision 1.3  2005/01/17 17:26:47  gedra
-- Bugfix of register read/write strobes
--
-- Revision 1.2  2004/08/06 18:55:43  gedra
-- De-linting.
--
-- Revision 1.1  2004/08/03 18:50:29  gedra
-- Receiver Wishbone cycle decoder.
--
--
--

library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity rx_i2s_wbd is	 
  generic (DATA_WIDTH: integer;
           ADDR_WIDTH: integer);
  port (
    wb_clk_i: in std_logic;             -- wishbone clock
    wb_rst_i: in std_logic;             -- reset signal
    wb_sel_i: in std_logic;             -- select input
    wb_stb_i: in std_logic;             -- strobe input
    wb_we_i: in std_logic;              -- write enable
    wb_cyc_i: in std_logic;             -- cycle input
    wb_bte_i: in std_logic_vector(1 downto 0);  -- burts type extension
    wb_cti_i: in std_logic_vector(2 downto 0);  -- cycle type identifier
    wb_adr_i: in std_logic_vector(ADDR_WIDTH - 1 downto 0);  -- address
    data_out: in std_logic_vector(DATA_WIDTH - 1 downto 0); -- internal bus
    wb_ack_o: out std_logic;            -- acknowledge
    wb_dat_o: out std_logic_vector(DATA_WIDTH - 1 downto 0);  -- data out
    version_rd: out std_logic;          -- Version register read 
    config_rd: out std_logic;           -- Config register read
    config_wr: out std_logic;           -- Config register write
    intmask_rd: out std_logic;          -- Interrupt mask register read
    intmask_wr: out std_logic;          -- Interrupt mask register write
    intstat_rd: out std_logic;          -- Interrupt status register read
    intstat_wr: out std_logic;          -- Interrupt status register read
    mem_rd: out std_logic;              -- Sample memory read
    mem_addr: out std_logic_vector(ADDR_WIDTH - 2 downto 0));  -- memory addr.
end rx_i2s_wbd;

architecture rtl of rx_i2s_wbd is
 
  constant REG_RXVERSION : std_logic_vector(3 downto 0) := "0000";
  constant REG_RXCONFIG  : std_logic_vector(3 downto 0) := "0001";
  constant REG_RXINTMASK : std_logic_vector(3 downto 0) := "0010";
  constant REG_RXINTSTAT : std_logic_vector(3 downto 0) := "0011";
  signal iack, iwr, ird : std_logic;
  signal acnt: integer range 0 to 2**(ADDR_WIDTH - 1) - 1;
  signal all_ones : std_logic_vector(ADDR_WIDTH - 1 downto 0);
  signal rdout : std_logic_vector(DATA_WIDTH - 1 downto 0);
  
begin 

  wb_ack_o <= iack;

-- acknowledge generation
  ACK: process (wb_clk_i, wb_rst_i)
  begin
    if wb_rst_i = '1' then
      iack <= '0';           
    elsif rising_edge(wb_clk_i) then
      if wb_cyc_i = '1' and wb_sel_i = '1' and wb_stb_i = '1' then
        case wb_cti_i is
          when "010" => -- incrementing burst
            case wb_bte_i is -- burst extension
              when "00" => -- linear burst
                iack <= '1';
              when others => -- all other treated assert classic cycle
                iack <= not iack;
            end case;    
          when "111" => -- end of burst
            iack <= not iack;
          when others => -- all other treated assert classic cycle 
            iack <= not iack;
        end case;              
      else
        iack <= '0';
      end if;    
    end if;
  end process ACK;

-- write generation      
  WR: process (wb_clk_i, wb_rst_i)
  begin
    if wb_rst_i = '1' then
      iwr <= '0';     
    elsif rising_edge(wb_clk_i) then
      if wb_cyc_i = '1' and wb_sel_i = '1' and wb_stb_i = '1' and
        wb_we_i = '1' then
        case wb_cti_i is
          when "010" => -- incrementing burst
            case wb_bte_i is -- burst extension
              when "00" => -- linear burst
                iwr <= '1';
              when others => -- all other treated assert classic cycle
                iwr <= not iwr;
            end case;    
          when "111" => -- end of burst
            iwr <= not iwr;
          when others => -- all other treated assert classic cycle   
            iwr <= not iwr;
        end case;
      else
        iwr <= '0';
      end if;        
    end if;   
  end process WR;      

-- read generation
  ird <= '1' when wb_cyc_i = '1' and wb_sel_i = '1' and wb_stb_i = '1' and
         wb_we_i = '0' else '0';

  wb_dat_o <= data_out when wb_adr_i(ADDR_WIDTH - 1) = '1' else rdout;

  DREG: process (wb_clk_i)              -- clock data from registers
  begin 
    if rising_edge(wb_clk_i) then
      rdout <= data_out;
    end if;
  end process DREG;
  
-- sample memory read address. This needs special attention due to read latency
  mem_addr <= std_logic_vector(to_unsigned(acnt, ADDR_WIDTH - 1)) when
              wb_cti_i = "010" and wb_we_i = '0' and iack = '1' and
              wb_bte_i = "00" else wb_adr_i(ADDR_WIDTH - 2 downto 0);
  
  all_ones(ADDR_WIDTH - 1 downto 0) <= (others => '1');
  
  SMA: process (wb_clk_i, wb_rst_i)
  begin               
    if wb_rst_i = '1' then
      acnt <= 0;
    elsif rising_edge(wb_clk_i) then
      if wb_cti_i = "010" and wb_we_i = '0' and wb_bte_i = "00" then      
        if iack = '0' then
          if wb_adr_i = all_ones then
            acnt <= 0;
          else
            acnt <= to_integer(unsigned(wb_adr_i)) + 1;
          end if;
        else
          if acnt < 2**(ADDR_WIDTH - 1) - 1 then
            acnt <= acnt + 1;
          else
            acnt <= 0;
          end if;
        end if;
      end if;
    end if;
  end process SMA;
  
-- read and write strobe generation
  
  version_rd <= '1' when wb_adr_i(3 downto 0) = REG_RXVERSION and ird = '1'
                and wb_adr_i(ADDR_WIDTH - 1) = '0' else '0';
  config_rd <= '1' when wb_adr_i(3 downto 0) = REG_RXCONFIG and ird = '1'
               and wb_adr_i(ADDR_WIDTH - 1) = '0' else '0';
  config_wr <= '1' when wb_adr_i(3 downto 0) = REG_RXCONFIG and iwr = '1'
               and wb_adr_i(ADDR_WIDTH - 1) = '0' else '0';
  intmask_rd <= '1' when wb_adr_i(3 downto 0) = REG_RXINTMASK and ird = '1'
                and wb_adr_i(ADDR_WIDTH - 1) = '0' else '0';
  intmask_wr <= '1' when wb_adr_i(3 downto 0) = REG_RXINTMASK and iwr = '1'
                and wb_adr_i(ADDR_WIDTH - 1) = '0' else '0';
  intstat_rd <= '1' when wb_adr_i(3 downto 0) = REG_RXINTSTAT and ird = '1'
                and wb_adr_i(ADDR_WIDTH - 1) = '0' else '0';
  intstat_wr <= '1' when wb_adr_i(3 downto 0) = REG_RXINTSTAT and iwr = '1'
                and wb_adr_i(ADDR_WIDTH - 1) = '0' else '0';
  mem_rd <= '1' when wb_adr_i(ADDR_WIDTH - 1) = '1' and ird = '1' else '0';
  
end rtl;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区二区电影| 精品999在线播放| 久久精品国产第一区二区三区| 中文字幕日韩精品一区| 国产午夜精品福利| 亚洲综合色网站| 亚洲高清免费在线| 精品亚洲成av人在线观看| 天使萌一区二区三区免费观看| 国产欧美精品区一区二区三区| 亚洲精品欧美二区三区中文字幕| 欧美精品自拍偷拍| 国产综合色视频| 久久精品视频一区二区三区| 欧美无人高清视频在线观看| 性欧美疯狂xxxxbbbb| 在线91免费看| 久久久久久久性| 日韩高清不卡一区| 久久先锋影音av鲁色资源网| 久久精工是国产品牌吗| 中文字幕一区免费在线观看| 这里是久久伊人| 欧美日韩一区二区三区不卡| 欧美日韩一级大片网址| 国内成人精品2018免费看| 欧美日韩一区成人| 日韩一区精品字幕| 精品日韩成人av| 亚洲午夜电影在线观看| 欧美最猛性xxxxx直播| 亚洲视频在线一区二区| 国产精品一级黄| 国产精品久久午夜夜伦鲁鲁| 亚洲免费资源在线播放| 爽爽淫人综合网网站| 国产伦精一区二区三区| 91亚洲永久精品| 欧美成人精精品一区二区频| 成人免费在线观看入口| 蜜臀av性久久久久蜜臀aⅴ流畅| 国产99精品在线观看| 欧美日韩国产欧美日美国产精品| 久久午夜羞羞影院免费观看| 亚洲欧美日韩国产中文在线| 奇米影视在线99精品| 国产高清一区日本| 7777精品久久久大香线蕉| 综合婷婷亚洲小说| 国产乱码精品一区二区三区五月婷| 欧美色区777第一页| 国产日韩欧美高清在线| 美女尤物国产一区| 欧美日韩在线直播| 亚洲激情网站免费观看| 成人永久免费视频| 久久精品人人做人人爽97| 日韩激情av在线| 欧美亚洲丝袜传媒另类| 亚洲欧美韩国综合色| 成人小视频在线| 亚洲综合av网| 色综合久久综合中文综合网| 中文文精品字幕一区二区| 奇米精品一区二区三区在线观看一 | 一区二区高清免费观看影视大全| 久久国产精品99久久人人澡| 宅男在线国产精品| 日韩黄色免费电影| 日韩一区二区三区精品视频| 蜜臀久久99精品久久久久宅男| 欧美日韩一区二区在线观看视频| 亚洲男人的天堂一区二区| 一区二区三区精品| 久久国产婷婷国产香蕉| 欧美电影免费观看完整版| 亚洲一区在线视频观看| 91尤物视频在线观看| 国产片一区二区| 日本aⅴ免费视频一区二区三区| 91精品国产综合久久香蕉的特点| 亚洲一区二区免费视频| 色综合欧美在线| 亚洲天堂成人在线观看| 成人高清在线视频| 国产精品无圣光一区二区| 日本欧洲一区二区| 亚洲精品一区二区三区在线观看 | 97国产一区二区| 中文字幕成人网| 大胆亚洲人体视频| 久久久久久久久一| 国产精品一二二区| 精品国产露脸精彩对白| 成人综合在线网站| 国产精品丝袜一区| 99国产精品视频免费观看| 亚洲欧美自拍偷拍色图| 99re热这里只有精品免费视频| 国产精品国产三级国产普通话99| 免费观看成人av| 日韩一区二区三区视频| 免费成人在线视频观看| 欧美mv日韩mv亚洲| 福利一区福利二区| 亚洲最色的网站| 99久久婷婷国产综合精品| 亚洲美腿欧美偷拍| 欧美一二三区精品| 国产一区二区免费在线| 亚洲国产视频一区| 3d动漫精品啪啪一区二区竹菊 | 国产一区二区三区黄视频| 亚洲精品一区在线观看| 色综合久久久久久久| 午夜久久久久久久久| 精品欧美一区二区在线观看| 国产成人av电影在线| 亚洲免费视频成人| 国产欧美日产一区| 51精品国自产在线| av不卡免费电影| 日韩av在线发布| 国产清纯白嫩初高生在线观看91| 成人av网址在线观看| 图片区日韩欧美亚洲| 欧美电影免费观看高清完整版在| 麻豆精品一区二区三区| 中文字幕人成不卡一区| 91精品国产91久久久久久一区二区 | 国产精品91xxx| 亚洲高清免费在线| 中文字幕精品三区| 一本大道久久a久久精二百| 国产成人亚洲综合色影视| 亚洲午夜激情av| 中文字幕av免费专区久久| 正在播放亚洲一区| 日本二三区不卡| 日本免费在线视频不卡一不卡二| 亚洲精品日韩综合观看成人91| 精品欧美一区二区久久| 色偷偷88欧美精品久久久| 久久国产精品色| 天堂资源在线中文精品| 国产精品午夜在线观看| 日韩一区二区三区视频在线 | 中文字幕中文字幕中文字幕亚洲无线 | 亚洲va韩国va欧美va| 国产日韩欧美在线一区| 日韩欧美一区在线| 欧美在线高清视频| 91在线视频免费观看| av在线不卡免费看| 国产不卡一区视频| 精品综合久久久久久8888| 天天综合天天综合色| 一区二区三区欧美亚洲| 中文字幕一区三区| 亚洲视频一二三区| 亚洲男帅同性gay1069| 中文字幕国产一区| 国产欧美日韩视频在线观看| 精品福利二区三区| 精品成人在线观看| 中文字幕亚洲在| 1024精品合集| 亚洲欧美日韩在线| 亚洲人成网站色在线观看| 国产精品久线在线观看| 亚洲女女做受ⅹxx高潮| 亚洲视频综合在线| 亚洲一区免费观看| 亚洲成人激情av| 五月天精品一区二区三区| 国产一区二区网址| 成人永久看片免费视频天堂| 国产激情一区二区三区四区| 国产一区欧美日韩| 欧美三级三级三级| 91高清视频免费看| 日韩女优毛片在线| 久久久久久久久久久黄色 | 国产一区二区美女| 国产成人综合在线播放| 成人一级片网址| 91久久国产最好的精华液| 欧美婷婷六月丁香综合色| 欧美一区二区视频免费观看| 精品毛片乱码1区2区3区| 欧美大片一区二区| 欧美成人a∨高清免费观看| 亚洲丝袜制服诱惑| 婷婷综合久久一区二区三区| 奇米影视在线99精品| 国产精品亚洲成人| 欧美在线你懂的| 国产精品网站在线| 成人欧美一区二区三区白人| 天堂一区二区在线免费观看|