跳到主要内容

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