qick.drivers.tproc

Drivers for the QICK timed processor (tProc).

Classes

AxisTProc64x32_x8(*args, **kwargs)

AxisTProc64x32_x8 class

Axis_QICK_Net(*args, **kwargs)

Axis_QICK_Proc class

Axis_QICK_Proc(*args, **kwargs)

Axis_QICK_Proc class

class qick.drivers.tproc.AxisTProc64x32_x8(*args: Any, **kwargs: Any)[source]

Bases: SocIp

AxisTProc64x32_x8 class

AXIS tProcessor registers: START_SRC_REG * 0 : internal start (using START_REG) * 1 : external start (using “start” input)

Regardless of the START_SRC, the start logic triggers on a rising edge: A low level arms the trigger (transitions from “end” to “init” state). A high level fires the trigger (starts the program). To stop a running program, see reset().

START_REG * 0 : init * 1 : start

MEM_MODE_REG * 0 : AXIS Read (from memory to m0_axis) * 1 : AXIS Write (from s0_axis to memory)

MEM_START_REG * 0 : Stop. * 1 : Execute operation (AXIS)

MEM_ADDR_REG : starting memory address for AXIS read/write mode.

MEM_LEN_REG : number of samples to be transferred in AXIS read/write mode.

DMEM: The internal data memory is 2^DMEM_N samples, 32 bits each. The memory can be accessed either single read/write from AXI interface. The lower 256 Bytes are reserved for registers. The memory is then accessed in the upper section (beyond 256 bytes). Byte to sample conversion needs to be performed. The other method is to DMA in and out. Here the access is direct, so no conversion is needed. There is an arbiter to ensure data coherency and avoid blocking transactions.

Parameters:
  • mem (int) – memory address

  • axi_dma (int) – axi_dma address

port2ch(portname)[source]

Translate a port name to a channel number. Used in connection mapping.

start()[source]

Start tProc from register. This has no effect if the tProc is not in init or end state, or if the start source is set to “external.”

reset()[source]

Force the tProc to stop by filling the program memory with “end” instructions. For speed, we hard-code the “end” instruction and write directly to the program memory. This typically takes about 1 ms.

load_bin_program(binprog)[source]

Write the program to the tProc program memory.

reload_program()[source]

Write the most recently written program to the tProc program memory. This is normally useful after a reset (which erases the program memory)

start_src(src)[source]

Sets the start source of tProc

Parameters:

src (string) – start source “internal” or “external”

single_read(addr)[source]

Reads one sample of tProc data memory using AXI access

Parameters:

addr (int) – reading address

Returns:

requested value

Return type:

int

single_write(addr=0, data=0)[source]

Writes one sample of tProc data memory using AXI access

Parameters:
  • addr (int) – writing address

  • data (int) – value to be written

load_dmem(buff_in, addr=0)[source]

Writes tProc data memory using DMA

Parameters:
  • buff_in (int) – Input buffer

  • addr (int) – Starting destination address

read_dmem(addr=0, length=100)[source]

Reads tProc data memory using DMA

Parameters:
  • addr (int) – Starting address

  • length (int) – Number of samples

Returns:

List of memory data

Return type:

list

class qick.drivers.tproc.Axis_QICK_Proc(*args: Any, **kwargs: Any)[source]

Bases: SocIp

Axis_QICK_Proc class

AXIS T_PROC xREG

TPROC_CTRL Write / Read 32-Bits TPROC_CFG Write / Read 32-Bits MEM_ADDR Write / Read 16-Bits MEM_LEN Write / Read 16-Bits MEM_DT_I Write / Read 32-Bits TPROC_W_DT1 Write / Read 32-Bits TPROC_W_DT2 Write / Read 32-Bits CORE_CFG Write / Read 32-Bits READ_SEL Write / Read 32-Bits MEM_DT_O Read Only 32-Bits TPROC_R_DT1 Read Only 32-Bits TPROC_R_DT2 Read Only 32-Bits TIME_USR Read Only 32-Bits TPROC_STATUS Read Only 32-Bits TPROC_DEBUG Read Only 32-Bits #################### TPROC_CTRL[0] - Time Reset : Reset absTimer TPROC_CTRL[1] - Time Update : Update absTimer TPROC_CTRL[2] - Proc Start : Reset and Starts tProc (Time and cores) TPROC_CTRL[3] - Proc Stop : Stop the tProc TPROC_CTRL[4] - Core Start : Reset and Starts the Cores. TPROC_CTRL[5] - Core Stop : Stop the Cores (Time will continue Running) TPROC_CTRL[6] - Proc Reset : Reset the TProc TPROC_CTRL[7] - Proc Run : Reset the TProc TPROC_CTRL[8] - Proc Pause : Pause the TProc (Time RUN, Core NO) TPROC_CTRL[9] - Proc Freeze : Freeze absTimer (Core RUN, Time no) TPROC_CTRL[10] - Proc Step : Debug - Step tProc(Time and CORE ) TPROC_CTRL[11] - Core Step : Debug - Step Core (Execute ONE instruction) TPROC_CTRL[12] - Time Step : Debug - Step Timer (Increase absTimer in 1) TPROC_CTRL[13] - COND_set : Set External Condition Flag from TPROC_CTRL[14] - COND_clear : Clears External Condition Flag from #################### TPROC_CFG[0] - MEM_START TPROC_CFG[1] - MEM_OPERATION TPROC_CFG[3:2] - MEM_TYPE (00-NONE, 01-PMEM, 10-DMEM, 11-WMEM) TPROC_CFG[4] - MEM_SOURCE (0-AXI, 1-SINGLE) TPROC_CFG[6:5] - MEM_BANK (TPROC, CORE0, CORE1) TPROC_CFG[10] - Disable INPUT CTRL TPROC_CFG[11] - WFIFO_Full Pause Core TPROC_CFG[12] - DFIFO_Full Pause Core

param mem:

memory address

type mem:

int

param axi_dma:

axi_dma address

type axi_dma:

int

port2ch(portname)[source]

Translate a port name to a channel number and type Used in connection mapping.

single_read(mem_sel, addr)[source]

Reads the bottom 32 bits of one sample of tProc memory using AXI access Do not use! Use the DMA instead.

Parameters:

addr (int) – reading address

Returns:

requested value

Return type:

int

load_mem(mem_sel, buff_in, addr=0)[source]

Writes tProc Selected memory using DMA

Parameters:
  • mem_sel (int) – PMEM=1, DMEM=2, WMEM=3

  • buff_in (array) – Data to be loaded

  • addr (int) – Starting write address

read_mem(mem_sel, addr=0, length=100)[source]

Read tProc Selected memory using DMA

Parameters:
  • mem_sel (int) – PMEM=1, DMEM=2, WMEM=3

  • addr (int) – Starting read address

  • length (int) – Number of words to read

class qick.drivers.tproc.Axis_QICK_Net(*args: Any, **kwargs: Any)[source]

Bases: SocIp

Axis_QICK_Proc class

AXIS T_CORE xREG

CORE_CTRL Write / Read 32-Bits CORE_CFG Write / Read 32-Bits RAXI_DT1 Write / Read 32-Bits RAXI_DT2 Write / Read 32-Bits CORE_R_DT1 Read Only 32-Bits CORE_R_DT2 Read Only 32-Bits PORT_LSW Read Only 32-Bits PORT_MSW Read Only 32-Bits RAND Read Only 32-Bits CORE_W_DT1 Read Only 32-Bits CORE_W_DT2 Read Only 32-Bits CORE_STATUS Read Only 32-Bits CORE_DEBUG Read Only 32-Bits

param mem:

memory address

type mem:

int

param axi_dma:

axi_dma address

type axi_dma:

int