Changes

Jump to navigation Jump to search
36 bytes added ,  17:54, 6 June 2008
m
Line 52: Line 52:     
=== The programming cycle - "P" Packet===
 
=== The programming cycle - "P" Packet===
 +
    
The programming cycle is a conversation intended to set the values of the DAC channels.  It sends programming data to the board and receives confirmation of the programming.
 
The programming cycle is a conversation intended to set the values of the DAC channels.  It sends programming data to the board and receives confirmation of the programming.
    
This is the packet sent from the PC to the FPGA to set new values to the DAC channels.  The first byte of the packet will be an ASCII '''P''': 0x50, 0101 0000.  The next four bytes (if all 32 channels are used; 3 if 24 channels, 2 bytes if 16 channels) together form a programming mask.  Any channel that is to be reprogrammed will have a 1 in the corresponding location, and any channel that is to be left alone will have a 0 in the corresponding location.  The MSB of the first byte will be channel 31 (or 23 or 15) and the LSB of the fourth (or third or second) byte will be channel 0.  Thus, if all 32 channels are to be used, but only channels 14 through 26 are to be programmed, the packet would contain:
 
This is the packet sent from the PC to the FPGA to set new values to the DAC channels.  The first byte of the packet will be an ASCII '''P''': 0x50, 0101 0000.  The next four bytes (if all 32 channels are used; 3 if 24 channels, 2 bytes if 16 channels) together form a programming mask.  Any channel that is to be reprogrammed will have a 1 in the corresponding location, and any channel that is to be left alone will have a 0 in the corresponding location.  The MSB of the first byte will be channel 31 (or 23 or 15) and the LSB of the fourth (or third or second) byte will be channel 0.  Thus, if all 32 channels are to be used, but only channels 14 through 26 are to be programmed, the packet would contain:
 +
[[Image:P-packetPayload.png|frame]]
 
{| align="center" cellpadding="4" border="0" cellspacing="0" style="text-align:left"
 
{| align="center" cellpadding="4" border="0" cellspacing="0" style="text-align:left"
 
! First data byte
 
! First data byte
Line 70: Line 72:  
|}
 
|}
 
Following this are 64 bytes of programming data listing the values for channels 0-31 (in that order) in 2-byte words. Each channel needs 14 bits, so the format is two leading zeros and 6 MSB of data is the first byte, then 8 LSB of data in the second byte.  All channels are present in the packet, but only those marked in the mask will be programmed; all other bytes will be ignored and can take on any value.  The total size of the data in a programming packet is:
 
Following this are 64 bytes of programming data listing the values for channels 0-31 (in that order) in 2-byte words. Each channel needs 14 bits, so the format is two leading zeros and 6 MSB of data is the first byte, then 8 LSB of data in the second byte.  All channels are present in the packet, but only those marked in the mask will be programmed; all other bytes will be ignored and can take on any value.  The total size of the data in a programming packet is:
      
== Packets from the FPGA to the PC ==
 
== Packets from the FPGA to the PC ==
1,004

edits

Navigation menu