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