Cracker-S1
Cracker-S1是一款专门针对嵌入式芯片的侧信道采集工具,单台设备即可实现高质量侧信道信号采集。支持UART、SPI、I2C、CAN(开发中)等常用通信协议,板载12bit高精度ADC芯片,采样率最高可达65MSamples/S,支持同步采样功能。设备采用网络接口方便组网和远程控制,设备支持PoE(Power over Ethernet)方式供电。
主要指标
-
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种供电方式:
- 通过POE交换机供电。
- 通过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_TX | UART协议TX管脚,向DUT芯片发送数据。 |
U_RX | UART协议RX管脚,接收DUT芯片发送数据。 |
SPI_CS | SPI协议CS管脚,片选功能。 |
SCK | SPI协议SCK管脚,通信时钟。 |
MISO | SPI协议MISO管脚,接收DUT发送数据。 |
MOSI | SPI协议MOSI管脚,向DUT芯片发送数据。 |
SDA | I2C协议SDA管脚,同DUT芯片交互数据。 |
SCL | I2C协议SCL管脚,通信时钟。 |
CAN_L | CAN协议L管脚。 |
CAN_H | CAN协议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接口是否使能,如关闭,相应管脚配置为三态输入状态。
参数
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
enable | False | 是否使能UART接口。 True:使能UART接口; False:关闭UART接口,相应管脚配置为三态输入状态。 |
返回:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
status | 0 | 执行状态。 |
注意
- 使能UART通信功能,需确保UART使能和对Nut芯片供电同时开启。
uart_reset()
(status, none) = uart_reset()
功能:
复位UART硬件。
参数
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
none |
返回:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
status | 0 | 执行状态。 |
uart_config()
(status, none) = uart_config(baudrate=115200, bytesize=uart.EIGHTBITS, parity=uart.PARITY_NONE, stopbits=uart.STOPBITS_ONE)
功能:
配置UART接口参数。
参数
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
baudrate | 115200 | 串口通信波特率,支持速率:9600/ 19200/ 38400/ 57600/ 115200 | |
bytesize | 8 | 串口通信数据位。 8 uart.FIVEBITS: 5 uart.SIXBITS: 6 uart.SEVENBITS: 7 uart.EIGHTBITS: 8 | |
parity | uart.PARITY_NONE | 校验位 uart.PARITY_NONE: 0 uart.PARITY_EVEN: 1 uart.PARITY_ODD: 2 uart.PARITY_MARK: 3 uart.PARITY_SPACE: 4 | |
stopbits | uart.STOPBITS_ONE | 停止位 uart.STOPBITS_ONE: 0 uart.STOPBITS_ONE_POINT_FIVE: 1 uart.STOPBITS_TWO: 2 |
返回:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
status | 0 | 执行状态。 |
uart_transmit_receive()
rxData = uart_transmit_receive(txData, rxCount, isTrigger=False, timeOutMs=10000)
功能:
通过UART接口发送数据,等待一段时间后,接收数据,根据用户配置决定是否产生Trigger信号。
参数:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
txData | none | 要发送数据,bytes或十六进制字符串。 | |
rxCount | 0 | 要接收数据长度。 | |
isTrigger | False | 接收完成时是否产生触发信号。 True:接收完成时,Trigger信号拉高 False:接收完成时,Trigger信号不变。 | |
timeOutMs | 10000 | 超时时间,单位毫秒。 |
返回:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
status | 0 | 执行状态。 | |
rxData | none | 接收到的数据。 |
uart_receive_fifo_remained()
(status, size) = uart_receive_fifo_remained()
功能:
返回UART接收FIFO剩余未读字节数。
返回:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
status | 0 | 执行状态。 | |
size | 0 | 当前UART接收FIFO中剩余未读的字节数。 |
uart_receive_fifo_dump()
(status, payload) = uart_receive_fifo_dump()
功能:
读取UART接收FIFO中剩余的所有数据。
返回:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
status | 0 | 执行状态。 | |
payload | 0 | UART接收FIFO中剩余的所有数据。 |
uart_receive_fifo_clear()
(status, none) = uart_receive_fifo_clear()
功能:
清除UART接收FIFO中剩余的所有数据。
返回:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
status | 0 | 执行状态。 |
SPI
spi_enable()
(status, none) = spi_enable(enable=False)
功能:
配置SPI接口是否使能,如关闭,相应管脚配置为三态输入状态。
参数
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
enable | False | 是否使能SPI接口。 True:使能SPI接口; False:关闭SPI接口,相应管脚配置为三态输入状态。 |
返回:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
status | 0 | 执行状态。 |
注意
- 使能SPI通信功能,需确保SPI使能和对Nut芯片供电同时开启。
spi_reset()
(status, none) = spi_reset()
功能:
复位SPI硬件。
参数
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
none |
返回:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
status | 0 | 执行状态。 |
spi_config()
(status, none) = spi_config(speed=10000, cpol=spi.CPOL_LOW, cpha=spi.CPHA_LOW)
功能:
配置SPI接口参数。CPOL(时钟极性)和CPHA(时钟相位)与实际采样数据时刻如下图所示,其中蓝色线为采样数据的时刻,橙色线为SCK时钟信号。
参数
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
speed | 10,000 | 通信速率,默认10kHz,同CFG_PROTOCOL 寄存器中PSC 关系为:speed=(100×10^6)/(2*PSC) | |
cpol | spi.CPOL_LOW | 时钟极性。 spi.CPHA_LOW: 0 spi.CPHA_HIGH: 1 | |
cpha | spi.CPHA_LOW | 时钟相位 spi.CPHA_LOW: 0 spi.CPHA_HIGH: 1 |
返回:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
status | 0 | 执行状态。 |
spi_transmit()
(status, none) = spi_transmit(txData, isTrigger = False)
功能:
通过SPI接口发送bytes型数据txData
,根据isTrigger
决定在数据发送后是否产生触发信号。
参数:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
txData | 0 | 要发送数据,bytes或十六进制字符串。 | |
isTrigger | False | 发送完成时是否产生触发信号。 True:发送完成时,Trigger信号拉高 False:发送完成时,Trigger信号不变。 |
返回:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
status | 0 | 执行状态。 |
spi_receive()
(status, rxData) = spi_receive(rxCount, isTrigger=False)
功能:
通过SPI接口读取rCount
个bytes型数据,根据isTrigger
决定在数据接收后是否产生触发信号。
参数:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
rxCount | 0 | 要读取数据字节长度。 | |
isTrigger | False | 接收完成时是否产生触发信号。 True:接收完成时,Trigger信号拉高 False:接收完成时,Trigger信号不变。 |
返回:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
status | 0 | 执行状态。 | |
rxData | none | 接收到的数据。 |
spi_transmit_delay_receive()
(status, rxData) = spi_transmit_delay_receive(txData, delay, rxCount, isTrigger=False)
功能:
通过SPI发送bytes型数据txData
,等待delay
后(单位10ns),读取rxCount
长度数据
参数:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
txData | 0 | 要发送数据,bytes或十六进制字符串。 | |
delay | 1000 | 发送和接收之间的延时,单位10纳秒。 | |
rxCount | 0 | 要读取数据字节长度。 | |
isTrigger | False | 发送完成时是否产生触发信号。 True:发送完成时,Trigger信号拉高 False:发送完成时,Trigger信号不变。 |
返回:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
status | 0 | 执行状态。 | |
rxData | none | 接收到的数据。 |
spi_transceive()
(status, rxData) = spi_transceive(txData, isTrigger=False)
功能:
通过SPI接口发送bytes型数据txData
,同时返回与txData
等长的数据rxData
;
参数:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
txData | 0 | 要发送数据,bytes或十六进制字符串。 | |
isTrigger | False | 发送完成时是否产生触发信号。 True:发送完成时,Trigger信号拉高 False:发送完成时,Trigger信号不变。 |
返回:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
status | 0 | 执行状态。 | |
rxData | none | 接收到的数据。 |
I2C
i2c_enable()
(status, none) = i2c_enable(enable=False)
功能:
配置I2C接口是否使能,如关闭,相应管脚配置为三态输入状态。
参数
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
enable | False | 是否使能I2C接口。 True:使能I2C接口; False:关闭I2C接口,相应管脚配置为三态输入状态。 |
返回:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
status | 0 | 执行状态。 |
注意
- 使能UART通信功能,需确保UART使能和对Nut芯片供电同时开启。
i2c_reset()
(status, none) = i2c_reset()
功能:
复位I2C硬件。
参数
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
none |
返回:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
status | 0 | 执行状态。 |
i2c_config()
(status, none) = i2c_config(devAddr=0x00, speed=i2c.STANDARD_100K)
功能:
配置I2C接口参数。
参数
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
devAddr | 0x00 | I2C通信设备地址,低7bit有效。 | |
speed | i2c.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 |
返回:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
status | 0 | 执行状态。 |
i2c_transmit()
(status, none) = i2c_transmit(txData, isTrigger = False)
功能:
通过I2C接口发送N个bytes型数据txData
,设备地址使用i2c_config()
配置的地址。
参数:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
txData | 0 | 要发送数据,bytes或十六进制字符串。 | |
isTrigger | False | 发送完成时是否产生触发信号。 True:发送完成时,Trigger信号拉高 False:发送完成时,Trigger信号不变。 |
返回:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
status | 0 | 执行状态。 |
i2c_receive()
(status, rxData) = i2c_receive(rxCount, isTrigger = False)
功能:
通过I2C接口接收bytes型数据rData
。
参数:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
rxCount | 0 | 要读取数据字节长度。 | |
isTrigger | False | 接收完成时是否产生触发信号。 True:接收完成时,Trigger信号拉高 False:接收完成时,Trigger信号不变。 |
返回:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
status | 0 | 执行状态。 | |
rxData | none | 接收到的数据。 |
i2c_transmit_delay_receive()
(status, rxData) = i2c_transmit_delay_receive(txData, delay, rxCount, isTrigger=False)
功能:
通过I2C接口发送bytes型数据txData
,等待delay
后(单位10ns),读取rxCount
长度数据。
参数:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
txData | 0 | 要发送数据,bytes或十六进制字符串。 | |
delay | 1000 | 发送和接收之间的延时,单位10纳秒。 | |
rxCount | 0 | 要读取数据字节长度。 | |
isTrigger | False | 发送完成时是否产生触发信号。 True:发送完成时,Trigger信号拉高 False:发送完成时,Trigger信号不变。 |
返回:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
status | 0 | 执行状态。 | |
rxData | none | 接收到的数据。 |
i2c_transceive()
(status, rxData) = i2c_transceive(txData, rxCount, isTrigger=False)
通过I2C接口发送bytes型数据txData
,读取rxCount
长度数据。
参数:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
txData | 0 | 要发送数据,bytes或十六进制字符串。 | |
delay | 1000 | 发送和接收之间的延时,单位10纳秒。 | |
rxCount | 0 | 要读取数据字节长度。 | |
isTrigger | False | 发送完成时是否产生触发信号。 True:发送完成时,Trigger信号拉高 False:发送完成时,Trigger信号不变。 |
返回:
参数 | 默认值 | 描述 | 备注 |
---|---|---|---|
status | 0 | 执行状态。 | |
rxData | none | 接收到的数据。 |
开发
核心板
核心板采用芯驿电子科技(上海)有限公司的AC7Z020。
指标 | 参数 |
---|---|
核心板 | AC7Z020 |
FPGA 型号 | XA7Z020-1CLG400I / XC7Z020-2CLG400I |
内核 | 双核 ARM Cortex-A9 |
内存 | DDR3 1GB,32bit 总线,数据速率 1066Mbps |
芯片级别 | 工业级,工作温度 -40°C~85°C |
逻辑单元数 | 85K |
查找表 | 53,200 |
触发器 | 106,400 |
DSP slice | 220 |
Block RAM | 4.9Mb |
PS MIO | 48个 |
PLIO | 120个 |
JTAG
核心板JTAG管脚,可以用于核心板功能开发和调试。
USB Mini
核心板PS串口输出,用于监测设备运行状态,串口配置参数。
波特率 | 数据位 | 校验位 | 停止位 |
---|---|---|---|
115200 | 8 | None | 1 |