Capture digital input via IDDR
This commit is contained in:
parent
33db3d5231
commit
bdefc835b6
|
@ -225,10 +225,9 @@ set_input_delay -clock adc_clk -min 3.0 [get_ports {adc_dat_i[*][*]}]
|
|||
set_input_delay -clock adc_clk -max 5.6 [get_ports {adc_dat_i[*][*]}]
|
||||
set_multicycle_path 2 -from [get_ports {adc_dat_i[*][*]}]
|
||||
|
||||
# Digital inputs are asynchronous.
|
||||
# Set fairly relaxed constraints to limit delay and skew.
|
||||
set_input_delay -clock adc_clk -min 0.0 [get_ports {exp_p_io[*] exp_n_io[*]}]
|
||||
set_input_delay -clock adc_clk -max 3.0 [get_ports {exp_p_io[*] exp_n_io[*]}]
|
||||
# Digital inputs are asynchronous and captured in IOB flipflops.
|
||||
# Declare false path to avoid warning for unconstrained path.
|
||||
set_false_path -from [get_ports {exp_p_io[*] exp_n_io[*]}]
|
||||
|
||||
# Delay to LEDs does not matter; just set a long max delay.
|
||||
set_max_delay -to [get_ports {led_o[*]}] 20.0
|
||||
|
|
|
@ -215,7 +215,9 @@ set_input_delay -clock adc_clk_23 -max 0.7 [get_ports {adc_dat_i[2][*] adc_dat_
|
|||
set_min_delay -from [get_clocks adc_clk_23] -to [get_clocks adc_clk_01] 1.6
|
||||
set_max_delay -from [get_clocks adc_clk_23] -to [get_clocks adc_clk_01] 6.4
|
||||
|
||||
# TODO -- specify input delay for digital inputs
|
||||
# Digital inputs are asynchronous and captured in IOB flipflops.
|
||||
# Declare false path to avoid warning for unconstrained path.
|
||||
set_false_path -from [get_ports {exp_p_io[*] exp_n_io[*]}]
|
||||
|
||||
# Delay to LEDs does not matter; just set a long max delay.
|
||||
set_max_delay -to [get_ports {led_o[*]}] 20.0
|
||||
|
|
|
@ -96,7 +96,7 @@ package puzzlefw_pkg is
|
|||
-- Firmware info word.
|
||||
constant fw_api_version: natural := 1;
|
||||
constant fw_version_major: natural := 0;
|
||||
constant fw_version_minor: natural := 12;
|
||||
constant fw_version_minor: natural := 13;
|
||||
constant fw_info_word: std_logic_vector(31 downto 0) :=
|
||||
x"4a"
|
||||
& std_logic_vector(to_unsigned(fw_api_version, 8))
|
||||
|
|
|
@ -590,12 +590,20 @@ begin
|
|||
|
||||
inst_dig_capture_gen: for i in 0 to 3 generate
|
||||
|
||||
-- Use a 2-flipflop synchronizer to avoid metastability.
|
||||
inst_dig_sync: entity work.syncdff
|
||||
-- Use IDDR to capture digital input.
|
||||
-- The IDDR is used in pipeline mode; this inserts a secondary flip-flop
|
||||
-- in the data path which helps to suppress metastability.
|
||||
inst_dig_iddr: IDDR
|
||||
generic map (
|
||||
DDR_CLK_EDGE => "SAME_EDGE_PIPELINED" )
|
||||
port map (
|
||||
clk => clk_adc,
|
||||
di => s_dig_in(i),
|
||||
do => s_dig_sync(i) );
|
||||
Q1 => s_dig_sync(i),
|
||||
Q2 => open,
|
||||
C => clk_adc,
|
||||
CE => '1',
|
||||
D => s_dig_in(i),
|
||||
R => '0',
|
||||
S => '0' );
|
||||
|
||||
-- Deglitch filter.
|
||||
inst_dig_deglitch: entity work.deglitch
|
||||
|
|
|
@ -628,12 +628,20 @@ begin
|
|||
|
||||
inst_dig_capture_gen: for i in 0 to 3 generate
|
||||
|
||||
-- Use a 2-flipflop synchronizer to avoid metastability.
|
||||
inst_dig_sync: entity work.syncdff
|
||||
-- Use IDDR to capture digital input.
|
||||
-- The IDDR is used in pipeline mode; this inserts a secondary flip-flop
|
||||
-- in the data path which helps to suppress metastability.
|
||||
inst_dig_iddr: IDDR
|
||||
generic map (
|
||||
DDR_CLK_EDGE => "SAME_EDGE_PIPELINED" )
|
||||
port map (
|
||||
clk => clk_adc,
|
||||
di => s_dig_in(i),
|
||||
do => s_dig_sync(i) );
|
||||
Q1 => s_dig_sync(i),
|
||||
Q2 => open,
|
||||
C => clk_adc,
|
||||
CE => '1',
|
||||
D => s_dig_in(i),
|
||||
R => '0',
|
||||
S => '0' );
|
||||
|
||||
-- Deglitch filter.
|
||||
inst_dig_deglitch: entity work.deglitch
|
||||
|
|
|
@ -34,7 +34,6 @@ read_vhdl -vhdl2008 ../rtl/dma_write_channel.vhd
|
|||
read_vhdl -vhdl2008 ../rtl/registers.vhd
|
||||
read_vhdl -vhdl2008 ../rtl/sample_decimation.vhd
|
||||
read_vhdl -vhdl2008 ../rtl/shift_engine.vhd
|
||||
read_vhdl -vhdl2008 ../rtl/syncdff.vhd
|
||||
read_vhdl -vhdl2008 ../rtl/simple_fifo.vhd
|
||||
read_vhdl -vhdl2008 ../rtl/timestamp_gen.vhd
|
||||
read_vhdl -vhdl2008 ../rtl/timetagger.vhd
|
||||
|
|
Loading…
Reference in New Issue