Files and Scripts

Files for communication between OS and FPGA or between processes

namemeaningtypeused by
/dev/xdma0_userFPGA registers for control and monitoringmemory map; addresse with respect to bytes, values 4bytes=32bithw_alice.py / hw_bob.py, hws.py gc
/dev/xdma0_c2h_0global counter (qubit identifier) and click result of detected qubitFPGA to OS fifo 128bit/wordgc
/dev/xdma0_h2c_0global counter of detected qubitOS to FPGA fifo 128bit/wordgc
/dev/xdma0_h2c_1RNG valuesOS to FPGA fifo 128bit/word
/dev/xdma0_c2h_2TDC timestamps, global counter, click result for calibrationFPGA to OS fifo 128bit/wordhws.py, hw_bob.py
/dev/xdma0_c2h_3angles (rng values of detected qubits)FPGA to OS fifo 128bit/wordnode, qber
~/qline/hw-control/startstop.sstart and stop the raw key generationunix stream; each byte a commandnode, qber
~/qline/hw-control/result.fmeasurement result (on Bob only)unix fifo; each byte a resultnode, `qber

The dataflow when you run qber

Programs and control scripts

namemeaning
hw_alice.py; hw_bob.pymanually change hardware settings individually on Alice and Bob (see help message of the sript)
hws.pyhardware init procedures controlled by Alice
gcbackground process to send gc from Bob to Alice and start/stop raw key generation; gc_client is waiting for start/stop from another program
qbercalculate qber (for calibration only)
nodesend start/stop to gc_client; process raw key to final key (qber estimation, error correction, privacy amplification)
kmskey management service; takes key from node

Config files

namemeaningedited by
~/hw_control/config/defaults.txtinitial hardware parametersAdmin
~/hw_control/config/tmp.txtrunning hardware parametershw_bob.py / hw_alice.py, hws.py,
~/config/high level configuration for all programsAdmin (through gen_config)

Meaning of paramters in config/defaults.txt and config/tmp.txt:

namevaluemeaningonly on
angleX[-1,1]the four angle values to be applied onto the phase modulator
am_modeoffamplitude modulator is not sending pulsesAlice
singlesingle pulse every two repetitions (at 40MHz)Alice
doubledouble pulse every repetition (qubits at 80 MHz)Alice
single64single pulse every 64 repetitionsAlice
am_shift[0,640)fine shift the amplitude modulator in units of 1/10 qubit distanceAlice
pm_modeoff0 angle everywhere
seq6464 periodic sequence of alternating, linearly increasing angle values
fake_rngperiodic, predefined rng sequence
true_rngtrue rng
pm_shift[0,640)Same as am. In case of pm_mode == *_rng the value is taken mudulo 10
fiber_delay_mod[0,32)delay angles before postprocessing in units of double repetition rate modulo 32
fiber_delay[0,..]same but full range
insert_zeros{on,off}insert zeros every 16 repetitions
zero_pos[0,16)at this position
feedback{on,off}compensate interferometer drift based on click result at the zeros positionBob
am_bias[-10,10]bias in volt for background suppressionAlice
vca[0,5]bias in volt for attenuation to single photon levelAlice
qdisatnce[-1,1]fine tune the distance of the double pulse around 5nsAlice
SPD_mode{gated, free}gated or continuous modeBob
SPD_deadtime[8,100]deadtime in microsecondsBob
SPD_eff{20,30}detection efficiencyBob
gate_delay[0,12000]delay TTL gate pulse to SPD in psBob
gate_delayX[0,404)internal values for gate_delayBob
t0[0,100]detection time offset in units of 20ps (to fine align the gates)Bob
polX[0,5]voltage to the 4 axis polarization controllerBob