Commit ecda1dde authored by Lucas Russo's avatar Lucas Russo

Merge branch 'devel'

parents d01c6e95 e80c939a
Subproject commit 1bf1b924c576334225a5df2c707ca8666d96a2c8
Subproject commit f17f5472d49446ae07c4bc2e170effde7726ba81
Subproject commit cc53ef7f6c381ca1ce56355b2fd992462e832ec4
Subproject commit 366e800bea582a071d14b2ecf2e9d153ff902b2e
......@@ -50,9 +50,13 @@ begin
gen_pipe : if g_pipeline > 1 generate
-- Shift reg
p_rst_pipe : process (clk_i)
p_rst_pipe : process (clk_i, arst_n_i)
begin
if rising_edge(clk_i) then
if arst_n_i = '0' then
for i in 0 to g_pipeline-2 loop
s_ff(i+1) <= '0';
end loop;
elsif rising_edge(clk_i) then
for i in 0 to g_pipeline-2 loop
s_ff(i+1) <= s_ff(i);
end loop;
......
......@@ -5,16 +5,20 @@ modules = { "local" : [
"wb_trigger_iface",
"wb_trigger_mux",
"wb_trigger",
"wb_afc_diag",
"wb_fmc150",
"wb_fmc516",
"wb_fmc130m_4ch",
"wb_fmc250m_4ch",
"wb_fmcpico1m_4ch",
"wb_ethmac_adapter",
"wb_ethmac",
"wb_dbe_periph",
"wb_rs232_syscon",
"wb_acq_core",
"wb_acq_core_mux",
"wb_facq_core",
"wb_facq_core_mux",
"wb_pcie",
"wb_fmc_adc_common",
"wb_fmc_active_clk"
......
......@@ -152,15 +152,15 @@ architecture rtl of acq_ddr3_axis_read is
signal lmt_shots_nb : unsigned(c_shots_size_width-1 downto 0);
signal lmt_valid : std_logic;
signal lmt_curr_chan_id : unsigned(c_chan_id_width-1 downto 0);
signal lmt_chan_curr_width : unsigned(c_acq_chan_max_w_log2-1 downto 0);
signal lmt_chan_curr_width : unsigned(c_acq_chan_cmplt_width_log2-1 downto 0);
signal rb_ddr_trig_addr : unsigned(g_ddr_addr_width-1 downto 0);
-- For intermediate multiplication result
signal lmt_full_pkt_addr_ss : unsigned(39 downto 0);
signal lmt_full_pkt_addr_ms : unsigned(39 downto 0);
signal lmt_pre_pkt_addr : unsigned(39 downto 0);
signal lmt_pre_full_addr : unsigned(39 downto 0);
signal lmt_pre_full_addr_m : unsigned(79 downto 0);
signal sample_size : unsigned(7 downto 0);
signal lmt_full_pkt_addr_ss : unsigned(42 downto 0);
signal lmt_full_pkt_addr_ms : unsigned(42 downto 0);
signal lmt_pre_pkt_addr : unsigned(42 downto 0);
signal lmt_pre_full_addr : unsigned(42 downto 0);
signal lmt_pre_full_addr_m : unsigned(42 downto 0);
signal lmt_curr_chan_width_bytes : unsigned(t_acq_width'length-1 downto 0);
-- DDR3 Signals
signal ddr_data_in : std_logic_vector(c_ddr_payload_width-1 downto 0);
......@@ -308,15 +308,14 @@ begin
end if;
end process;
sample_size <= g_acq_channels(to_integer(lmt_curr_chan_id_i)).width/
g_acq_channels(to_integer(lmt_curr_chan_id_i)).num_atoms/8;
lmt_curr_chan_width_bytes <= g_acq_channels(to_integer(lmt_curr_chan_id_i)).width/8; -- in bytes
lmt_full_pkt_addr_ss <= lmt_full_pkt_size*sample_size;
lmt_full_pkt_addr_ss <= lmt_full_pkt_size*lmt_curr_chan_width_bytes;
lmt_full_pkt_addr_ms <= lmt_full_pkt_addr_ss(lmt_full_pkt_addr_ss'left-lmt_shots_nb'length downto 0)*(lmt_shots_nb-1);
lmt_pre_pkt_addr <= lmt_pre_pkt_size*sample_size;
lmt_pre_pkt_addr <= lmt_pre_pkt_size*lmt_curr_chan_width_bytes;
lmt_pre_full_addr_m <= (lmt_full_pkt_addr_ms + lmt_pre_pkt_addr)*c_bytes_per_word;
lmt_pre_full_addr <= lmt_pre_full_addr_m(39 downto 0);
lmt_pre_full_addr_m <= (lmt_full_pkt_addr_ms + lmt_pre_pkt_addr); -- in bytes
lmt_pre_full_addr <= lmt_pre_full_addr_m; -- in bytes
----------------------------------------------------------------------------
-- Start reading
......
......@@ -445,7 +445,8 @@ begin
-- FOR SIMULATION ONLY
-- Assert error if fifo_fc_mux_cnt signal is anything different than zero after the
-- end of transaction
assert (not(fs_rst_n_i = '1' and ext_rst_n_i = '1') or ((fifo_fc_all_trans_done_lvl = '1' and
assert (not(fs_rst_n_i = '1' and ext_rst_n_i = '1') or -- initial reset case
(((fifo_fc_all_trans_done_lvl = '1' or fifo_fc_all_trans_done_sync = '1') and
fifo_fc_mux_cnt = to_unsigned(0, fifo_fc_mux_cnt'length)) or -- end of transaction case
(fifo_fc_all_trans_done_sync = '0'))) -- every other case
report "[acq_fc_fifo] fifo_fc_mux_cnt signal is not 0 after the end of the transaction!"
......
......@@ -40,6 +40,7 @@ port
acq_val_low_i : in t_acq_val_half_array(g_acq_num_channels-1 downto 0);
acq_val_high_i : in t_acq_val_half_array(g_acq_num_channels-1 downto 0);
acq_dvalid_i : in std_logic_vector(g_acq_num_channels-1 downto 0);
acq_id_i : in t_acq_id_array(g_acq_num_channels-1 downto 0);
acq_trig_i : in std_logic_vector(g_acq_num_channels-1 downto 0);
-- Current channel selection ID
......@@ -52,6 +53,7 @@ port
-----------------------------
acq_data_o : out std_logic_vector(c_acq_chan_max_w-1 downto 0);
acq_dvalid_o : out std_logic;
acq_id_o : out t_acq_id;
acq_trig_o : out std_logic
);
end acq_sel_chan;
......@@ -64,10 +66,12 @@ architecture rtl of acq_sel_chan is
signal acq_data_marsh_demux : std_logic_vector(c_acq_chan_max_w-1 downto 0);
signal acq_trig_demux : std_logic;
signal acq_dvalid_demux : std_logic;
signal acq_id_demux : t_acq_id;
signal acq_data_marsh_demux_reg : std_logic_vector(c_acq_chan_max_w-1 downto 0);
signal acq_trig_demux_reg : std_logic;
signal acq_dvalid_demux_reg : std_logic;
signal acq_id_demux_reg : t_acq_id;
begin
......@@ -92,6 +96,7 @@ begin
acq_val_low_i(to_integer(lmt_curr_chan_id))));
acq_trig_demux <= acq_trig_i(to_integer(lmt_curr_chan_id));
acq_dvalid_demux <= acq_dvalid_i(to_integer(lmt_curr_chan_id));
acq_id_demux <= acq_id_i(to_integer(lmt_curr_chan_id));
p_reg_demux : process (clk_i)
begin
......@@ -99,10 +104,12 @@ begin
if rst_n_i = '0' then
acq_data_marsh_demux_reg <= (others => '0');
acq_dvalid_demux_reg <= '0';
acq_id_demux_reg <= to_unsigned(0, acq_id_demux_reg'length);
acq_trig_demux_reg <= '0';
else
acq_data_marsh_demux_reg <= acq_data_marsh_demux;
acq_dvalid_demux_reg <= acq_dvalid_demux;
acq_id_demux_reg <= acq_id_demux;
acq_trig_demux_reg <= acq_trig_demux;
end if;
end if;
......@@ -110,6 +117,7 @@ begin
acq_data_o <= acq_data_marsh_demux_reg;
acq_dvalid_o <= acq_dvalid_demux_reg;
acq_id_o <= acq_id_demux_reg;
acq_trig_o <= acq_trig_demux_reg;
end rtl;
......@@ -84,6 +84,7 @@ port
acq_val_low_i : in std_logic_vector(g_acq_num_channels*c_acq_chan_width-1 downto 0);
acq_val_high_i : in std_logic_vector(g_acq_num_channels*c_acq_chan_width-1 downto 0);
acq_dvalid_i : in std_logic_vector(g_acq_num_channels-1 downto 0);
acq_id_i : in unsigned(g_acq_num_channels*c_acq_id_width-1 downto 0);
acq_trig_i : in std_logic_vector(g_acq_num_channels-1 downto 0);
-----------------------------
......@@ -140,6 +141,7 @@ architecture rtl of wb_acq_core_plain is
signal acq_val_low_array : t_acq_val_half_array(g_acq_num_channels-1 downto 0);
signal acq_val_high_array : t_acq_val_half_array(g_acq_num_channels-1 downto 0);
signal acq_dvalid_array : std_logic_vector(g_acq_num_channels-1 downto 0);
signal acq_id_array : t_acq_id_array(g_acq_num_channels-1 downto 0);
signal acq_trig_array : std_logic_vector(g_acq_num_channels-1 downto 0);
begin
......@@ -195,6 +197,7 @@ begin
acq_val_low_i => acq_val_low_array,
acq_val_high_i => acq_val_high_array,
acq_dvalid_i => acq_dvalid_array,
acq_id_i => acq_id_array,
acq_trig_i => acq_trig_array,
-----------------------------
......@@ -252,6 +255,8 @@ begin
acq_val_high_array(i) <=
acq_val_high_i(c_acq_chan_width*(i+1)-1 downto c_acq_chan_width*i);
acq_dvalid_array(i) <= acq_dvalid_i(i);
acq_id_array(i) <=
acq_id_i(c_acq_id_width*(i+1)-1 downto c_acq_id_width*i);
acq_trig_array(i) <= acq_trig_i(i);
end generate;
......
......@@ -145,6 +145,7 @@ architecture rtl of xwb_acq_core is
signal acq_val_low_array : t_acq_val_half_array(g_acq_num_channels-1 downto 0);
signal acq_val_high_array : t_acq_val_half_array(g_acq_num_channels-1 downto 0);
signal acq_id_array : t_acq_id_array(g_acq_num_channels-1 downto 0);
signal acq_dvalid_array : std_logic_vector(g_acq_num_channels-1 downto 0);
signal acq_trig_array : std_logic_vector(g_acq_num_channels-1 downto 0);
......@@ -201,6 +202,7 @@ begin
acq_val_low_i => acq_val_low_array,
acq_val_high_i => acq_val_high_array,
acq_dvalid_i => acq_dvalid_array,
acq_id_i => acq_id_array,
acq_trig_i => acq_trig_array,
-----------------------------
......@@ -289,6 +291,7 @@ begin
acq_val_high_array(i) <= acq_chan_array_i(i).val_high;
acq_dvalid_array(i) <= acq_chan_array_i(i).dvalid;
acq_trig_array(i) <= acq_chan_array_i(i).trig;
acq_id_array(i) <= acq_chan_array_i(i).id;
end generate;
......
......@@ -96,6 +96,7 @@ port
acq_val_low_array_i : in t_acq_val_half_array(g_acq_num_cores*g_acq_num_channels-1 downto 0);
acq_val_high_array_i : in t_acq_val_half_array(g_acq_num_cores*g_acq_num_channels-1 downto 0);
acq_dvalid_array_i : in std_logic_vector(g_acq_num_cores*g_acq_num_channels-1 downto 0);
acq_id_array_i : in t_acq_id_array(g_acq_num_cores*g_acq_num_channels-1 downto 0);
acq_trig_array_i : in std_logic_vector(g_acq_num_cores*g_acq_num_channels-1 downto 0);
-----------------------------
......@@ -274,6 +275,7 @@ begin
acq_val_low_i => acq_val_low_array_i((i+1)*g_acq_num_channels-1 downto i*g_acq_num_channels),
acq_val_high_i => acq_val_high_array_i((i+1)*g_acq_num_channels-1 downto i*g_acq_num_channels),
acq_dvalid_i => acq_dvalid_array_i((i+1)*g_acq_num_channels-1 downto i*g_acq_num_channels),
acq_id_i => acq_id_array_i((i+1)*g_acq_num_channels-1 downto i*g_acq_num_channels),
acq_trig_i => acq_trig_array_i((i+1)*g_acq_num_channels-1 downto i*g_acq_num_channels),
-----------------------------
......
......@@ -90,6 +90,7 @@ port
acq_val_low_array_i : in std_logic_vector(g_acq_num_cores*g_acq_num_channels*c_acq_chan_width-1 downto 0);
acq_val_high_array_i : in std_logic_vector(g_acq_num_cores*g_acq_num_channels*c_acq_chan_width-1 downto 0);
acq_dvalid_array_i : in std_logic_vector(g_acq_num_cores*g_acq_num_channels-1 downto 0);
acq_id_array_i : in unsigned(g_acq_num_cores*g_acq_num_channels*c_acq_id_width-1 downto 0);
acq_trig_array_i : in std_logic_vector(g_acq_num_cores*g_acq_num_channels-1 downto 0);
-----------------------------
......@@ -166,6 +167,7 @@ architecture rtl of wb_acq_core_mux_plain is
signal acq_val_low_array : t_acq_val_half_array(g_acq_num_cores*g_acq_num_channels-1 downto 0);
signal acq_val_high_array : t_acq_val_half_array(g_acq_num_cores*g_acq_num_channels-1 downto 0);
signal acq_dvalid_array : std_logic_vector(g_acq_num_cores*g_acq_num_channels-1 downto 0);
signal acq_id_array : t_acq_id_array(g_acq_num_cores*g_acq_num_channels-1 downto 0);
signal acq_trig_array : std_logic_vector(g_acq_num_cores*g_acq_num_channels-1 downto 0);
begin
......@@ -224,6 +226,7 @@ begin
acq_val_low_array_i => acq_val_low_array,
acq_val_high_array_i => acq_val_high_array,
acq_dvalid_array_i => acq_dvalid_array,
acq_id_array_i => acq_id_array,
acq_trig_array_i => acq_trig_array,
-----------------------------
......@@ -302,6 +305,8 @@ begin
acq_val_high_array(i*g_acq_num_channels+j) <=
acq_val_high_array_i(i*g_acq_num_channels*c_acq_chan_width + c_acq_chan_width*(j+1)-1 downto i*g_acq_num_channels*c_acq_chan_width + c_acq_chan_width*j);
acq_dvalid_array(i*g_acq_num_channels+j) <= acq_dvalid_array_i(i*g_acq_num_channels+j);
acq_id_array(i*g_acq_num_channels+j) <=
acq_id_array_i(i*g_acq_num_channels*c_acq_id_width + c_acq_id_width*(j+1)-1 downto i*g_acq_num_channels*c_acq_id_width + c_acq_id_width*j);
acq_trig_array(i*g_acq_num_channels+j) <= acq_trig_array_i(i*g_acq_num_channels+j);
end generate;
......
......@@ -125,6 +125,7 @@ architecture rtl of xwb_acq_core_mux is
signal acq_val_low_array : t_acq_val_half_array(g_acq_num_cores*g_acq_num_channels-1 downto 0);
signal acq_val_high_array : t_acq_val_half_array(g_acq_num_cores*g_acq_num_channels-1 downto 0);
signal acq_dvalid_array : std_logic_vector(g_acq_num_cores*g_acq_num_channels-1 downto 0);
signal acq_id_array : t_acq_id_array(g_acq_num_cores*g_acq_num_channels-1 downto 0);
signal acq_trig_array : std_logic_vector(g_acq_num_cores*g_acq_num_channels-1 downto 0);
signal wb_adr_array_in : std_logic_vector(g_acq_num_cores*c_wishbone_address_width-1 downto 0);
......@@ -195,6 +196,7 @@ begin
acq_val_low_array_i => acq_val_low_array,
acq_val_high_array_i => acq_val_high_array,
acq_dvalid_array_i => acq_dvalid_array,
acq_id_array_i => acq_id_array,
acq_trig_array_i => acq_trig_array,
-----------------------------
......@@ -287,6 +289,7 @@ begin
acq_val_low_array(i*g_acq_num_channels + j) <= acq_chan_array_i(i,j).val_low;
acq_val_high_array(i*g_acq_num_channels + j) <= acq_chan_array_i(i,j).val_high;
acq_dvalid_array(i*g_acq_num_channels + j) <= acq_chan_array_i(i,j).dvalid;
acq_id_array(i*g_acq_num_channels + j) <= acq_chan_array_i(i,j).id;
acq_trig_array(i*g_acq_num_channels + j) <= acq_chan_array_i(i,j).trig;
end generate;
......
files = ["wb_facq_core.vhd",
"xwb_facq_core.vhd"
];
This diff is collapsed.
This diff is collapsed.
files = ["wb_facq_core_mux.vhd",
"wb_facq_core_mux_plain.vhd",
"xwb_facq_core_mux.vhd",
];
This diff is collapsed.
......@@ -413,12 +413,12 @@ architecture rtl of wb_fmc516 is
-----------------------------
-- System I2C signals
-----------------------------
signal sys_i2c_scl_in : std_logic;
signal sys_i2c_scl_out : std_logic;
signal sys_i2c_scl_oe_n : std_logic;
signal sys_i2c_sda_in : std_logic;
signal sys_i2c_sda_out : std_logic;
signal sys_i2c_sda_oe_n : std_logic;
signal sys_i2c_scl_in : std_logic_vector(0 downto 0);
signal sys_i2c_scl_out : std_logic_vector(0 downto 0);
signal sys_i2c_scl_oe_n : std_logic_vector(0 downto 0);
signal sys_i2c_sda_in : std_logic_vector(0 downto 0);
signal sys_i2c_sda_out : std_logic_vector(0 downto 0);
signal sys_i2c_sda_oe_n : std_logic_vector(0 downto 0);
-----------------------------
-- System SPI signals
......@@ -438,12 +438,12 @@ architecture rtl of wb_fmc516 is
-----------------------------
-- VCXO I2C signals
-----------------------------
signal vcxo_i2c_scl_in : std_logic;
signal vcxo_i2c_scl_out : std_logic;
signal vcxo_i2c_scl_oe_n : std_logic;
signal vcxo_i2c_sda_in : std_logic;
signal vcxo_i2c_sda_out : std_logic;
signal vcxo_i2c_sda_oe_n : std_logic;
signal vcxo_i2c_scl_in : std_logic_vector(0 downto 0);
signal vcxo_i2c_scl_out : std_logic_vector(0 downto 0);
signal vcxo_i2c_scl_oe_n : std_logic_vector(0 downto 0);
signal vcxo_i2c_sda_in : std_logic_vector(0 downto 0);
signal vcxo_i2c_sda_out : std_logic_vector(0 downto 0);
signal vcxo_i2c_sda_oe_n : std_logic_vector(0 downto 0);
-----------------------------
-- One Wire DS2431 (VMETRO Data) signals
......@@ -1173,11 +1173,11 @@ begin
);
-- Tri-state buffer for SDA and SCL
sys_i2c_scl_b <= sys_i2c_scl_out when sys_i2c_scl_oe_n = '0' else 'Z';
sys_i2c_scl_in <= sys_i2c_scl_b;
sys_i2c_scl_b <= sys_i2c_scl_out(0) when sys_i2c_scl_oe_n(0) = '0' else 'Z';
sys_i2c_scl_in(0) <= sys_i2c_scl_b;
sys_i2c_sda_b <= sys_i2c_sda_out when sys_i2c_sda_oe_n = '0' else 'Z';
sys_i2c_sda_in <= sys_i2c_sda_b;
sys_i2c_sda_b <= sys_i2c_sda_out(0) when sys_i2c_sda_oe_n(0) = '0' else 'Z';
sys_i2c_sda_in(0) <= sys_i2c_sda_b;
-- Not used wishbone signals
cbar_master_in(1).err <= '0';
......@@ -1295,12 +1295,12 @@ begin
sda_padoen_o => vcxo_i2c_sda_oe_n
);
vcxo_i2c_scl_b <= vcxo_i2c_scl_out when vcxo_i2c_scl_oe_n = '0' else 'Z';
vcxo_i2c_scl_in <= vcxo_i2c_scl_b;
vcxo_i2c_scl_b <= vcxo_i2c_scl_out(0) when vcxo_i2c_scl_oe_n(0) = '0' else 'Z';
vcxo_i2c_scl_in(0) <= vcxo_i2c_scl_b;
--vcxo_i2c_scl_o <= sys_i2c_scl_out when vcxo_i2c_scl_oe_n = '0' else 'Z';
vcxo_i2c_sda_b <= vcxo_i2c_sda_out when vcxo_i2c_sda_oe_n = '0' else 'Z';
vcxo_i2c_sda_in <= vcxo_i2c_sda_b;
vcxo_i2c_sda_b <= vcxo_i2c_sda_out(0) when vcxo_i2c_sda_oe_n(0) = '0' else 'Z';
vcxo_i2c_sda_in(0) <= vcxo_i2c_sda_b;
-- VCXO output enable. Controllable from the Wishbone Register Interface
vcxo_pd_l_o <= regs_out.fmc_ctl_vcxo_out_en_o;
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
#!/bin/bash
wbgen2 -V wb_fmcpico1m_4ch_regs.vhd -H record -p wb_fmcpico1m_4ch_regs_pkg.vhd -K ../../../../sim/regs/wb_fmcpico1m_4ch_regs.vh -s defines -C wb_fmcpico1m_4ch_regs.h -f html -D doc/fmcpico1m_4ch_regs_wb.html wb_fmcpico1m_4ch_regs.wb
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment