📄 rx_spdif.vhd
字号:
end generate CG32; CG16 : if DATA_WIDTH = 16 generate CONF : gen_control_reg generic map ( DATA_WIDTH => 16, ACTIVE_BIT_MASK => "1111110000000000") 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 => conf_dout, ctrl_bits => conf_bits); conf_mode(3 downto 0) <= "0000"; conf_paren <= '0'; conf_staten <= '0'; conf_useren <= '0'; conf_valen <= '0'; end generate CG16; conf_blken <= conf_bits(5); conf_valid <= conf_bits(4); conf_chas <= conf_bits(3); evt_en <= conf_bits(2); conf_sample <= conf_bits(1); conf_rxen <= conf_bits(0);-- status register STAT : rx_status_reg generic map ( DATA_WIDTH => DATA_WIDTH) port map ( wb_clk_i => wb_clk_i, status_rd => status_rd, lock => lock, chas => conf_chas, rx_block_start => rx_block_start, ch_data => rx_data, cs_a_en => cs_a_en, cs_b_en => cs_b_en, status_dout => stat_dout); -- interrupt mask register IM32 : if DATA_WIDTH = 32 generate IMASK : gen_control_reg generic map ( DATA_WIDTH => 32, ACTIVE_BIT_MASK => "11111000000000001111111100000000") port map ( clk => wb_clk_i, rst => wb_rst_i, ctrl_wr => imask_wr, ctrl_rd => imask_rd, ctrl_din => wb_dat_i, ctrl_dout => imask_dout, ctrl_bits => imask_bits); end generate IM32; IM16 : if DATA_WIDTH = 16 generate IMASK : gen_control_reg generic map ( DATA_WIDTH => 16, ACTIVE_BIT_MASK => "1111100000000000") port map ( clk => wb_clk_i, rst => wb_rst_i, ctrl_wr => imask_wr, ctrl_rd => imask_rd, ctrl_din => wb_dat_i, ctrl_dout => imask_dout, ctrl_bits => imask_bits); end generate IM16;-- 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 => istat_wr, evt_rd => istat_rd, evt_din => wb_dat_i, evt_dout => istat_dout, event => istat_events, evt_mask => imask_bits, evt_en => evt_en, evt_irq => rx_int_o); istat_events(0) <= lock_evt; istat_events(1) <= istat_lsbf; istat_events(2) <= istat_hsbf; istat_events(3) <= istat_paritya; istat_events(4) <= istat_parityb; istat_events(15 downto 5) <= (others => '0'); IS32 : if DATA_WIDTH = 32 generate istat_events(23 downto 16) <= istat_cap(7 downto 0); istat_events(31 downto 24) <= (others => '0'); end generate IS32;-- capture registers GCAP : if DATA_WIDTH = 32 and CH_ST_CAPTURE > 0 generate CAPR : for k in 0 to CH_ST_CAPTURE - 1 generate CHST : rx_cap_reg port map ( clk => wb_clk_i, rst => wb_rst_i, cap_ctrl_wr => ch_st_cap_wr(k), cap_ctrl_rd => ch_st_cap_rd(k), cap_data_rd => ch_st_data_rd(k), cap_din => wb_dat_i, cap_dout => cap_dout(k), cap_evt => istat_cap(k), rx_block_start => rx_block_start, ch_data => rx_data, ud_a_en => ud_a_en, ud_b_en => ud_b_en, cs_a_en => cs_a_en, cs_b_en => cs_b_en); end generate CAPR; -- unused capture registers set to zero UCAPR : if CH_ST_CAPTURE < 8 generate UC : for k in CH_ST_CAPTURE to 7 generate cap_dout(k) <= (others => '0'); end generate UC; end generate UCAPR; end generate GCAP;-- 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 => sample_din, wr_en => sample_wr, rd_en => mem_rd, wr_addr => sbuf_wr_adr, rd_addr => sbuf_rd_adr, dout => sample_dout);-- phase decoder PDET : rx_phase_det generic map ( WISHBONE_FREQ => WISHBONE_FREQ) -- WishBone frequency in MHz port map ( wb_clk_i => wb_clk_i, rxen => conf_rxen, spdif => spdif_rx_i, lock => lock, lock_evt => lock_evt, rx_data => rx_data, rx_data_en => rx_data_en, rx_block_start => rx_block_start, rx_frame_start => rx_frame_start, rx_channel_a => rx_channel_a, rx_error => rx_error, ud_a_en => ud_a_en, ud_b_en => ud_b_en, cs_a_en => cs_a_en, cs_b_en => cs_b_en); -- frame decoder FDEC : rx_decode generic map ( DATA_WIDTH => DATA_WIDTH, ADDR_WIDTH => ADDR_WIDTH) port map ( wb_clk_i => wb_clk_i, conf_rxen => conf_rxen, conf_sample => conf_sample, conf_valid => conf_valid, conf_mode => conf_mode, conf_blken => conf_blken, conf_valen => conf_valen, conf_useren => conf_useren, conf_staten => conf_staten, conf_paren => conf_paren, lock => lock, rx_data => rx_data, rx_data_en => rx_data_en, rx_block_start => rx_block_start, rx_frame_start => rx_frame_start, rx_channel_a => rx_channel_a, wr_en => sample_wr, wr_addr => sbuf_wr_adr, wr_data => sample_din, stat_paritya => istat_paritya, stat_parityb => istat_parityb, stat_lsbf => istat_lsbf, stat_hsbf => istat_hsbf);end rtl;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -