-
Notifications
You must be signed in to change notification settings - Fork 4
zakiali/roachfengine
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Model for an F Engine used by the Precision Array for Probing the Epoch of Reionization. The Model roachf_1024ch_ma.mdl is an 8 input design consisting of Digitizer, PFB, Packetiser, Loopback, and output 10gbe. 2048 channel PFB. One can select the total number of inputs in the design (which determines the packet format). Supported number of inputs is from 16, 32, 64, 128, 256, 512 total inputs. This mdl file was built using Xilinix 13.3 toolflow and casper mlib devel library at #4655b346c5f629aa63ed5e50d38a75be4ef33102. mlib devel can be found at [email protected]:zakiali/mlib_devel.git REGISTERS OF NOTE ------------------ Monitor ------- - 'switch_gbe_status' : monitors 10gbe outputs. bitmap = {25bits of 0 | gbe_up | gbe_rx | gbe_tx | gbe_a_full | gbe_tx_oflow | gbe_rx_badframe | gbe_rx_over_run} - 'switch_gbe_badframe' : Counter value of gbe rx bad frame signal. Note there is no posedge. - 'switch_gbe_orun' : Counter value of gbe rx overrun signal. Note there is no posedge. - 'switch_gbe_oflow' : Counter value of gbe tx over flow signal. Note there is no posedge. - 'switch_cnts_data_msb(lsb)' : The cnts block counts the number of clocks between packets etc.. use provided software to read. May be somewhat convoluted to decipher. Not needed for functionality. Only for testing 10gbe blocks. - 'loopback_rx_cnt' : Counts the number of packets output of rx packet fifo. Reset by 'cnt_rst' signal. - 'loopback_rx_err_cnt' : Counts the number of rx fifo overfull signals. Reset by 'cnt_rst' signal. - 'loopback_loop_err_cnt' : Counts the number of loopback fifo overfull signals. Reset by 'cnt_rst' signal. - 'loopback_loop_cnt' : Counts the number of packets output of loop packet fifo. Reset by 'cnt_rst' signal. This number should be (1/number of roaches) * loopback_rx_cnt. - 'loopback_rx_pkt_too_big' : Count of number to oversize packets coming from the switch. - 'loopback_rx_pkt_too_small' : Count of number to undersize packets coming from the switch. - 'loopback_rx_over' : Second check of oversize packets from switch. NOT NECESSARY. - 'loopback_rx_under' : Second check of undersize packets from switch. NOT NECESSARY. - 'loopback_loop_over' : Count of number of oversize packets from loopback fifo. - 'loopback_loop_under' : Count of number of undersize packets from loopback fifo. - 'loopback_cnts.,,,' : Same as cnts brams in switch block. Counts differences between gbe_read and loop_read signals. Was used for debugging. Not needed anymore. - 'gpu_mcnt_lsb(msb)' : Instantaneous header of data about to be sent out over 10gbe. LSB = {bottom 16 of mcnt | Xid | Fid} MSB = top 32 bits of mcnt. - 'gpu_gbe_status' : see 'switch_gbe_status.' - 'adc_rms_levels' : bram of rms values of the inputs. Note that the ctrl register must be written to in order for it to run. addresses: 0: 24bit sum of 2^16 samples of input 0. 1: 32bit sum of squares of the samples in 0. 2: 24bit sum of 2^16 samples of input 1. 3: 32bit sum of squares of the samples in 2. etc..... LEDs ------ led0 : armed signal led1 : sync pulse led2 : eq clip led3 : adc clip SNAP BLOCKS ------------- -'switch_txsnap' + 'bram_msb', 'bram_lsb' , 'bram_oob', 'ctrl', 'addr': saves meta data in oob, lsb(msb) of data. Triggered by writing to ctrl signal. See scripts to read from it. -'switch_rxsnap' + 'bram_msb', 'bram_lsb' , 'bram_oob', 'ctrl', 'addr': saves meta data in oob, lsb(msb) of data. Triggered by writing to ctrl signal. See scripts to read from it. -'gpu_txsnap' + 'bram_msb', 'bram_lsb' , 'bram_oob', 'ctrl', 'addr': saves meta data in oob, lsb(msb) of data. Triggered by writing to ctrl signal. See scripts to read from it. -'adc_snap_0_3'(4_7) : use 'adc_snap_ctrl' to control snaps. 1024 samples of 8bit input data. Format ={[0123]_0,[0123]_0...,[0123]_1023} and {[4567]_0,[4567]_1,...,[4567]_1023} CONTROL BLOCKS --------------- - 'input_selector' : Selects the type of input. 32bit value. Every nibble corresponds to an input. lsb is input 0, msb is input 7. If writtin in hex format, every hex digit is an input. value of 3=digital zero, 2=second digital noise, 1=first digital noise, 0=adc inputs. e.g. 0x33333210 = input0 has adcs on, input 1 has digital noise 1, input 2 has digital noise 2 on , inputs3-7 have dig zero. - 'delay_values' : introduces a course delay into input signal path. can delay up to 16 fpga clocks. lsb is input 0, msb is input 7. - 'seed_data' : introduces new seed into digital noise sources. every byte corresponds to a different wgn generator. note that this value must be set before we arm/sync up the roaches to one another. - 'gpu_port' : destination port for gpu host machine. default is 8511. - 'gpu_ip' : destination ip address for gpu host machine. - 'gbe_sw_port' : destination port for packets destined for switch. - 'my_ip' : ipaddress of this f engine. - 'ip_base' : base ip address of packets destined for switch. - 'ant_base_offset' : This is actually the F-Engine ID. Determines which input numbers are on this roach. - 'fft_shift' : sets shift schedule for ffts. - 'n_inputs' : Register holds the number of total inputs in the correlator. This determines which transpose/packetiser to use. It is a 3 bit value. The number is determined by log2(ninputs) - 4. - 'feng_ctl'* : sets various control bits. Bit map below... ('gbe_gpu_rst'), #31 reset gbe block going to gpu machines. ('gbe_sw_rst'), #30 reset gbe block going to gpu machines. ('loopback_mux_rst'), #29 reset some loopback specific stuff. Currently not used, except for determining proper header in mux. ('cnt_rst'), #28 resets various counters (error and the such) in the design. ('fft_preshift',2), #26-27 can preshift (down) into fft by up to 3 bits. 0=noshift(def) 1=1 bit, etc... ('gpio_monsel',3), #23,24,25 DEPRECATED. Not used at all. ('fft_tvg2'), #22 use fft test vector generator 2. Don't really use this. Digital noise sources are better. ('fft_tvg1'), #21 use fft test vector generator 2. Don't really use this. Digital noise sources are better. ('gbe_gpu_disable'), #20 Disable gpu 10gbe block. (Valid signal always low) ('use_qdr_tvg'), #19 (actually called use_sram_tvg). Use post transpose test vector. Never Used. ('gbe_sw_disable'), #18 Disable switch 10gbe block. (Valid signal always low) ('arm_rst'), #17 Rearm the roachs (for syncup). Note this must go from 0 to 1, for rearm to take effect. ('sync_rst'), #16 Reset sync pulse manually. This is never used, since we have a 1pps distributor. Padding(13), #3-15 nada. ('lb_err_cnt_rst'), #2 Reset the cnts blocks in switch and loopback. Padding(2)) #0-1 nada. * Some notes about this block : The 'gbe_gpu_disable' and 'gbe_sw_disable' signals need to be high before the 10gbe cores are reset with. If not, the cores will not reset and will not transmit. Also the cores are held in rst until all the network stuff is set up. Then the final start up of the F Engine is to take the 10gbe cores out of reset and and undo the disable. The gbe disable signals make sure that no valid data goes into the cores, and therefore no data gets sent to the 10gbe cores. NOTES ======= 1. The 2 10gbe cores in the design are different. The core to the switch is the 10gbe_v2 core, where as the core to the GPU's is the 10gbe (original) core. It requires a special liscense from Xilinx to be compiled with. 2. In the initialization scripts, which can be found in the corr package at [email protected]:zakiali/PAPERCORR.git, both the 10gbe cores are started the same way (as in I don't use tgtap to start them up). This was due to the fact that sometimes we did not have all ROACHs set up for testing, but we were sending all the packets to the switch. The packets that were destined for non existant ROACHs were then interpreted as broadcast packets and sent everywhere, corrupting data integrity. Therefore, I populate the arp tables manually, including all the mac addresses that are supposed to be there (non existant ROACHs). 3. The name of the gbe cores relates to the cx4 ports used on the roachs. The number in the name is the port used (starting from 0).
About
No description, website, or topics provided.
Resources
Stars
Watchers
Forks
Packages 0
No packages published