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

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

?? tb_i2s.vhd

?? I2S verilog HDL code including test environment
?? VHD
?? 第 1 頁 / 共 2 頁
字號:
      wb_clk_i => wb_clk_o,
      wb_rst_i => wb_rst_o,
      wb_sel_i => wb_sel_o,
      wb_stb_i => wb_stb_32bit_tx2,
      wb_we_i => wb_we_o,
      wb_cyc_i => wb_cyc_o,
      wb_bte_i => wb_bte_o,
      wb_cti_i => wb_cti_o,
      wb_adr_i => wb_adr_o(5 downto 0),
      wb_dat_i => wb_dat_o(31 downto 0),
      wb_ack_o => tx2_ack,
      wb_dat_o => tx2_dat_i,
      tx_int_o => tx2_int_o,
      i2s_sd_o => i2s_sd2,
      i2s_sck_o => i2s_sck2,
      i2s_ws_o => i2s_ws2);

-- I2S receiver 1, master mode
  IRX32M: rx_i2s_topm 
    generic map (DATA_WIDTH => 32,
                 ADDR_WIDTH => 6)
    port map (
      -- Wishbone interface
      wb_clk_i => wb_clk_o,
      wb_rst_i => wb_rst_o,
      wb_sel_i => wb_sel_o,
      wb_stb_i => wb_stb_32bit_rx1,
      wb_we_i => wb_we_o,
      wb_cyc_i => wb_cyc_o,
      wb_bte_i => wb_bte_o,
      wb_cti_i => wb_cti_o,
      wb_adr_i => wb_adr_o(5 downto 0),
      wb_dat_i => wb_dat_o(31 downto 0),
      i2s_sd_i => i2s_sd1,
      wb_ack_o => rx1_ack,
      wb_dat_o => rx1_dat_i,
      rx_int_o => rx1_int_o,
      i2s_sck_o => i2s_sck1,
      i2s_ws_o => i2s_ws1);

-- I2S receiver 2, slave mode
  IRX32S: rx_i2s_tops 
    generic map (DATA_WIDTH => 32,
                 ADDR_WIDTH => 6)
    port map (
      -- Wishbone interface
      wb_clk_i => wb_clk_o,
      wb_rst_i => wb_rst_o,
      wb_sel_i => wb_sel_o,
      wb_stb_i => wb_stb_32bit_rx2,
      wb_we_i => wb_we_o,
      wb_cyc_i => wb_cyc_o,
      wb_bte_i => wb_bte_o,
      wb_cti_i => wb_cti_o,
      wb_adr_i => wb_adr_o(5 downto 0),
      wb_dat_i => wb_dat_o(31 downto 0),
      i2s_sd_i => i2s_sd2,
      i2s_sck_i => i2s_sck2,
      i2s_ws_i => i2s_ws2,
      wb_ack_o => rx2_ack,
      wb_dat_o => rx2_dat_i,
      rx_int_o => rx2_int_o);
  
-- Main test process
  MAIN: process
    variable read_32bit : std_logic_vector(31 downto 0);
    variable idx : integer;

    -- Make simplified versions of procedures in wb_tb_pack
    procedure wb_write_32 (
      constant ADDRESS: in natural; 
      constant DATA: in natural) is 
    begin
      wb_write(ADDRESS, DATA, wb_adr_o, wb_dat_o(31 downto 0), wb_cyc_o,
               wb_sel_o, wb_we_o, wb_clk_o, wb_ack_i);
    end;
    
    procedure wb_check_32 (
      constant ADDRESS: in natural;
      constant EXP_DATA : in natural) is
    begin
      wb_check(ADDRESS, EXP_DATA, wb_adr_o, wb_dat_i(31 downto 0), wb_cyc_o,
               wb_sel_o, wb_we_o, wb_clk_o, wb_ack_i);
    end;
    
    procedure wb_read_32 (
      constant ADDRESS: in natural) is
    begin 
      wb_read(ADDRESS, read_32bit, wb_adr_o, wb_dat_i(31 downto 0), wb_cyc_o,
              wb_sel_o, wb_we_o, wb_clk_o, wb_ack_i);
    end;
    
  begin
    message("Simulation start with system reset.");
    wb_rst_o <= '1'; -- system reset
    wb_sel_o <= '0';
    wb_stb_o <= '0';
    wb_sel_o <= '0';
    wb_we_o <= '0';
    wb_cyc_o <= '0';
    wb_bte_o <= "00";
    wb_cti_o <= "000";
    wb_adr_o <= (others => '0');
    wb_dat_o <= (others => '0');
    wait for 200 ns;
    wb_rst_o <= '0';    
    message("Check receiver version registers:");
    wb_check_32(RX1_VERSION, 16#000001b1#);
    wb_check_32(RX2_VERSION, 16#00000191#);
    message("Check transmitter version registers:");
    wb_check_32(TX1_VERSION, 16#00000191#);
    wb_check_32(TX2_VERSION, 16#000001b1#);
    message("Fill up sample buffers with test signal, ");
    message("ramp up in left, ramp down in right:");
    SGEN: for i in 0 to 15 loop
      wb_write_32(TX1_BUF_BASE + 2*i, (32768 + i*497)*256);  -- left
      wb_write_32(TX1_BUF_BASE + 2*i + 1, (32767 - i*497)*256);  -- right
      wb_write_32(TX2_BUF_BASE + 2*i, (32767 - i*497)*16);  -- left
      wb_write_32(TX2_BUF_BASE + 2*i + 1, (32768 + i*497)*16);  --right
    end loop;
     message("*** Test of master TX and slave RX ***");
    message("Enable transmitter 2:");
    wb_write_32(TX2_INTMASK, 16#00000003#);  -- enable interrupts
    wb_write_32(TX2_CONFIG, 16#00140703#);  -- 20bit resolution
    message("Enable recevier 2:");
    wb_write_32(RX2_INTMASK, 16#00000003#);  -- enable interrupts
    wb_write_32(RX2_CONFIG, 16#00180003#);  -- 24bit resolution
    wait_for_event("Wait for transmitter 2 LSBF interrupt", 150 us, tx2_int_o);
    wait_for_event("Wait for recevier 2 LSBF interrupt", 150 us, rx2_int_o);
    message("Clear transmitter LSBF interrupt:");
    wb_write_32(TX2_INTSTAT, 16#00000001#);
    wb_check_32(TX2_INTSTAT, 16#00000000#);
    signal_check("tx2_int_o", '0', tx2_int_o);
    message("Clear receiver LSBF interrupt:");
    wb_write_32(RX2_INTSTAT, 16#00000001#);
    wb_check_32(RX2_INTSTAT, 16#00000000#);
    signal_check("rx2_int_o", '0', rx2_int_o);
    message("Check received data, lower sample buffer:");
    wb_read_32(RX2_BUF_BASE);
    -- calculate which index this word was generated with
    idx := (32767 - to_integer(unsigned(read_32bit(31 downto 8)))) / 497;
    -- then check for correct values
    CHKL: for i in 0 to 7 - idx loop
      wb_check_32(RX2_BUF_BASE + 2*i, (32767 - (i+idx)*497)*256);
      wb_check_32(RX2_BUF_BASE + 2*i + 1, (32768 + (i+idx)*497)*256);
    end loop;
    wait_for_event("Wait for transmitter 2 HSBF interrupt", 150 us, tx2_int_o);
    wait_for_event("Wait for recevier 2 HSBF interrupt", 150 us, rx2_int_o);
    message("Clear transmitter HSBF interrupt:");
    wb_write_32(TX2_INTSTAT, 16#00000002#);
    wb_check_32(TX2_INTSTAT, 16#00000000#);
    signal_check("tx2_int_o", '0', tx2_int_o);
    message("Clear receiver HSBF interrupt:");
    wb_write_32(RX2_INTSTAT, 16#00000002#);
    wb_check_32(RX2_INTSTAT, 16#00000000#);
    signal_check("rx2_int_o", '0', rx2_int_o);
    message("Check received data, upper sample buffer:");
    CHKH: for i in 8 - idx to 15 - idx loop
      wb_check_32(RX2_BUF_BASE + 2*i, (32767 - (i+idx)*497)*256);
      wb_check_32(RX2_BUF_BASE + 2*i + 1, (32768 + (i+idx)*497)*256);
    end loop;

    message("*** Test of slave TX and master RX ***");
    message("Enable transmitter 1:");
    wb_write_32(TX1_INTMASK, 16#00000003#);  -- enable interrupts
    wb_write_32(TX1_CONFIG, 16#00180007#);  -- 24bit resolution
    message("Enable recevier 1:");
    wb_write_32(RX1_INTMASK, 16#00000003#);  -- enable interrupts
    wb_write_32(RX1_CONFIG, 16#00100707#);  -- 16bit resolution          
    wait_for_event("Wait for transmitter 1 LSBF interrupt", 150 us, tx1_int_o);
    message("Clear LSBF interrupt:");
    wb_write_32(TX1_INTSTAT, 16#00000001#);
    wb_check_32(TX1_INTSTAT, 16#00000000#);
    signal_check("tx1_int_o", '0', tx1_int_o);
    wait_for_event("Wait for recevier 1 LSBF interrupt", 150 us, rx1_int_o);
    message("Clear LSBF interrupt:");
    wb_write_32(RX1_INTSTAT, 16#00000001#);
    wb_check_32(RX1_INTSTAT, 16#00000000#);
    signal_check("rx1_int_o", '0', rx1_int_o);
    message("Check received data (#1), lower sample buffer:");
    wb_read_32(RX1_BUF_BASE);
    -- calculate which index this word was generated with
    idx := (32767 - to_integer(unsigned(read_32bit(15 downto 0)))) / 497;
    -- then check for correct values
    CHKL1: for i in 0 to 7 - idx loop
      wb_check_32(RX1_BUF_BASE + 2*i, 32768 + (i+idx)*497);
      wb_check_32(RX1_BUF_BASE + 2*i + 1, 32767 - (i+idx)*497);
    end loop;
    wait_for_event("Wait for transmitter 1 HSBF interrupt", 150 us, tx1_int_o);
    message("Clear HSBF interrupt:");
    wb_write_32(TX1_INTSTAT, 16#00000002#);
    wb_check_32(TX1_INTSTAT, 16#00000000#);
    signal_check("tx1_int_o", '0', tx1_int_o);
    wait_for_event("Wait for recevier 1 HSBF interrupt", 150 us, rx1_int_o);
    message("Clear HSBF interrupt:");
    wb_write_32(RX1_INTSTAT, 16#00000002#);
    wb_check_32(RX1_INTSTAT, 16#00000000#);
    signal_check("rx1_int_o", '0', rx1_int_o);
    message("Check received data (#1), higher sample buffer:");
    CHKH1: for i in 8 - idx to 15 - idx loop
      wb_check_32(RX1_BUF_BASE + 2*i, 32768 + (i+idx)*497);
      wb_check_32(RX1_BUF_BASE + 2*i + 1, 32767 - (i+idx)*497);
    end loop;
    
    sim_report("");
    report "End of simulation! (ignore this failure)"
      severity failure;
    wait;
  end process MAIN;
  
-- Bus strobe generator based on address. 32bit recevier mapped to addr. 0x1000
-- 32bit transmitter mapped to address 0x2000
  wb_stb_32bit_rx1 <= '1' when wb_adr_o(15 downto 12) = "0001" else '0';
  wb_stb_32bit_tx1 <= '1' when wb_adr_o(15 downto 12) = "0010" else '0';
  wb_stb_32bit_rx2 <= '1' when wb_adr_o(15 downto 12) = "0011" else '0';
  wb_stb_32bit_tx2 <= '1' when wb_adr_o(15 downto 12) = "0100" else '0';
  
-- Clock process, 50Mhz Wishbone master freq.
  CLKGEN: process
  begin
    wb_clk_o <= '0';
    wait for 10 ns;
    wb_clk_o <= '1';
    wait for 10 ns;
  end process CLKGEN;
  
end behav;



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人黄色在线看| 亚洲一区二区三区四区在线| 国产精品系列在线播放| 精品国产乱码久久久久久1区2区| 精品亚洲国内自在自线福利| 国产亚洲精品精华液| 成人激情午夜影院| 亚洲一二三四区| 日韩欧美国产成人一区二区| 国产精品一区二区视频| 亚洲欧美在线视频观看| 欧美日韩国产经典色站一区二区三区| 日韩综合小视频| 国产婷婷色一区二区三区四区| a在线播放不卡| 亚洲h动漫在线| 2020国产精品久久精品美国| 91丨porny丨国产| 日韩成人一级片| 国产精品乱人伦一区二区| 色综合天天狠狠| 日本成人在线网站| 中文字幕精品一区二区精品绿巨人| av午夜精品一区二区三区| 丝袜美腿亚洲色图| 国产精品色在线观看| 欧美巨大另类极品videosbest| 国产麻豆9l精品三级站| 亚洲一区免费在线观看| 久久毛片高清国产| 欧美日韩久久久一区| 国产69精品久久99不卡| 日韩精品一级中文字幕精品视频免费观看| 欧美精品一区在线观看| 在线一区二区三区四区| 国产一区二区精品久久91| 亚洲成a人片在线观看中文| 国产女主播一区| 69堂精品视频| 色琪琪一区二区三区亚洲区| 国产一区二区福利| 秋霞电影一区二区| 亚洲一区在线播放| 国产精品午夜春色av| 日韩欧美色综合网站| 91精品办公室少妇高潮对白| 国产成人在线观看免费网站| 日本伊人精品一区二区三区观看方式 | 色呦呦网站一区| 国产精品一区免费视频| 日本欧美一区二区三区乱码| 亚洲狠狠丁香婷婷综合久久久| 久久久久久电影| 日韩免费高清视频| 91精品欧美福利在线观看| 99精品久久免费看蜜臀剧情介绍| 国产呦精品一区二区三区网站| 午夜日韩在线观看| 亚洲黄色性网站| 成人欧美一区二区三区| 中文字幕精品一区二区精品绿巨人| 精品日韩一区二区| 日韩视频在线永久播放| 欧美老女人在线| 欧美性欧美巨大黑白大战| 色天天综合色天天久久| 成人动漫精品一区二区| 国产不卡在线视频| 国产成人在线免费观看| 国产成人精品亚洲日本在线桃色 | 久久草av在线| 伦理电影国产精品| 欧美aⅴ一区二区三区视频| 亚洲电影中文字幕在线观看| 亚洲图片自拍偷拍| 亚洲国产欧美在线| 舔着乳尖日韩一区| 日本欧美一区二区| 激情综合网av| 国产aⅴ精品一区二区三区色成熟| 国产乱码精品一区二区三区五月婷| 精品亚洲成a人| 高清国产午夜精品久久久久久| 国产999精品久久久久久绿帽| 国产精品91xxx| 成人国产精品免费观看动漫| 波多野结衣在线一区| 97精品视频在线观看自产线路二| 一本一道波多野结衣一区二区| 在线免费观看成人短视频| 欧美日韩高清影院| 精品久久久久久最新网址| 久久精品人人做人人爽人人| 国产精品女主播在线观看| 亚洲欧美一区二区不卡| 午夜精品免费在线观看| 九九国产精品视频| www.成人在线| 欧美日韩国产中文| 久久尤物电影视频在线观看| 国产精品第四页| 亚洲mv大片欧洲mv大片精品| 国模一区二区三区白浆| av日韩在线网站| 日韩午夜激情视频| 国产精品日韩成人| 香蕉成人啪国产精品视频综合网| 精品在线一区二区三区| 97精品国产97久久久久久久久久久久 | 日韩二区三区在线观看| 精品一区精品二区高清| 成人免费视频免费观看| 欧美日韩国产精品成人| 久久久精品天堂| 亚洲一级二级在线| 狠狠色狠狠色综合系列| 91日韩精品一区| 欧美成人精品高清在线播放| 亚洲天堂精品在线观看| 六月婷婷色综合| 色婷婷亚洲婷婷| 久久影院视频免费| 午夜伦欧美伦电影理论片| 懂色av噜噜一区二区三区av| 欧美日韩精品一区二区| 国产精品欧美精品| 黄色小说综合网站| 欧美日本免费一区二区三区| 国产精品你懂的在线欣赏| 日本一不卡视频| 欧美午夜电影在线播放| 国产精品日韩精品欧美在线 | 国产自产视频一区二区三区| 欧美亚一区二区| 国产精品久久毛片av大全日韩| 日韩中文字幕av电影| jlzzjlzz亚洲日本少妇| 久久免费精品国产久精品久久久久| 午夜精品一区二区三区电影天堂| 99精品视频在线免费观看| 精品久久久久av影院| 亚洲国产cao| 色婷婷狠狠综合| 国产精品盗摄一区二区三区| 国产一区二区三区在线观看精品 | 日韩无一区二区| 亚洲影院久久精品| 91色porny| 国产精品私人影院| 国产精一品亚洲二区在线视频| 欧美一区午夜精品| 亚洲地区一二三色| 91成人在线精品| 亚洲欧美日韩国产中文在线| 成人在线视频首页| 国产欧美日韩视频在线观看| 精品亚洲成a人| 久久亚洲免费视频| 国产精品一区三区| 国产日产欧美一区二区视频| 国产精品亚洲а∨天堂免在线| 久久欧美一区二区| 国内精品伊人久久久久影院对白| 精品国产乱码久久久久久久| 国产一区激情在线| 久久欧美一区二区| 国产成人av福利| 国产精品每日更新| 成人国产亚洲欧美成人综合网| 国产精品盗摄一区二区三区| 色综合久久综合中文综合网| 亚洲精品菠萝久久久久久久| 欧美成人艳星乳罩| 国产成人精品免费一区二区| 国产清纯白嫩初高生在线观看91| 成人毛片老司机大片| 国产精品久久久久一区二区三区| av成人免费在线| 亚洲高清免费观看| 日韩一区二区在线观看视频| 韩国v欧美v日本v亚洲v| 国产精品久久三| 欧洲一区在线观看| 日本成人中文字幕| 国产日产精品1区| 在线观看一区二区视频| 日韩在线a电影| 久久久精品综合| 在线观看免费视频综合| 丝袜亚洲另类丝袜在线| 久久久午夜精品理论片中文字幕| 成人免费黄色大片| 亚洲一区二区三区不卡国产欧美| 91精品国产欧美日韩| 国产剧情一区二区三区| 亚洲黄色尤物视频| 欧美成人免费网站| 99久久婷婷国产综合精品| 视频在线在亚洲| 中文在线资源观看网站视频免费不卡 |