<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>论文阅读 on Lumenth</title>
        <link>https://blog.lumenth.me/categories/%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB/</link>
        <description>Recent content in 论文阅读 on Lumenth</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-cn</language>
        <copyright>Lumenth</copyright>
        <lastBuildDate>Wed, 21 Oct 2026 23:25:05 +0800</lastBuildDate><atom:link href="https://blog.lumenth.me/categories/%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>SYNtzulu 处理器</title>
        <link>https://blog.lumenth.me/p/syntzulu/</link>
        <pubDate>Tue, 20 Oct 2026 00:00:00 +0000</pubDate>
        
        <guid>https://blog.lumenth.me/p/syntzulu/</guid>
        <description>&lt;img src="https://blog.lumenth.me/p/syntzulu/wallpaper.png" alt="Featured image of post SYNtzulu 处理器" /&gt;&lt;h1 id=&#34;syntzulu一种用于低功耗-fpga-实时传感器数据分析的微型-risc-v-控制-snn-处理器&#34;&gt;SYNtzulu：一种用于低功耗 FPGA 实时传感器数据分析的微型 RISC-V 控制 SNN 处理器
&lt;/h1&gt;&lt;p&gt;原文：&lt;a class=&#34;link&#34; href=&#34;https://ieeexplore.ieee.org/document/10666827&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;SYNtzulu: A Tiny RISC-V-Controlled SNN Processor for Real-Time Sensor Data Analysis on Low-Power FPGAs&lt;/a&gt;&lt;/p&gt;
&lt;h2 id=&#34;文章工作概述&#34;&gt;文章工作概述
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;本文提出的是一套&lt;strong&gt;可重构微型 SNN 整体架构&lt;/strong&gt;，用一个极小的、时钟驱动（clock-driven）的 FPGA SNN 推理引擎，在低端 iCE40UP5K（5280 LC）上支持事件式时间编码（event-based temporal encoding）的实时近传感时序数据分析，并由一颗位串行 RISC-V（SERV）软核负责 I/O、参数配置与细粒度功耗管理；推理峰值功耗 12.05 mW，配合动态电源管理平均可降到 1.45–9.87 mW（视应用而定），每突触能耗 62 pJ（比同类 FPGA 加速器低约 452×–661×）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;文章贡献&#34;&gt;文章贡献
&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;借助&lt;strong&gt;硬件可配置编码插槽&lt;/strong&gt;实时执行基于事件的时间编码（见相关概念）算法，从而在 FPGA 上实现面向时序数据的 SNN 分析。&lt;/li&gt;
&lt;li&gt;在极小的资源开销下，实现突触粒度的&lt;strong&gt;脉冲稀疏管理&lt;/strong&gt;，即使输入为基于事件的时间编码脉冲流，也可在 FPGA 上实现类神经形态计算。&lt;/li&gt;
&lt;li&gt;通过&lt;strong&gt;硬件资源精简与轻量化 SNN 模型&lt;/strong&gt;相结合，大幅降低功耗，满足深度边缘场景的功耗约束。&lt;/li&gt;
&lt;li&gt;利用&lt;strong&gt;RISC-V 软核实现细粒度功耗管理&lt;/strong&gt;，适配不同任务时序需求，进一步把脉冲稀疏性转化为功耗节省。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;syntzulu-的实现方式&#34;&gt;SYNtzulu 的实现方式
&lt;/h2&gt;&lt;p&gt;整体硬件的核心模块划分：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;可配置编码插槽（configurable encoding slot）&lt;/strong&gt;
预处理传感器原始时序信号，生成脉冲序列（spike trains）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SNN 引擎（SNN engine），包含两个子处理器&lt;/strong&gt;
整个架构的主计算核心，负责 SNN 推理运算。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;可配置解码插槽（configurable decoding slot）&lt;/strong&gt;
把 SNN 输出的脉冲序列转换成 MCU 或人可读的结果，比如分类标签、回归数值（sEMG 力值、运动跟踪）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;RISC-V 软核&lt;/strong&gt;
不负责 SNN 推理，只负责数据流 IO、功耗管理，以及对架构超参数的灵活配置（编码阈值、解码参数等）。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.lumenth.me/p/syntzulu/%E6%9E%B6%E6%9E%84.png&#34;
	width=&#34;915&#34;
	height=&#34;340&#34;
	srcset=&#34;https://blog.lumenth.me/p/syntzulu/%E6%9E%B6%E6%9E%84_hu_8a286b37a1677cc2.png 480w, https://blog.lumenth.me/p/syntzulu/%E6%9E%B6%E6%9E%84_hu_6c13ab5c8e5e56c2.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;269&#34;
		data-flex-basis=&#34;645px&#34;
	
&gt;&lt;/p&gt;
&lt;h3 id=&#34;snn-engine&#34;&gt;SNN Engine
&lt;/h3&gt;&lt;p&gt;该部分对应架构图：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.lumenth.me/p/syntzulu/SNNengine.png&#34;
	width=&#34;924&#34;
	height=&#34;577&#34;
	srcset=&#34;https://blog.lumenth.me/p/syntzulu/SNNengine_hu_621f210a48aaf796.png 480w, https://blog.lumenth.me/p/syntzulu/SNNengine_hu_87dd4220910a68e.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;160&#34;
		data-flex-basis=&#34;384px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;SNN 的计算基于下面的神经元动力学公式，后面的内容全部围绕它展开：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.lumenth.me/p/syntzulu/neuron.png&#34;
	width=&#34;1141&#34;
	height=&#34;413&#34;
	srcset=&#34;https://blog.lumenth.me/p/syntzulu/neuron_hu_61835452e857e591.png 480w, https://blog.lumenth.me/p/syntzulu/neuron_hu_8df5e93d2c11d441.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;276&#34;
		data-flex-basis=&#34;663px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;其中，i(t) 是突触电流，w 是突触权重，s(t−1) 是上一时刻的输入脉冲，v(t) 是膜电位，α 是衰减因子，θ 是脉冲阈值。注意第一条用的是&lt;strong&gt;上一时刻&lt;/strong&gt;的脉冲，第四条是发放脉冲后把膜电位按 (1−s) 复位（s=1 时清零）。&lt;/p&gt;
&lt;h4 id=&#34;weight-memory-与-synaptic-adder-工作原理&#34;&gt;weight memory 与 synaptic adder 工作原理
&lt;/h4&gt;&lt;p&gt;该模块的职责相当于公式的第一条，也是计算量最大、功耗最大的一条&lt;/p&gt;
&lt;p&gt;突触电流的求和需要依赖大量权重，而权重需要预加载存储在片上，iCE40UP5K 的片上存储大部分由 &lt;strong&gt;4 个 16 位宽的单端口 RAM（SPRAM）&lt;/strong&gt; 提供，这些块用来存权重。权重是 8 位宽，所以每个 SPRAM 一次能输出两个权重，4 个 SPRAM 合计&lt;strong&gt;每周期可同时输出 8 个 8 位权重&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;每对 SPRAM 每周期送来 4 个 8 位权重，交给突触加法器累加。整个引擎有 2 个并行子处理器，每个子处理器各嵌入一个 SIMD 并行的突触加法器，以分担推理工作量。&lt;/p&gt;
&lt;p&gt;一侧的突触加法器（SIMD-parallel synaptic adder）具体工作流程如下：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-fallback&#34; data-lang=&#34;fallback&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  SPRAM A[15:0]            SPRAM B[15:0]      ← 一对 16-bit 单端口 SPRAM，一拍读 32 bit
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    w3     w2               w1     w0
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    ↓     ↓               ↓     ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   s3 ∧  s2 ∧            s1 ∧  s0 ∧       ← 乘法退化成与门
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    └──┬──┘        └──┬──┘
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;   8-bit 加法器           8-bit 加法器        ← adder_simd: N=2，塞进同一个 DSP 的 SIMD 通道
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;          └────┬─────┘
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            9-bit 进入累加器相加              ← accumulator 的输入级
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;                    ↓
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;            18-bit 累加寄存器                 ← 跨周期累加，conv.sv 里 PIPE=5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;SYNtzulu 有一对并行处理器，因此一次能处理两个神经元；每个处理器单次可并行计算一个神经元的四路输入突触。对网络中的神经元迭代处理，直到所有层都算完。&lt;/p&gt;
&lt;h4 id=&#34;lif-integration-unit-工作原理&#34;&gt;LIF integration unit 工作原理
&lt;/h4&gt;&lt;p&gt;该模块的职责相当于公式中的后三条&lt;/p&gt;
&lt;p&gt;因此它的任务就是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;输入每个神经元的i(t)积分计算结果&lt;/li&gt;
&lt;li&gt;更新v(t) = αv(t−1) + i(t)&lt;/li&gt;
&lt;li&gt;当前神经元进行阈值判断并发放脉冲：s(t)=v&amp;gt;θ，然后 v←v(1−s)&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;spike-mem-与-stack-协同存储与脉冲稀疏性原理&#34;&gt;spike mem 与 stack 协同存储与脉冲稀疏性原理
&lt;/h4&gt;&lt;p&gt;每次运算后输出两个神经元的脉冲。SYNtzulu 把脉冲按 &lt;strong&gt;4 个一组&lt;/strong&gt;打包存入 spike mem，再把该组的组号存入 stack。分组的目的是利用&lt;strong&gt;脉冲稀疏性&lt;/strong&gt;（见相关概念）：组内脉冲全为 0 时直接丢弃组号，下层就不用再算这一组，从而大幅减少计算量、功耗与推理时间。&lt;/p&gt;
&lt;p&gt;存储方式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;按顺序将输出的脉冲组编组号，将脉冲组存入spike mem对应组号的地址中&lt;/li&gt;
&lt;li&gt;同时判断该组是否稀疏：4 位脉冲中只要有任意一位不为 0，就把组号存入 stack；全为 0 则直接丢弃组号。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;在下一层计算时，只需要每一个神经元轮询stack中存储的组号，然后从spike mem中读取对应组号的脉冲组，进行计算。&lt;/p&gt;
&lt;p&gt;此外，还涉及到一些需要存储的量：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;膜电位 v(t) ：在计算完成后存入到 bram_fifo（每一个处理器有一块）中。&lt;/li&gt;
&lt;li&gt;末层神经元膜电位 ：存入到 output_buffer 中，以供输出。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;计算总体预览&#34;&gt;计算总体预览
&lt;/h4&gt;&lt;p&gt;&lt;img src=&#34;https://blog.lumenth.me/p/syntzulu/%E8%AE%A1%E7%AE%97%E6%B5%81%E7%A8%8B.png&#34;
	width=&#34;729&#34;
	height=&#34;702&#34;
	srcset=&#34;https://blog.lumenth.me/p/syntzulu/%E8%AE%A1%E7%AE%97%E6%B5%81%E7%A8%8B_hu_abc10e471d396f08.png 480w, https://blog.lumenth.me/p/syntzulu/%E8%AE%A1%E7%AE%97%E6%B5%81%E7%A8%8B_hu_7b5a1a84c0a6bac0.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;103&#34;
		data-flex-basis=&#34;249px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;图中显示了 SYNtzulu 执行的处理步骤（上半图绿色部分为 SNN Engine 的执行过程）。首先，通过SPI接口读取传感器数据，然后SNN引擎可以逐层执行推理，均匀地将神经元层的计算分发在两个子处理器上，如图中的缩放所示。最后，将推理结果进行解码并通过UART接口进行传输(未显示)。从图中的放大细节可以看到，神经元积分与同层下一个神经元的突触电流计算是重叠进行的。执行在每个采样时间重复进行；此外，根据工作负载的不同，五个执行阶段（SPI数据传输、编码、推理、解码和 UART 数据传输）可以重叠。&lt;/p&gt;
&lt;h3 id=&#34;编码解码模块插槽&#34;&gt;编码/解码模块插槽
&lt;/h3&gt;&lt;p&gt;&lt;img src=&#34;https://blog.lumenth.me/p/syntzulu/%E7%BC%96%E7%A0%81%E8%A7%A3%E7%A0%81.png&#34;
	width=&#34;1539&#34;
	height=&#34;557&#34;
	srcset=&#34;https://blog.lumenth.me/p/syntzulu/%E7%BC%96%E7%A0%81%E8%A7%A3%E7%A0%81_hu_bd9271e1e08c5da0.png 480w, https://blog.lumenth.me/p/syntzulu/%E7%BC%96%E7%A0%81%E8%A7%A3%E7%A0%81_hu_c580537e12720f76.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;276&#34;
		data-flex-basis=&#34;663px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;SYNtzulu的编码槽可以被定制，以实现多种将输入数据转换为脉冲序列的方法。SNN引擎留给FPGA的资源足以实现相当复杂的DSP密集型方法，包括对大量通道数和采集速率的数据预处理。解码槽用于解释SNN引擎产生的输出脉冲序列，提供可用的输出，例如回归的结果或分类任务的结果。&lt;/p&gt;
&lt;h4 id=&#34;编码插槽&#34;&gt;编码插槽
&lt;/h4&gt;&lt;p&gt;编码插槽内部可以自由定义逻辑，但是有输入输出格式要求：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;编码器必须从基于 BRAM 的输入缓冲器按顺序接收特征样本，一拍一个特征值。&lt;/li&gt;
&lt;li&gt;编码器以脉冲组形式输出，并同拍给出组有效与组活跃标记：前者让引擎把该组脉冲存入脉冲存储，后者让引擎判断该组是否参与计算。&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;解码插槽&#34;&gt;解码插槽
&lt;/h4&gt;&lt;p&gt;解码插槽的设计本质上比编码插槽简单，在某些情况下可能根本不需要。&lt;/p&gt;
&lt;p&gt;例如，在回归任务中，解码是不必要的，因为网络最后一层的神经元电位直接作为输出。&lt;/p&gt;
&lt;p&gt;而在分类任务中就必须做脉冲计数：在一个时间窗口内统计最后一层每个神经元发放的脉冲数，再用比较树选出获胜者（划一个时间窗，数一下每个神经元发了多少脉冲，谁多就是谁）。&lt;/p&gt;
&lt;h3 id=&#34;risc-vserv核&#34;&gt;RISC-V(SERV)核
&lt;/h3&gt;&lt;p&gt;&lt;img src=&#34;https://blog.lumenth.me/p/syntzulu/RV.png&#34;
	width=&#34;1498&#34;
	height=&#34;554&#34;
	srcset=&#34;https://blog.lumenth.me/p/syntzulu/RV_hu_b66c6e0f8165141f.png 480w, https://blog.lumenth.me/p/syntzulu/RV_hu_96d22e9bfe9b6b0a.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;270&#34;
		data-flex-basis=&#34;648px&#34;
	
&gt;&lt;/p&gt;
&lt;p&gt;该系统嵌入了一个串行RISC-V(SERV)核，其特点是采用位串行设计，每32个时钟周期才能执行单个操作，虽然慢，但占用资源少、能耗极低，所以 SERV 不参与 SNN 推理或信号处理，只做控制。&lt;/p&gt;
&lt;p&gt;引入 SERV 核的优势：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;SPI 和 UART 数据调度&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;权重加载（上电一次）​：RISC-V 只负责控制运行策略，随后由 SPI 主控把四层权重从 flash 搬进引擎的权重存储；软核只轮询完成标志，不经手数据。&lt;/li&gt;
&lt;li&gt;样本输入（每帧）​：同理，SERV核每 5 ms 置一次启动位，16 字节采样数据被自动搬进输入缓冲器。demo 中这份数据来自 flash（模拟传感器），实际部署时来自挂在该 SPI 上的传感器。&lt;/li&gt;
&lt;li&gt;结果输出（每帧）​：推理完成后，软核从输出缓冲读出 32 字节——末层神经元的 16 位膜电位，逐字节喂给 UART。这是三条通路中唯一需要 CPU 反复搬运的环节。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;2&#34;&gt;
&lt;li&gt;电源管理&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;两次采样之间，数据在等下一帧，引擎早已算完。所以软核在输出完成后做两件事——置位门控寄存器，直接关掉 24 MHz 主振荡器，&lt;/li&gt;
&lt;li&gt;此时只有 10 kHz 的低频振荡器在驱动定时器；到点后产生异步中断，清掉门控位、主振荡器重启，软核醒来后开始下一轮采样。&lt;/li&gt;
&lt;li&gt;这让平均功耗从推理时的 12.05 mW 降到 1.45–9.87 mW（视应用而定），而门控逻辑本身只占 25 个 LC。&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&#34;3&#34;&gt;
&lt;li&gt;编码与解码槽的参数配置&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;编码阈值、解码参数等架构超参数由软核在运行时写入寄存器，换任务时不必重新综合硬件；&lt;/li&gt;
&lt;li&gt;因此同一套编码/解码插槽逻辑可以复用到不同任务上，灵活性来自&amp;quot;可配置&amp;quot;而不是&amp;quot;可重写&amp;quot;。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;相关概念&#34;&gt;相关概念
&lt;/h2&gt;&lt;h3 id=&#34;编码种类&#34;&gt;编码种类
&lt;/h3&gt;&lt;p&gt;编码种类围绕下面四点来组合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;基于帧：把一段连续输入数据先收集成一&lt;strong&gt;帧（时间窗口）&lt;/strong&gt;，&lt;strong&gt;等窗口收集完成之后，统一执行脉冲编码&lt;/strong&gt;。（攒满时间窗口之后才开始编码）&lt;/li&gt;
&lt;li&gt;基于事件：不需要积攒时间窗口。每一个输入采样点到来就对应一个时间步，&lt;strong&gt;逐采样即时判断处理；只有输入信号触发特定事件（幅值越限 / 变化超过阈值），才输出脉冲&lt;/strong&gt;。（采样来了立刻判断，不是一定输出脉冲）&lt;/li&gt;
&lt;li&gt;速率编码：依靠&lt;strong&gt;一段时间窗口内脉冲的总数量&lt;/strong&gt;表征信号大小；必须在一段窗口里统计，因此天然依附于基于帧的处理范式，不能像事件式编码那样逐采样即时输出。&lt;/li&gt;
&lt;li&gt;时间编码：依靠&lt;strong&gt;脉冲发生的时刻（时间位置）承载信号信息&lt;/strong&gt;（需要分情况讨论）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&#34;基于帧的速率编码framebased-rate-encoding&#34;&gt;基于帧的速率编码（frame‑based rate encoding）
&lt;/h4&gt;&lt;p&gt;基于帧的速率编码是&lt;strong&gt;基于帧处理范式 + 速率编码信息表达方式&lt;/strong&gt;组合而成的脉冲编码方式。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;处理流程：先持续采集一段连续输入信号，缓存攒满预设的时间窗口（帧）；&lt;strong&gt;窗口收集完毕后统一执行编码&lt;/strong&gt;。&lt;/li&gt;
&lt;li&gt;信息表达：输入信号的大小由&lt;strong&gt;该时间窗口内产生的脉冲密度（脉冲总数量）&lt;strong&gt;表征。脉冲出现的时刻、脉冲之间的先后顺序&lt;/strong&gt;不用于表达原始信号强弱&lt;/strong&gt;。只要窗口内脉冲总数相同（即密度相同），就代表同等大小的输入。&lt;/li&gt;
&lt;li&gt;特点：
&lt;ul&gt;
&lt;li&gt;必须依赖时间窗口，&lt;strong&gt;无法用于基于事件的处理范式&lt;/strong&gt;；&lt;/li&gt;
&lt;li&gt;每个输入神经元独立统计自身在窗口内的脉冲数目；&lt;/li&gt;
&lt;li&gt;编码层面不关心脉冲什么时候发放，只统计计数。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;局限：存在等于窗口长度的固有延迟；丢失信号内部精细时序信息。&lt;/li&gt;
&lt;li&gt;数据流：原始传感器数值 → 缓存攒满一帧 → 统计信号幅值映射为窗口脉冲数量 → 生成脉冲序列送入 SNN 做推理。&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;基于帧的时间编码framebased-temporal-encoding典型为-ttfstime-to-first-spike&#34;&gt;基于帧的时间编码（frame‑based temporal encoding，典型为 TTFS，Time-To-First-Spike）
&lt;/h4&gt;&lt;p&gt;基于帧的时间编码是&lt;strong&gt;基于帧处理范式 + 时间编码信息表达方式&lt;/strong&gt;组合而成的脉冲编码方式。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;处理流程：持续采集输入信号并缓存，攒满预设时间窗口（帧），窗口结束后开始编码，生成分布于窗口时长内的脉冲序列。&lt;/li&gt;
&lt;li&gt;信息表达：输入信号强弱由&lt;strong&gt;每个输入神经元在本窗口内自身第一个脉冲的发生时刻&lt;/strong&gt;表征。该神经元首个脉冲出现得越早，信号幅值越大；同一神经元后续产生的脉冲不再用来代表原始输入的大小。&lt;/li&gt;
&lt;li&gt;特点：
&lt;ul&gt;
&lt;li&gt;依赖固定时间窗口，存在窗口带来的固有延迟；&lt;/li&gt;
&lt;li&gt;各输入神经元相互独立，各自记录自己在窗口内的首脉冲时刻，不是全局窗口最早的脉冲；&lt;/li&gt;
&lt;li&gt;从编码语义上，仅首脉冲承载幅值信息，后续脉冲可忽略（硬件层面若不做抑制，后续脉冲仍会输入 SNN 参与运算）。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;局限：需要等待窗口结束获取信息；仅利用首脉冲时刻，对波形内部动态时序信息利用有限。&lt;/li&gt;
&lt;li&gt;数据流：原始传感器数值 → 缓存攒满一帧 → 根据信号幅值确定各神经元首脉冲产生时刻，生成脉冲序列 → 送入 SNN 推理。&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&#34;纯基于事件的时间编码pure-eventbased-temporal-encoding&#34;&gt;纯基于事件的时间编码（pure event‑based temporal encoding）
&lt;/h4&gt;&lt;p&gt;基于事件的时间编码是&lt;strong&gt;基于事件处理范式 + 时间编码信息表达方式&lt;/strong&gt;组合而成的脉冲编码方式。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;处理流程&lt;/strong&gt;：持续接收传感器采样点，每一个输入采样点到达即对应一个时间步，逐样本即时判断处理，&lt;strong&gt;无需积攒时间窗口&lt;/strong&gt;；当输入信号满足预设事件触发条件（信号变化幅度超过阈值 / 信号绝对幅值越过自适应阈值），立刻输出脉冲；不满足条件则不产生脉冲。新采样持续不断到来，编码判断持续进行，不存在窗口的采集 - 编码分阶段阻塞，也没有窗口流水线机制。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;信息表达&lt;/strong&gt;：依靠&lt;strong&gt;脉冲发生时刻、脉冲之间的相对时间间隔以及完整脉冲时序序列&lt;/strong&gt;共同表征原始信号动态。不存在 TTFS 里首脉冲优先级更高的规则，所有生成的脉冲均为有效信息；同时，长时间无脉冲的平稳时段本身也携带信号信息。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特点&lt;/strong&gt;：
&lt;ul&gt;
&lt;li&gt;不需要固定时间窗口，消除了窗口采集带来的固有延迟；&lt;/li&gt;
&lt;li&gt;采样点逐个实时判断，脉冲按需即时产生，不是一次性批量生成一整段脉冲序列；&lt;/li&gt;
&lt;li&gt;两种触发模式：Delta 调制依靠相邻采样的变动幅度触发脉冲；iEEG 编码依靠信号绝对幅值越过自适应阈值触发脉冲。&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;局限&lt;/strong&gt;：生成的脉冲流稀疏且脉冲分布不稳定，对后端 SNN 引擎的时序处理能力有要求；硬件实现上对实时阈值判断模块有需求。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数据流&lt;/strong&gt;：原始传感器数值 → 逐采样实时判断（编码槽）→ 满足事件条件即时输出脉冲 → 脉冲逐个送入 SNN 推理。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&#34;脉冲稀疏性&#34;&gt;脉冲稀疏性
&lt;/h3&gt;&lt;p&gt;脉冲稀疏性：由于每一层神经元的输出，会出现大面积为 0 的情况，所以输出的脉冲有着明显的稀疏性质。&lt;/p&gt;
&lt;p&gt;见下图：&lt;/p&gt;
&lt;p&gt;&lt;img src=&#34;https://blog.lumenth.me/p/syntzulu/Sparsity.png&#34;
	width=&#34;737&#34;
	height=&#34;317&#34;
	srcset=&#34;https://blog.lumenth.me/p/syntzulu/Sparsity_hu_9d2149c9ec5c4ac4.png 480w, https://blog.lumenth.me/p/syntzulu/Sparsity_hu_b5517440b8ee1a46.png 1024w&#34;
	loading=&#34;lazy&#34;
	
	
		class=&#34;gallery-image&#34; 
		data-flex-grow=&#34;232&#34;
		data-flex-basis=&#34;557px&#34;
	
&gt;&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
