⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tb_rx_spdif.vhd

📁 为提高8051系列单片机I2C总线的工作效率
💻 VHD
字号:
--------------------------------------------------------------------------                                                              -------- WISHBONE SPDIF IP Core                                       --------                                                              -------- This file is part of the SPDIF project                       -------- http://www.opencores.org/cores/spdif_interface/              --------                                                              -------- Description                                                  -------- Test bench for SPDIF recevier.                               --------                                                              --------                                                              -------- 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 Lesser General   -------- Public License as published by the Free Software Foundation; -------- either version 2.1 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 Lesser General Public License for more  -------- details.                                                     --------                                                              -------- You should have received a copy of the GNU Lesser General    -------- Public License along with this source; if not, download it   -------- from http://www.opencores.org/lgpl.shtml                     --------                                                              ------------------------------------------------------------------------------ CVS Revision History---- $Log: tb_rx_spdif.vhd,v $-- Revision 1.4  2007/10/11 19:14:16  gedra-- Code beautification---- Revision 1.3  2004/07/12 17:06:07  gedra-- Test bench update.---- Revision 1.2  2004/07/11 16:20:16  gedra-- Improved test bench.---- Revision 1.1  2004/06/26 14:12:51  gedra-- Top level test bench for receiver. NB! Not complete.----library ieee;use ieee.std_logic_1164.all;use work.wb_tb_pack.all;entity tb_rx_spdif isend tb_rx_spdif;architecture behav of tb_rx_spdif is   component rx_spdif is      generic (DATA_WIDTH    : integer range 16 to 32;               ADDR_WIDTH    : integer range 8 to 64;               CH_ST_CAPTURE : integer range 0 to 8;               WISHBONE_FREQ : natural);      port (         -- Wishbone interface         wb_clk_i   : in  std_logic;         wb_rst_i   : in  std_logic;         wb_sel_i   : in  std_logic;         wb_stb_i   : in  std_logic;         wb_we_i    : in  std_logic;         wb_cyc_i   : in  std_logic;         wb_bte_i   : in  std_logic_vector(1 downto 0);         wb_cti_i   : in  std_logic_vector(2 downto 0);         wb_adr_i   : in  std_logic_vector(ADDR_WIDTH - 1 downto 0);         wb_dat_i   : in  std_logic_vector(DATA_WIDTH -1 downto 0);         wb_ack_o   : out std_logic;         wb_dat_o   : out std_logic_vector(DATA_WIDTH - 1 downto 0);         -- Interrupt line         rx_int_o   : out std_logic;         -- SPDIF input signal         spdif_rx_i : in  std_logic);   end component;   component gen_spdif      generic (Freq : natural);         -- Sampling frequency in Hz      port (                            -- Bitrate is 64x sampling frequency         reset : in  std_logic;         spdif : out std_logic);        -- Output bi-phase encoded signal   end component;   signal wb_clk_o, wb_rst_o, wb_sel_o, wb_stb_o, wb_we_o : std_logic;   signal wb_cyc_o, wb_ack_i, rx_int_o, spdif_rx_i        : std_logic;   signal wb_bte_o                                        : std_logic_vector(1 downto 0);   signal wb_cti_o                                        : std_logic_vector(2 downto 0);   signal wb_adr_o                                        : std_logic_vector(15 downto 0);   signal wb_dat_i, wb_dat_o                              : std_logic_vector(31 downto 0);   signal wb_stb_16bit_rx                                 : std_logic;   constant RX_VERSION                                    : natural := 16#1000#;   constant RX_CONFIG                                     : natural := 16#1001#;   constant RX_STATUS                                     : natural := 16#1002#;   constant RX_INTMASK                                    : natural := 16#1003#;   constant RX_INTSTAT                                    : natural := 16#1004#;   begin-- Minimal SPDIF recevier in 16bit mode   SRX16 : rx_spdif      generic map (         DATA_WIDTH    => 16,         ADDR_WIDTH    => 8,            -- 128 byte sample buffer         CH_ST_CAPTURE => 0,            -- no capture in 16bit mode         WISHBONE_FREQ => 33)           -- 33 MHz      port map (         wb_clk_i   => wb_clk_o,         wb_rst_i   => wb_rst_o,         wb_sel_i   => wb_sel_o,         wb_stb_i   => wb_stb_16bit_rx,         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(7 downto 0),         wb_dat_i   => wb_dat_o(15 downto 0),         wb_ack_o   => wb_ack_i,         wb_dat_o   => wb_dat_i(15 downto 0),         rx_int_o   => rx_int_o,         spdif_rx_i => spdif_rx_i);-- SPDIF 44.1kHz source   SP44 : gen_spdif      generic map (FREQ => 44100)      port map (reset => wb_rst_o,                spdif => spdif_rx_i);-- Main test process   MAIN : process      variable read_16bit : std_logic_vector(15 downto 0);      -- Make simplified versions of procedures in wb_tb_pack      procedure wb_write_16 (         constant ADDRESS : in natural;         constant DATA    : in natural) is       begin         wb_write(ADDRESS, DATA, wb_adr_o, wb_dat_o(15 downto 0), wb_cyc_o,                  wb_sel_o, wb_we_o, wb_clk_o, wb_ack_i);      end;            procedure wb_check_16 (         constant ADDRESS  : in natural;         constant EXP_DATA : in natural) is      begin         wb_check(ADDRESS, EXP_DATA, wb_adr_o, wb_dat_i(15 downto 0), wb_cyc_o,                  wb_sel_o, wb_we_o, wb_clk_o, wb_ack_i);      end;            procedure wb_read_16 (         constant ADDRESS   : in  natural;         variable READ_DATA : out std_logic_vector) is      begin         wb_read(ADDRESS, read_16bit, wb_adr_o, wb_dat_i(15 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("Start with checking version register for correct value:");      wb_check_16(RX_VERSION, 16#0101#);      message("Enable interrupt on lock:");      wb_write_16(RX_INTMASK, 16#0001#);      message("Enable receiver:");      wb_write_16(RX_CONFIG, 16#0005#);      wb_read_16(RX_CONFIG, read_16bit);      wait_for_event("Wait for LOCK interrupt", 60 us, rx_int_o);      message("Check status register:");      wb_check_16(RX_STATUS, 16#0001#);      message("Clear interrupt:");      wb_write_16(RX_INTSTAT, 16#0001#);      wb_check_16(RX_INTSTAT, 16#0000#);      signal_check("rx_int_o", '0', rx_int_o);      message("Enable sample buffer");      wb_write_16(RX_CONFIG, 16#0007#);      message("Enable sample buffer interrupts");      wb_write_16(RX_INTMASK, 16#0007#);      wait_for_event("Wait for LSBF interrupt", 750 us, rx_int_o);      message("Check LSBF interrupt, and read some data");      wb_check_16(RX_INTSTAT, 16#0002#);      wb_write_16(RX_INTSTAT, 16#0002#);      wb_check_16(RX_INTSTAT, 16#0000#);      signal_check("rx_int_o", '0', rx_int_o);      wb_read_16(16#1080#, read_16bit);      wb_read_16(16#1081#, read_16bit);      wb_read_16(16#1082#, read_16bit);      wb_read_16(16#1083#, read_16bit);      wait_for_event("Wait for HSBF interrupt", 750 us, rx_int_o);      message("Check HSBF interrupt, and read some data");      wb_check_16(RX_INTSTAT, 16#0004#);      wb_write_16(RX_INTSTAT, 16#0004#);      wb_check_16(RX_INTSTAT, 16#0000#);      signal_check("rx_int_o", '0', rx_int_o);      report "End of simulation! (ignore this failure)"         severity failure;      wait;         end process MAIN;-- Bus strobe generator based on address. 16bit recevier mapped to addr. 0x1000   wb_stb_16bit_rx <= '1' when wb_adr_o(15 downto 12) = "0001" else '0';-- Clock process, 33Mhz Wishbone master freq.   CLKGEN : process   begin      wb_clk_o <= '0';      wait for 15.15 ns;      wb_clk_o <= '1';      wait for 15.15 ns;   end process CLKGEN;   end behav;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -