怎么运行的?

待分析信号的基本概念 普通 NFC 卡工作在 13.56 Mhz 频率,因此第一步是接收该信号并解调以获得基带流。 为此,可以使用任何能够调谐此频率的 SDR 设备,我有一款出色且便宜的 AirSpy Mini,能够从 24Mhz 调谐到 1700Mhz。 (https://airspy.com/airspy-mini/)

但是,无法使用此接收器调谐 13.56Mhz,而是使用 27.12Mhz 的二次谐波或 40.68Mhz 的三次谐波,效果良好。

接收到的信号将由 I 和 Q 分量组成,如下图所示。

根据这些分量,使用经典公式 sqrt (I ^ 2 + Q ^ 2) 计算实际震级。 让我们看看 REQA 命令在基带中接收到的信号(经过 I/Q 到幅度变换之后)及其响应:

可以看出,它是以 100% ASK 调制的信号,对应于 NFC 规范的 NFC-A REQA 26h 命令,卡的响应使用称为负载调制的东西,表现为主信号上的一系列脉冲 命令之后。 这是最基本的调制,但每个 NFC-A/B/F/V 标准都有自己的特点。

NFC-A调制

该标准对应于 ISO14443A 规范,该规范描述了其调制方式以及适用的时序。

读取器帧使用 100% ASK 和修改后的米勒编码进行编码。

当速度为 106 Kbps 时,卡响应使用曼彻斯特方案进行编码,并在 848 KHz 的副载波上进行 OOK 负载调制。

对于更高的速度,212 kbps、424 kbps 和 848 kbps,它在相同的子载波上使用具有二进制相变调制 BPSK 的 NRZ-L。

信号处理

现在我们将看看如何解码它。

第一步,准备基本信号在开始解码每个调制之前,有必要从一系列基本信号开始,这将有助于我们完成其余过程。

我接下来要解释的概念在 Sam Koblenski 的页面 (https://sam-koblenski.blogspot.com/2015/08/everyday-dsp-for-programmers-basic.html) 上有很好的描述,我推荐您 阅读以充分理解与我们将要进行的分析相关的所有过程。

请记住,从 SDR 接收器接收的样本由 I/Q 值组成,因此第一步是获取真实信号。

一旦我们得到了真实信号,就需要消除连续分量(DC),这将大大方便后续的分析过程。 为此,我们将使用一个简单的 IIR 滤波器。

为了计算调制深度,我们需要知道信号的包络,就像它没有被脉冲或子载波调制一样,为此,我们将使用简单的慢指数平均值。

最后,我们将获得信号的标准偏差或方差,这将帮助我们根据背景噪声计算适当的检测阈值。

接下来,确定所需的调制类型 正如我们在描述中所看到的,NFC-A / B / F / V 标准将使用不同的调制,但全部都基于两种基本技术:幅度调制和相位调制。

对于每个符号的编码,他们使用 Miller、Manchester 或 NRZ-L。 前两个可以通过相关技术来检测,对于 NRZ-L 来说,检测每个同步点的信号电平就足够了,让我们详细看看。

信号相关性的基本概念 相关运算是衡量一个信号与用作参考的另一个信号的相似程度的指标。 它广泛用于数字信号分析。 对于模拟信号,每个样本x(t)的相关性需要N次乘法,因此一个符号需要N^2次乘法,这是一个成本高昂的过程。

但由于参考信号是数字的,它只有两个可能的值0或1,这通过消除所有乘法极大地简化了计算,允许通过处理简单的移动平均来进行相关性。

这些将是我们需要执行相关性的两个基本符号,如果您稍微研究一下需要执行的操作,您会发现它们被简化为计算符号持续时间的平均值,然后获得 临界点 t = 0、t = N / 2 和 t = N 之间的差异如下图所示。

我们将广泛使用此操作来提取 NFC 信号中的信息

ASK 米勒和曼彻斯特信号的解调

对于ASK调制信号,对基带信号x(t)进行上述相关就足够了。 下面是用于计算所有其他符号的两个基本符号 S0、S1 的相关函数。 最后一个值是函数 SD,代表检测定时所需的 S0 和 S1 之间的绝对差。

当速度为 106 kbps 时,可以通过应用相同的技术来提取答案,但我们不使用信号 x(t),而是使用 w(t) 将其乘以自身,从而获得我们将要计算的功率测量值。 然后对1/4的符号周期进行积分,这样我们就可以得到一个相当清晰的ASK信号,以便能够应用上面描述的相关性,这是过程图。

卡的强度要弱得多,但足以允许使用与模式 E、D、F 相同的技术进行检测,这里以更好的比例显示了所描述的过程。 从上到下,信号为:x(t)、w(t)、w(t)^2 和 y(t)。

BPSK 信号的解调

对于 BPSK 解调,需要参考信号来检测相位变化(载波恢复),因为这很复杂,我选择通过将每个符号乘以前一个符号来实现它,以便可以通过以下方式确定符号的值: 其间发生的变化。

信号不包含 DC 偏移非常重要,因此之前获得的信号 w(t) 将作为过程的输入。

下面您可以看到以 BPSK 调制的信号,用于 424Kbps 的响应帧,然后是解调 y(t) 和四分之一符号 r(t) 的积分过程。

最后,通过检查结果是正还是负,可以确定每个符号的值。 它稍微复杂一些,因为必须考虑定时和同步,但使用该信号可以直接检测符号值。

符号检测
从相关过程中,我们获得符号流,其中已经可以应用每个标准 NFC-A / B / F / V 中定义的特定解码。每个符号相关性根据同步在适当的时刻进行评估 。

相关过程从计算 S0 和 S1 值开始,这些值代表随后用于区分 NFC 模式 X、Y、Z、E、D、F、M、N 等的基本符号,这些模式随后由状态解释 机器按照ISO ISO14443A、ISO14443B、ISO15693和Felica的规范来获得可以轻松处理的字节流。

比特率歧视

我们已经了解了解调是如何执行的,但是当速度不同时,解调是如何应用的呢? 好吧,由于我们事先不知道传输速度,因此有必要通过一组相关器对所有可能的速度应用相同的过程。 实际上只需要对每帧的第一个符号执行此操作,一旦知道比特率,其余的就使用该速度进行解码。