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

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

?? i2s_codec.vhd

?? I2S verilog HDL code including test environment
?? VHD
?? 第 1 頁 / 共 2 頁
字號(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 encoder/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: i2s_codec.vhd,v $
-- Revision 1.3  2005/06/03 17:18:08  gedra
-- BugFix: LSB of transmitted word would be set to zero in slave master mode. (Credit: Julien Dumont)
--
-- Revision 1.2  2004/08/06 18:55:05  gedra
-- Removed conf_inten, and fixed bug in transmitter master mode.
--
-- Revision 1.1  2004/08/03 18:49:43  gedra
-- I2S encoder/decoder.
--
--
--

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

entity i2s_codec is	 
  generic (DATA_WIDTH: integer;
           ADDR_WIDTH: integer;
           IS_MASTER: integer range 0 to 1;
           IS_RECEIVER: integer range 0 to 1);
  port (
    wb_clk_i: in std_logic;             -- wishbone clock
    conf_res: in std_logic_vector(5 downto 0);  -- sample resolution
    conf_ratio: in std_logic_vector(7 downto 0); -- clock divider ratio
    conf_swap: in std_logic;            -- left/right sample order
    conf_en: in std_logic;              -- transmitter/recevier enable
    i2s_sd_i: in std_logic;             -- I2S serial data input
    i2s_sck_i: in std_logic;            -- I2S clock input
    i2s_ws_i: in std_logic;             -- I2S word select input
    sample_dat_i: in std_logic_vector(DATA_WIDTH - 1 downto 0);  -- audio data
    sample_dat_o: out std_logic_vector(DATA_WIDTH - 1 downto 0);  -- audio data
    mem_rdwr: out std_logic;            -- sample buffer read/write
    sample_addr: out std_logic_vector(ADDR_WIDTH - 2 downto 0);  -- address
    evt_hsbf: out std_logic;            -- higher sample buf empty event
    evt_lsbf: out std_logic;            -- lower sample buf empty event
    i2s_sd_o: out std_logic;            -- I2S serial data output
    i2s_sck_o: out std_logic;           -- I2S clock output
    i2s_ws_o: out std_logic);           -- I2S word select output
end i2s_codec;

architecture rtl of i2s_codec is
 
  signal i2s_clk_en, zsck, zzsck, zzzsck, imem_rd : std_logic;
  signal clk_cnt : integer range 0 to 255;
  signal adr_cnt : integer range 0 to 2**(ADDR_WIDTH - 1) - 1;
  type srx_states is (IDLE, WAIT_CLK, TRX_DATA, RX_WRITE, SYNC);
  signal sd_ctrl : srx_states;
  signal bit_cnt, bits_to_trx : integer range 0 to 63;
  signal toggle, master, neg_edge, ws_pos_edge, ws_neg_edge : std_logic;
  signal data_in : std_logic_vector(DATA_WIDTH - 1 downto 0);
  signal zws, zzws, zzzws, i2s_ws, new_word, last_bit: std_logic;
  signal imem_rdwr, receiver : std_logic;
  signal ws_cnt : integer range 0 to 31;
  
begin 

-- Create signals that reflect generics
  SGM: if IS_MASTER = 1 generate
    master <= '1';
  end generate SGM;
  SGS: if IS_MASTER = 0 generate
    master <= '0';
  end generate SGS;
  SGRX: if IS_RECEIVER = 1 generate
    receiver <= '1';
  end generate SGRX;
  SGTX: if IS_RECEIVER = 0 generate
    receiver <= '0';
  end generate SGTX;
  
-- I2S clock enable generation, master mode. The clock is a fraction of the
-- Wishbone bus clock, determined by the conf_ratio value.
  CGM: if IS_MASTER = 1 generate
    CGEN: process (wb_clk_i)
    begin 
      if rising_edge(wb_clk_i) then  
        if conf_en = '0' then           -- disabled
          i2s_clk_en <= '0';
          clk_cnt <= 0;
          neg_edge <= '0';
          toggle <= '0';
        else                              -- enabled
          if clk_cnt < to_integer(unsigned(conf_ratio)) + 1 then  
            clk_cnt <= (clk_cnt + 1) mod 256;
            i2s_clk_en <= '0';
          else
            clk_cnt <= 0;
            i2s_clk_en <= '1';
            neg_edge <= not neg_edge;
          end if;
          toggle <= neg_edge;
        end if;
      end if;
    end process CGEN;
  end generate CGM;

-- I2S clock enable generation, slave mode. The input clock signal is sampeled
-- and the negative edge is located.
  CGS: if IS_MASTER = 0 generate
    CGEN: process (wb_clk_i)
    begin 
      if rising_edge(wb_clk_i) then  
        if conf_en = '0' then           -- disabled
          i2s_clk_en <= '0';
          zsck <= '0';
          zzsck <= '0';
          zzzsck <= '0';
          toggle <= '0';
          neg_edge <= '0';
        else                            -- enabled
          -- synchronize input clock to Wishbone clock domaine
          zsck <= i2s_sck_i;
          zzsck <= zsck;
          zzzsck <= zzsck;
          -- look for edges
          if zzzsck = '1' and zzsck = '0' then
            i2s_clk_en <= '1';
            neg_edge <= '1';
          elsif zzzsck = '0' and zzsck = '1' then
            i2s_clk_en <= '1';
            neg_edge <= '0';
          else
            i2s_clk_en <= '0';
          end if;
          toggle <= neg_edge;
        end if;
      end if;
    end process CGEN;
  end generate CGS;

-- Process to generate word select signal, master mode
  WSM: if IS_MASTER = 1 generate
    i2s_ws_o <= i2s_ws;
    WSG: process (wb_clk_i)
    begin 
      if rising_edge(wb_clk_i) then
        if conf_en = '0' then
          i2s_ws <= '0';
          ws_cnt <= 0;
          ws_pos_edge <= '0';
          ws_neg_edge <= '0';
        else
          if i2s_clk_en = '1' and toggle = '1' then
            if ws_cnt < bits_to_trx then
              ws_cnt <= ws_cnt + 1;
            else
              i2s_ws <= not i2s_ws;
              ws_cnt <= 0;
              if i2s_ws = '1' then
                ws_neg_edge <= '1';
              else
                ws_pos_edge <= '1';
              end if;
            end if;
          else
            ws_pos_edge <= '0';
            ws_neg_edge <= '0';
          end if;
        end if;
      end if;
    end process WSG;
  end generate WSM;

-- Process to detect word select edges, slave mode
  WSD: if IS_MASTER = 0 generate
    i2s_ws <= i2s_ws_i;
    WSDET: process (wb_clk_i)
    begin 
      if rising_edge(wb_clk_i) then
        if conf_en = '0' then
          ws_pos_edge <= '0';
          ws_neg_edge <= '0';
          zws <= i2s_ws;
          zzws <= i2s_ws;
          zzzws <= i2s_ws;
        else
          -- sync i2s_ws_io to our clock domaine
          zws <= i2s_ws;
          zzws <= zws;
          zzzws <= zzws;
          -- detect negative edge
          if zzzws = '1' and zzws = '0' then
            ws_neg_edge <= '1';

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产91在线看| 欧美人xxxx| 3d动漫精品啪啪一区二区竹菊| 精品国产制服丝袜高跟| 1区2区3区国产精品| 蜜臀av性久久久久蜜臀aⅴ四虎| 处破女av一区二区| 久久人人97超碰com| 琪琪久久久久日韩精品| 91丨九色丨蝌蚪富婆spa| 精品剧情v国产在线观看在线| 一区二区三区蜜桃| 成人国产在线观看| 久久久久久**毛片大全| 美腿丝袜亚洲一区| 欧美午夜精品一区| 亚洲免费高清视频在线| 大胆欧美人体老妇| 欧美国产综合色视频| 久久精品国产久精国产| 欧美顶级少妇做爰| 午夜精品久久久久久久蜜桃app| 一本色道亚洲精品aⅴ| 国产精品美女一区二区| 国产精品一区二区免费不卡 | 91丨九色丨蝌蚪丨老版| 久久综合精品国产一区二区三区 | 欧美日韩极品在线观看一区| 亚洲图片你懂的| 成人黄色片在线观看| 国产欧美精品国产国产专区 | 欧美va天堂va视频va在线| 偷拍一区二区三区四区| 在线视频亚洲一区| 亚洲一区二区四区蜜桃| 日本韩国视频一区二区| 一区二区三区欧美日| 99久久久国产精品免费蜜臀| 亚洲欧洲在线观看av| 波多野结衣的一区二区三区| 国产精品久久久久久久久果冻传媒| 精品一区二区三区在线播放视频| 精品国产精品网麻豆系列| 精品在线观看免费| 国产日韩欧美麻豆| gogo大胆日本视频一区| 亚洲资源在线观看| 日韩一级大片在线| 国产伦精品一区二区三区在线观看| 欧美成人a在线| 国产成人丝袜美腿| 亚洲精品一二三四区| 欧美日韩黄色影视| 免费观看日韩av| 国产亚洲欧美日韩俺去了| 99国产精品久久久久久久久久 | 欧美国产欧美亚州国产日韩mv天天看完整| 国产精品一卡二卡| 亚洲激情校园春色| 宅男在线国产精品| 粉嫩13p一区二区三区| 亚洲色图欧洲色图婷婷| 91精品婷婷国产综合久久竹菊| 久久精品国产一区二区三区免费看| 26uuu精品一区二区三区四区在线| 国产成a人亚洲精品| 一区二区高清免费观看影视大全| 日韩精品资源二区在线| 国产高清成人在线| 五月天中文字幕一区二区| 26uuuu精品一区二区| 色综合久久久久久久久| 狠狠色综合色综合网络| 亚洲欧美偷拍三级| 日韩午夜电影av| 99久精品国产| 蜜臀av一级做a爰片久久| 亚洲免费在线看| wwwwww.欧美系列| 日本道精品一区二区三区| 久久精品国内一区二区三区| 亚洲视频在线一区| 国产欧美综合在线观看第十页| 欧美三级在线播放| 99视频精品全部免费在线| 蜜桃一区二区三区在线观看| 亚洲视频 欧洲视频| 久久伊99综合婷婷久久伊| 欧美福利视频一区| 99re成人精品视频| 国产精品99久| 久久99国内精品| 亚洲一区二区精品久久av| 国产精品久久久久久久蜜臀 | 国产精品亲子伦对白| 欧美一区二区三区人| 欧美综合亚洲图片综合区| 国产91精品一区二区麻豆亚洲| 日本午夜一本久久久综合| 九色|91porny| 亚洲不卡一区二区三区| 亚洲天堂免费看| 国产精品你懂的在线欣赏| 精品国产乱码久久久久久浪潮 | 午夜国产精品一区| 伊人婷婷欧美激情| 亚洲欧洲av色图| 国产精品麻豆网站| 中文字幕二三区不卡| 国产午夜亚洲精品理论片色戒| 日韩亚洲欧美在线观看| 91麻豆精品久久久久蜜臀| 欧美日韩另类国产亚洲欧美一级| 精品视频在线免费看| 欧美影视一区在线| 欧美性淫爽ww久久久久无| 91国偷自产一区二区开放时间 | 一区精品在线播放| 香蕉久久一区二区不卡无毒影院| 欧美日韩高清一区| 国产欧美精品国产国产专区| 不卡视频一二三| 成人污污视频在线观看| 成人做爰69片免费看网站| 成人国产电影网| av在线综合网| 欧美性大战久久| 91精品国产综合久久久蜜臀图片| 91精品国产欧美一区二区| 日韩视频在线一区二区| 精品成人佐山爱一区二区| 国产欧美日韩在线| 中文字幕在线不卡一区| 一区二区三区四区不卡在线| 亚洲一区二区欧美| 日本乱码高清不卡字幕| 欧美日韩国产综合视频在线观看| 宅男噜噜噜66一区二区66| 久久久综合激的五月天| 久久精品在线免费观看| 中文字幕日韩欧美一区二区三区| 一区二区在线观看视频| 首页亚洲欧美制服丝腿| 国产麻豆视频精品| 91久久一区二区| 精品少妇一区二区三区视频免付费 | 久久99日本精品| 成人97人人超碰人人99| 欧美日韩成人综合天天影院| 精品国产乱码久久久久久牛牛| 中文字幕亚洲一区二区av在线| 亚洲国产婷婷综合在线精品| 久久精品国产免费看久久精品| www.亚洲在线| 欧美大片在线观看一区| 亚洲欧美电影院| 国产在线精品一区二区夜色| 91污在线观看| 2017欧美狠狠色| 午夜不卡av在线| 成人免费不卡视频| 日韩欧美精品在线视频| 一区二区三区精品在线| 国产成人aaaa| 欧美成人aa大片| 艳妇臀荡乳欲伦亚洲一区| 国产一区二区美女| 337p亚洲精品色噜噜噜| 一区二区三区四区五区视频在线观看| 蜜臀久久99精品久久久久宅男| 不卡在线观看av| 久久蜜桃一区二区| 麻豆精品视频在线观看免费| 欧美视频一区二区三区四区| 中日韩av电影| 久久99久久久久久久久久久| 91高清在线观看| 一区免费观看视频| 成人av高清在线| 久久免费偷拍视频| 久久疯狂做爰流白浆xx| 欧美日韩国产一区二区三区地区| 国产精品国产馆在线真实露脸 | av在线不卡免费看| 国产亚洲欧美日韩俺去了| 蜜臀精品久久久久久蜜臀| 欧美艳星brazzers| 亚洲男人的天堂在线aⅴ视频| 成人看片黄a免费看在线| 久久色成人在线| 在线观看视频一区二区| 亚洲欧美偷拍卡通变态| 99re热这里只有精品免费视频| 国产精品麻豆网站| 成人avav影音| 亚洲视频 欧洲视频| 一本色道久久综合亚洲精品按摩| 中文字幕在线一区免费| 不卡一区二区在线| 中文字幕一区二区视频|