diff --git a/libraries/technology/jesd204b/doc/AD9683.pdf b/libraries/technology/jesd204b/doc/AD9683.pdf new file mode 100644 index 0000000000000000000000000000000000000000..828cd5274d5d13808a28455ef599a38ac79b306d Binary files /dev/null and b/libraries/technology/jesd204b/doc/AD9683.pdf differ diff --git a/libraries/technology/jesd204b/doc/ug_jesd204b-683442-782339-2.pdf b/libraries/technology/jesd204b/doc/ug_jesd204b-683442-782339-2.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ad7ce79988f5b77e940f4da152a4cff4d6b5af5d Binary files /dev/null and b/libraries/technology/jesd204b/doc/ug_jesd204b-683442-782339-2.pdf differ diff --git a/libraries/technology/jesd204b/tb_tech_jesd204b_v2.vhd b/libraries/technology/jesd204b/tb_tech_jesd204b_v2.vhd index 8a7c106faa8f3caf6da102283785b31a606ae6aa..16ee7432d828b150393ecadecaa5a6cd5170ad5a 100644 --- a/libraries/technology/jesd204b/tb_tech_jesd204b_v2.vhd +++ b/libraries/technology/jesd204b/tb_tech_jesd204b_v2.vhd @@ -121,9 +121,33 @@ architecture tb of tb_tech_jesd204b_v2 is -- mm control buses -- JESD - signal jesd204b_mosi : t_mem_mosi := c_mem_mosi_rst; - signal jesd204b_miso : t_mem_miso := c_mem_miso_rst; - signal jesd204b_rddata : std_logic_vector(c_word_w - 1 downto 0); + signal jesd204b_mosi : t_mem_mosi := c_mem_mosi_rst; + signal jesd204b_miso : t_mem_miso := c_mem_miso_rst; + signal jesd204b_rddata : std_logic_vector(c_word_w - 1 downto 0); + signal jesd204b_rx_err0 : std_logic_vector(c_word_w - 1 downto 0); + signal jesd204b_rx_err1 : std_logic_vector(c_word_w - 1 downto 0); + signal jesd204b_csr_rbd_count : std_logic_vector(7 downto 0); + signal jesd204b_csr_dev_syncn : std_logic; + signal jesd204b_rx_err_link_reinit : std_logic_vector(c_word_w - 1 downto 0); + signal jesd204b_rx_ilas_csr_l : std_logic_vector(4 downto 0); + signal jesd204b_rx_ilas_csr_f : std_logic_vector(7 downto 0); + signal jesd204b_rx_ilas_csr_k : std_logic_vector(4 downto 0); + signal jesd204b_rx_ilas_csr_m : std_logic_vector(7 downto 0); + signal jesd204b_rx_ilas_csr_n : std_logic_vector(4 downto 0); + signal jesd204b_rx_ilas_csr_cs : std_logic_vector(1 downto 0); + signal jesd204b_rx_ilas_csr_np : std_logic_vector(4 downto 0); + signal jesd204b_rx_ilas_csr_subclassv : std_logic_vector(2 downto 0); + signal jesd204b_rx_ilas_csr_s : std_logic_vector(4 downto 0); + signal jesd204b_rx_ilas_csr_jesdv : std_logic_vector(2 downto 0); + signal jesd204b_rx_ilas_csr_cf : std_logic_vector(4 downto 0); + signal jesd204b_rx_ilas_csr_hd : std_logic; + signal jesd204b_rx_status1 : std_logic_vector(c_word_w - 1 downto 0); + signal jesd204b_rx_status2 : std_logic_vector(c_word_w - 1 downto 0); + signal jesd204b_rx_status3 : std_logic_vector(c_word_w - 1 downto 0); + signal jesd204b_rx_status4 : std_logic_vector(c_word_w - 1 downto 0); + signal jesd204b_rx_status5 : std_logic_vector(c_word_w - 1 downto 0); + signal jesd204b_rx_status6 : std_logic_vector(c_word_w - 1 downto 0); + signal jesd204b_rx_status7 : std_logic_vector(c_word_w - 1 downto 0); -- serial transceivers signal serial_tx : std_logic_vector(c_nof_jesd204b_tx - 1 downto 0); @@ -235,9 +259,56 @@ begin proc_mem_mm_bus_rd(tech_jesd204b_field_rx_syncn_sysref_ctrl_adr, mm_clk, jesd204b_miso, jesd204b_mosi); proc_mem_mm_bus_rd(tech_jesd204b_field_rx_err0_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_rx_err0 <= jesd204b_miso.rddata(c_word_w - 1 downto 0); proc_mem_mm_bus_rd(tech_jesd204b_field_rx_err1_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_rx_err1 <= jesd204b_miso.rddata(c_word_w - 1 downto 0); proc_mem_mm_bus_rd(tech_jesd204b_field_csr_rbd_count_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_csr_rbd_count <= jesd204b_miso.rddata(10 downto 3); proc_mem_mm_bus_rd(tech_jesd204b_field_csr_dev_syncn_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_csr_dev_syncn <= jesd204b_miso.rddata(0); + proc_mem_mm_bus_rd(tech_jesd204b_field_rx_err_link_reinit_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_rx_err_link_reinit <= jesd204b_miso.rddata(c_word_w - 1 downto 0); + + proc_mem_mm_bus_rd(tech_jesd204b_field_rx_ilas_csr_l_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_rx_ilas_csr_l <= jesd204b_miso.rddata(4 downto 0); + proc_mem_mm_bus_rd(tech_jesd204b_field_rx_ilas_csr_f_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_rx_ilas_csr_f <= jesd204b_miso.rddata(15 downto 8); + proc_mem_mm_bus_rd(tech_jesd204b_field_rx_ilas_csr_k_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_rx_ilas_csr_k <= jesd204b_miso.rddata(20 downto 16); + proc_mem_mm_bus_rd(tech_jesd204b_field_rx_ilas_csr_m_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_rx_ilas_csr_m <= jesd204b_miso.rddata(31 downto 24); + proc_mem_mm_bus_rd(tech_jesd204b_field_rx_ilas_csr_n_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_rx_ilas_csr_n <= jesd204b_miso.rddata(4 downto 0); + proc_mem_mm_bus_rd(tech_jesd204b_field_rx_ilas_csr_cs_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_rx_ilas_csr_cs <= jesd204b_miso.rddata(7 downto 6); + proc_mem_mm_bus_rd(tech_jesd204b_field_rx_ilas_csr_np_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_rx_ilas_csr_np <= jesd204b_miso.rddata(12 downto 8); + proc_mem_mm_bus_rd(tech_jesd204b_field_rx_ilas_csr_subclassv_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_rx_ilas_csr_subclassv <= jesd204b_miso.rddata(15 downto 13); + proc_mem_mm_bus_rd(tech_jesd204b_field_rx_ilas_csr_s_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_rx_ilas_csr_s <= jesd204b_miso.rddata(20 downto 16); + proc_mem_mm_bus_rd(tech_jesd204b_field_rx_ilas_csr_jesdv_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_rx_ilas_csr_jesdv <= jesd204b_miso.rddata(23 downto 21); + proc_mem_mm_bus_rd(tech_jesd204b_field_rx_ilas_csr_cf_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_rx_ilas_csr_cf <= jesd204b_miso.rddata(28 downto 24); + proc_mem_mm_bus_rd(tech_jesd204b_field_rx_ilas_csr_hd_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_rx_ilas_csr_hd <= jesd204b_miso.rddata(31); + + proc_mem_mm_bus_rd(tech_jesd204b_field_rx_status1_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_rx_status1 <= jesd204b_miso.rddata(c_word_w - 1 downto 0); + proc_mem_mm_bus_rd(tech_jesd204b_field_rx_status2_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_rx_status2 <= jesd204b_miso.rddata(c_word_w - 1 downto 0); + proc_mem_mm_bus_rd(tech_jesd204b_field_rx_status3_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_rx_status3 <= jesd204b_miso.rddata(c_word_w - 1 downto 0); + proc_mem_mm_bus_rd(tech_jesd204b_field_rx_status4_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_rx_status4 <= jesd204b_miso.rddata(c_word_w - 1 downto 0); + proc_mem_mm_bus_rd(tech_jesd204b_field_rx_status5_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_rx_status5 <= jesd204b_miso.rddata(c_word_w - 1 downto 0); + proc_mem_mm_bus_rd(tech_jesd204b_field_rx_status6_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_rx_status6 <= jesd204b_miso.rddata(c_word_w - 1 downto 0); + proc_mem_mm_bus_rd(tech_jesd204b_field_rx_status7_adr, mm_clk, jesd204b_miso, jesd204b_mosi); + jesd204b_rx_status7 <= jesd204b_miso.rddata(c_word_w - 1 downto 0); + wait; end process; diff --git a/libraries/technology/jesd204b/tech_jesd204b_pkg.vhd b/libraries/technology/jesd204b/tech_jesd204b_pkg.vhd index b2df39a9d64be866f18ef2adabb53221be04ee53..bd30746f0bb85978a86a5aa0dfd83ef7f96f0f7c 100644 --- a/libraries/technology/jesd204b/tech_jesd204b_pkg.vhd +++ b/libraries/technology/jesd204b/tech_jesd204b_pkg.vhd @@ -65,6 +65,28 @@ package tech_jesd204b_pkg is constant tech_jesd204b_field_csr_dev_syncn_w : natural := 1; constant tech_jesd204b_field_csr_dev_syncn_lo : natural := 0; constant tech_jesd204b_field_csr_dev_syncn_hi : natural := tech_jesd204b_field_csr_dev_syncn_w - 1 + tech_jesd204b_field_csr_dev_syncn_lo; + + constant tech_jesd204b_field_rx_ilas_csr_l_adr : natural := 16#25#; -- = 16#94# / 4; + constant tech_jesd204b_field_rx_ilas_csr_f_adr : natural := 16#25#; + constant tech_jesd204b_field_rx_ilas_csr_k_adr : natural := 16#25#; + constant tech_jesd204b_field_rx_ilas_csr_m_adr : natural := 16#25#; + + constant tech_jesd204b_field_rx_ilas_csr_n_adr : natural := 16#26#; -- = 16#98# / 4; + constant tech_jesd204b_field_rx_ilas_csr_cs_adr : natural := 16#26#; + constant tech_jesd204b_field_rx_ilas_csr_np_adr : natural := 16#26#; + constant tech_jesd204b_field_rx_ilas_csr_subclassv_adr : natural := 16#26#; + constant tech_jesd204b_field_rx_ilas_csr_s_adr : natural := 16#26#; + constant tech_jesd204b_field_rx_ilas_csr_jesdv_adr : natural := 16#26#; + constant tech_jesd204b_field_rx_ilas_csr_cf_adr : natural := 16#26#; + constant tech_jesd204b_field_rx_ilas_csr_hd_adr : natural := 16#26#; + + constant tech_jesd204b_field_rx_status1_adr : natural := 16#21#; + constant tech_jesd204b_field_rx_status2_adr : natural := 16#22#; + constant tech_jesd204b_field_rx_status3_adr : natural := 16#23#; + constant tech_jesd204b_field_rx_status4_adr : natural := 16#3c#; + constant tech_jesd204b_field_rx_status5_adr : natural := 16#3d#; + constant tech_jesd204b_field_rx_status6_adr : natural := 16#3e#; + constant tech_jesd204b_field_rx_status7_adr : natural := 16#3f#; end tech_jesd204b_pkg; package body tech_jesd204b_pkg is