Guest User

tiptop_module

a guest
Sep 4th, 2020
24
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. library ieee;
  2. use ieee.std_logic_1164.all;
  3. use ieee.numeric_std.all;
  4.  
  5. library work;
  6. use work.type_package.all;
  7.  
  8. entity tiptop_module is
  9.     generic (
  10.             g_CLKS_PER_BIT : integer;
  11.             max_experiment_repetition_counter_value     :   integer;
  12.             max_step_counter_value                      :   integer;
  13.             max_initialization_repetition_counter_value :   integer;
  14.             max_photon_counter_value                    :   integer;
  15.            
  16.             max_photon_counter_window_pulse_value       :   integer
  17.         );
  18.     port (
  19.         rst                     :   in std_logic;
  20.         clk                     :   in std_logic;
  21.         rx_serial               :   in std_logic;
  22.         trigger_from_awg        :   in std_logic;
  23.         trigger_from_apd        :   in  std_logic;
  24.        
  25.         flag_start_experiment   :   out std_logic;
  26.         flag_hard_limit         :   out std_logic;
  27.         flag_nv_minus           :   out std_logic;
  28.        
  29.         trigger_to_awg          :   out std_logic;
  30.        
  31.         pulse_laser_1           :   out std_logic;
  32.         pulse_laser_2           :   out std_logic;
  33.         pulse_laser_3           :   out std_logic;
  34.         pulse_laser_4           :   out std_logic;
  35.        
  36.         pulse_htm_dac_1         :   out std_logic;
  37.         pulse_htm_dac_2         :   out std_logic;
  38.        
  39.         pulse_ni_gate           :   out std_logic
  40.     );
  41. end tiptop_module;
  42.  
  43. architecture behaviour of tiptop_module is
  44.  
  45.     component uart_interface
  46.         generic (
  47.             g_CLKS_PER_BIT : integer     -- fpga clock freq / baudrate = 133E6/115200 ~= 1155
  48.         );
  49.         PORT(  
  50.             rst                     :   in  std_logic;
  51.             clk                     :   in  std_logic;
  52.            
  53.             rx_serial               :   in  std_logic;
  54.            
  55.             ready                   :   out std_logic;
  56.            
  57.             byte0                   :   out std_logic_vector(7 downto 0);
  58.             byte1                   :   out std_logic_vector(7 downto 0);
  59.             byte2                   :   out std_logic_vector(7 downto 0);
  60.             byte3                   :   out std_logic_vector(7 downto 0);
  61.             byte4                   :   out std_logic_vector(7 downto 0);
  62.             byte5                   :   out std_logic_vector(7 downto 0)
  63.         );
  64.     end component;
  65.    
  66.     component uart_interpreter
  67.         generic (
  68.             max_experiment_repetition_counter_value     :   integer;
  69.             max_step_counter_value                      :   integer;
  70.             max_initialization_repetition_counter_value :   integer;
  71.             max_photon_counter_value                    :   integer;
  72.            
  73.             max_photon_counter_window_pulse_value       :   integer
  74.         );
  75.     PORT(  
  76.             rst                                         :   in  std_logic;
  77.             clk                                         :   in  std_logic;
  78.            
  79.             ready                                       :   in  std_logic;
  80.            
  81.             byte0                                       :   in std_logic_vector(7 downto 0);
  82.             byte1                                       :   in std_logic_vector(7 downto 0);
  83.             byte2                                       :   in std_logic_vector(7 downto 0);
  84.             byte3                                       :   in std_logic_vector(7 downto 0);
  85.             byte4                                       :   in std_logic_vector(7 downto 0);
  86.             byte5                                       :   in std_logic_vector(7 downto 0);
  87.            
  88.             experiment_repetition_counter_threshold     :   out integer range 0 to max_experiment_repetition_counter_value;
  89.            
  90.             initialization_repetition_counter_threshold :   out integer range 0 to max_initialization_repetition_counter_value;
  91.            
  92.             step_counter_threshold_initialization       :   out integer range 0 to max_step_counter_value;
  93.             step_counter_threshold_measurement          :   out integer range 0 to max_step_counter_value;
  94.            
  95.             photon_counter_threshold_initialization     :   out integer range 0 to max_photon_counter_value;
  96.             photon_counter_threshold_measurement        :   out integer range 0 to max_photon_counter_value;
  97.            
  98.             photon_counter_window_offset_initialization :   out integer range 0 to max_photon_counter_window_pulse_value;
  99.             photon_counter_window_length_initialization :   out integer range 0 to max_photon_counter_window_pulse_value;
  100.             photon_counter_window_offset_measurement    :   out integer range 0 to max_photon_counter_window_pulse_value;
  101.             photon_counter_window_length_measurement    :   out integer range 0 to max_photon_counter_window_pulse_value;
  102.            
  103.             laser_1_offset1_initialization              :   out integer range 0 to max_step_counter_value;
  104.             laser_1_length1_initialization              :   out integer range 0 to max_step_counter_value;
  105.             laser_1_offset2_initialization              :   out integer range 0 to max_step_counter_value;
  106.             laser_1_length2_initialization              :   out integer range 0 to max_step_counter_value;
  107.             laser_1_offset1_measurement                 :   out integer range 0 to max_step_counter_value;
  108.             laser_1_length1_measurement                 :   out integer range 0 to max_step_counter_value;
  109.             laser_1_offset2_measurement                 :   out integer range 0 to max_step_counter_value;
  110.             laser_1_length2_measurement                 :   out integer range 0 to max_step_counter_value;
  111.            
  112.             laser_2_offset1_initialization              :   out integer range 0 to max_step_counter_value;
  113.             laser_2_length1_initialization              :   out integer range 0 to max_step_counter_value;
  114.             laser_2_offset2_initialization              :   out integer range 0 to max_step_counter_value;
  115.             laser_2_length2_initialization              :   out integer range 0 to max_step_counter_value;
  116.             laser_2_offset1_measurement                 :   out integer range 0 to max_step_counter_value;
  117.             laser_2_length1_measurement                 :   out integer range 0 to max_step_counter_value;
  118.             laser_2_offset2_measurement                 :   out integer range 0 to max_step_counter_value;
  119.             laser_2_length2_measurement                 :   out integer range 0 to max_step_counter_value;
  120.            
  121.             laser_3_offset1_initialization              :   out integer range 0 to max_step_counter_value;
  122.             laser_3_length1_initialization              :   out integer range 0 to max_step_counter_value;
  123.             laser_3_offset2_initialization              :   out integer range 0 to max_step_counter_value;
  124.             laser_3_length2_initialization              :   out integer range 0 to max_step_counter_value;
  125.             laser_3_offset1_measurement                 :   out integer range 0 to max_step_counter_value;
  126.             laser_3_length1_measurement                 :   out integer range 0 to max_step_counter_value;
  127.             laser_3_offset2_measurement                 :   out integer range 0 to max_step_counter_value;
  128.             laser_3_length2_measurement                 :   out integer range 0 to max_step_counter_value;
  129.            
  130.             laser_4_offset1_initialization              :   out integer range 0 to max_step_counter_value;
  131.             laser_4_length1_initialization              :   out integer range 0 to max_step_counter_value;
  132.             laser_4_offset2_initialization              :   out integer range 0 to max_step_counter_value;
  133.             laser_4_length2_initialization              :   out integer range 0 to max_step_counter_value;
  134.             laser_4_offset1_measurement                 :   out integer range 0 to max_step_counter_value;
  135.             laser_4_length1_measurement                 :   out integer range 0 to max_step_counter_value;
  136.             laser_4_offset2_measurement                 :   out integer range 0 to max_step_counter_value;
  137.             laser_4_length2_measurement                 :   out integer range 0 to max_step_counter_value;
  138.            
  139.             htm_dac_1_offset1_initialization            :   out integer range 0 to max_step_counter_value;
  140.             htm_dac_1_length1_initialization            :   out integer range 0 to max_step_counter_value;
  141.             htm_dac_1_offset2_initialization            :   out integer range 0 to max_step_counter_value;
  142.             htm_dac_1_length2_initialization            :   out integer range 0 to max_step_counter_value;
  143.             htm_dac_1_offset1_measurement               :   out integer range 0 to max_step_counter_value;
  144.             htm_dac_1_length1_measurement               :   out integer range 0 to max_step_counter_value;
  145.             htm_dac_1_offset2_measurement               :   out integer range 0 to max_step_counter_value;
  146.             htm_dac_1_length2_measurement               :   out integer range 0 to max_step_counter_value;
  147.            
  148.             htm_dac_2_offset1_initialization            :   out integer range 0 to max_step_counter_value;
  149.             htm_dac_2_length1_initialization            :   out integer range 0 to max_step_counter_value;
  150.             htm_dac_2_offset2_initialization            :   out integer range 0 to max_step_counter_value;
  151.             htm_dac_2_length2_initialization            :   out integer range 0 to max_step_counter_value;
  152.             htm_dac_2_offset1_measurement               :   out integer range 0 to max_step_counter_value;
  153.             htm_dac_2_length1_measurement               :   out integer range 0 to max_step_counter_value;
  154.             htm_dac_2_offset2_measurement               :   out integer range 0 to max_step_counter_value;
  155.             htm_dac_2_length2_measurement               :   out integer range 0 to max_step_counter_value;
  156.            
  157.             ni_gate_offset1_initialization              :   out integer range 0 to max_step_counter_value;
  158.             ni_gate_length1_initialization              :   out integer range 0 to max_step_counter_value;
  159.             ni_gate_offset2_initialization              :   out integer range 0 to max_step_counter_value;
  160.             ni_gate_length2_initialization              :   out integer range 0 to max_step_counter_value;
  161.             ni_gate_offset1_measurement                 :   out integer range 0 to max_step_counter_value;
  162.             ni_gate_length1_measurement                 :   out integer range 0 to max_step_counter_value;
  163.             ni_gate_offset2_measurement                 :   out integer range 0 to max_step_counter_value;
  164.             ni_gate_length2_measurement                 :   out integer range 0 to max_step_counter_value;
  165.            
  166.             start                                       :   out std_logic;
  167.             measurement_mode                            :   out t_measurement
  168.         );
  169.     end component;
  170.    
  171.     component experiment_module
  172.         generic (
  173.             max_experiment_repetition_counter_value     :   integer;
  174.             max_step_counter_value                      :   integer;
  175.             max_initialization_repetition_counter_value :   integer;
  176.             max_photon_counter_value                    :   integer;
  177.            
  178.             max_photon_counter_window_pulse_value       :   integer
  179.         );
  180.     PORT(  
  181.             rst                                         :   in  std_logic;
  182.             clk                                         :   in  std_logic;
  183.            
  184.             experiment_repetition_counter_threshold     :   in  integer range 0 to max_experiment_repetition_counter_value;
  185.            
  186.             initialization_repetition_counter_threshold :   in  integer range 0 to max_initialization_repetition_counter_value;
  187.            
  188.             step_counter_threshold_initialization       :   in  integer range 0 to max_step_counter_value;
  189.             step_counter_threshold_measurement          :   in  integer range 0 to max_step_counter_value;
  190.            
  191.             photon_counter_threshold_initialization     :   in  integer range 0 to max_photon_counter_value;
  192.             photon_counter_threshold_measurement        :   in  integer range 0 to max_photon_counter_value;
  193.            
  194.             photon_counter_window_offset_initialization :   in  integer range 0 to max_photon_counter_window_pulse_value;
  195.             photon_counter_window_length_initialization :   in  integer range 0 to max_photon_counter_window_pulse_value;
  196.             photon_counter_window_offset_measurement    :   in  integer range 0 to max_photon_counter_window_pulse_value;
  197.             photon_counter_window_length_measurement    :   in  integer range 0 to max_photon_counter_window_pulse_value;
  198.            
  199.             laser_1_offset1_initialization              :   in  integer range 0 to max_step_counter_value;
  200.             laser_1_length1_initialization              :   in  integer range 0 to max_step_counter_value;
  201.             laser_1_offset2_initialization              :   in  integer range 0 to max_step_counter_value;
  202.             laser_1_length2_initialization              :   in  integer range 0 to max_step_counter_value;
  203.             laser_1_offset1_measurement                 :   in  integer range 0 to max_step_counter_value;
  204.             laser_1_length1_measurement                 :   in  integer range 0 to max_step_counter_value;
  205.             laser_1_offset2_measurement                 :   in  integer range 0 to max_step_counter_value;
  206.             laser_1_length2_measurement                 :   in  integer range 0 to max_step_counter_value;
  207.            
  208.             laser_2_offset1_initialization              :   in  integer range 0 to max_step_counter_value;
  209.             laser_2_length1_initialization              :   in  integer range 0 to max_step_counter_value;
  210.             laser_2_offset2_initialization              :   in  integer range 0 to max_step_counter_value;
  211.             laser_2_length2_initialization              :   in  integer range 0 to max_step_counter_value;
  212.             laser_2_offset1_measurement                 :   in  integer range 0 to max_step_counter_value;
  213.             laser_2_length1_measurement                 :   in  integer range 0 to max_step_counter_value;
  214.             laser_2_offset2_measurement                 :   in  integer range 0 to max_step_counter_value;
  215.             laser_2_length2_measurement                 :   in  integer range 0 to max_step_counter_value;
  216.            
  217.             laser_3_offset1_initialization              :   in  integer range 0 to max_step_counter_value;
  218.             laser_3_length1_initialization              :   in  integer range 0 to max_step_counter_value;
  219.             laser_3_offset2_initialization              :   in  integer range 0 to max_step_counter_value;
  220.             laser_3_length2_initialization              :   in  integer range 0 to max_step_counter_value;
  221.             laser_3_offset1_measurement                 :   in  integer range 0 to max_step_counter_value;
  222.             laser_3_length1_measurement                 :   in  integer range 0 to max_step_counter_value;
  223.             laser_3_offset2_measurement                 :   in  integer range 0 to max_step_counter_value;
  224.             laser_3_length2_measurement                 :   in  integer range 0 to max_step_counter_value;
  225.            
  226.             laser_4_offset1_initialization              :   in  integer range 0 to max_step_counter_value;
  227.             laser_4_length1_initialization              :   in  integer range 0 to max_step_counter_value;
  228.             laser_4_offset2_initialization              :   in  integer range 0 to max_step_counter_value;
  229.             laser_4_length2_initialization              :   in  integer range 0 to max_step_counter_value;
  230.             laser_4_offset1_measurement                 :   in  integer range 0 to max_step_counter_value;
  231.             laser_4_length1_measurement                 :   in  integer range 0 to max_step_counter_value;
  232.             laser_4_offset2_measurement                 :   in  integer range 0 to max_step_counter_value;
  233.             laser_4_length2_measurement                 :   in  integer range 0 to max_step_counter_value;
  234.            
  235.             htm_dac_1_offset1_initialization            :   in  integer range 0 to max_step_counter_value;
  236.             htm_dac_1_length1_initialization            :   in  integer range 0 to max_step_counter_value;
  237.             htm_dac_1_offset2_initialization            :   in  integer range 0 to max_step_counter_value;
  238.             htm_dac_1_length2_initialization            :   in  integer range 0 to max_step_counter_value;
  239.             htm_dac_1_offset1_measurement               :   in  integer range 0 to max_step_counter_value;
  240.             htm_dac_1_length1_measurement               :   in  integer range 0 to max_step_counter_value;
  241.             htm_dac_1_offset2_measurement               :   in  integer range 0 to max_step_counter_value;
  242.             htm_dac_1_length2_measurement               :   in  integer range 0 to max_step_counter_value;
  243.            
  244.             htm_dac_2_offset1_initialization            :   in  integer range 0 to max_step_counter_value;
  245.             htm_dac_2_length1_initialization            :   in  integer range 0 to max_step_counter_value;
  246.             htm_dac_2_offset2_initialization            :   in  integer range 0 to max_step_counter_value;
  247.             htm_dac_2_length2_initialization            :   in  integer range 0 to max_step_counter_value;
  248.             htm_dac_2_offset1_measurement               :   in  integer range 0 to max_step_counter_value;
  249.             htm_dac_2_length1_measurement               :   in  integer range 0 to max_step_counter_value;
  250.             htm_dac_2_offset2_measurement               :   in  integer range 0 to max_step_counter_value;
  251.             htm_dac_2_length2_measurement               :   in  integer range 0 to max_step_counter_value;
  252.            
  253.             ni_gate_offset1_initialization              :   in  integer range 0 to max_step_counter_value;
  254.             ni_gate_length1_initialization              :   in  integer range 0 to max_step_counter_value;
  255.             ni_gate_offset2_initialization              :   in  integer range 0 to max_step_counter_value;
  256.             ni_gate_length2_initialization              :   in  integer range 0 to max_step_counter_value;
  257.             ni_gate_offset1_measurement                 :   in  integer range 0 to max_step_counter_value;
  258.             ni_gate_length1_measurement                 :   in  integer range 0 to max_step_counter_value;
  259.             ni_gate_offset2_measurement                 :   in  integer range 0 to max_step_counter_value;
  260.             ni_gate_length2_measurement                 :   in  integer range 0 to max_step_counter_value;
  261.            
  262.            
  263.             start                                       :   in  std_logic;
  264.             measurement_mode                            :   in  t_measurement;
  265.            
  266.             trigger_from_awg                            :   in  std_logic;
  267.             trigger_from_apd                            :   in  std_logic;
  268.            
  269.             flag_start_experiment                       :   out std_logic;
  270.             flag_hard_limit                             :   out std_logic;
  271.             flag_nv_minus                               :   out std_logic;
  272.            
  273.             trigger_to_awg                              :   out std_logic;
  274.            
  275.             pulse_laser_1                               :   out std_logic;
  276.             pulse_laser_2                               :   out std_logic;
  277.             pulse_laser_3                               :   out std_logic;
  278.             pulse_laser_4                               :   out std_logic;
  279.            
  280.             pulse_htm_dac_1                             :   out std_logic;
  281.             pulse_htm_dac_2                             :   out std_logic;
  282.            
  283.             pulse_ni_gate                               :   out std_logic
  284.         );
  285.     end component;
  286.    
  287.     signal ready : std_logic;
  288.     signal  byte0, byte1,
  289.             byte2, byte3,
  290.             byte4, byte5 : std_logic_vector(7 downto 0);
  291.            
  292.    
  293.     signal experiment_repetition_counter_threshold : integer range 0 to max_experiment_repetition_counter_value;
  294.     signal initialization_repetition_counter_threshold : integer range 0 to max_initialization_repetition_counter_value;
  295.  
  296.     signal step_counter_threshold_initialization, step_counter_threshold_measurement : integer range 0 to max_step_counter_value;
  297.    
  298.     signal photon_counter_threshold_initialization, photon_counter_threshold_measurement : integer range 0 to max_photon_counter_value;
  299.    
  300.     signal  photon_counter_window_offset_initialization, photon_counter_window_length_initialization,
  301.             photon_counter_window_offset_measurement, photon_counter_window_length_measurement : integer range 0 to max_photon_counter_window_pulse_value;
  302.  
  303.     signal  laser_1_offset1_initialization, laser_1_length1_initialization,
  304.             laser_1_offset2_initialization, laser_1_length2_initialization,
  305.             laser_1_offset1_measurement, laser_1_length1_measurement,
  306.             laser_1_offset2_measurement, laser_1_length2_measurement,
  307.            
  308.             laser_2_offset1_initialization, laser_2_length1_initialization,
  309.             laser_2_offset2_initialization, laser_2_length2_initialization,
  310.             laser_2_offset1_measurement, laser_2_length1_measurement,
  311.             laser_2_offset2_measurement, laser_2_length2_measurement,
  312.            
  313.             laser_3_offset1_initialization, laser_3_length1_initialization,
  314.             laser_3_offset2_initialization, laser_3_length2_initialization,
  315.             laser_3_offset1_measurement, laser_3_length1_measurement,
  316.             laser_3_offset2_measurement, laser_3_length2_measurement,
  317.            
  318.             laser_4_offset1_initialization, laser_4_length1_initialization,
  319.             laser_4_offset2_initialization, laser_4_length2_initialization,
  320.             laser_4_offset1_measurement, laser_4_length1_measurement,
  321.             laser_4_offset2_measurement, laser_4_length2_measurement,
  322.            
  323.             htm_dac_1_offset1_initialization, htm_dac_1_length1_initialization,
  324.             htm_dac_1_offset2_initialization, htm_dac_1_length2_initialization,
  325.             htm_dac_1_offset1_measurement, htm_dac_1_length1_measurement,
  326.             htm_dac_1_offset2_measurement, htm_dac_1_length2_measurement,
  327.            
  328.             htm_dac_2_offset1_initialization, htm_dac_2_length1_initialization,
  329.             htm_dac_2_offset2_initialization, htm_dac_2_length2_initialization,
  330.             htm_dac_2_offset1_measurement, htm_dac_2_length1_measurement,
  331.             htm_dac_2_offset2_measurement, htm_dac_2_length2_measurement,
  332.            
  333.             ni_gate_offset1_initialization, ni_gate_length1_initialization,
  334.             ni_gate_offset2_initialization, ni_gate_length2_initialization,
  335.             ni_gate_offset1_measurement, ni_gate_length1_measurement,
  336.             ni_gate_offset2_measurement, ni_gate_length2_measurement : integer range 0 to max_step_counter_value;
  337.            
  338.     signal start : std_logic;
  339.    
  340.     signal measurement_mode : t_measurement;
  341.    
  342.     signal  raw_r_trigger_from_awg, r_trigger_from_awg,
  343.             raw_r_trigger_from_apd, r_trigger_from_apd : std_logic;
  344. begin
  345.  
  346.     p_SAMPLE : process (rst, clk)
  347.    
  348.         begin
  349.         if rst = '1' then
  350.             raw_r_trigger_from_awg <= '0';
  351.             r_trigger_from_awg <= '0';
  352.             raw_r_trigger_from_apd <= '0';
  353.             r_trigger_from_apd <= '0';
  354.         elsif rising_edge(clk) then
  355.             raw_r_trigger_from_awg <= trigger_from_awg;
  356.             r_trigger_from_awg <= raw_r_trigger_from_awg;
  357.            
  358.             raw_r_trigger_from_apd <= trigger_from_apd;
  359.             r_trigger_from_apd <= raw_r_trigger_from_apd;
  360.         end if;
  361.    
  362.     end process p_SAMPLE;
  363.  
  364.     inst_uart_interface : uart_interface
  365.                                     generic map(
  366.                                                     g_CLKS_PER_BIT => g_CLKS_PER_BIT
  367.                                                 )
  368.                                     port map (
  369.                                                     rst => rst,
  370.                                                     clk => clk,
  371.                                                    
  372.                                                     rx_serial => rx_serial,
  373.                                                    
  374.                                                     ready => ready,
  375.                                                    
  376.                                                     byte0 => byte0,
  377.                                                     byte1 => byte1,
  378.                                                     byte2 => byte2,
  379.                                                     byte3 => byte3,
  380.                                                     byte4 => byte4,
  381.                                                     byte5 => byte5
  382.                                                     );
  383.    
  384.     inst_uart_interpreter : uart_interpreter
  385.                                 generic map(
  386.                                                     max_experiment_repetition_counter_value => max_experiment_repetition_counter_value,
  387.                                                     max_step_counter_value => max_step_counter_value,
  388.                                                     max_initialization_repetition_counter_value => max_initialization_repetition_counter_value,
  389.                                                     max_photon_counter_value => max_photon_counter_value,
  390.                                                    
  391.                                                     max_photon_counter_window_pulse_value => max_photon_counter_window_pulse_value
  392.                                             )
  393.                                 port map (
  394.                                                     rst => rst,
  395.                                                     clk => clk,
  396.                        
  397.                                                     ready => ready,
  398.                                                    
  399.                                                     byte0 => byte0,
  400.                                                     byte1 => byte1,
  401.                                                     byte2 => byte2,
  402.                                                     byte3 => byte3,
  403.                                                     byte4 => byte4,
  404.                                                     byte5 => byte5,
  405.                                                    
  406.                                                     experiment_repetition_counter_threshold => experiment_repetition_counter_threshold,
  407.                                                    
  408.                                                     initialization_repetition_counter_threshold => initialization_repetition_counter_threshold,
  409.                                                    
  410.                                                     step_counter_threshold_initialization => step_counter_threshold_initialization,
  411.                                                     step_counter_threshold_measurement => step_counter_threshold_measurement,
  412.                                                    
  413.                                                     photon_counter_threshold_initialization => photon_counter_threshold_initialization,
  414.                                                     photon_counter_threshold_measurement => photon_counter_threshold_measurement,
  415.                                                    
  416.                                                     photon_counter_window_offset_initialization => photon_counter_window_offset_initialization,
  417.                                                     photon_counter_window_length_initialization => photon_counter_window_length_initialization,
  418.                                                     photon_counter_window_offset_measurement => photon_counter_window_offset_measurement,
  419.                                                     photon_counter_window_length_measurement => photon_counter_window_length_measurement,
  420.                                                    
  421.                                                     laser_1_offset1_initialization => laser_1_offset1_initialization,
  422.                                                     laser_1_length1_initialization => laser_1_length1_initialization,
  423.                                                     laser_1_offset2_initialization => laser_1_offset2_initialization,
  424.                                                     laser_1_length2_initialization => laser_1_length2_initialization,
  425.                                                     laser_1_offset1_measurement => laser_1_offset1_measurement,
  426.                                                     laser_1_length1_measurement => laser_1_length1_measurement,
  427.                                                     laser_1_offset2_measurement => laser_1_offset2_measurement,
  428.                                                     laser_1_length2_measurement => laser_1_length2_measurement,
  429.                                                    
  430.                                                     laser_2_offset1_initialization => laser_2_offset1_initialization,
  431.                                                     laser_2_length1_initialization => laser_2_length1_initialization,
  432.                                                     laser_2_offset2_initialization => laser_2_offset2_initialization,
  433.                                                     laser_2_length2_initialization => laser_2_length2_initialization,
  434.                                                     laser_2_offset1_measurement => laser_2_offset1_measurement,
  435.                                                     laser_2_length1_measurement => laser_2_length1_measurement,
  436.                                                     laser_2_offset2_measurement => laser_2_offset2_measurement,
  437.                                                     laser_2_length2_measurement => laser_2_length2_measurement,
  438.                                                    
  439.                                                     laser_3_offset1_initialization => laser_3_offset1_initialization,
  440.                                                     laser_3_length1_initialization => laser_3_length1_initialization,
  441.                                                     laser_3_offset2_initialization => laser_3_offset2_initialization,
  442.                                                     laser_3_length2_initialization => laser_3_length2_initialization,
  443.                                                     laser_3_offset1_measurement => laser_3_offset1_measurement,
  444.                                                     laser_3_length1_measurement => laser_3_length1_measurement,
  445.                                                     laser_3_offset2_measurement => laser_3_offset2_measurement,
  446.                                                     laser_3_length2_measurement => laser_3_length2_measurement,
  447.                                                    
  448.                                                     laser_4_offset1_initialization => laser_4_offset1_initialization,
  449.                                                     laser_4_length1_initialization => laser_4_length1_initialization,
  450.                                                     laser_4_offset2_initialization => laser_4_offset2_initialization,
  451.                                                     laser_4_length2_initialization => laser_4_length2_initialization,
  452.                                                     laser_4_offset1_measurement => laser_4_offset1_measurement,
  453.                                                     laser_4_length1_measurement => laser_4_length1_measurement,
  454.                                                     laser_4_offset2_measurement => laser_4_offset2_measurement,
  455.                                                     laser_4_length2_measurement => laser_4_length2_measurement,
  456.                                                    
  457.                                                     htm_dac_1_offset1_initialization => htm_dac_1_offset1_initialization,
  458.                                                     htm_dac_1_length1_initialization => htm_dac_1_length1_initialization,
  459.                                                     htm_dac_1_offset2_initialization => htm_dac_1_offset2_initialization,
  460.                                                     htm_dac_1_length2_initialization => htm_dac_1_length2_initialization,
  461.                                                     htm_dac_1_offset1_measurement => htm_dac_1_offset1_measurement,
  462.                                                     htm_dac_1_length1_measurement => htm_dac_1_length1_measurement,
  463.                                                     htm_dac_1_offset2_measurement => htm_dac_1_offset2_measurement,
  464.                                                     htm_dac_1_length2_measurement => htm_dac_1_length2_measurement,
  465.                                                    
  466.                                                     htm_dac_2_offset1_initialization => htm_dac_2_offset1_initialization,
  467.                                                     htm_dac_2_length1_initialization => htm_dac_2_length1_initialization,
  468.                                                     htm_dac_2_offset2_initialization => htm_dac_2_offset2_initialization,
  469.                                                     htm_dac_2_length2_initialization => htm_dac_2_length2_initialization,
  470.                                                     htm_dac_2_offset1_measurement => htm_dac_2_offset1_measurement,
  471.                                                     htm_dac_2_length1_measurement => htm_dac_2_length1_measurement,
  472.                                                     htm_dac_2_offset2_measurement => htm_dac_2_offset2_measurement,
  473.                                                     htm_dac_2_length2_measurement => htm_dac_2_length2_measurement,
  474.                                                    
  475.                                                     ni_gate_offset1_initialization => ni_gate_offset1_initialization,
  476.                                                     ni_gate_length1_initialization => ni_gate_length1_initialization,
  477.                                                     ni_gate_offset2_initialization => ni_gate_offset2_initialization,
  478.                                                     ni_gate_length2_initialization => ni_gate_length2_initialization,
  479.                                                     ni_gate_offset1_measurement => ni_gate_offset1_measurement,
  480.                                                     ni_gate_length1_measurement => ni_gate_length1_measurement,
  481.                                                     ni_gate_offset2_measurement => ni_gate_offset2_measurement,
  482.                                                     ni_gate_length2_measurement => ni_gate_length2_measurement,
  483.                                                    
  484.                                                     start => start,
  485.                                                     measurement_mode => measurement_mode
  486.                                                 );
  487.  
  488.     inst_experiment_module : experiment_module
  489.                                             generic map (
  490.                                                         max_experiment_repetition_counter_value => max_experiment_repetition_counter_value,
  491.                                                         max_step_counter_value => max_step_counter_value,
  492.                                                         max_initialization_repetition_counter_value => max_initialization_repetition_counter_value,
  493.                                                         max_photon_counter_value => max_photon_counter_value,
  494.                                                        
  495.                                                         max_photon_counter_window_pulse_value => max_photon_counter_window_pulse_value
  496.                                                             )
  497.                                             port map (
  498.                                                         rst => rst,
  499.                                                         clk => clk,
  500.                                                        
  501.                                                         experiment_repetition_counter_threshold => experiment_repetition_counter_threshold,
  502.                                                        
  503.                                                         initialization_repetition_counter_threshold => initialization_repetition_counter_threshold,
  504.                                                        
  505.                                                         step_counter_threshold_initialization => step_counter_threshold_initialization,
  506.                                                         step_counter_threshold_measurement => step_counter_threshold_measurement,
  507.                                                        
  508.                                                         photon_counter_threshold_initialization => photon_counter_threshold_initialization,
  509.                                                         photon_counter_threshold_measurement => photon_counter_threshold_measurement,
  510.                                                        
  511.                                                         photon_counter_window_offset_initialization => photon_counter_window_offset_initialization,
  512.                                                         photon_counter_window_length_initialization => photon_counter_window_length_initialization,
  513.                                                         photon_counter_window_offset_measurement => photon_counter_window_offset_measurement,
  514.                                                         photon_counter_window_length_measurement => photon_counter_window_length_measurement,
  515.                                                        
  516.                                                         laser_1_offset1_initialization => laser_1_offset1_initialization,
  517.                                                         laser_1_length1_initialization => laser_1_length1_initialization,
  518.                                                         laser_1_offset2_initialization => laser_1_offset2_initialization,
  519.                                                         laser_1_length2_initialization => laser_1_length2_initialization,
  520.                                                         laser_1_offset1_measurement => laser_1_offset1_measurement,
  521.                                                         laser_1_length1_measurement => laser_1_length1_measurement,
  522.                                                         laser_1_offset2_measurement => laser_1_offset2_measurement,
  523.                                                         laser_1_length2_measurement => laser_1_length2_measurement,
  524.                                                        
  525.                                                         laser_2_offset1_initialization => laser_2_offset1_initialization,
  526.                                                         laser_2_length1_initialization => laser_2_length1_initialization,
  527.                                                         laser_2_offset2_initialization => laser_2_offset2_initialization,
  528.                                                         laser_2_length2_initialization => laser_2_length2_initialization,
  529.                                                         laser_2_offset1_measurement => laser_2_offset1_measurement,
  530.                                                         laser_2_length1_measurement => laser_2_length1_measurement,
  531.                                                         laser_2_offset2_measurement => laser_2_offset2_measurement,
  532.                                                         laser_2_length2_measurement => laser_2_length2_measurement,
  533.                                                        
  534.                                                         laser_3_offset1_initialization => laser_3_offset1_initialization,
  535.                                                         laser_3_length1_initialization => laser_3_length1_initialization,
  536.                                                         laser_3_offset2_initialization => laser_3_offset2_initialization,
  537.                                                         laser_3_length2_initialization => laser_3_length2_initialization,
  538.                                                         laser_3_offset1_measurement => laser_3_offset1_measurement,
  539.                                                         laser_3_length1_measurement => laser_3_length1_measurement,
  540.                                                         laser_3_offset2_measurement => laser_3_offset2_measurement,
  541.                                                         laser_3_length2_measurement => laser_3_length2_measurement,
  542.                                                        
  543.                                                         laser_4_offset1_initialization => laser_4_offset1_initialization,
  544.                                                         laser_4_length1_initialization => laser_4_length1_initialization,
  545.                                                         laser_4_offset2_initialization => laser_4_offset2_initialization,
  546.                                                         laser_4_length2_initialization => laser_4_length2_initialization,
  547.                                                         laser_4_offset1_measurement => laser_4_offset1_measurement,
  548.                                                         laser_4_length1_measurement => laser_4_length1_measurement,
  549.                                                         laser_4_offset2_measurement => laser_4_offset2_measurement,
  550.                                                         laser_4_length2_measurement => laser_4_length2_measurement,
  551.                                                        
  552.                                                         htm_dac_1_offset1_initialization => htm_dac_1_offset1_initialization,
  553.                                                         htm_dac_1_length1_initialization => htm_dac_1_length1_initialization,
  554.                                                         htm_dac_1_offset2_initialization => htm_dac_1_offset2_initialization,
  555.                                                         htm_dac_1_length2_initialization => htm_dac_1_length2_initialization,
  556.                                                         htm_dac_1_offset1_measurement => htm_dac_1_offset1_measurement,
  557.                                                         htm_dac_1_length1_measurement => htm_dac_1_length1_measurement,
  558.                                                         htm_dac_1_offset2_measurement => htm_dac_1_offset2_measurement,
  559.                                                         htm_dac_1_length2_measurement => htm_dac_1_length2_measurement,
  560.                                                        
  561.                                                         htm_dac_2_offset1_initialization => htm_dac_2_offset1_initialization,
  562.                                                         htm_dac_2_length1_initialization => htm_dac_2_length1_initialization,
  563.                                                         htm_dac_2_offset2_initialization => htm_dac_2_offset2_initialization,
  564.                                                         htm_dac_2_length2_initialization => htm_dac_2_length2_initialization,
  565.                                                         htm_dac_2_offset1_measurement => htm_dac_2_offset1_measurement,
  566.                                                         htm_dac_2_length1_measurement => htm_dac_2_length1_measurement,
  567.                                                         htm_dac_2_offset2_measurement => htm_dac_2_offset2_measurement,
  568.                                                         htm_dac_2_length2_measurement => htm_dac_2_length2_measurement,
  569.                                                        
  570.                                                         ni_gate_offset1_initialization => ni_gate_offset1_initialization,
  571.                                                         ni_gate_length1_initialization => ni_gate_length1_initialization,
  572.                                                         ni_gate_offset2_initialization => ni_gate_offset2_initialization,
  573.                                                         ni_gate_length2_initialization => ni_gate_length2_initialization,
  574.                                                         ni_gate_offset1_measurement => ni_gate_offset1_measurement,
  575.                                                         ni_gate_length1_measurement => ni_gate_length1_measurement,
  576.                                                         ni_gate_offset2_measurement => ni_gate_offset2_measurement,
  577.                                                         ni_gate_length2_measurement => ni_gate_length2_measurement,
  578.                                                        
  579.                                                         start => start,
  580.                                                         measurement_mode => measurement_mode,
  581.                                                    
  582.                                                         trigger_from_awg => r_trigger_from_awg,
  583.                                                         trigger_from_apd => r_trigger_from_apd,
  584.                                                        
  585.                                                         flag_start_experiment => flag_start_experiment,
  586.                                                         flag_hard_limit => flag_hard_limit,
  587.                                                         flag_nv_minus => flag_nv_minus,
  588.                                                        
  589.                                                         trigger_to_awg => trigger_to_awg,
  590.                                                        
  591.                                                         pulse_laser_1 => pulse_laser_1,
  592.                                                         pulse_laser_2 => pulse_laser_2,
  593.                                                         pulse_laser_3 => pulse_laser_3,
  594.                                                         pulse_laser_4 => pulse_laser_4,
  595.                                                        
  596.                                                         pulse_htm_dac_1 => pulse_htm_dac_1,
  597.                                                         pulse_htm_dac_2 => pulse_htm_dac_2,
  598.                                                        
  599.                                                         pulse_ni_gate => pulse_ni_gate
  600.                                                         );
  601.  
  602.  
  603. end behaviour;
RAW Paste Data