Advertisement
Guest User

experiment_module

a guest
Sep 4th, 2020
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
VHDL 30.34 KB | None | 0 0
  1. LIBRARY ieee;
  2. use ieee.numeric_std.all;
  3. use IEEE.std_logic_1164.all;
  4.  
  5. library work;
  6. use work.type_package.all;
  7.  
  8. ENTITY experiment_module IS
  9.     generic (
  10.             max_experiment_repetition_counter_value     :   integer;
  11.             max_step_counter_value                      :   integer;
  12.             max_initialization_repetition_counter_value :   integer;
  13.             max_photon_counter_value                    :   integer;
  14.            
  15.             max_photon_counter_window_pulse_value       :   integer
  16.         );
  17.     PORT(  
  18.             rst                                         :   in  std_logic;
  19.             clk                                         :   in  std_logic;
  20.            
  21.             experiment_repetition_counter_threshold     :   in  integer range 0 to max_experiment_repetition_counter_value;
  22.            
  23.             initialization_repetition_counter_threshold :   in  integer range 0 to max_initialization_repetition_counter_value;
  24.            
  25.             step_counter_threshold_initialization       :   in  integer range 0 to max_step_counter_value;
  26.             step_counter_threshold_measurement          :   in  integer range 0 to max_step_counter_value;
  27.            
  28.             photon_counter_threshold_initialization     :   in  integer range 0 to max_photon_counter_value;
  29.             photon_counter_threshold_measurement        :   in  integer range 0 to max_photon_counter_value;
  30.            
  31.             photon_counter_window_offset_initialization :   in  integer range 0 to max_photon_counter_window_pulse_value;
  32.             photon_counter_window_length_initialization :   in  integer range 0 to max_photon_counter_window_pulse_value;
  33.             photon_counter_window_offset_measurement    :   in  integer range 0 to max_photon_counter_window_pulse_value;
  34.             photon_counter_window_length_measurement    :   in  integer range 0 to max_photon_counter_window_pulse_value;
  35.            
  36.             laser_1_offset1_initialization              :   in  integer range 0 to max_step_counter_value;
  37.             laser_1_length1_initialization              :   in  integer range 0 to max_step_counter_value;
  38.             laser_1_offset2_initialization              :   in  integer range 0 to max_step_counter_value;
  39.             laser_1_length2_initialization              :   in  integer range 0 to max_step_counter_value;
  40.             laser_1_offset1_measurement                 :   in  integer range 0 to max_step_counter_value;
  41.             laser_1_length1_measurement                 :   in  integer range 0 to max_step_counter_value;
  42.             laser_1_offset2_measurement                 :   in  integer range 0 to max_step_counter_value;
  43.             laser_1_length2_measurement                 :   in  integer range 0 to max_step_counter_value;
  44.            
  45.             laser_2_offset1_initialization              :   in  integer range 0 to max_step_counter_value;
  46.             laser_2_length1_initialization              :   in  integer range 0 to max_step_counter_value;
  47.             laser_2_offset2_initialization              :   in  integer range 0 to max_step_counter_value;
  48.             laser_2_length2_initialization              :   in  integer range 0 to max_step_counter_value;
  49.             laser_2_offset1_measurement                 :   in  integer range 0 to max_step_counter_value;
  50.             laser_2_length1_measurement                 :   in  integer range 0 to max_step_counter_value;
  51.             laser_2_offset2_measurement                 :   in  integer range 0 to max_step_counter_value;
  52.             laser_2_length2_measurement                 :   in  integer range 0 to max_step_counter_value;
  53.            
  54.             laser_3_offset1_initialization              :   in  integer range 0 to max_step_counter_value;
  55.             laser_3_length1_initialization              :   in  integer range 0 to max_step_counter_value;
  56.             laser_3_offset2_initialization              :   in  integer range 0 to max_step_counter_value;
  57.             laser_3_length2_initialization              :   in  integer range 0 to max_step_counter_value;
  58.             laser_3_offset1_measurement                 :   in  integer range 0 to max_step_counter_value;
  59.             laser_3_length1_measurement                 :   in  integer range 0 to max_step_counter_value;
  60.             laser_3_offset2_measurement                 :   in  integer range 0 to max_step_counter_value;
  61.             laser_3_length2_measurement                 :   in  integer range 0 to max_step_counter_value;
  62.            
  63.             laser_4_offset1_initialization              :   in  integer range 0 to max_step_counter_value;
  64.             laser_4_length1_initialization              :   in  integer range 0 to max_step_counter_value;
  65.             laser_4_offset2_initialization              :   in  integer range 0 to max_step_counter_value;
  66.             laser_4_length2_initialization              :   in  integer range 0 to max_step_counter_value;
  67.             laser_4_offset1_measurement                 :   in  integer range 0 to max_step_counter_value;
  68.             laser_4_length1_measurement                 :   in  integer range 0 to max_step_counter_value;
  69.             laser_4_offset2_measurement                 :   in  integer range 0 to max_step_counter_value;
  70.             laser_4_length2_measurement                 :   in  integer range 0 to max_step_counter_value;
  71.            
  72.             htm_dac_1_offset1_initialization            :   in  integer range 0 to max_step_counter_value;
  73.             htm_dac_1_length1_initialization            :   in  integer range 0 to max_step_counter_value;
  74.             htm_dac_1_offset2_initialization            :   in  integer range 0 to max_step_counter_value;
  75.             htm_dac_1_length2_initialization            :   in  integer range 0 to max_step_counter_value;
  76.             htm_dac_1_offset1_measurement               :   in  integer range 0 to max_step_counter_value;
  77.             htm_dac_1_length1_measurement               :   in  integer range 0 to max_step_counter_value;
  78.             htm_dac_1_offset2_measurement               :   in  integer range 0 to max_step_counter_value;
  79.             htm_dac_1_length2_measurement               :   in  integer range 0 to max_step_counter_value;
  80.            
  81.             htm_dac_2_offset1_initialization            :   in  integer range 0 to max_step_counter_value;
  82.             htm_dac_2_length1_initialization            :   in  integer range 0 to max_step_counter_value;
  83.             htm_dac_2_offset2_initialization            :   in  integer range 0 to max_step_counter_value;
  84.             htm_dac_2_length2_initialization            :   in  integer range 0 to max_step_counter_value;
  85.             htm_dac_2_offset1_measurement               :   in  integer range 0 to max_step_counter_value;
  86.             htm_dac_2_length1_measurement               :   in  integer range 0 to max_step_counter_value;
  87.             htm_dac_2_offset2_measurement               :   in  integer range 0 to max_step_counter_value;
  88.             htm_dac_2_length2_measurement               :   in  integer range 0 to max_step_counter_value;
  89.            
  90.             ni_gate_offset1_initialization              :   in  integer range 0 to max_step_counter_value;
  91.             ni_gate_length1_initialization              :   in  integer range 0 to max_step_counter_value;
  92.             ni_gate_offset2_initialization              :   in  integer range 0 to max_step_counter_value;
  93.             ni_gate_length2_initialization              :   in  integer range 0 to max_step_counter_value;
  94.             ni_gate_offset1_measurement                 :   in  integer range 0 to max_step_counter_value;
  95.             ni_gate_length1_measurement                 :   in  integer range 0 to max_step_counter_value;
  96.             ni_gate_offset2_measurement                 :   in  integer range 0 to max_step_counter_value;
  97.             ni_gate_length2_measurement                 :   in  integer range 0 to max_step_counter_value;
  98.            
  99.            
  100.             start                                       :   in  std_logic;
  101.             measurement_mode                            :   in  t_measurement;
  102.            
  103.             trigger_from_awg                            :   in  std_logic;
  104.             trigger_from_apd                            :   in  std_logic;
  105.            
  106.             flag_start_experiment                       :   out std_logic;
  107.             flag_hard_limit                             :   out std_logic;
  108.             flag_nv_minus                               :   out std_logic;
  109.            
  110.             trigger_to_awg                              :   out std_logic;
  111.            
  112.             pulse_laser_1                               :   out std_logic;
  113.             pulse_laser_2                               :   out std_logic;
  114.             pulse_laser_3                               :   out std_logic;
  115.             pulse_laser_4                               :   out std_logic;
  116.            
  117.             pulse_htm_dac_1                             :   out std_logic;
  118.             pulse_htm_dac_2                             :   out std_logic;
  119.            
  120.             pulse_ni_gate                               :   out std_logic
  121.         );
  122. END ENTITY experiment_module;
  123.  
  124. ARCHITECTURE behavioural OF experiment_module IS
  125.     component state_machine
  126.         PORT(  
  127.             rst                                         :   in  std_logic;
  128.             clk                                         :   in  std_logic;
  129.            
  130.             start                                       :   in  std_logic;
  131.            
  132.             max_experiment_repetition_count_reached     :   in  std_logic;
  133.             max_step_count_reached                      :   in  std_logic;
  134.             max_initialization_repetition_count_reached :   in  std_logic;
  135.             max_photon_count_reached                    :   in  std_logic;
  136.            
  137.             trigger_from_awg                            :   in  std_logic;
  138.            
  139.             measurement_mode                            :   in  t_measurement;
  140.            
  141.             rst_experiment_repetition_counter           :   out std_logic;
  142.             rst_step_counter                            :   out std_logic;
  143.             rst_initialization_repetition_counter       :   out std_logic;
  144.             rst_photon_counter                          :   out std_logic;
  145.            
  146.             flag_start_experiment                       :   out std_logic;
  147.             flag_hard_limit                             :   out std_logic;
  148.             flag_nv_minus                               :   out std_logic;
  149.            
  150.             inc_experiment_repetition_counter           :   out std_logic;
  151.             inc_step_counter                            :   out std_logic;
  152.             inc_initialization_repetition_counter       :   out std_logic;
  153.            
  154.             trigger_to_awg                              :   out std_logic;
  155.            
  156.             current_state                               :   out t_state
  157.         );
  158.     end component;
  159.    
  160.     component counter
  161.         generic (
  162.                 max_counter_value : integer
  163.         );
  164.         PORT(  
  165.                 rst                     :   in  std_logic;
  166.                 clk                     :   in  std_logic;
  167.                
  168.                 threshold               :   in  integer range 0 to max_counter_value;
  169.                
  170.                 increment               :   in  std_logic;
  171.                 clear                   :   in  std_logic;
  172.                
  173.                 pulse_output            :   in  std_logic;
  174.                
  175.                 counter_value           :   out integer range 0 to max_counter_value;
  176.                
  177.                 threshold_reached       :   out std_logic
  178.             );
  179.     end component;
  180.    
  181.     component multiplexer_counter_state
  182.         generic (
  183.                 max_counter_value : integer
  184.         );
  185.         PORT(  
  186.                 current_state               :   in  t_state;
  187.                
  188.                 threshold_initialization    :   in integer range 0 to max_counter_value;
  189.                 threshold_measurement       :   in integer range 0 to max_counter_value;
  190.                
  191.                 threshold                   :   out integer range 0 to max_counter_value
  192.             );
  193.    
  194.     end component;
  195.  
  196.     component pulser_solo
  197.     generic (
  198.             max_step_value : integer
  199.     );
  200.     PORT(  
  201.             rst                     :   in  std_logic;
  202.             clk                     :   in  std_logic;
  203.            
  204.             clear                   :   in std_logic;
  205.            
  206.             current_step            :   in  integer range 0 to max_step_value;
  207.            
  208.             offset                  :   in  integer range 0 to max_step_value;
  209.             pulse_length            :   in  integer range 0 to max_step_value;
  210.  
  211.             output                  :   out std_logic
  212.         );
  213.     end component;
  214.    
  215.     component pulser_duo
  216.         generic (
  217.             max_step_value : integer
  218.         );
  219.         PORT(  
  220.             rst                     :   in  std_logic;
  221.             clk                     :   in  std_logic;
  222.            
  223.             clear                   :   in  std_logic;
  224.            
  225.             current_step            :   in  integer range 0 to max_step_value;
  226.            
  227.             offset1                 :   in  integer range 0 to max_step_value;
  228.             pulse_length1           :   in  integer range 0 to max_step_value;
  229.            
  230.             offset2                 :   in  integer range 0 to max_step_value;
  231.             pulse_length2           :   in  integer range 0 to max_step_value;
  232.            
  233.            
  234.             output                  :   out std_logic
  235.         );
  236.     end component;
  237.    
  238.     component multiplexer_pulser_solo_state
  239.         generic (
  240.             max_step_value : integer
  241.         );
  242.         PORT(  
  243.             current_state           :   in  t_state;
  244.            
  245.             offset_initialization   :   in integer range 0 to max_step_value;
  246.             length_initialization   :   in integer range 0 to max_step_value;
  247.            
  248.             offset_measurement      :   in integer range 0 to max_step_value;
  249.             length_measurement      :   in integer range 0 to max_step_value;
  250.            
  251.             offset                  :   out integer range 0 to max_step_value;
  252.             len                     :   out integer range 0 to max_step_value
  253.         );
  254.     end component;
  255.    
  256.     component multiplexer_pulser_duo_state
  257.         generic (
  258.             max_step_value : integer
  259.         );
  260.         PORT(  
  261.             current_state           :   in  t_state;
  262.            
  263.             offset1_initialization  :   in integer range 0 to max_step_value;
  264.             length1_initialization  :   in integer range 0 to max_step_value;
  265.            
  266.             offset2_initialization  :   in integer range 0 to max_step_value;
  267.             length2_initialization  :   in integer range 0 to max_step_value;
  268.            
  269.             offset1_measurement     :   in integer range 0 to max_step_value;
  270.             length1_measurement     :   in integer range 0 to max_step_value;
  271.            
  272.             offset2_measurement     :   in integer range 0 to max_step_value;
  273.             length2_measurement     :   in integer range 0 to max_step_value;
  274.            
  275.             offset1                 :   out integer range 0 to max_step_value;
  276.             len1                    :   out integer range 0 to max_step_value;
  277.            
  278.             offset2                 :   out integer range 0 to max_step_value;
  279.             len2                    :   out integer range 0 to max_step_value
  280.         );
  281.     end component;
  282.    
  283.     signal current_state : t_state;
  284.    
  285.     signal  rst_experiment_repetition_counter, rst_photon_counter,
  286.             rst_initialization_repetition_counter, rst_step_counter : std_logic;
  287.            
  288.     signal  inc_experiment_repetition_counter, inc_initialization_repetition_counter,
  289.             inc_step_counter , inc_photon_counter: std_logic;
  290.            
  291.     signal  max_experiment_repetition_count_reached, max_photon_count_reached,
  292.             max_initialization_repetition_count_reached, max_step_count_reached : std_logic;
  293.  
  294.  
  295.     signal  step_counter_threshold, current_step_count : integer range 0 to max_step_counter_value;
  296.     signal  photon_counter_threshold : integer range 0 to max_photon_counter_value;
  297.    
  298.     signal  photon_counter_window_offset : integer range 0 to max_photon_counter_window_pulse_value;
  299.     signal  photon_counter_window_length : integer range 0 to max_photon_counter_window_pulse_value;
  300.    
  301.     signal enable_photon_counter : std_logic;
  302.    
  303.     signal laser_1_offset1, laser_1_length1, laser_1_offset2, laser_1_length2 : integer range 0 to max_step_counter_value;
  304.     signal laser_2_offset1, laser_2_length1, laser_2_offset2, laser_2_length2 : integer range 0 to max_step_counter_value;
  305.     signal laser_3_offset1, laser_3_length1, laser_3_offset2, laser_3_length2 : integer range 0 to max_step_counter_value;
  306.     signal laser_4_offset1, laser_4_length1, laser_4_offset2, laser_4_length2 : integer range 0 to max_step_counter_value;
  307.    
  308.     signal htm_dac_1_offset1, htm_dac_1_length1, htm_dac_1_offset2, htm_dac_1_length2 : integer range 0 to max_step_counter_value;
  309.     signal htm_dac_2_offset1, htm_dac_2_length1, htm_dac_2_offset2, htm_dac_2_length2 : integer range 0 to max_step_counter_value;
  310.    
  311.     signal ni_gate_offset1, ni_gate_length1, ni_gate_offset2, ni_gate_length2 : integer range 0 to max_step_counter_value;
  312. begin
  313.    
  314.  
  315.     inst_counter_experiment_repetition_counter : counter
  316.                                     generic map (
  317.                                             max_counter_value  => max_experiment_repetition_counter_value)
  318.                                     port map (
  319.                                             rst => rst,
  320.                                             clk => clk,
  321.                                            
  322.                                             threshold => experiment_repetition_counter_threshold,
  323.                                            
  324.                                             increment => inc_experiment_repetition_counter,
  325.                                             clear => rst_experiment_repetition_counter,
  326.                                            
  327.                                             pulse_output => '0',
  328.                                            
  329.                                             counter_value => open,
  330.                                            
  331.                                             threshold_reached => max_experiment_repetition_count_reached);
  332.  
  333.                                    
  334.     inst_counter_initialization_repetition_counter : counter
  335.                                     generic map (
  336.                                             max_counter_value  => max_initialization_repetition_counter_value)
  337.                                     port map (
  338.                                             rst => rst,
  339.                                             clk => clk,
  340.                                            
  341.                                             threshold => initialization_repetition_counter_threshold,
  342.                                            
  343.                                             increment => inc_initialization_repetition_counter,
  344.                                             clear => rst_initialization_repetition_counter,
  345.                                            
  346.                                             pulse_output => '0',
  347.                                            
  348.                                             counter_value => open,
  349.                                            
  350.                                             threshold_reached => max_initialization_repetition_count_reached);                                     
  351.    
  352.  
  353.     inst_multiplexer_counter_state_step_counter : multiplexer_counter_state
  354.                                     generic map (
  355.                                             max_counter_value => max_step_counter_value
  356.                                             )
  357.                                     port map (
  358.                                             current_state => current_state,
  359.                                            
  360.                                             threshold_initialization => step_counter_threshold_initialization,
  361.                                             threshold_measurement => step_counter_threshold_measurement,
  362.                                            
  363.                                             threshold => step_counter_threshold);
  364.  
  365.    
  366.     inst_counter_step_counter : counter
  367.                                     generic map (
  368.                                             max_counter_value  => max_step_counter_value)
  369.                                     port map (
  370.                                             rst => rst,
  371.                                             clk => clk,
  372.                                            
  373.                                             threshold => step_counter_threshold,
  374.                                            
  375.                                             increment => inc_step_counter,
  376.                                             clear => rst_step_counter,
  377.                                            
  378.                                             pulse_output => '1',
  379.                                            
  380.                                             counter_value => current_step_count,
  381.                                            
  382.                                             threshold_reached => max_step_count_reached);
  383.                                            
  384.    
  385.     inst_multiplexer_counter_state_photon_counter : multiplexer_counter_state
  386.                                     generic map (
  387.                                             max_counter_value => max_photon_counter_value
  388.                                             )
  389.                                     port map (
  390.                                             current_state => current_state,
  391.                                            
  392.                                             threshold_initialization => photon_counter_threshold_initialization,
  393.                                             threshold_measurement => photon_counter_threshold_measurement,
  394.                                            
  395.                                             threshold => photon_counter_threshold);
  396.  
  397.  
  398.     inst_counter_photon_counter : counter
  399.                                     generic map (
  400.                                             max_counter_value  => max_photon_counter_value)
  401.                                     port map (
  402.                                             rst => rst,
  403.                                             clk => clk,
  404.                                            
  405.                                             threshold => photon_counter_threshold,
  406.                                            
  407.                                             increment => inc_photon_counter,
  408.                                             clear => rst_photon_counter,
  409.                                            
  410.                                             pulse_output => '1',
  411.                                            
  412.                                             counter_value => open,
  413.                                            
  414.                                             threshold_reached => max_photon_count_reached);
  415.                                            
  416.    
  417.     inst_multiplexer_pulser_solo_state_photon_counter_window : multiplexer_pulser_solo_state
  418.                                     generic map (
  419.                                             max_step_value => max_photon_counter_window_pulse_value)
  420.                                     port map (
  421.                                         current_state => current_state,
  422.                                        
  423.                                         offset_initialization => photon_counter_window_offset_initialization,
  424.                                         length_initialization => photon_counter_window_length_initialization,
  425.                                        
  426.                                         offset_measurement => photon_counter_window_offset_measurement,
  427.                                         length_measurement => photon_counter_window_length_measurement,
  428.                                        
  429.                                         offset => photon_counter_window_offset,
  430.                                         len => photon_counter_window_length);
  431.                                        
  432.     inst_pulser_solo_photon_counter_window : pulser_solo
  433.                                     generic map (
  434.                                             max_step_value => max_photon_counter_window_pulse_value
  435.                                             )
  436.                                     port map (
  437.                                         rst => rst,
  438.                                         clk => clk,
  439.                                        
  440.                                         clear => '0',
  441.                                        
  442.                                         current_step => current_step_count,
  443.                                        
  444.                                         offset => photon_counter_window_offset,
  445.                                         pulse_length => photon_counter_window_length,
  446.                                        
  447.                                         output => enable_photon_counter);
  448.  
  449.     inc_photon_counter <= enable_photon_counter and trigger_from_apd;
  450.                                            
  451.     inst_state_machine : state_machine port map(
  452.                                     rst => rst,
  453.                                     clk => clk,
  454.                                    
  455.                                     start => start,
  456.                                     max_experiment_repetition_count_reached => max_experiment_repetition_count_reached,
  457.                                     max_step_count_reached => max_step_count_reached,
  458.                                     max_initialization_repetition_count_reached => max_initialization_repetition_count_reached,
  459.                                     max_photon_count_reached => max_photon_count_reached,
  460.                                     trigger_from_awg => trigger_from_awg,
  461.                                     measurement_mode => measurement_mode,
  462.                                    
  463.                                     rst_experiment_repetition_counter => rst_experiment_repetition_counter,
  464.                                     rst_step_counter => rst_step_counter,
  465.                                     rst_initialization_repetition_counter => rst_initialization_repetition_counter,
  466.                                     rst_photon_counter => rst_photon_counter,
  467.                                    
  468.                                     flag_start_experiment => flag_start_experiment,
  469.                                     flag_hard_limit => flag_hard_limit,
  470.                                     flag_nv_minus => flag_nv_minus,
  471.                                    
  472.                                     inc_experiment_repetition_counter => inc_experiment_repetition_counter,
  473.                                     inc_step_counter => inc_step_counter,
  474.                                     inc_initialization_repetition_counter => inc_initialization_repetition_counter,
  475.                                        
  476.                                     trigger_to_awg => trigger_to_awg,
  477.                                    
  478.                                     current_state => current_state);                           
  479.                                            
  480.                                            
  481.     inst_multiplexer_pulser_duo_state_laser_1 : multiplexer_pulser_duo_state
  482.                                     generic map (
  483.                                                     max_step_value => max_step_counter_value)
  484.                                     port map (
  485.                                                     current_state => current_state,
  486.                                                    
  487.                                                     offset1_initialization => laser_1_offset1_initialization,
  488.                                                     length1_initialization => laser_1_length1_initialization,
  489.                                                    
  490.                                                     offset2_initialization => laser_1_offset2_initialization,
  491.                                                     length2_initialization => laser_1_length2_initialization,
  492.                                                    
  493.                                                     offset1_measurement => laser_1_offset1_measurement,
  494.                                                     length1_measurement => laser_1_length1_measurement,
  495.                                                    
  496.                                                     offset2_measurement => laser_1_offset2_measurement,
  497.                                                     length2_measurement => laser_1_length2_measurement,
  498.                                                    
  499.                                                     offset1 => laser_1_offset1,
  500.                                                     len1 => laser_1_length1,
  501.                                                    
  502.                                                     offset2 => laser_1_offset2,
  503.                                                     len2 => laser_1_length2
  504.                                                     );
  505.                                                    
  506.     inst_pulser_duo_laser_1 : pulser_duo
  507.                                     generic map (
  508.                                                     max_step_value => max_step_counter_value)
  509.                                     port map (
  510.                                                     rst => rst,
  511.                                                     clk => clk,
  512.                                                    
  513.                                                     clear => '0',
  514.                                                    
  515.                                                     current_step => current_step_count,
  516.                                                    
  517.                                                     offset1 => laser_1_offset1,
  518.                                                     pulse_length1 => laser_1_length1,
  519.                                                    
  520.                                                     offset2 => laser_1_offset2,
  521.                                                     pulse_length2 => laser_1_length2,
  522.                                                    
  523.                                                     output => pulse_laser_1);
  524.    
  525.     inst_multiplexer_pulser_duo_state_laser_2 : multiplexer_pulser_duo_state
  526.                                     generic map (
  527.                                                     max_step_value => max_step_counter_value)
  528.                                     port map (
  529.                                                     current_state => current_state,
  530.                                                    
  531.                                                     offset1_initialization => laser_2_offset1_initialization,
  532.                                                     length1_initialization => laser_2_length1_initialization,
  533.                                                    
  534.                                                     offset2_initialization => laser_2_offset2_initialization,
  535.                                                     length2_initialization => laser_2_length2_initialization,
  536.                                                    
  537.                                                     offset1_measurement => laser_2_offset1_measurement,
  538.                                                     length1_measurement => laser_2_length1_measurement,
  539.                                                    
  540.                                                     offset2_measurement => laser_2_offset2_measurement,
  541.                                                     length2_measurement => laser_2_length2_measurement,
  542.                                                    
  543.                                                     offset1 => laser_2_offset1,
  544.                                                     len1 => laser_2_length1,
  545.                                                    
  546.                                                     offset2 => laser_2_offset2,
  547.                                                     len2 => laser_2_length2
  548.                                                     );
  549.                                                    
  550.     inst_pulser_duo_laser_2 : pulser_duo
  551.                                     generic map (
  552.                                                     max_step_value => max_step_counter_value)
  553.                                     port map (
  554.                                                     rst => rst,
  555.                                                     clk => clk,
  556.                                                    
  557.                                                     clear => '0',
  558.                                                    
  559.                                                     current_step => current_step_count,
  560.                                                    
  561.                                                     offset1 => laser_2_offset1,
  562.                                                     pulse_length1 => laser_2_length1,
  563.                                                    
  564.                                                     offset2 => laser_2_offset2,
  565.                                                     pulse_length2 => laser_2_length2,
  566.                                                    
  567.                                                     output => pulse_laser_2);
  568.                                            
  569.     inst_multiplexer_pulser_duo_state_laser_3 : multiplexer_pulser_duo_state
  570.                                     generic map (
  571.                                                     max_step_value => max_step_counter_value)
  572.                                     port map (
  573.                                                     current_state => current_state,
  574.                                                    
  575.                                                     offset1_initialization => laser_3_offset1_initialization,
  576.                                                     length1_initialization => laser_3_length1_initialization,
  577.                                                    
  578.                                                     offset2_initialization => laser_3_offset2_initialization,
  579.                                                     length2_initialization => laser_3_length2_initialization,
  580.                                                    
  581.                                                     offset1_measurement => laser_3_offset1_measurement,
  582.                                                     length1_measurement => laser_3_length1_measurement,
  583.                                                    
  584.                                                     offset2_measurement => laser_3_offset2_measurement,
  585.                                                     length2_measurement => laser_3_length2_measurement,
  586.                                                    
  587.                                                     offset1 => laser_3_offset1,
  588.                                                     len1 => laser_3_length1,
  589.                                                    
  590.                                                     offset2 => laser_3_offset2,
  591.                                                     len2 => laser_3_length2
  592.                                                     );
  593.                                                    
  594.     inst_pulser_duo_laser_3 : pulser_duo
  595.                                     generic map (
  596.                                                     max_step_value => max_step_counter_value)
  597.                                     port map (
  598.                                                     rst => rst,
  599.                                                     clk => clk,
  600.                                                    
  601.                                                     clear => '0',
  602.                                                    
  603.                                                     current_step => current_step_count,
  604.                                                    
  605.                                                     offset1 => laser_3_offset1,
  606.                                                     pulse_length1 => laser_3_length1,
  607.                                                    
  608.                                                     offset2 => laser_3_offset2,
  609.                                                     pulse_length2 => laser_3_length2,
  610.                                                    
  611.                                                     output => pulse_laser_3);
  612.                                                    
  613.     inst_multiplexer_pulser_duo_state_laser_4 : multiplexer_pulser_duo_state
  614.                                     generic map (
  615.                                                     max_step_value => max_step_counter_value)
  616.                                     port map (
  617.                                                     current_state => current_state,
  618.                                                    
  619.                                                     offset1_initialization => laser_4_offset1_initialization,
  620.                                                     length1_initialization => laser_4_length1_initialization,
  621.                                                    
  622.                                                     offset2_initialization => laser_4_offset2_initialization,
  623.                                                     length2_initialization => laser_4_length2_initialization,
  624.                                                    
  625.                                                     offset1_measurement => laser_4_offset1_measurement,
  626.                                                     length1_measurement => laser_4_length1_measurement,
  627.                                                    
  628.                                                     offset2_measurement => laser_4_offset2_measurement,
  629.                                                     length2_measurement => laser_4_length2_measurement,
  630.                                                    
  631.                                                     offset1 => laser_4_offset1,
  632.                                                     len1 => laser_4_length1,
  633.                                                    
  634.                                                     offset2 => laser_4_offset2,
  635.                                                     len2 => laser_4_length2
  636.                                                     );
  637.                                                    
  638.     inst_pulser_duo_laser_4 : pulser_duo
  639.                                     generic map (
  640.                                                     max_step_value => max_step_counter_value)
  641.                                     port map (
  642.                                                     rst => rst,
  643.                                                     clk => clk,
  644.                                                    
  645.                                                     clear => '0',
  646.                                                    
  647.                                                     current_step => current_step_count,
  648.                                                    
  649.                                                     offset1 => laser_4_offset1,
  650.                                                     pulse_length1 => laser_4_length1,
  651.                                                    
  652.                                                     offset2 => laser_4_offset2,
  653.                                                     pulse_length2 => laser_4_length2,
  654.                                                    
  655.                                                     output => pulse_laser_4);
  656.    
  657.     inst_multiplexer_pulser_duo_state_htm_dac_1 : multiplexer_pulser_duo_state
  658.                                     generic map (
  659.                                                     max_step_value => max_step_counter_value)
  660.                                     port map (
  661.                                                     current_state => current_state,
  662.                                                    
  663.                                                     offset1_initialization => htm_dac_1_offset1_initialization,
  664.                                                     length1_initialization => htm_dac_1_length1_initialization,
  665.                                                    
  666.                                                     offset2_initialization => htm_dac_1_offset2_initialization,
  667.                                                     length2_initialization => htm_dac_1_length2_initialization,
  668.                                                    
  669.                                                     offset1_measurement => htm_dac_1_offset1_measurement,
  670.                                                     length1_measurement => htm_dac_1_length1_measurement,
  671.                                                    
  672.                                                     offset2_measurement => htm_dac_1_offset2_measurement,
  673.                                                     length2_measurement => htm_dac_1_length2_measurement,
  674.                                                    
  675.                                                     offset1 => htm_dac_1_offset1,
  676.                                                     len1 => htm_dac_1_length1,
  677.                                                    
  678.                                                     offset2 => htm_dac_1_offset2,
  679.                                                     len2 => htm_dac_1_length2
  680.                                                     );
  681.                                                    
  682.     inst_pulser_duo_htm_dac_1: pulser_duo
  683.                                     generic map (
  684.                                                     max_step_value => max_step_counter_value)
  685.                                     port map (
  686.                                                     rst => rst,
  687.                                                     clk => clk,
  688.                                                    
  689.                                                     clear => '0',
  690.                                                    
  691.                                                     current_step => current_step_count,
  692.                                                    
  693.                                                     offset1 => htm_dac_1_offset1,
  694.                                                     pulse_length1 => htm_dac_1_length1,
  695.                                                    
  696.                                                     offset2 => htm_dac_1_offset2,
  697.                                                     pulse_length2 => htm_dac_1_length2,
  698.                                                    
  699.                                                     output => pulse_htm_dac_1);
  700.                                                    
  701.     inst_multiplexer_pulser_duo_state_htm_dac_2 : multiplexer_pulser_duo_state
  702.                                     generic map (
  703.                                                     max_step_value => max_step_counter_value)
  704.                                     port map (
  705.                                                     current_state => current_state,
  706.                                                    
  707.                                                     offset1_initialization => htm_dac_2_offset1_initialization,
  708.                                                     length1_initialization => htm_dac_2_length1_initialization,
  709.                                                    
  710.                                                     offset2_initialization => htm_dac_2_offset2_initialization,
  711.                                                     length2_initialization => htm_dac_2_length2_initialization,
  712.                                                    
  713.                                                     offset1_measurement => htm_dac_2_offset1_measurement,
  714.                                                     length1_measurement => htm_dac_2_length1_measurement,
  715.                                                    
  716.                                                     offset2_measurement => htm_dac_2_offset2_measurement,
  717.                                                     length2_measurement => htm_dac_2_length2_measurement,
  718.                                                    
  719.                                                     offset1 => htm_dac_2_offset1,
  720.                                                     len1 => htm_dac_2_length1,
  721.                                                    
  722.                                                     offset2 => htm_dac_2_offset2,
  723.                                                     len2 => htm_dac_2_length2
  724.                                                     );
  725.                                                    
  726.     inst_pulser_duo_htm_dac_2: pulser_duo
  727.                                     generic map (
  728.                                                     max_step_value => max_step_counter_value)
  729.                                     port map (
  730.                                                     rst => rst,
  731.                                                     clk => clk,
  732.                                                    
  733.                                                     clear => '0',
  734.                                                    
  735.                                                     current_step => current_step_count,
  736.                                                    
  737.                                                     offset1 => htm_dac_2_offset1,
  738.                                                     pulse_length1 => htm_dac_2_length1,
  739.                                                    
  740.                                                     offset2 => htm_dac_2_offset2,
  741.                                                     pulse_length2 => htm_dac_2_length2,
  742.                                                    
  743.                                                     output => pulse_htm_dac_2);
  744.    
  745.     inst_multiplexer_pulser_duo_state_ni_gate : multiplexer_pulser_duo_state
  746.                                     generic map (
  747.                                                     max_step_value => max_step_counter_value)
  748.                                     port map (
  749.                                                     current_state => current_state,
  750.                                                    
  751.                                                     offset1_initialization => ni_gate_offset1_initialization,
  752.                                                     length1_initialization => ni_gate_length1_initialization,
  753.                                                    
  754.                                                     offset2_initialization => ni_gate_offset2_initialization,
  755.                                                     length2_initialization => ni_gate_length2_initialization,
  756.                                                    
  757.                                                     offset1_measurement => ni_gate_offset1_measurement,
  758.                                                     length1_measurement => ni_gate_length1_measurement,
  759.                                                    
  760.                                                     offset2_measurement => ni_gate_offset2_measurement,
  761.                                                     length2_measurement => ni_gate_length2_measurement,
  762.                                                    
  763.                                                     offset1 => ni_gate_offset1,
  764.                                                     len1 => ni_gate_length1,
  765.                                                    
  766.                                                     offset2 => ni_gate_offset2,
  767.                                                     len2 => ni_gate_length2
  768.                                                     );
  769.                                                    
  770.     inst_pulser_duo_ni_gate: pulser_duo
  771.                                     generic map (
  772.                                                     max_step_value => max_step_counter_value)
  773.                                     port map (
  774.                                                     rst => rst,
  775.                                                     clk => clk,
  776.                                                    
  777.                                                     clear => '0',
  778.                                                    
  779.                                                     current_step => current_step_count,
  780.                                                    
  781.                                                     offset1 => ni_gate_offset1,
  782.                                                     pulse_length1 => ni_gate_length1,
  783.                                                    
  784.                                                     offset2 => ni_gate_offset2,
  785.                                                     pulse_length2 => ni_gate_length2,
  786.                                                    
  787.                                                     output => pulse_ni_gate);
  788.                                                    
  789.     -- process(rst, clk) is
  790.     -- begin
  791.         -- if rst = '1' then
  792.             -- current_state <= s_setup;
  793.         -- elsif rising_edge(clk) then
  794.             -- current_state <= state_buff;
  795.         -- end if;
  796.     -- end process;
  797. end architecture behavioural;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement