205 lines
20 KiB
Plaintext
205 lines
20 KiB
Plaintext
DOCX D:\Project\spinal_stim\详细设计\【SpinalStim】系统软件设计与调试 .docx
|
||
paragraphs=169 tables=9 shapes=34
|
||
P0||drawings=0|rels=|【SpinalStim】系统软件设计与调试
|
||
P1||drawings=0|rels=|联调进度:
|
||
P3||drawings=0|rels=|2026-05-11
|
||
P6||drawings=0|rels=|1. 硬件方案
|
||
P7||drawings=0|rels=|1.1 硬件架构
|
||
P8||drawings=0|rels=|采用FPGA架构
|
||
P9||drawings=0|rels=|实现整体数据采集,刺激,阻抗测量与数据传输
|
||
P10||drawings=0|rels=|支持USB 2.0接口
|
||
P11||drawings=0|rels=|通过更换前端接口板,实现快速采集/刺激功能/通道数的切换,方便科研与调试
|
||
P12||drawings=0|rels=|[该同步块已在源文档删除]
|
||
P14||drawings=0|rels=|1.2 控制逻辑
|
||
P16||drawings=0|rels=|1.2.1 差分采集部分
|
||
P18||drawings=0|rels=|1.2.2 32通道单端采集部分
|
||
P21||drawings=0|rels=|1.3 接口
|
||
P22||drawings=0|rels=|1.3.1 JTAG接口
|
||
P24||drawings=0|rels=|1.3.2 指示灯
|
||
P27||drawings=0|rels=|2. 软件框架
|
||
P28||drawings=0|rels=|2.1 PS软件设计
|
||
P31||drawings=0|rels=|2.2 PL软件设计
|
||
P34||drawings=0|rels=|2.2.1 FPGA逻辑设计
|
||
P35||drawings=0|rels=|(1) 总体设计原理
|
||
P36||drawings=0|rels=|整体系统都工作在统一时钟clk(100MHz)和统一复位rst_n中,clk(100MHz)通过外部晶振给PS端,PS端 将其倍频到100MHz输入到PL,rst_n也从PS端过来。
|
||
P37||drawings=0|rels=|PS端配置4个脑电ads1299和1个肌电ads1299采集和上传,主要配置ads1299初始化、采样率、通道映射、上传通道选择、帧头数据包、一帧上传数据包数等,PL中eeg_top模块根据配置指令将ads1299初始化,并从ads1299中采集数据,采集数据封包后将其传给upload_top模块。upload_top模块根据PS端配置的通道映射、上传通道选择、帧头数据包、一帧上传数据包数等将eeg_top过来的数据包加上包头、包尾、以包数为单位封帧(如一帧由20个小包组成),另外将需要上传的通道捡出来,把不需要上传的通道舍弃。4个脑电ads1299、和1个肌电ads1299数据(肌电为1组)最后在eeg_emg_upload模块整体处理,根据PS端配置,如果是第一组和第二组都有的话,则将第一组的尾和第二组的头去掉,重新计算crc,如果单独是第一组或者第二组,则将原始数据上传。
|
||
P39||drawings=0|rels=|PS端通过PL端的SPI接口(IP核)控制CSI040的写入和读取,进而控制刺激输出。
|
||
P41||drawings=0|rels=|(2)寄存器配置
|
||
P42||drawings=0|rels=|a. 脑电采集寄存器
|
||
P43||drawings=0|rels=|a1:脑电数据采集寄存器:
|
||
P44||drawings=0|rels=|脑电EEG_CONFIG对应PS端BRAM_CTRL_1,地址范围是0x4200_0000~0x4200_1FFF, 配置寄存器如下:
|
||
P45||drawings=0|rels=|a2:脑电数据上传寄存器:
|
||
P46||drawings=0|rels=|脑电UPLOAD_CONFIG对应PS端BRAM_CTRL_4,地址范围是0x48000000~0x48001fff
|
||
P47||drawings=0|rels=|b. 肌电采集寄存器
|
||
P48||drawings=0|rels=|b1:肌电数据采集寄存器:
|
||
P49||drawings=0|rels=|肌电EEG_CONFIG对应PS端BRAM_CTRL_2,地址范围是x4400_0000~0x4400_1FFF,配置寄存器如下:
|
||
P50||drawings=0|rels=|b2:肌电数据上传寄存器:
|
||
P51||drawings=0|rels=|肌电UPLOAD_CONFIG对应PS端BRAM_CTRL_5,地址是0x4a000000~0x4a001fff,配置寄存器如下:
|
||
P52||drawings=0|rels=|c.电流配置寄存器
|
||
P53||drawings=0|rels=|电流配置寄存器对应PS端BRAM_CTRL_6,地址是0x4c000000~0x4c001fff,配置寄存器如下:
|
||
P54||drawings=0|rels=|d.数据上传配置寄存器
|
||
P55||drawings=0|rels=|数据上传配置寄存器对应PS端BRAM_CTRL_7,地址范围是0x4E00_0000~0x4E00_1FFF,配置寄存器如下:
|
||
P56||drawings=0|rels=|e.透明数据上传(不经过打包,用于计算阻抗)为axi_dma_2,地址是0x4042_0000~0x4042_FFFF。
|
||
P58||drawings=0|rels=|其它用spi和gpio的地址范围
|
||
P59||drawings=0|rels=|A64包字节计算:
|
||
P60||drawings=0|rels=|EEG和EMG都有:
|
||
P61||drawings=0|rels=|EEG数据量:以20个包为一帧计算,包头85个字节,中间数据为196字节(64通道x3+4字节trigger)x20,包尾为2字节crc+12字节upload_bytes。20个包EEG数据量为4019个字节。因此m个通道,n个包,EEG字节数量为85+(mx3+4)xn+14=99+(mx3+4)xn。
|
||
P62||drawings=0|rels=|EMG数据量:如果EEG也存在的话,EMG会去掉包头、包尾,只剩下数据。EMG字节数为4字节trigger+8通道x3字节=28个字节。28x20个包=560个字节。因此c个通道,n个包,EMG字节数量为(cx3+4)xn
|
||
P63||drawings=0|rels=|只有EEG时:99+(mx3+4)xn。
|
||
P64||drawings=0|rels=|只有EMG时:99+(cx3+4)xn。
|
||
P65||drawings=0|rels=|EEG和EMG都没有时:0
|
||
P67||drawings=0|rels=|A64包字节计算汇总:
|
||
P68||drawings=0|rels=|SpinalStim系统软件设计与调试配置寄存器中eeg_send_package_num[15:0]和emg_send_package_num[15:0]根据eeg_emg_sel[1:0]配置,和上面表格对应,eeg_send_package_num[15:0]配置为99+(mx3+4)xn,emg_send_package_num[15:0]配置为99+(cx3+4)xn。
|
||
P70||drawings=0|rels=|如果速率是v(如速率是16k),则每包之间间隔是1000/v(us),emg每个包占用时间是290ns(28个数据(8通道x3个字节+4个trigger)x10ns+10ns无效时间),如果一次emg和eeg合并n个包(比如160个包或者320个包),则emg合并到eeg包尾占用时间是290nsxn/1000(us)=0.29n,如果0.29n>1000/v,则emg合并到eeg包尾占用时间比eeg每个包之间的间隔时间还要长,因此不能正确传输,只有0.29n<1000/v-5才可以(n是包数,v是速率),5us是安全冗余。
|
||
P71||drawings=0|rels=|3. 调试记录
|
||
P74||drawings=0|rels=|USB隔离器VCC1没有电源输入,芯片无法工作。需要将1/5引脚连接在一起。
|
||
P76||drawings=0|rels=|单端采集通道采集信号有点差(100uV)
|
||
P78||drawings=0|rels=|差分通道信号也差,和C256 HV 版 类似,将滤波电容从47pF 改到470pF 有改善
|
||
P79||drawings=0|rels=|右腿驱动的输出比较怪
|
||
P80||drawings=0|rels=|正常量就有2.5V的 50hz输出,正常情况下应该很小
|
||
P81||drawings=0|rels=|差分通道用AFE968 测量阻抗时 约有10k 的零漂, 原因未知
|
||
P82||drawings=0|rels=|AFE968 的阻抗测量电流与IPA1299 ADS1299 均不相同,方案确定后不可更换
|
||
P83||drawings=0|rels=|AFE968 用AC 测阻抗时 需要控制 一些AFE968 独有的寄存器,需要修改PL ,下周可以试试
|
||
P84||drawings=0|rels=|将AFE968 更换为ADS1299 后 约0.24k的零漂
|
||
P85||drawings=0|rels=|ADS1299,AFE968 通过SRB1,SRB2 均有一些奇怪的表现
|
||
P86||drawings=0|rels=|连接SRB2 时, 和两个都断开几乎一致
|
||
P87||drawings=0|rels=|连接SRB1,不连接SRB2 时 电压会出现明显的负值, 用示波器上也能看出在-2V左右,非常奇怪
|
||
P88||drawings=0|rels=|目前两个开关打开
|
||
P89||drawings=0|rels=|AFE968 的校准公式约为
|
||
P90||drawings=0|rels=|(x-2000)/0.62 - 9500(内置的3阶 滤波器会带来约0.72的衰减,硬件自带2k阻抗)
|
||
P91||drawings=0|rels=|ADS1299 的校准公式为
|
||
P92||drawings=0|rels=|(x-2000)/0.72/0.9 - 300(内置的3阶 滤波器会带来约0.72的衰减,硬件自带2k阻抗)
|
||
P94||drawings=0|rels=|4. 测试记录
|
||
P95||drawings=0|rels=|1. 测试连接
|
||
P96||drawings=0|rels=|(1)单端信号测试连接:直接相连即可
|
||
P98||drawings=0|rels=|(2)差分信号测试连接:第一幅图中注意凸口方向,第二幅图中端口6、7和PCB板上最底下两个端口对应,对应之后将第一幅图中接口pin脚先标上,凸口再朝下插上即可
|
||
P102||drawings=0|rels=|2. 单端信号测试
|
||
P103||drawings=0|rels=|2026年07月24:外面信号发生器一端接测试工装ref、一端接测试工装信号端(32通道连在一起),单端信号每次可以测32个通道,8个通道一个页面,只展示8个通道,信号质量基本一致,其它通道请查看附件。
|
||
P104||drawings=0|rels=|(1)10uV、6Hz-CH1~8
|
||
P106||drawings=0|rels=|(2)20uV、6Hz-CH1~8
|
||
P108||drawings=0|rels=|(3)30uV、6Hz-CH1~8
|
||
P110||drawings=0|rels=|(4)40uV、6Hz-CH1~8
|
||
P112||drawings=0|rels=|(5)50uV、6Hz-CH1~8
|
||
P114||drawings=0|rels=|(6)60uV、6Hz-CH1~8
|
||
P116||drawings=0|rels=|(7)70uV、6Hz-CH1~8
|
||
P118||drawings=0|rels=|(8)80uV、6Hz-CH1~8
|
||
P120||drawings=0|rels=|(9)90uV、6Hz-CH1~8
|
||
P122||drawings=0|rels=|(10)100uV、6Hz-CH1~8
|
||
P124||drawings=0|rels=|(11)110uV、6Hz-CH1~8
|
||
P126||drawings=0|rels=|(12)120uV、6Hz-CH1~8
|
||
P128||drawings=0|rels=|(13)130uV、6Hz-CH1~8
|
||
P130||drawings=0|rels=|(14)140uV、6Hz-CH1~8
|
||
P132||drawings=0|rels=|(15)150uV、6Hz-CH1~8
|
||
P134||drawings=0|rels=|2026年07月28:外面信号发生器一端接测试工装ref和主板上的gnd、一端接测试工装信号端(32通道连在一起),单端信号每次可以测32个通道,8个通道一个页面,只展示8个通道,信号质量基本一致,其它通道请查看附件。连接方式如下:
|
||
P136||drawings=0|rels=|(1)2uV、6Hz-CH1~8
|
||
P138||drawings=0|rels=|(2)5uV、6Hz-CH1~8
|
||
P140||drawings=0|rels=|(3)10uV、6Hz-CH1~8
|
||
P142||drawings=0|rels=|由此可知,单端必须要接ref和gnd,信号才好很多。
|
||
P143||drawings=0|rels=|3. 差分信号测试
|
||
P144||drawings=0|rels=|差分信号每次可以测1个通道,只展示1个通道,8个通道信号质量基本一致,其它通道请查看附件。
|
||
P145||drawings=0|rels=|(1)1uV、6Hz-CH1
|
||
P147||drawings=0|rels=|(2)2uV、6Hz-CH1
|
||
P149||drawings=0|rels=|(3)3uV、6Hz-CH1
|
||
P151||drawings=0|rels=|(4)4uV、6Hz-CH1
|
||
P153||drawings=0|rels=|(5)5uV、6Hz-CH1
|
||
P155||drawings=0|rels=|(6)10uV、6Hz-CH1
|
||
P157||drawings=0|rels=|(7)1mV、6Hz-CH1
|
||
P159||drawings=0|rels=|完整附件如下:
|
||
P160||drawings=0|rels=|[spinal_stim单端和差分信号测试.zip]
|
||
P161||drawings=0|rels=|5. 测试工装开发
|
||
P162||drawings=0|rels=|1. 测试工装航空插头线序
|
||
P164||drawings=0|rels=|[测试工装开发.docx]
|
||
TABLE 0 6x5
|
||
序号 | 指示灯 | 状态 | 网络信号 | 引脚
|
||
1 | 电源指示灯 | 上电常亮 | LED_PWR |
|
||
2 | WIFI指示灯 | 未连接WIFI,长灭 / 已连接WIFI,未连接上位机,2Hz呼吸 / 已连接上位机,常亮 | LED_WIFI |
|
||
3 | 充电指示灯 | 充电中,常亮 / 充电完成,长灭 | CHGLED |
|
||
4 | 刺激指示灯 | 刺激中,常亮,否则长灭 | LED_STIM |
|
||
5 | 状态指示灯 | | LED_IDLE |
|
||
TABLE 1 8x7
|
||
No | 寄存器名称 / | 位数 | 方向 | 地址(eeg_bram地址) | 寄存器含义 | 备注 /
|
||
1 | test_ro | 32 / | RO | 13'h0 | 32'h12345678,常数,只读,PS端验证读寄存器是否正常 |
|
||
2 | test_data / | 32 | WR | 13’h4 / | 测试读写寄存器是否正常 |
|
||
3 | eeg_er | 32 | W | 13’h40 | PS端配置ADS1299采集命令等,主要配置接收使能 | /
|
||
4 | eeg_cr | 32 | W | 13’h44 / | PS端配置ADS1299采集命令等,主要配置接收cs和接收长度 | [1:0]、[5:4]、[9:8]、[13:12]、[17:16]为send_cs_n,[3:2]、[7:6]、[11:10]、[15:14]、[19:18]为send_length,send_length设置为3,表示下发3个字节的配置数据
|
||
5 | eeg_sr | 32 | RO | 13’h48 | PS端读取数据,外部未接信号,这个寄存器其实是弃用寄存器 |
|
||
5 | eeg_tr | 128 | W | 13’h100 / | PS端配置ADS1299采集命令等,主要配置初始化数据、采样率等 |
|
||
6 | eeg_rr | 128 | RO | 13’h200 | PS端读取ADS1299配置返回的数据 | 和采集的数据需要区分
|
||
TABLE 2 11x7
|
||
No | 寄存器名称 / | 位数 | 方向 | 地址(eeg_bram地址) | 寄存器含义 | 备注 /
|
||
1 | test_ro | 32 | RO | 13'h0 | 32'h12340004,常数,只读,PS端验证读寄存器是否正常 |
|
||
2 | test_data | 32 | WR | 13’h4 | 测试读写寄存器是否正常 |
|
||
3 | bram_addr_sel / | 2 | W | 13’h10 / | [0]:eeg_sel,选择eeg上传数据与否 / [1]:protocol_sel:选择protocol数据与否 |
|
||
4 | upload_round_qty_set | 32 | W | 13’h14 | 上传到PS端多少个包组成一帧 / | 例如20个小包组成一帧,帧结尾是tlast,每个小包根据配置的通道数量对应多少个数据
|
||
5 | pre_message_length / | 8 | W | 13’h18 / | 帧头有多少个数据 / |
|
||
6 | reset_package_id | 1 / | W | 13’h1c / | 复位包id计数,1:复位,0:维持 |
|
||
7 | package_overtime_ms | 32 | W | 13’h20 / | 设置包计数超时时间 / |
|
||
8 | pre_message | 192 / | W | 13’h100 | 设置帧头,192bit,从100地址开始设置 |
|
||
9 | ch_mapping2pc | 512 | W | 13’h200 | 设置通道映射,即和软件端显示的通道需要对应配置 |
|
||
10 | upload_ch | 64 | W | 13’h300 / | 上传通道选择,PL先采集所有通道数据,然后根据PS端配置哪些通道需要上传数据,将对应通道数据上传 |
|
||
TABLE 3 8x7
|
||
No | 寄存器名称 / | 位数 | 方向 | 地址(eeg_bram地址) | 寄存器含义 | 备注 /
|
||
1 | test_ro | 32 / | RO | 13'h0 | 32'h12345678,常数,只读,PS端验证读寄存器是否正常 |
|
||
2 | test_data | 32 | WR | 13’h4 / | 测试读写寄存器是否正常 |
|
||
3 | eeg_er | 32 | W | 13’h40 | PS端配置ADS1299采集命令等,主要配置接收使能 | /
|
||
4 | eeg_cr | 32 | W | 13’h44 / | PS端配置ADS1299采集命令等,主要配置接收cs和接收长度 | 现在:以前:[1:0]、[6:5]、[11:10]、[16:15]、[21:20]为send_cs_n,[4:2]、[9:7]、[14:12]、[19:17]、[24:22]为send_length,send_length设置为4,表示下发4个字节的配置数据 / 以前:[1:0]、[5:4]、[9:8]、[13:12]、[17:16]为send_cs_n,[3:2]、[7:6]、[11:10]、[15:14]、[19:18]为send_length,send_length设置为3,表示下发3个字节的配置数据
|
||
5 | eeg_sr | 32 | RO | 13’h48 / | PS端读取数据,外部未接信号,这个寄存器其实是弃用寄存器 |
|
||
5 | eeg_tr | 128 | W | 13’h100 / | PS端配置ADS1299采集命令等,主要配置初始化数据、采样率等 | /
|
||
6 | eeg_rr | 128 | RO | 13’h200 | PS端读取ADS1299配置返回的数据 | 和采集的数据需要区分
|
||
TABLE 4 11x7
|
||
No | 寄存器名称 / | 位数 | 方向 | 地址(eeg_bram地址) | 寄存器含义 | 备注 /
|
||
1 | test_ro | 32 | RO | 13'h0 | 32'h12340004,常数,只读,PS端验证读寄存器是否正常 |
|
||
2 | test_data | 32 | WR | 13’h4 | 测试读写寄存器是否正常 |
|
||
3 | bram_addr_sel | 2 | W | 13’h10 / | [0]:eeg_sel,选择eeg上传数据与否 / [1]:protocol_sel:选择protocol数据与否 |
|
||
4 | upload_round_qty_set | 32 | W | 13’h14 | 上传到PS端多少个包组成一帧 / | 例如20个小包组成一帧,帧结尾是tlast,每个小包根据配置的通道数量对应多少个数据
|
||
5 | pre_message_length / | 8 | W | 13’h18 / | 帧头有多少个数据 / |
|
||
6 | reset_package_id | 1 | W | 13’h1c / | 复位包id计数,1:复位,0:维持 |
|
||
7 | package_overtime_ms | 32 | W | 13’h20 / | 设置包计数超时时间 / |
|
||
8 | pre_message | 192 / | W | 13’h100 | 设置帧头,192bit,从100地址开始设置 |
|
||
9 | ch_mapping2pc | 512 | W | 13’h200 | 设置通道映射,即和软件端显示的通道需要对应配置 |
|
||
10 | upload_ch | 64 | W / | 13’h300 / | 上传通道选择,PL先采集所有通道数据,然后根据PS端配置哪些通道需要上传数据,将对应通道数据上传 |
|
||
TABLE 5 19x7
|
||
No | 寄存器名称 | 位数 | 方向 | 地址(eeg_bram地址) | 寄存器含义 | 备注
|
||
1 | test_ro | 32 | RO | 13'h0 | 32'h22222222,常数,只读,PS端验证读寄存器是否正常 |
|
||
2 | test_data | 32 | WR | 13’h4 | 测试读写寄存器是否正常 |
|
||
3 | cnv_en / | 1 | W | 13’h8 / | [0]:FPGA停止控制AD7689 / [1]:FPGA开始控制AD7689 |
|
||
4 | clear_int | 1 | W | 13’hc | 清除寄存器,将cur_monitor模块中的电流处理相关数清除 |
|
||
5 | cfg_reg / | 14 | W | 13’h10 | AD7689中的写入寄存器的数值,未用 |
|
||
6 | cnv_period_us | 32 | W | 13’h14 | AD7689采样率配置,未用 | 复位值:32'd1000
|
||
7 | flt_ch | 16 | RO | 13’h18 | 电流处理后的对应通道有效 |
|
||
8 | thr_total_cur | 32 | W | 13’h20 | 整体电流阈值控制 | 复位值:0
|
||
9 | thr_pos_cur | 32 | W | 13’h24 | 正电流阈值控制 | 复位值:0
|
||
10 | thr_neg_cur | 32 | W | 13’h28 | 负电流阈值控制 |
|
||
11 | flt_state | 32 / | RO | 13’h30 / | 电流状态寄存器 / flt_state = {28'd0, flt_bits}; / flt_bits = {cur_flt_neg, cur_flt_pos, cur_flt_total, cur_flt_ch}; / 即负电流超过阈值指示、正电流超过阈值指示、总体电流超过阈值指示、通道号指示回读 |
|
||
12 | flt_total_cur | 32 | RO | 13’h34 | 整体电流回读 |
|
||
13 | flt_pos_cur | 32 | RO | 13’h38 | 正电流回读 |
|
||
14 | flt_neg_cur | 32 | RO | 13’h3C | 负电流回读 |
|
||
15 | ch_map | 8 | W | 13’h400~13’h440 | 通道映射配置 | 总共16个8bit数据
|
||
16 | cur_thr | 16 | W | 13’h800~13’h840 | 每个通道电流阈值控制 | 总共16个16bit数据
|
||
17 | cur_rt | 16 | RO | 13’hC00~13’hC40 | 每个通道电流值回读 | 总共16个16bit数据
|
||
18 | cur_fault | 16 | RO | 13’h1000~13’h1040 | 通道对应的电流值回读 | 总共16个16bit数据
|
||
TABLE 6 5x7
|
||
No | 寄存器名称 | 位数 | 方向 | 地址(stim_bram地址) | 寄存器含义 | 备注
|
||
1 | eeg_emg_sel / | 2 | W | 13’h30 | eeg和emg选择使能,[1]:emg选择使能,[0]:eeg选择使能 / eeg_emg_sel[1:0]=2'b11,emg和eeg都有 / eeg_emg_sel[1:0]=2'b10,只有emg / eeg_emg_sel[1:0]=2'b01,只有eeg / eeg_emg_sel[1:0]=2'b00,两者都没 |
|
||
2 | eeg_send_package_num | 16 | W | 13’h34 | eeg需要上传的字节数,如一帧里面有4011个字节,则需要发10进制4011,或者16进制16'hfab |
|
||
3 | emg_send_package_num | 16 | W | 13’h38 / | emg需要上传的字节数,如一帧里面有4011个字节,则需要发10进制4011,或者16进制16'hfab |
|
||
4 | diff_pkt_data_sel | 1 | W | 13’h3C / | 选择是上传差分打包数据还是8通道原始数据 / 0:默认差分打包数据 / 1:选择差分8通道原始数据 | 如果配置成1,则差分打包数据不上传,相当于eeg_emg_sel中没有emg的数据
|
||
TABLE 7 11x6
|
||
No | PS端名称 | 位数 | 地址范围 | 含义 | 备注
|
||
1 | CHANN_EN / | 4 | 0x4121_0000~0x4121_FFFF | 控制4个8通道选择器通断,每个bit1个,和CHANN_SEL[3:0]配合 | GPIO,非GPIO2
|
||
2 | CHANN_SEL | 4 | 0x4122_0000~0x4122_FFFF | 控制4个8通道选择器通断,4bit对应8个通道,和CHANN_EN[3:0]配合 | GPIO,非GPIO2
|
||
3 | RST_AD5941 | 1 | 0x4123_0000~0x4123_FFFF | AD5941复位控制GPIO | GPIO,非GPIO2
|
||
4 | Z_IO | 1 | 0x4124_0000~0x4124_FFFF | 输入到AD5941 | GPIO,非GPIO2
|
||
5 | ZCHECK_SPI | 4 | 0x41E2_0000~0x41E2_FFFF | 控制AD5941 | SPI
|
||
6 | ELEC_MUX_IN | 4 | 0x4126_0000~0x4126_FFFF | 控制ADG1212,主要控制ELEC_BIAS、ELEC_REF、ZCHK_IN等的选择 | GPIO,非GPIO2
|
||
7 | STIM_SPI | 4 | 0x41E0_0000~0x41E0_FFFF | PS端控制CSI040的SPI端口 | SPI
|
||
8 | CUR_SPI | 4 | 0x41E1_0000~0x41E1_FFFF | PS端控制AD7689的SPI端口 | SPI
|
||
9 | gpio_0 / | 8 / | 0x4120_0000~0x4120_FFFF / | gpio0[7]:mux_pwr_en,新增模拟开关电源控制引脚,启用采集功能前打开 / gpio0[6]:stim_pwr_en(STIM_PWR_EN) / gpio0[5]:led_usb / gpio0[4]:led_stim,刺激灯状态指示 / gpio0[3]:led_state,灯状态指示 / gpio0[2]:rec_pwr_en / gpio0[1]:pudc / gpio0[0]:led_rsv | 配置led_wifi等,GPIO2,非GPIO /
|
||
10 | GPIO | 3 | 0x4125_0000~0x4125_FFFF / | gpio[2]:rstn_stim / gpio[1]:stim_trig / gpio[0]:stim_int | 配置刺激芯片GPIO,顺序也可以由PS端自己定义
|
||
TABLE 8 5x5
|
||
No. | EEG、EMG组合 / eeg_emg_sel / [1:0] | 包数计算 / | 参数含义 | 举例
|
||
1 | 2'b11,emg和eeg都有 / | 99+(mx3+4)xn+(cx3+4)xn | m:EEG通道数, / n:EEG或者EMG包数 / c:EMG通道数 | 以EEG通道数64、EMG通道数为8,20个包计算,总包数:99+(64x3+4)x20+(8x3+4)x20=4579字节
|
||
2 | 2'b01,只有eeg / | 99+(mx3+4)xn | m:EEG通道数, / n:EEG或者EMG包数 / c:EMG通道数 | 以EEG通道数64,20个包计算,总包数:99+(64x3+4)x20=4019字节
|
||
3 | 2'b10,只有emg / | 99+(cx3+4)xn | m:EEG通道数, / n:EEG或者EMG包数 / c:EMG通道数 | 以EMG通道数为8,20个包计算,总包数:99+(8x3+4)x20=659字节
|
||
4 | 2'b00,两者都没 | 0 | m:EEG通道数, / n:EEG或者EMG包数 / c:EMG通道数 | 0
|