- Timestamp:
- 01/27/11 08:32:16 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
firmware/FAD/FACT_FAD_20MHz_VAR_PS/FACT_FAD_lib/hdl/fad_main_struct.vhd
r10081 r10121 3 3 -- Created: 4 4 -- by - dneise.UNKNOWN (E5B-LABOR6) 5 -- at - 1 7:46:33 05.01.20115 -- at - 16:46:18 26.01.2011 6 6 -- 7 7 -- Generated by Mentor Graphics' HDL Designer(TM) 2009.2 (Build 10) … … 18 18 ); 19 19 PORT( 20 CLK : IN std_logic; 21 SROUT_in_0 : IN std_logic; 22 SROUT_in_1 : IN std_logic; 23 SROUT_in_2 : IN std_logic; 24 SROUT_in_3 : IN std_logic; 25 adc_data_array : IN adc_data_array_type; 26 adc_otr_array : IN std_logic_vector (3 DOWNTO 0); 27 board_id : IN std_logic_vector (3 DOWNTO 0); 28 crate_id : IN std_logic_vector (1 DOWNTO 0); 29 trigger : IN std_logic; 30 wiz_int : IN std_logic; 31 CLK25_OUT : OUT std_logic; 32 CLK25_PSOUT : OUT std_logic; 33 CLK50_OUT : OUT std_logic; 34 CLK_25_PS : OUT std_logic; 35 CLK_50 : OUT std_logic; 36 DCM_locked : OUT std_logic; 37 LOCKED_extraOUT : OUT std_logic; 38 PSCLK_OUT : OUT std_logic; 39 PSDONE_extraOUT : OUT std_logic; 40 PSEN_OUT : OUT std_logic; 41 PSINCDEC_OUT : OUT std_logic; 42 PS_DIR_IN : OUT std_logic; 43 PS_DO_IN : OUT std_logic; 44 RSRLOAD : OUT std_logic := '0'; 45 SRCLK : OUT std_logic := '0'; 46 SRIN_out : OUT std_logic := '0'; 47 adc_clk_en : OUT std_logic := '0'; 48 adc_oeb : OUT std_logic := '1'; 49 amber : OUT std_logic; 50 dac_cs : OUT std_logic; 51 denable : OUT std_logic := '0'; -- default domino wave off 52 drs_channel_id : OUT std_logic_vector (3 DOWNTO 0) := (others => '0'); 53 drs_dwrite : OUT std_logic := '1'; 54 green : OUT std_logic; 55 led : OUT std_logic_vector (7 DOWNTO 0) := (OTHERS => '0'); 56 mosi : OUT std_logic := '0'; 57 offset : OUT std_logic_vector (7 DOWNTO 0) := (OTHERS => '0'); 58 ready : OUT std_logic := '0'; 59 red : OUT std_logic; 60 sclk : OUT std_logic; 61 sensor_cs : OUT std_logic_vector (3 DOWNTO 0); 20 CLK : IN std_logic; 21 SROUT_in_0 : IN std_logic; 22 SROUT_in_1 : IN std_logic; 23 SROUT_in_2 : IN std_logic; 24 SROUT_in_3 : IN std_logic; 25 adc_data_array : IN adc_data_array_type; 26 adc_otr_array : IN std_logic_vector (3 DOWNTO 0); 27 board_id : IN std_logic_vector (3 DOWNTO 0); 28 crate_id : IN std_logic_vector (1 DOWNTO 0); 29 trigger : IN std_logic; 30 wiz_int : IN std_logic; 31 CLK25_OUT : OUT std_logic; 32 CLK25_PSOUT : OUT std_logic; 33 CLK50_OUT : OUT std_logic; 34 CLK_25_PS : OUT std_logic; 35 CLK_50 : OUT std_logic; 36 DCM_locked : OUT std_logic; 37 LOCKED_extraOUT : OUT std_logic; 38 PSCLK_OUT : OUT std_logic; 39 PSDONE_extraOUT : OUT std_logic; 40 PSINCDEC_OUT : OUT std_logic; 41 PS_DIR_IN : OUT std_logic; 42 RSRLOAD : OUT std_logic := '0'; 43 SRCLK : OUT std_logic := '0'; 44 SRIN_out : OUT std_logic := '0'; 45 adc_clk_en : OUT std_logic := '0'; 46 adc_oeb : OUT std_logic := '1'; 47 additional_flasher_out : OUT std_logic; 48 amber : OUT std_logic; 49 dac_cs : OUT std_logic; 50 denable : OUT std_logic := '0'; -- default domino wave off 51 drs_channel_id : OUT std_logic_vector (3 DOWNTO 0) := (others => '0'); 52 drs_dwrite : OUT std_logic := '1'; 53 green : OUT std_logic; 54 led : OUT std_logic_vector (7 DOWNTO 0) := (OTHERS => '0'); 55 mosi : OUT std_logic := '0'; 56 offset : OUT std_logic_vector (7 DOWNTO 0) := (OTHERS => '0'); 57 ready : OUT std_logic := '0'; 58 red : OUT std_logic; 59 sclk : OUT std_logic; 60 sensor_cs : OUT std_logic_vector (3 DOWNTO 0); 62 61 -- status: 63 shifting : OUT std_logic := '0';64 wiz_addr : OUT std_logic_vector (9 DOWNTO 0);65 wiz_cs : OUT std_logic := '1';66 wiz_rd : OUT std_logic := '1';67 wiz_reset : OUT std_logic := '1';68 wiz_wr : OUT std_logic := '1';69 sio : INOUT std_logic;70 wiz_data : INOUT std_logic_vector (15 DOWNTO 0)62 shifting : OUT std_logic := '0'; 63 wiz_addr : OUT std_logic_vector (9 DOWNTO 0); 64 wiz_cs : OUT std_logic := '1'; 65 wiz_rd : OUT std_logic := '1'; 66 wiz_reset : OUT std_logic := '1'; 67 wiz_wr : OUT std_logic := '1'; 68 sio : INOUT std_logic; 69 wiz_data : INOUT std_logic_vector (15 DOWNTO 0) 71 70 ); 72 71 … … 80 79 -- Created: 81 80 -- by - dneise.UNKNOWN (E5B-LABOR6) 82 -- at - 1 7:46:34 05.01.201181 -- at - 16:46:19 26.01.2011 83 82 -- 84 83 -- Generated by Mentor Graphics' HDL Designer(TM) 2009.2 (Build 10) … … 93 92 94 93 library UNISIM; 95 use UNISIM.VComponents.all;94 --use UNISIM.VComponents.all; 96 95 USE IEEE.NUMERIC_STD.all; 97 96 USE IEEE.std_logic_signed.all; … … 109 108 SIGNAL adc_otr : std_logic_vector(3 DOWNTO 0); 110 109 SIGNAL addr_out : std_logic_vector(RAMADDRWIDTH64b-1 DOWNTO 0); 110 SIGNAL c_trigger_enable : std_logic := '0'; 111 SIGNAL c_trigger_mult : std_logic_vector(7 DOWNTO 0) := (OTHERS => '1'); --subject to changes 111 112 SIGNAL config_addr : std_logic_vector(7 DOWNTO 0); 112 113 SIGNAL config_busy : std_logic; … … 131 132 SIGNAL dac_array : dac_array_type; 132 133 SIGNAL data_out : std_logic_vector(63 DOWNTO 0); 134 SIGNAL dout : std_logic; 135 SIGNAL dout1 : std_logic; 133 136 SIGNAL drs_address : std_logic_vector(3 DOWNTO 0) := (others => '0'); 134 137 SIGNAL drs_address_mode : std_logic; … … 137 140 SIGNAL drs_read_s_cell : std_logic := '0'; 138 141 SIGNAL drs_read_s_cell_ready : std_logic; 142 -- -- 143 -- drs_dwrite : out std_logic := '1'; 144 SIGNAL drs_readout_ready : std_logic := '0'; 145 SIGNAL drs_readout_ready_ack : std_logic; 139 146 SIGNAL drs_readout_started : std_logic; 140 147 SIGNAL drs_s_cell_array : drs_s_cell_array_type; … … 157 164 SIGNAL roi_max : roi_max_type; 158 165 SIGNAL s_trigger : std_logic; 166 SIGNAL s_trigger_0 : std_logic; 159 167 SIGNAL sclk1 : std_logic; 160 168 SIGNAL sclk_enable : std_logic; … … 167 175 SIGNAL srin_write_ready : std_logic := '0'; 168 176 SIGNAL start_srin_write_8b : std_logic; 177 SIGNAL trigger1 : std_logic; 178 SIGNAL trigger_enable : std_logic; 169 179 SIGNAL trigger_id : std_logic_vector(47 DOWNTO 0); 170 180 SIGNAL trigger_out : std_logic; … … 207 217 PSCLK_OUT : OUT std_logic ; 208 218 PSDONE_extraOUT : OUT std_logic ; 209 PSEN_OUT : OUT std_logic ;210 219 PSINCDEC_OUT : OUT std_logic ; 211 220 offset : OUT std_logic_vector (7 DOWNTO 0) := (OTHERS => '0'); … … 213 222 -- status: 214 223 shifting : OUT std_logic := '0' 224 ); 225 END COMPONENT; 226 COMPONENT continous_pulser 227 GENERIC ( 228 MINIMAL_TRIGGER_WAIT_TIME : integer := 250000 229 ); 230 PORT ( 231 CLK : IN std_logic; 232 enable : IN std_logic; 233 multiplier : IN std_logic_vector (7 DOWNTO 0); 234 trigger : OUT std_logic 215 235 ); 216 236 END COMPONENT; … … 291 311 adc_otr : IN std_logic_vector (3 DOWNTO 0); 292 312 drs_channel_id : OUT std_logic_vector (3 DOWNTO 0) := (others => '0'); 293 drs_dwrite : OUT std_logic := '1'; 313 -- -- 314 -- drs_dwrite : out std_logic := '1'; 315 drs_readout_ready : OUT std_logic := '0'; 316 drs_readout_ready_ack : IN std_logic ; 317 -- -- 294 318 drs_clk_en : OUT std_logic := '0'; 319 -- -- 295 320 drs_read_s_cell : OUT std_logic := '0'; 296 321 drs_srin_write_8b : OUT std_logic := '0'; … … 300 325 drs_read_s_cell_ready : IN std_logic ; 301 326 drs_s_cell_array : IN drs_s_cell_array_type ; 302 drs_readout_started : OUT std_logic 327 drs_readout_started : OUT std_logic := '0' 303 328 ); 304 329 END COMPONENT; … … 325 350 COMPONENT led_controller 326 351 GENERIC ( 327 HEARTBEAT_PWM_DIVIDER : integer := 500; -- 1kHz @ 50 MHz 328 MAX_DELAY : integer := 100; 329 WAITING_DIVIDER : integer := 500000000 -- 1Hz @ 50 MHz 330 ); 331 PORT ( 332 CLK : IN std_logic; 333 socks_connected : IN std_logic; 334 socks_waiting : IN std_logic; 335 trigger : IN std_logic; 336 amber : OUT std_logic; 337 green : OUT std_logic; 338 red : OUT std_logic 352 HEARTBEAT_PWM_DIVIDER : integer := 500; 353 MAX_DELAY : integer := 100; --not used anymore at all :-( 354 WAITING_DIVIDER : integer := 500000000 355 ); 356 PORT ( 357 CLK : IN std_logic; 358 socks_connected : IN std_logic; 359 socks_waiting : IN std_logic; 360 trigger : IN std_logic; 361 additional_flasher_out : OUT std_logic; 362 amber : OUT std_logic; 363 green : OUT std_logic; 364 red : OUT std_logic 339 365 ); 340 366 END COMPONENT; … … 389 415 trigger : IN std_logic ; 390 416 clk : IN std_logic 417 ); 418 END COMPONENT; 419 COMPONENT trigger_manager 420 PORT ( 421 clk : IN std_logic; 422 drs_readout_ready : IN std_logic; 423 trigger_in : IN std_logic; 424 drs_readout_ready_ack : OUT std_logic := '0'; 425 drs_write : OUT std_logic := '1'; 426 trigger_out : OUT std_logic := '0' 391 427 ); 392 428 END COMPONENT; … … 415 451 write_end_flag : IN std_logic ; 416 452 fifo_channels : IN std_logic_vector (3 DOWNTO 0); 453 -- softtrigger: 417 454 s_trigger : OUT std_logic := '0'; 455 c_trigger_enable : OUT std_logic := '0'; 456 c_trigger_mult : OUT std_logic_vector (7 DOWNTO 0) := (OTHERS => '1'); --subject TO changes 457 -- 418 458 new_config : OUT std_logic := '0'; 419 459 config_started : IN std_logic ; … … 428 468 -- -- 429 469 config_busy : IN std_logic ; 430 denable : OUT std_logic := '0'; -- default domino wave off 431 dwrite_enable : OUT std_logic := '0'; -- default DWRITE low. 432 sclk_enable : OUT std_logic := '1'; -- default DWRITE HIGH. 433 ps_direction : OUT std_logic := '1'; -- default phase shift upwards 434 ps_do_phase_shift : OUT std_logic := '0'; --pulse this TO phase shift once 435 ps_reset : OUT std_logic := '0'; -- pulse this TO reset the variable phase shift 436 srclk_enable : OUT std_logic := '1'; -- default SRCLK on. 470 denable : OUT std_logic := '0'; -- default domino wave off 471 dwrite_enable : OUT std_logic := '0'; -- default DWRITE low. 472 sclk_enable : OUT std_logic := '1'; -- default DWRITE HIGH. 473 ps_direction : OUT std_logic := '1'; -- default phase shift upwards 474 ps_do_phase_shift : OUT std_logic := '0'; --pulse this TO phase shift once 475 ps_reset : OUT std_logic := '0'; -- pulse this TO reset the variable phase shift 476 srclk_enable : OUT std_logic := '1'; -- default SRCLK on. 477 trigger_enable : OUT std_logic := '0'; -- default triggers are NOT accepted 437 478 socks_waiting : OUT std_logic ; 438 479 socks_connected : OUT std_logic … … 444 485 FOR ALL : adc_buffer USE ENTITY FACT_FAD_lib.adc_buffer; 445 486 FOR ALL : clock_generator_var_ps USE ENTITY FACT_FAD_lib.clock_generator_var_ps; 487 FOR ALL : continous_pulser USE ENTITY FACT_FAD_lib.continous_pulser; 446 488 FOR ALL : control_unit USE ENTITY FACT_FAD_lib.control_unit; 447 489 FOR ALL : dataRAM_64b_16b_width14_5 USE ENTITY FACT_FAD_lib.dataRAM_64b_16b_width14_5; … … 452 494 FOR ALL : spi_interface USE ENTITY FACT_FAD_lib.spi_interface; 453 495 FOR ALL : trigger_counter USE ENTITY FACT_FAD_lib.trigger_counter; 496 FOR ALL : trigger_manager USE ENTITY FACT_FAD_lib.trigger_manager; 454 497 FOR ALL : w5300_modul USE ENTITY FACT_FAD_lib.w5300_modul; 455 498 -- pragma synthesis_on … … 467 510 sclk <= sclk_enable AND sclk1; 468 511 469 -- ModuleWare code(v1.9) for instance 'U_ 3' of 'assignment'470 PS_DO_IN <= ps_do_phase_shift;512 -- ModuleWare code(v1.9) for instance 'U_11' of 'and' 513 dout1 <= dout AND trigger_enable; 471 514 472 515 -- ModuleWare code(v1.9) for instance 'U_5' of 'assignment' … … 494 537 495 538 -- ModuleWare code(v1.9) for instance 'U_9' of 'or' 496 trigger_out <= s_trigger OR trigger; 539 dout <= s_trigger OR trigger; 540 541 -- ModuleWare code(v1.9) for instance 'U_13' of 'or' 542 s_trigger <= s_trigger_0 OR trigger1; 497 543 498 544 -- Instance port mappings. … … 518 564 PSCLK_OUT => PSCLK_OUT, 519 565 PSDONE_extraOUT => PSDONE_extraOUT, 520 PSEN_OUT => PSEN_OUT,521 566 PSINCDEC_OUT => PSINCDEC_OUT, 522 567 offset => offset, 523 568 ready => ready, 524 569 shifting => shifting 570 ); 571 U_3 : continous_pulser 572 GENERIC MAP ( 573 MINIMAL_TRIGGER_WAIT_TIME => 250000 574 ) 575 PORT MAP ( 576 CLK => CLK_25, 577 enable => c_trigger_enable, 578 multiplier => c_trigger_mult, 579 trigger => trigger1 525 580 ); 526 581 I_main_control_unit : control_unit … … 590 645 adc_otr => adc_otr, 591 646 drs_channel_id => drs_channel_internal, 592 drs_dwrite => dwrite, 647 drs_readout_ready => drs_readout_ready, 648 drs_readout_ready_ack => drs_readout_ready_ack, 593 649 drs_clk_en => drs_clk_en, 594 650 drs_read_s_cell => drs_read_s_cell, … … 627 683 ) 628 684 PORT MAP ( 629 CLK => CLK_50_internal, 630 green => green, 631 amber => amber, 632 red => red, 633 trigger => drs_readout_started, 634 socks_waiting => socks_waiting, 635 socks_connected => socks_connected 685 CLK => CLK_50_internal, 686 green => green, 687 amber => amber, 688 red => red, 689 additional_flasher_out => additional_flasher_out, 690 trigger => drs_readout_started, 691 socks_waiting => socks_waiting, 692 socks_connected => socks_connected 636 693 ); 637 694 I_main_memory_manager : memory_manager … … 682 739 clk => CLK_25_PS_internal 683 740 ); 741 U_12 : trigger_manager 742 PORT MAP ( 743 clk => CLK_25, 744 trigger_in => dout1, 745 trigger_out => trigger_out, 746 drs_write => dwrite, 747 drs_readout_ready => drs_readout_ready, 748 drs_readout_ready_ack => drs_readout_ready_ack 749 ); 684 750 I_main_ethernet : w5300_modul 685 751 GENERIC MAP ( … … 706 772 write_end_flag => wiz_write_end, 707 773 fifo_channels => wiz_number_of_channels, 708 s_trigger => s_trigger, 774 s_trigger => s_trigger_0, 775 c_trigger_enable => c_trigger_enable, 776 c_trigger_mult => c_trigger_mult, 709 777 new_config => new_config, 710 778 config_started => config_started, … … 723 791 ps_reset => ps_reset, 724 792 srclk_enable => srclk_enable, 793 trigger_enable => trigger_enable, 725 794 socks_waiting => socks_waiting, 726 795 socks_connected => socks_connected
Note:
See TracChangeset
for help on using the changeset viewer.