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

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

?? i2s_codec.vhd

?? I2S verilog HDL code including test environment
?? VHD
?? 第 1 頁 / 共 2 頁
字號(hào):
          else
            ws_neg_edge <= '0';
          end if;
          -- detect positive edge
          if zzzws = '0' and zzws = '1' then
            ws_pos_edge <= '1';
          else
            ws_pos_edge <= '0';
          end if;
        end if;
      end if;
    end process WSDET;
  end generate WSD;

-- Logic to generate clock signal, master mode
  SCKM: if IS_MASTER = 1 generate
    i2s_sck_o <= toggle;
  end generate SCKM;
  
-- Process to receive data on i2s_sd_i, or transmit data on i2s_sd_o
  sample_addr <= std_logic_vector(to_unsigned(adr_cnt, ADDR_WIDTH - 1));
  mem_rdwr <= imem_rdwr;
  sample_dat_o <= data_in;
  
  SDRX: process (wb_clk_i)
  begin 
    if rising_edge(wb_clk_i) then
      if conf_en = '0' then           -- codec disabled
        imem_rdwr <= '0';
        sd_ctrl <= IDLE;
        data_in <= (others => '0');
        bit_cnt <= 0;
        bits_to_trx <= 0;
        new_word <= '0';
        last_bit <= '0';
        adr_cnt <= 0;
        evt_lsbf <= '0';
        evt_hsbf <= '0';
        i2s_sd_o <= '0';
      else
        case sd_ctrl is
          when IDLE =>
            imem_rdwr <= '0';
            if to_integer(unsigned(conf_res)) > 15 and
              to_integer(unsigned(conf_res)) < 33 then
              bits_to_trx <= to_integer(unsigned(conf_res)) - 1;
            else
              bits_to_trx <= 15;
            end if;
            if conf_en = '1' then
              if (ws_pos_edge = '1' and conf_swap = '1') or
                (ws_neg_edge = '1' and conf_swap = '0') then
                if receiver = '1' then    -- recevier
                  sd_ctrl <= WAIT_CLK;
                else
                  imem_rdwr <= '1';       -- read first data if transmitter
                  sd_ctrl <= TRX_DATA;
                end if;  
              end if;
            end if;
          when WAIT_CLK =>              -- wait for first bit after WS
            adr_cnt <= 0;
            bit_cnt <= 0;
            new_word <= '0';
            last_bit <= '0';
            data_in <= (others => '0');
            if i2s_clk_en = '1' and neg_edge = '0' then
              sd_ctrl <= TRX_DATA;
            end if;
          when TRX_DATA =>              -- transmit/receive serial data 
            imem_rdwr <= '0';
            evt_hsbf <= '0';
            evt_lsbf <= '0';
            if master = '0' then
              if zzzws /= zzws then
                new_word <= '1';
              end if;
            else
              if ws_pos_edge = '1' or ws_neg_edge = '1' then
                new_word <= '1';
              end if;
            end if;
            if new_word = '1' and i2s_clk_en = '1' and neg_edge = '0' then
              last_bit <= '1';
            end if;
            -- recevier operation
            if receiver = '1' then
              if i2s_clk_en = '1' and neg_edge = '1' then
                if master = '1' then    -- master mode
                  if bit_cnt < bits_to_trx and new_word = '0' then
                    bit_cnt <= bit_cnt + 1;
                    data_in(bits_to_trx - bit_cnt) <= i2s_sd_i;
                  else
                    imem_rdwr <= '1';
                    data_in(bits_to_trx - bit_cnt) <= i2s_sd_i;
                    sd_ctrl <= RX_WRITE;
                  end if;
                else                    -- slave mode
                  if bit_cnt <= bits_to_trx and new_word = '0' then
                    bit_cnt <= bit_cnt + 1;
                    data_in(bits_to_trx - bit_cnt) <= i2s_sd_i;
                  else
                    imem_rdwr <= '1';
                    sd_ctrl <= RX_WRITE;
                  end if;
                end if;
              end if;
            end if;
            -- transmitter operation
            if receiver = '0' then
              if master = '1' then      -- master mode
                if i2s_clk_en = '1' and neg_edge = '0' then
                  if bit_cnt < bits_to_trx and new_word = '0' then
                    bit_cnt <= bit_cnt + 1;
                    i2s_sd_o <= sample_dat_i(bits_to_trx - bit_cnt);
                  else
                    bit_cnt <= bit_cnt + 1;
                    if bit_cnt > bits_to_trx then
                      i2s_sd_o <= '0';
                    else
                      i2s_sd_o <= sample_dat_i(0);
                    end if;
                    -- transmitter address counter
                    imem_rdwr <= '1';
                    adr_cnt <= (adr_cnt + 1) mod 2**(ADDR_WIDTH - 1);
                    if adr_cnt = 2**(ADDR_WIDTH - 2) - 1 then
                      evt_lsbf <= '1';
                    else
                      evt_lsbf <= '0';
                    end if;
                    if adr_cnt = 2**(ADDR_WIDTH - 1) - 1 then
                      evt_hsbf <= '1';
                    else
                      evt_hsbf <= '0';
                    end if;
                    sd_ctrl <= SYNC;
                  end if; 
                end if;
              else                     -- slave mode
                if i2s_clk_en = '1' and neg_edge = '1' then
                  if bit_cnt < bits_to_trx and new_word = '0' then
                    bit_cnt <= bit_cnt + 1;
                    i2s_sd_o <= sample_dat_i(bits_to_trx - bit_cnt);
                  else
                    bit_cnt <= bit_cnt + 1;
                    if bit_cnt > bits_to_trx then
                      i2s_sd_o <= '0';
                    else
                      i2s_sd_o <= sample_dat_i(bits_to_trx - bit_cnt);
                    end if;
                    if new_word = '1' then  -- transmitter address counter
                      imem_rdwr <= '1';
                      adr_cnt <= (adr_cnt + 1) mod 2**(ADDR_WIDTH - 1);
                      if adr_cnt = 2**(ADDR_WIDTH - 2) - 1 then
                        evt_lsbf <= '1';
                      else
                        evt_lsbf <= '0';
                      end if;
                      if adr_cnt = 2**(ADDR_WIDTH - 1) - 1 then
                        evt_hsbf <= '1';
                      else
                        evt_hsbf <= '0';
                      end if;
                      sd_ctrl <= SYNC;
                    end if;
                  end if; 
                end if;
              end if;
            end if;
          when RX_WRITE =>             -- write received word to sample buffer
            imem_rdwr <= '0';
            adr_cnt <= (adr_cnt + 1) mod 2**(ADDR_WIDTH - 1);
            if adr_cnt = 2**(ADDR_WIDTH - 2) - 1 then
              evt_lsbf <= '1';
            else
              evt_lsbf <= '0';
            end if;
            if adr_cnt = 2**(ADDR_WIDTH - 1) - 1 then
              evt_hsbf <= '1';
            else
              evt_hsbf <= '0';
            end if;
            sd_ctrl <= SYNC;
          when SYNC =>                  -- synchronise with next word
            imem_rdwr <= '0';
            evt_hsbf <= '0';
            evt_lsbf <= '0';
            bit_cnt <= 0;
            if ws_pos_edge = '1' or ws_neg_edge = '1' then
              new_word <= '1';
            end if;
            if new_word = '1' and i2s_clk_en = '1' and neg_edge = '0' then
              last_bit <= '1';
            end if;
            if receiver = '1' then      -- receive mode
              if master = '1' then
                new_word <= '0';
                last_bit <= '0';
                data_in <= (others => '0');
                sd_ctrl <= TRX_DATA;
              else
                if i2s_clk_en = '1' and neg_edge = '0' and new_word = '1' then
                  new_word <= '0';
                  last_bit <= '0';
                  data_in <= (others => '0');
                  sd_ctrl <= TRX_DATA;
                end if;
              end if;
            else                        -- transmit mode
              if master = '1' then
                new_word <= '0';
                last_bit <= '0';
                data_in <= (others => '0');
                sd_ctrl <= TRX_DATA;
              elsif i2s_clk_en = '1' and neg_edge = '0' then
                new_word <= '0';
                last_bit <= '0';
                data_in <= (others => '0');
                sd_ctrl <= TRX_DATA;
              end if;
            end if;
          when others => null;
        end case;
      end if;
    end if;
  end process SDRX;
 
end rtl;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产三级三级三级精品8ⅰ区| 日韩欧美成人一区二区| 日本网站在线观看一区二区三区 | 蜜臀99久久精品久久久久久软件| 中文字幕欧美激情一区| 5566中文字幕一区二区电影 | 国产一区在线精品| 亚洲在线成人精品| 国产精品区一区二区三区| 日韩一级大片在线观看| 欧美中文字幕亚洲一区二区va在线 | 91麻豆精品国产91久久久久久 | 一区二区三区久久| 国产日韩欧美电影| 精品国产百合女同互慰| 欧美在线影院一区二区| 不卡一区中文字幕| 国产一区二区三区四| 日本不卡在线视频| 亚洲伊人色欲综合网| 综合激情成人伊人| 国产欧美日本一区视频| 精品少妇一区二区三区视频免付费| 欧美三级日本三级少妇99| www.日韩大片| 国产成人三级在线观看| 捆绑调教一区二区三区| 视频一区国产视频| 亚洲韩国精品一区| 亚洲一区在线视频观看| 亚洲精品自拍动漫在线| 亚洲欧洲日韩女同| 亚洲日穴在线视频| 亚洲人成网站色在线观看| 中文在线一区二区| 国产精品视频观看| 国产精品午夜在线观看| 亚洲国产精品黑人久久久| 国产日产亚洲精品系列| 国产免费成人在线视频| 中文字幕国产一区| 国产精品久99| 亚洲男同1069视频| 亚洲精品国产a| 亚洲精品免费电影| 亚洲最新在线观看| 图片区日韩欧美亚洲| 香蕉乱码成人久久天堂爱免费| 亚洲国产精品影院| 日韩激情中文字幕| 久久精品国产精品亚洲精品| 麻豆国产精品一区二区三区| 国产美女一区二区三区| 风间由美中文字幕在线看视频国产欧美| 韩国一区二区视频| 丁香激情综合五月| 成人福利电影精品一区二区在线观看| 99视频精品在线| 在线观看一区不卡| 欧美一区二区在线免费观看| 欧美va天堂va视频va在线| 久久久久久毛片| 亚洲婷婷国产精品电影人久久| 亚洲美女在线国产| 偷拍一区二区三区| 国产美女一区二区三区| 一本大道久久a久久综合婷婷| 欧美三级视频在线观看| 精品第一国产综合精品aⅴ| 中文字幕精品在线不卡| 亚洲一区二区欧美日韩| 蜜臀久久99精品久久久久宅男| 国产盗摄一区二区| 欧美午夜精品久久久久久孕妇| 日韩一本二本av| 欧美极品美女视频| 亚洲国产日韩精品| 国产福利一区二区三区视频| 欧美午夜电影在线播放| 精品黑人一区二区三区久久| 中文字幕一区二区三区不卡| 日韩成人伦理电影在线观看| 国产不卡一区视频| 欧美挠脚心视频网站| 国产亚洲污的网站| 亚洲成人免费在线观看| 国产精品资源在线| 在线视频一区二区三区| 精品电影一区二区| 亚洲不卡av一区二区三区| 国产精品综合av一区二区国产馆| 在线观看日韩av先锋影音电影院| 欧美不卡视频一区| 一区二区三区四区中文字幕| 国产一区999| 67194成人在线观看| 亚洲视频电影在线| 国产一区二区在线观看免费| 欧美三级电影网| 中文字幕欧美激情| 精品亚洲成a人| 欧美日韩国产bt| 亚洲另类色综合网站| 国产丶欧美丶日本不卡视频| 欧美一区二区三区视频在线观看| 亚洲视频免费在线| 成人午夜免费电影| 欧美va亚洲va国产综合| 五月综合激情网| 色综合色狠狠天天综合色| 久久久亚洲国产美女国产盗摄 | 日韩欧美亚洲国产另类| 亚洲亚洲人成综合网络| av在线一区二区| 国产亚洲欧洲一区高清在线观看| 亚洲va中文字幕| 色狠狠av一区二区三区| 中文字幕亚洲一区二区av在线| 国模娜娜一区二区三区| 欧美情侣在线播放| 亚洲成av人片一区二区| 91福利视频久久久久| 国产精品久久久久aaaa| 成人教育av在线| 国产日韩精品一区二区三区| 激情文学综合网| 精品精品国产高清a毛片牛牛| 日韩电影在线一区| 欧美群妇大交群的观看方式| 亚洲一区中文在线| 欧美日韩精品专区| 亚洲超碰97人人做人人爱| 欧美日韩午夜在线| 亚洲第一av色| 欧美久久久久免费| 日本va欧美va欧美va精品| 91精品一区二区三区久久久久久| 日韩精品一级中文字幕精品视频免费观看 | 午夜日韩在线电影| 欧美无砖砖区免费| 日韩精品电影在线| 欧美va亚洲va国产综合| 国产一区二区调教| 久久精品在线免费观看| 成人黄色综合网站| 亚洲天堂精品视频| 91国偷自产一区二区开放时间| 一级特黄大欧美久久久| 欧美精品久久久久久久多人混战 | 国产欧美一区二区三区沐欲| 国产不卡高清在线观看视频| 中日韩免费视频中文字幕| 成人精品高清在线| 亚洲精品免费一二三区| 欧美精品久久天天躁| 久久99国产精品成人| 中文字幕乱码一区二区免费| 91丨九色丨尤物| 亚洲一区在线观看免费 | 国产精品99久久久久久久女警| 国产三级精品三级在线专区| 成人av免费在线观看| 一区二区三区四区蜜桃 | 专区另类欧美日韩| 欧美午夜精品一区| 精品亚洲欧美一区| 综合色天天鬼久久鬼色| 欧美亚洲综合另类| 青青青爽久久午夜综合久久午夜| 欧美不卡在线视频| 97超碰欧美中文字幕| 亚洲成av人片在线| 久久精品一二三| 色88888久久久久久影院按摩| 日韩国产在线一| 26uuu欧美| 成人性色生活片免费看爆迷你毛片| 亚洲精品中文字幕乱码三区| 日韩一级免费观看| av一二三不卡影片| 免费视频最近日韩| 中文字幕一区二区三区在线播放 | 欧美日本一道本在线视频| 精东粉嫩av免费一区二区三区| 国产精品麻豆视频| 欧美日韩国产美| 国产成人亚洲精品青草天美| 亚洲国产精品人人做人人爽| 精品国产3级a| 在线观看亚洲a| 国产成人精品影视| 日韩精品免费专区| 1024成人网| 精品免费国产二区三区| 日本精品一区二区三区高清| 国产一区二区免费看| 亚洲电影你懂得| 亚洲国产成人私人影院tom| 欧美一级搡bbbb搡bbbb| 97久久超碰国产精品电影|