Changes

Jump to navigation Jump to search
m
Line 28: Line 28:  
! State !! Module Name !! Description !! Succeeding State
 
! State !! Module Name !! Description !! Succeeding State
 
|-
 
|-
| align="center" | 000 || [[FPGA_Reset|Reset]]_hard || align="left" |Coordinates the reset and start-up of the EC. || 101
+
| align="center" | 000 || [[FPGA_Reset|Reset]]_hard || align="left" |Coordinates the reset and start-up of the EC. || 100
 
|-
 
|-
| align="center" | 001 || [[FPGA_Reset|Reset]]_soft || align="left" | Extends the reset to the PC-requested chips and records PC's MAC for later communication. || 101
+
| align="center" | 001 || [[FPGA_Reset|Reset]]_soft || align="left" | Extends the reset to the PC-requested chips and records PC's MAC for later communication. || 100
 
|-
 
|-
 
| align="center" | 010 || [[FPGA_Idler|Idler]] || align="left" | This is the active module during the FPGA's default idle state. It awaits the "Receive FIFO buffer not empty" interrupt and passes control to the Reader || 011
 
| align="center" | 010 || [[FPGA_Idler|Idler]] || align="left" | This is the active module during the FPGA's default idle state. It awaits the "Receive FIFO buffer not empty" interrupt and passes control to the Reader || 011
Line 43: Line 43:  
|-
 
|-
 
|}
 
|}
      
=== State interconnect ===
 
=== State interconnect ===
    
As described above, these states form the outline of the functional block diagram. This implementation calls for a central ''state register''.  Each block reads the state value in the register and enables itself upon seeing its own value.  After completion of its function, a block will write a new value to the state register to enable the next block. With several modules writing to the register, usual precautions must be taken to avoid more than one drivers forcing a line simultaneously. All modules must be designed to go to high impedance on their output lines when they are not active.
 
As described above, these states form the outline of the functional block diagram. This implementation calls for a central ''state register''.  Each block reads the state value in the register and enables itself upon seeing its own value.  After completion of its function, a block will write a new value to the state register to enable the next block. With several modules writing to the register, usual precautions must be taken to avoid more than one drivers forcing a line simultaneously. All modules must be designed to go to high impedance on their output lines when they are not active.
 +
 +
 +
== Miscellaneous non-state-based components ==
 +
 +
Please refer to the individual design detail pages for:
 +
* [[FPGA_Registers|Registers]]
 +
* [[FPGA_Reusables|Miscellaneous Reusable Components]]
 +
    
== Interface ==
 
== Interface ==
Line 58: Line 65:     
This communication standard calls for a bridge module that communicates with the EC upon request from other modules. A "[[FPGA_Transceiver|Transceiver]]" was designed for this purpose. It abstracts the communication with the EC as well as the clock frequency difference. This module in fact subdivides the main 20 MHz; clock to generate the "slow" 5 MHz clock for the rest of the FPGA. Please refer to the [[FPGA_Transceiver|detailed page]] on the Transceiver for more information.
 
This communication standard calls for a bridge module that communicates with the EC upon request from other modules. A "[[FPGA_Transceiver|Transceiver]]" was designed for this purpose. It abstracts the communication with the EC as well as the clock frequency difference. This module in fact subdivides the main 20 MHz; clock to generate the "slow" 5 MHz clock for the rest of the FPGA. Please refer to the [[FPGA_Transceiver|detailed page]] on the Transceiver for more information.
 +
    
== Combined control flow ==
 
== Combined control flow ==
   −
[[Image:OperationCourse.png|thumb|340px|Operation course between the digital board and the controller PC]]
+
[[Image:OperationCourse.png|frame|Operation course between the digital board and the controller PC]]
    
Conceptually, the operation course must proceed as outlined in the adjacent figure. The main concern in the tagger control is maintaining a map between board/channel addresses and actual energy bins. For this purpose, the diagrammed two-stage reset plan was devised in the course of which the FPGA learns the PC's MAC address and the PC builds a MAC-Location lookup table. (The "Location" is an 8-byte slot identifier which allows the PC to pinpoint the SiPM channel group.)
 
Conceptually, the operation course must proceed as outlined in the adjacent figure. The main concern in the tagger control is maintaining a map between board/channel addresses and actual energy bins. For this purpose, the diagrammed two-stage reset plan was devised in the course of which the FPGA learns the PC's MAC address and the PC builds a MAC-Location lookup table. (The "Location" is an 8-byte slot identifier which allows the PC to pinpoint the SiPM channel group.)
Line 68: Line 76:     
[[Image:DigBoardScheme.png|center]]
 
[[Image:DigBoardScheme.png|center]]
  −
== Miscellaneous non-state-based components ==
  −
  −
Please refer to the individual design detail pages for:
  −
* [[FPGA_Registers|Registers]]
  −
* [[FPGA_Reusables|Miscellaneous Reusable Components]]
  −
        Line 96: Line 97:  
* Non-state Modules
 
* Non-state Modules
 
** [[FPGA_Transceiver|Transceiver]]
 
** [[FPGA_Transceiver|Transceiver]]
 +
** [[FPGA_Interrupt_Catcher|Interrupt Catcher]]
 
** [[FPGA_Registers|Registers]]
 
** [[FPGA_Registers|Registers]]
    
* [[Ethernet_packets|Ethernet Packet formatting]]
 
* [[Ethernet_packets|Ethernet Packet formatting]]
1,004

edits

Navigation menu