Clock Card firmware

From MCEWiki
Revision as of 13:56, 12 May 2009 by 142.103.235.227 (talk)

Clock Card firmware revisions may implement different data packet header formats. All of the different formats are documented here.

Firmware Revision Listing

Revision 5.0.1

  • Filename: cc_v05000001_12may2009.sof
  • To Do:
    • ---
  • Features:
    • STOP commands are meant to work in this revision.
  • Details:
    • Differences between 5.0.0 and 5.0.1:
  • Bugs:
    • None yet reported
  • FPGA Resource Usage (clk_card.fit.rpt):
  • Timing Analyzer Summary (clk_card.tan.rpt):


Revision 5.0.0 (Latest Release)

  • Filename: cc_v05000000_22dec2008.sof
  • To Do:
    • ---
  • Features:
    • IMPORTANT: Must be used in conjunction with firmware v05000000 of all other cards!!!
    • This version is based on 4.0.a. That is, it includes all of the features that were under development in 4.0.a, even though 4.0.a was not released for telescope use.
    • Header Version 6
    • Added the ability to read out a single column of data continuously from one Readout Card
    • New commands include: readout_col_index, readout_priority, num_cols_reported
    • To allow enough data bandwidth, the spare LVDS line from each card to the Clock Card is now used
  • Details:
    • Differences between 4.0.9 and 5.0.0:
U system/test/source/tb/tb_cc_rcs_bcs_ac.vhd
U all_cards/all_cards/source/rtl/all_cards.vhd
P all_cards/all_cards/source/rtl/all_cards_pack.vhd
U all_cards/async/source/rtl/lvds_rx.vhd
U all_cards/async/source/rtl/lvds_tx.vhd
U all_cards/dispatch/source/rtl/dispatch.vhd
U all_cards/dispatch/source/rtl/dispatch_reply_transmit.vhd
U all_cards/dispatch/source/rtl/dispatch_wishbone.vhd
U all_cards/frame_timing/source/rtl/frame_timing.vhd
U all_cards/frame_timing/source/rtl/frame_timing_core.vhd
P all_cards/frame_timing/source/rtl/frame_timing_pack.vhd
U all_cards/frame_timing/source/rtl/frame_timing_wbs.vhd
U clk_card/clk_card/source/rtl/clk_card.vhd
P clk_card/clk_card/source/rtl/clk_card_pack.vhd
P clk_card/clk_card/synth/clk_card.fit.rpt
P clk_card/clk_card/synth/clk_card.fit.summary
P clk_card/clk_card/synth/clk_card.map.rpt
U clk_card/clk_card/synth/clk_card.qsf
P clk_card/clk_card/synth/clk_card.qws
U clk_card/clk_card/synth/clk_card.sof
P clk_card/clk_card/synth/clk_card.tan.rpt
P clk_card/clk_card/synth/clk_card.tan.summary
U clk_card/issue_reply/source/rtl/cmd_translator.vhd
U clk_card/issue_reply/source/rtl/issue_reply.vhd
P clk_card/issue_reply/source/rtl/issue_reply_pack.vhd
U clk_card/issue_reply/source/rtl/reply_queue.vhd
U clk_card/issue_reply/source/rtl/reply_queue_receive.vhd
U clk_card/issue_reply/source/rtl/reply_queue_sequencer.vhd
P clk_card/issue_reply/source/rtl/reply_translator.vhd
U clk_card/ret_dat/source/rtl/ret_dat_wbs.vhd
U clk_card/ret_dat/source/rtl/ret_dat_wbs_pack.vhd
U clk_card/sync_gen/source/rtl/sync_gen.vhd
U clk_card/sync_gen/source/rtl/sync_gen_wbs.vhd
U library/components/source/rtl/parallel_crc.vhd
U library/sys_param/source/rtl/data_types_pack.vhd
U library/sys_param/source/rtl/wishbone_pack.vhd
  • Bugs:
    • None yet reported
  • FPGA Resource Usage (clk_card.fit.rpt):
+---------------------------------------------------------------------+
; Fitter Summary                                                      ;
+--------------------------+------------------------------------------+
; Fitter Status            ; Successful - Thu Jan 15 17:18:34 2009    ;
; Quartus II Version       ; 8.1 Build 163 10/28/2008 SJ Full Version ;
; Revision Name            ; readout_card                             ;
; Top-level Entity Name    ; readout_card                             ;
; Family                   ; Stratix                                  ;
; Device                   ; EP1S40F780C6                             ;
; Timing Models            ; Final                                    ;
; Total logic elements     ; 26,607 / 41,250 ( 65 % )                 ;
; Total pins               ; 358 / 616 ( 58 % )                       ;
; Total virtual pins       ; 0                                        ;
; Total memory bits        ; 406,016 / 3,423,744 ( 12 % )             ;
; DSP block 9-bit elements ; 76 / 112 ( 68 % )                        ;
; Total PLLs               ; 1 / 6 ( 17 % )                           ;
; Total DLLs               ; 0 / 2 ( 0 % )                            ;
+--------------------------+------------------------------------------+
  • Timing Analyzer Summary (clk_card.tan.rpt):
+--------------------------------------------------------------------------- 
; Timing Analyzer Summary
+--------------------------------------------------------------+-----------+
; Type                                                         ; Slack     ;
+--------------------------------------------------------------+-----------+
; Worst-case tsu                                               ; N/A       ;
; Worst-case tco                                               ; N/A       ;
; Worst-case th                                                ; N/A       ;
; Clock Setup: 'rc_pll:i_rc_pll|altpll:altpll_component|_clk0' ; 2.558 ns  ;
; Clock Setup: 'rc_pll:i_rc_pll|altpll:altpll_component|_clk2' ; 3.892 ns  ;
; Clock Setup: 'rc_pll:i_rc_pll|altpll:altpll_component|_clk3' ; 16.987 ns ;
; Clock Hold: 'rc_pll:i_rc_pll|altpll:altpll_component|_clk0'  ; 0.741 ns  ;
; Clock Hold: 'rc_pll:i_rc_pll|altpll:altpll_component|_clk2'  ; 0.762 ns  ;
; Clock Hold: 'rc_pll:i_rc_pll|altpll:altpll_component|_clk3'  ; 0.763 ns  ;
; Total number of failed paths                                 ;           ;
+--------------------------------------------------------------+-----------+

Revision 4.0.a (Intermediate Version, Not for Telescope Use)

  • Filename: cc_v0400000a_16oct2008
  • To Do:
    • Make sure that the errno word, and the cards to report word in the data frame header agree with cards_to_report
  • Features:
    • Header Version 6
    • Added stop_dly, rcs_to_report_data, and cards_to_report commands
    • Added support for commands to the MCE during data acquisition
  • Details:
    • clk_card.vhd: incremented the firmware version number, and added cards_to_report interface signals; added support for the stop_dly, rcs_to_report_data, and cards_to_report commands; Removed the Manchester PLL because the only way to ensure that packets are received without trouble is for the main PLL to be locked on the Manchester clock. The Manchester PLL was a failed attempted around this.
    • clock_card_pack.vhd: added support for the stop_dly, rcs_to_report_data, and cards_to_report commands
    • issue_reply.vhd: added support for the stop_dly, rcs_to_report_data, and cards_to_report commands
    • cmd_translator.vhd: split up command registers so that it can handle WB/RB/RS commands while acquiring data based on a GO command.
    • issue_reply_pack.vhd: added indexing constants.
    • reply_queue.vhd: modified the logic for calculating the reply data size, in response to the addition of the rcs_to_report_data, and cards_to_report commands
    • reply_queue_sequencer.vhd: modified the logic for reading the data from the reply queues; modified the logic for determining when to stop readout from a card queue to ease timing constraints. Changed to logic for multiplexing the data buses from the reply queues to combinatorial logic to ease timing constraints.
    • reply_translator.vhd: added a stop_delay counter for delaying the replies to 'stop ret_dat' commands; added the QUICK_REPLY and QUICK_REPLY_PAUSE states to pause the return of replies to stop commands; added extra handling to the LD_STATUS state to avoid mixing stop replies, and replies to data or simple commands; added stop reply pause logic to DONE state
    • ret_dat_wbs.vhd: added the stop_delay_o, rcs_to_report_data, and cards_to_report_o interfaces; implemented a custom register from cards_to_report and stop_delay; removed the register for ret_dat_card_addr which was a special case of cards_to_report.
    • ret_dat_wbs_pack: added the constant DEFAULT_CARDS_TO_REPORT
  • Bugs:
    • Reading back rcs_to_report_data returns zero (fixed)
    • Can't issue simple commands during data taking (???)
    • Can't read from RC4 (fixed)
    • See MCE Bugs (Internal MCE Wiki)
  • FPGA Resource Usage (clk_card.fit.rpt):
+--------------------------------------------------------------------------+
; Fitter Summary                                                           ;
+--------------------------+-----------------------------------------------+
; Fitter Status            ; Successful - Fri Nov 21 12:19:34 2008         ;
; Quartus II Version       ; 8.0 Build 231 07/10/2008 SP 1 SJ Full Version ;
; Revision Name            ; clk_card                                      ;
; Top-level Entity Name    ; clk_card                                      ;
; Family                   ; Stratix                                       ;
; Device                   ; EP1S30F780C5                                  ;
; Timing Models            ; Final                                         ;
; Total logic elements     ; 14,542 / 32,470 ( 45 % )                      ;
; Total pins               ; 254 / 598 ( 42 % )                            ;
; Total virtual pins       ; 0                                             ;
; Total memory bits        ; 812,544 / 3,317,184 ( 24 % )                  ;
; DSP block 9-bit elements ; 8 / 96 ( 8 % )                                ;
; Total PLLs               ; 1 / 6 ( 17 % )                                ;
; Total DLLs               ; 0 / 2 ( 0 % )                                 ;
+--------------------------+-----------------------------------------------+
  • Timing Analyzer Summary (clk_card.tan.rpt):
+---------------------------------------+-----------+
; Type                                  ; Slack     ;
+---------------------------------------+-----------+
; Worst-case tsu                        ; N/A       ;
; Worst-case tco                        ; N/A       ;
; Worst-case tpd                        ; N/A       ;
; Worst-case th                         ; N/A       ;
; Clock Setup: 'clk_switchover:t|_clk0' ; 1.712 ns  ;
; Clock Setup: 'clk_switchover:t|_clk1' ; 2.632 ns  ;
; Clock Setup: 'clk_switchover:t|_clk2' ; 3.884 ns  ;
; Clock Setup: 'fibre_rx_clkr'          ; 13.678 ns ;
; Clock Setup: 'clk_switchover:t|_clk3' ; 36.938 ns ;
; Clock Hold: 'fibre_rx_clkr'           ; 0.445 ns  ;
; Clock Hold: 'clk_switchover:c|_clk0'  ; 0.531 ns  ;
; Clock Hold: 'clk_switchover:c|_clk3'  ; 0.541 ns  ;
; Clock Hold: 'clk_switchover:c|_clk2'  ; 0.544 ns  ;
; Clock Hold: 'clk_switchover:c|_clk1'  ; 2.989 ns  ;
; Total number of failed paths          ;           ;
+---------------------------------------+-----------+

Revision 4.0.9

  • Filename: cc_v04000009
  • Features:
    • Header Version 6
    • Integrated a bug fix for the sram_ctrl block
    • Integrated new all_cards block of code which was causing a synthesis warning in ModelSim
    • Two new commands added: card_type, scratch.
  • Bugs:
    • In fast DAS, if I try to issue ‘w cc led 1 2 3 … 58’, the MCE/ DAS will fail at the second command.
    • Cards with no firmware loaded are treated as ‘not present’ and therefore replies come back as OK as oppose to ER. (comment added by MA)
    • When PSUC is not present (or fails), rb psc psc_status comes back as OK with all entries as 0. (comment added by MA)
    • fpga_temp readings are way off.
    • Switching to Application Config sometimes fails and the red light comes up.
    • If the FPGA on a card is not programmed, it does not report an error (it treats the card as the not-present card and therefore the error is masked).
    • If PSUC is not present and not communicating, CC doesn't report error and instead reports RBOK
    • None reported yet
  • FPGA Resource Usage (clk_card.fit.rpt):
+---------------------------------------------------------------------+
; Fitter Summary                                                      ;
+--------------------------+------------------------------------------+
; Fitter Status            ; Successful - Thu Feb 21 16:56:34 2008    ;
; Quartus II Version       ; 6.1 Build 201 11/27/2006 SJ Full Version ;
; Revision Name            ; clk_card                                 ;
; Top-level Entity Name    ; clk_card                                 ;
; Family                   ; Stratix                                  ;
; Device                   ; EP1S30F780C5                             ;
; Timing Models            ; Final                                    ;
; Total logic elements     ; 14,144 / 32,470 ( 44 % )                 ;
; Total pins               ; 254 / 598 ( 42 % )                       ;
; Total virtual pins       ; 0                                        ;
; Total memory bits        ; 812,544 / 3,317,184 ( 24 % )             ;
; DSP block 9-bit elements ; 8 / 96 ( 8 % )                           ;
; Total PLLs               ; 2 / 6 ( 33 % )                           ;
; Total DLLs               ; 0 / 2 ( 0 % )                            ;
+--------------------------+------------------------------------------+
  • Timing Analyzer Summary (clk_card.tan.rpt):
+-----------------------------------------------------------------------------------------------------------
; Timing Analyzer Summary                                                                                   
+----------------------------------------------------------------------------------------------+-----------+
; Type                                                                                         ; Slack     ;
+----------------------------------------------------------------------------------------------+-----------+
; Worst-case tsu                                                                               ; N/A       ;
; Worst-case tco                                                                               ; N/A       ;
; Worst-case tpd                                                                               ; N/A       ;
; Worst-case th                                                                                ; N/A       ;
; Clock Setup: 'clk_switchover:clk_switchover_slave|cc_pll:pll0|altpll:altpll_component|_clk1' ; 0.294 ns  ;
; Clock Setup: 'clk_switchover:clk_switchover_slave|cc_pll:pll0|altpll:altpll_component|_clk0' ; 2.091 ns  ;
; Clock Setup: 'clk_switchover:clk_switchover_slave|cc_pll:pll0|altpll:altpll_component|_clk2' ; 2.711 ns  ;
; Clock Setup: 'fibre_rx_clkr'                                                                 ; 16.125 ns ;
; Clock Setup: 'manch_pll:manch_pll_block|altpll:altpll_component|_clk0'                       ; 18.658 ns ;
; Clock Setup: 'clk_switchover:clk_switchover_slave|cc_pll:pll0|altpll:altpll_component|_clk3' ; 35.366 ns ;
; Clock Hold: 'clk_switchover:clk_switchover_slave|cc_pll:pll0|altpll:altpll_component|_clk0'  ; 0.445 ns  ;
; Clock Hold: 'clk_switchover:clk_switchover_slave|cc_pll:pll0|altpll:altpll_component|_clk3'  ; 0.445 ns  ;
; Clock Hold: 'clk_switchover:clk_switchover_slave|cc_pll:pll0|altpll:altpll_component|_clk2'  ; 0.542 ns  ;
; Clock Hold: 'manch_pll:manch_pll_block|altpll:altpll_component|_clk0'                        ; 0.542 ns  ;
; Clock Hold: 'fibre_rx_clkr'                                                                  ; 0.543 ns  ;
; Clock Hold: 'clk_switchover:clk_switchover_slave|cc_pll:pll0|altpll:altpll_component|_clk1'  ; 2.989 ns  ;
; Total number of failed paths                                                                 ;           ;
+----------------------------------------------------------------------------------------------+-----------+


Firmware Links

Wiki Links