跳到主要内容
版本:预览版 🚧

Cracker-S1

Cracker-S1是一款专门针对嵌入式芯片的侧信道采集工具,单台设备即可实现高质量侧信道信号采集。支持UART、SPI、I2C、CAN(开发中)等常用通信协议,板载12bit高精度ADC芯片,采样率最高可达65MSamples/S,支持同步采样功能。设备采用网络接口方便组网和远程控制,设备支持PoE(Power over Ethernet)方式供电。

alt text

主要指标​

  • Nut Socket:

    • UART、SPI、I2C、CAN
    • 时钟信号,4MHz、8MHz、12MHz、24MHz
    • 复位信号
    • 供电电压2.0V至4.1V,步进0.1V
  • 信号采集

    • 板载12bit高精度双通道ADC芯片
    • 采样率:65MHz、48MHz、24MHz、12MHz、8MHz,可同Nut Socket时钟匹配实现同步采样
    • 采样时钟相位调节:0°至360°,可同Nut Socket时钟匹配实现精细化同步采样
    • 通道A可外接电磁探头,用于采集电磁信号
    • 通道B连接板载功耗采集电路,用于采集Nut功耗
  • 触发

    • Nut触发,通过Nut GPIO信号确定触发时刻
    • 通信协议触发,在最后一个字节传输时触发
    • 电平触发
  • 千兆以太网控制接口

  • OLED显示

  • 供电方式

    • POE供电(推荐)
    • 12V适配器供电

供电​

Cracker-S1支持2种供电方式:

  1. 通过POE交换机供电。
  2. 通过DC接口插入12V 2A直流电源。

Nut Socket​

Nut Socket用于接入待测芯片测试板,定义了各个接口功能。

标识功能
VCC连接DUT芯片VCC管脚,用于向DUT芯片供电,同时可采集DUT芯片的功耗变化。
供电电压变化范围2V至4.1V,步进0.1V。
VCC同上
VCC同上
VCC同上
NC未使用
NC同上
NC同上
NC同上
GND连接DUT芯片GND管脚
GND同上
GND同上
GND同上
RFU未使用
CLK连接DUT芯片CLK管脚,用于向DUT提供时钟信号。
RSTN连接DUT芯片RSTN管脚,用于复位DUT芯片。
GP8用户自定义管脚。
GP7同上
GP6同上
GP5同上
GP4同上
GP3同上
GP2同上
GP1同上
RFU未定义
U_TXUART协议TX管脚,向DUT芯片发送数据。
U_RXUART协议RX管脚,接收DUT芯片发送数据。
SPI_CSSPI协议CS管脚,片选功能。
SCKSPI协议SCK管脚,通信时钟。
MISOSPI协议MISO管脚,接收DUT发送数据。
MOSISPI协议MOSI管脚,向DUT芯片发送数据。
SDAI2C协议SDA管脚,同DUT芯片交互数据。
SCLI2C协议SCL管脚,通信时钟。
CAN_LCAN协议L管脚。
CAN_HCAN协议H管脚。
RFU未定义

信号采集​

Cracker-S1支持功耗信号、电磁信号采集功能,板载高精度ADC芯片支持2路信号输入:

  • 通道A可连接电磁探头用于采集Nuts电磁信号。
  • 通道B可采集Nuts功耗信号。

电磁信号采集​

通道A用于采集电磁信号,电磁探头经信号放大器后接入通道A,通道A输入信号经可变增益放大电路进入ADC芯片,电磁探头可配合三轴定位台使用。

功耗信号采集​

通道B用于采集功耗信号,Nut 电源VCC上的电压变化由功耗测量电路捕获,功耗信号经由固定增益放大电路和可变增益放大电路后进入ADC芯片。

通信​

UART​

uart_enable()​

(status, none) = uart_enable(enable=False)

功能:

配置UART接口是否使能,如关闭,相应管脚配置为三态输入状态。

参数

参数默认值描述备注
enableFalse是否使能UART接口。
True:使能UART接口;
False:关闭UART接口,相应管脚配置为三态输入状态。

返回:

参数默认值描述备注
status0执行状态。

注意

  1. 使能UART通信功能,需确保UART使能和对Nut芯片供电同时开启。

uart_reset()​

(status, none) = uart_reset()

功能:

复位UART硬件。

参数

参数默认值描述备注
none

返回:

参数默认值描述备注
status0执行状态。

uart_config()​

(status, none) = uart_config(baudrate=115200, bytesize=uart.EIGHTBITS, parity=uart.PARITY_NONE, stopbits=uart.STOPBITS_ONE)

功能:

配置UART接口参数。

参数

参数默认值描述备注
baudrate115200串口通信波特率,支持速率:9600/ 19200/ 38400/ 57600/ 115200
bytesize8串口通信数据位。 8
uart.FIVEBITS: 5
uart.SIXBITS: 6
uart.SEVENBITS: 7
uart.EIGHTBITS: 8
parityuart.PARITY_NONE校验位
uart.PARITY_NONE: 0
uart.PARITY_EVEN: 1
uart.PARITY_ODD: 2
uart.PARITY_MARK: 3
uart.PARITY_SPACE: 4
stopbitsuart.STOPBITS_ONE停止位
uart.STOPBITS_ONE: 0
uart.STOPBITS_ONE_POINT_FIVE: 1
uart.STOPBITS_TWO: 2

返回:

参数默认值描述备注
status0执行状态。

uart_transmit_receive()​

rxData = uart_transmit_receive(txData, rxCount, isTrigger=False, timeOutMs=10000)

功能:

通过UART接口发送数据,等待一段时间后,接收数据,根据用户配置决定是否产生Trigger信号。

image-20250102231437893

参数:

参数默认值描述备注
txDatanone要发送数据,bytes或十六进制字符串。
rxCount0要接收数据长度。
isTriggerFalse接收完成时是否产生触发信号。
True:接收完成时,Trigger信号拉高
False:接收完成时,Trigger信号不变。
timeOutMs10000超时时间,单位毫秒。

返回:

参数默认值描述备注
status0执行状态。
rxDatanone接收到的数据。

uart_receive_fifo_remained()​

(status, size) =  uart_receive_fifo_remained()

功能:

返回UART接收FIFO剩余未读字节数。

返回:

参数默认值描述备注
status0执行状态。
size0当前UART接收FIFO中剩余未读的字节数。

uart_receive_fifo_dump()​

(status, payload) =  uart_receive_fifo_dump()

功能:

读取UART接收FIFO中剩余的所有数据。

返回:

参数默认值描述备注
status0执行状态。
payload0UART接收FIFO中剩余的所有数据。

uart_receive_fifo_clear()​

(status, none) =  uart_receive_fifo_clear()

功能:

清除UART接收FIFO中剩余的所有数据。

返回:

参数默认值描述备注
status0执行状态。

SPI​

spi_enable()​

(status, none) = spi_enable(enable=False)

功能:

配置SPI接口是否使能,如关闭,相应管脚配置为三态输入状态。

参数

参数默认值描述备注
enableFalse是否使能SPI接口。
True:使能SPI接口;
False:关闭SPI接口,相应管脚配置为三态输入状态。

返回:

参数默认值描述备注
status0执行状态。

注意

  1. 使能SPI通信功能,需确保SPI使能和对Nut芯片供电同时开启。

spi_reset()​

(status, none) = spi_reset()

功能:

复位SPI硬件。

参数

参数默认值描述备注
none

返回:

参数默认值描述备注
status0执行状态。

spi_config()​

(status, none) = spi_config(speed=10000, cpol=spi.CPOL_LOW, cpha=spi.CPHA_LOW)

功能:

配置SPI接口参数。CPOL(时钟极性)和CPHA(时钟相位)与实际采样数据时刻如下图所示,其中蓝色线为采样数据的时刻,橙色线为SCK时钟信号。

image-20250106224249541

参数

参数默认值描述备注
speed10,000通信速率,默认10kHz,同CFG_PROTOCOL寄存器中PSC关系为:speed=(100×10^6)/(2*PSC)
cpolspi.CPOL_LOW时钟极性。
spi.CPHA_LOW: 0
spi.CPHA_HIGH: 1
cphaspi.CPHA_LOW时钟相位
spi.CPHA_LOW: 0
spi.CPHA_HIGH: 1

返回:

参数默认值描述备注
status0执行状态。

spi_transmit()​

(status, none) = spi_transmit(txData, isTrigger = False)

功能:

通过SPI接口发送bytes型数据txData,根据isTrigger决定在数据发送后是否产生触发信号。

image-20241204212353323

参数:

参数默认值描述备注
txData0要发送数据,bytes或十六进制字符串。
isTriggerFalse发送完成时是否产生触发信号。
True:发送完成时,Trigger信号拉高
False:发送完成时,Trigger信号不变。

返回:

参数默认值描述备注
status0执行状态。

spi_receive()​

(status, rxData) = spi_receive(rxCount, isTrigger=False)

功能:

通过SPI接口读取rCount个bytes型数据,根据isTrigger决定在数据接收后是否产生触发信号。

image-20241204212421245

参数:

参数默认值描述备注
rxCount0要读取数据字节长度。
isTriggerFalse接收完成时是否产生触发信号。
True:接收完成时,Trigger信号拉高
False:接收完成时,Trigger信号不变。

返回:

参数默认值描述备注
status0执行状态。
rxDatanone接收到的数据。

spi_transmit_delay_receive()​

(status, rxData) = spi_transmit_delay_receive(txData, delay, rxCount, isTrigger=False)

功能:

通过SPI发送bytes型数据txData,等待delay后(单位10ns),读取rxCount长度数据

image-20241204212516939

参数:

参数默认值描述备注
txData0要发送数据,bytes或十六进制字符串。
delay1000发送和接收之间的延时,单位10纳秒。
rxCount0要读取数据字节长度。
isTriggerFalse发送完成时是否产生触发信号。
True:发送完成时,Trigger信号拉高
False:发送完成时,Trigger信号不变。

返回:

参数默认值描述备注
status0执行状态。
rxDatanone接收到的数据。

spi_transceive()​

(status, rxData) = spi_transceive(txData, isTrigger=False)

功能:

通过SPI接口发送bytes型数据txData,同时返回与txData等长的数据rxData;

image-20241204212710427

参数:

参数默认值描述备注
txData0要发送数据,bytes或十六进制字符串。
isTriggerFalse发送完成时是否产生触发信号。
True:发送完成时,Trigger信号拉高
False:发送完成时,Trigger信号不变。

返回:

参数默认值描述备注
status0执行状态。
rxDatanone接收到的数据。

I2C​

i2c_enable()​

(status, none) = i2c_enable(enable=False)

功能:

配置I2C接口是否使能,如关闭,相应管脚配置为三态输入状态。

参数

参数默认值描述备注
enableFalse是否使能I2C接口。
True:使能I2C接口;
False:关闭I2C接口,相应管脚配置为三态输入状态。

返回:

参数默认值描述备注
status0执行状态。

注意

  1. 使能UART通信功能,需确保UART使能和对Nut芯片供电同时开启。

i2c_reset()​

(status, none) = i2c_reset()

功能:

复位I2C硬件。

参数

参数默认值描述备注
none

返回:

参数默认值描述备注
status0执行状态。

i2c_config()​

(status, none) = i2c_config(devAddr=0x00, speed=i2c.STANDARD_100K)

功能:

配置I2C接口参数。

参数

参数默认值描述备注
devAddr0x00I2C通信设备地址,低7bit有效。
speedi2c.STANDARD_100K通信速率。
i2c.STANDARD_100K: 0
i2c.FAST_400K: 1
i2c.FAST_PLUS_1M: 2
i2c.HIGH_SPEED_3400K: 3
i2c.ULTRA_FAST_5M: 4

返回:

参数默认值描述备注
status0执行状态。

i2c_transmit()​

(status, none) = i2c_transmit(txData, isTrigger = False)

功能:

通过I2C接口发送N个bytes型数据txData,设备地址使用i2c_config()配置的地址。

image-20241211001009817

参数:

参数默认值描述备注
txData0要发送数据,bytes或十六进制字符串。
isTriggerFalse发送完成时是否产生触发信号。
True:发送完成时,Trigger信号拉高
False:发送完成时,Trigger信号不变。

返回:

参数默认值描述备注
status0执行状态。

i2c_receive()​

(status, rxData) = i2c_receive(rxCount, isTrigger = False)

功能:

通过I2C接口接收bytes型数据rData。

image-20241217200414150

参数:

参数默认值描述备注
rxCount0要读取数据字节长度。
isTriggerFalse接收完成时是否产生触发信号。
True:接收完成时,Trigger信号拉高
False:接收完成时,Trigger信号不变。

返回:

参数默认值描述备注
status0执行状态。
rxDatanone接收到的数据。

i2c_transmit_delay_receive()​

(status, rxData) = i2c_transmit_delay_receive(txData, delay, rxCount, isTrigger=False)

功能:

通过I2C接口发送bytes型数据txData,等待delay后(单位10ns),读取rxCount长度数据。

image-20241211001249733

参数:

参数默认值描述备注
txData0要发送数据,bytes或十六进制字符串。
delay1000发送和接收之间的延时,单位10纳秒。
rxCount0要读取数据字节长度。
isTriggerFalse发送完成时是否产生触发信号。
True:发送完成时,Trigger信号拉高
False:发送完成时,Trigger信号不变。

返回:

参数默认值描述备注
status0执行状态。
rxDatanone接收到的数据。

i2c_transceive()​

(status, rxData) = i2c_transceive(txData, rxCount, isTrigger=False)

通过I2C接口发送bytes型数据txData,读取rxCount长度数据。

image-20241211001428705

参数:

参数默认值描述备注
txData0要发送数据,bytes或十六进制字符串。
delay1000发送和接收之间的延时,单位10纳秒。
rxCount0要读取数据字节长度。
isTriggerFalse发送完成时是否产生触发信号。
True:发送完成时,Trigger信号拉高
False:发送完成时,Trigger信号不变。

返回:

参数默认值描述备注
status0执行状态。
rxDatanone接收到的数据。

开发​

核心板​

核心板采用芯驿电子科技(上海)有限公司的AC7Z020。

指标参数
核心板AC7Z020
FPGA 型号XA7Z020-1CLG400I / XC7Z020-2CLG400I
内核双核 ARM Cortex-A9
内存DDR3 1GB,32bit 总线,数据速率 1066Mbps
芯片级别工业级,工作温度 -40°C~85°C
逻辑单元数85K
查找表53,200
触发器106,400
DSP slice220
Block RAM4.9Mb
PS MIO48个
PLIO120个

JTAG​

核心板JTAG管脚,可以用于核心板功能开发和调试。

USB Mini​

核心板PS串口输出,用于监测设备运行状态,串口配置参数。

波特率数据位校验位停止位
1152008None1