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

📄 tx_spdif.vhd

📁 为提高8051系列单片机I2C总线的工作效率
💻 VHD
📖 第 1 页 / 共 2 页
字号:
            ACTIVE_BIT_MASK => "1110111111111111")         port map (            clk       => wb_clk_i,            rst       => wb_rst_i,            ctrl_wr   => config_wr,            ctrl_rd   => config_rd,            ctrl_din  => wb_dat_i,            ctrl_dout => config_dout,            ctrl_bits => config_bits);      conf_mode(3 downto 0) <= "0000";  -- 16bit only   end generate CG16;   conf_ratio(7 downto 0) <= config_bits(15 downto 8);   UD : if USER_DATA_BUF = 1 generate      conf_udaten(1 downto 0) <= config_bits(7 downto 6);   end generate UD;   NUD : if USER_DATA_BUF = 0 generate      conf_udaten(1 downto 0) <= "00";   end generate NUD;   CS : if CH_STAT_BUF = 1 generate      conf_chsten(1 downto 0) <= config_bits(5 downto 4);   end generate CS;   NCS : if CH_STAT_BUF = 0 generate      conf_chsten(1 downto 0) <= "00";   end generate NCS;   conf_tinten <= config_bits(2);   conf_txdata <= config_bits(1);   conf_txen   <= config_bits(0);-- TxChStat - channel status control register   CS32 : if DATA_WIDTH = 32 generate      CHST : gen_control_reg         generic map (            DATA_WIDTH      => 32,            ACTIVE_BIT_MASK => "11111111000000000000000000000000")         port map (            clk       => wb_clk_i,            rst       => wb_rst_i,            ctrl_wr   => chstat_wr,            ctrl_rd   => chstat_rd,            ctrl_din  => wb_dat_i,            ctrl_dout => chstat_dout,            ctrl_bits => chstat_bits);   end generate CS32;   CS16 : if DATA_WIDTH = 16 generate      CHST : gen_control_reg         generic map (            DATA_WIDTH      => 16,            ACTIVE_BIT_MASK => "1111111100000000")         port map (            clk       => wb_clk_i,            rst       => wb_rst_i,            ctrl_wr   => chstat_wr,            ctrl_rd   => chstat_rd,            ctrl_din  => wb_dat_i,            ctrl_dout => chstat_dout,            ctrl_bits => chstat_bits);   end generate CS16;   chstat_freq(1 downto 0) <= chstat_bits(7 downto 6);   chstat_gstat            <= chstat_bits(3);   chstat_preem            <= chstat_bits(2);   chstat_copy             <= chstat_bits(1);   chstat_audio            <= chstat_bits(0);-- TxIntMask - interrupt mask register   IM32 : if DATA_WIDTH = 32 generate      IMASK : gen_control_reg         generic map (            DATA_WIDTH      => 32,            ACTIVE_BIT_MASK => "01111000000000000000000000000000")         port map (            clk       => wb_clk_i,            rst       => wb_rst_i,            ctrl_wr   => intmask_wr,            ctrl_rd   => intmask_rd,            ctrl_din  => wb_dat_i,            ctrl_dout => intmask_dout,            ctrl_bits => intmask_bits);   end generate IM32;   IM16 : if DATA_WIDTH = 16 generate      IMASK : gen_control_reg         generic map (            DATA_WIDTH      => 16,            ACTIVE_BIT_MASK => "0111100000000000")         port map (            clk       => wb_clk_i,            rst       => wb_rst_i,            ctrl_wr   => intmask_wr,            ctrl_rd   => intmask_rd,            ctrl_din  => wb_dat_i,            ctrl_dout => intmask_dout,            ctrl_bits => intmask_bits);   end generate IM16;-- TxIntStat - interrupt status register   ISTAT : gen_event_reg      generic map (         DATA_WIDTH => DATA_WIDTH)      port map (         clk      => wb_clk_i,         rst      => wb_rst_i,         evt_wr   => intstat_wr,         evt_rd   => intstat_rd,         evt_din  => wb_dat_i,         evt_dout => intstat_dout,         event    => intstat_events,         evt_mask => intmask_bits,         evt_en   => conf_tinten,         evt_irq  => tx_int_o);   intstat_events(0)                       <= '0';   intstat_events(1)                       <= evt_lsbf;  -- lower sample buffer empty   intstat_events(2)                       <= evt_hsbf;  -- higher sampel buffer empty   intstat_events(3)                       <= evt_lcsbf;  -- lower ch.stat/user data buf empty   intstat_events(4)                       <= evt_hcsbf;  -- higher ch.stat7user data buf empty   intstat_events(DATA_WIDTH - 1 downto 5) <= (others => '0');-- Sample buffer memory   MEM : dpram      generic map (         DATA_WIDTH => DATA_WIDTH,         RAM_WIDTH  => ADDR_WIDTH - 1)      port map (         clk     => wb_clk_i,         rst     => wb_rst_i,         din     => wb_dat_i(DATA_WIDTH - 1 downto 0),         wr_en   => mem_wr,         rd_en   => mem_rd,         wr_addr => wb_adr_i(ADDR_WIDTH - 2 downto 0),         rd_addr => sample_addr,         dout    => sample_data);-- UserData - byte buffer   UDB : tx_bitbuf      generic map (ENABLE_BUFFER => USER_DATA_BUF)      port map (         wb_clk_i   => wb_clk_i,         wb_rst_i   => wb_rst_i,         buf_wr     => user_data_wr,         wb_adr_i   => wb_adr_i(4 downto 0),         wb_dat_i   => wb_dat_i(15 downto 0),         buf_data_a => user_data_a,         buf_data_b => user_data_b);-- ChStat - byte buffer   CSB : tx_bitbuf      generic map (ENABLE_BUFFER => CH_STAT_BUF)      port map (         wb_clk_i   => wb_clk_i,         wb_rst_i   => wb_rst_i,         buf_wr     => ch_status_wr,         wb_adr_i   => wb_adr_i(4 downto 0),         wb_dat_i   => wb_dat_i(15 downto 0),         buf_data_a => ch_stat_a,         buf_data_b => ch_stat_b);-- Transmit encoder   TENC : tx_encoder      generic map (DATA_WIDTH => DATA_WIDTH,                   ADDR_WIDTH => ADDR_WIDTH)       port map (         wb_clk_i     => wb_clk_i,         conf_mode    => conf_mode,     -- sample format         conf_ratio   => conf_ratio,    -- clock divider         conf_udaten  => conf_udaten,   -- user data control         conf_chsten  => conf_chsten,   -- ch. status control         conf_txdata  => conf_txdata,   -- sample data enable         conf_txen    => conf_txen,     -- spdif signal enable         user_data_a  => user_data_a,   -- ch. a user data         user_data_b  => user_data_b,   -- ch. b user data         ch_stat_a    => ch_stat_a,     -- ch. a status         ch_stat_b    => ch_stat_b,     -- ch. b status         chstat_freq  => chstat_freq,   -- sample freq.         chstat_gstat => chstat_gstat,  -- generation status         chstat_preem => chstat_preem,  -- preemphasis status         chstat_copy  => chstat_copy,   -- copyright bit         chstat_audio => chstat_audio,  -- data format         sample_data  => sample_data,   -- audio data         mem_rd       => mem_rd,        -- sample buffer read         sample_addr  => sample_addr,   -- address         evt_lcsbf    => evt_lcsbf,     -- lower ch.st./user data buf empty          evt_hcsbf    => evt_hcsbf,     -- higher ch.st/user data buf empty          evt_hsbf     => evt_hsbf,      -- higher sample buf empty event         evt_lsbf     => evt_lsbf,      -- lower sample buf empty event         spdif_tx_o   => spdif_tx_o);   -- SPDIF output signalend rtl;

⌨️ 快捷键说明

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