目前在做GD32替代STM32作为主控的各种飞行器研究,欢迎感兴趣的朋友联系我。

PLL&数字PLL

前言:随着当前数字SOC等IC设计技术的发展,越来越多的模拟电路模块被数字化。数字化显然会带来如更好的稳定性、移植性等优点,并且易于分析、结果可预测。本文中将介绍传统的锁相环(PLL:Phase-Locked Loop)的工作原理,以及数字化为可在CMOS-ASIC中实现的全数字锁相环(ADPLL:All-Digital PLL)。

PLL

PLL

上框图为传统的模拟PLL,显然主要有PDLFVCO三大主要构成。首先介绍的是压控振荡器VCO,一般模拟电路实现的该模块有如下的特性曲线,也就是输出信号的频率与输入的电压(在工作范围内)成线性关系:

$$
F_{VCO} = \omega_o + K_{vco}\cdot u_c
$$

VCO

现在将振荡器输出的信号表示为:

$$
u_o(t) = A_{o} \sin(\omega_o t + \theta_o)
$$

阅读更多...

FPGA实现脉冲信号MVT量化器

前言:采集脉冲信号,这个在嵌入式中相当常见的功能,很容易想到的方法有:定时器直接采PWM的脉宽、滤波后用ADC采能量(详见前文)。但是对于非常快速的尖脉冲信号,比如辐射粒子信号检测(能量511keV的粒子产生的脉宽时间为500ps左右),如果采用ADC方案则需要采样率达10G以上,这样的ADC价格极其昂贵而且还买不到!所以对于这样的信号,需要采用一种全新的思路,也就是接下来要讨论的MVT(多电压阈值Multi-Voltage Threshold)方法。

MVT Digitizer系统结构

system Architect

上图是从一篇做PET的论文中抽取的,除去后面的以太网通信部分,这就是一套完善的由FPGA实现的MVT Digitizer系统。

这个系统的核心组件是:

  1. LVDS Comparator:基于LVDS接收器的定阈值比较器
  2. TDC:基于加法器和传播延时设计的“时间数字转换器”
  3. Pack Module:对检测的阈值触发时间进行处理的算法逻辑实现

接下来,对这个系统的核心硬件部分依次进行原理分析。

阅读更多...

深刻理解神经网络计算原理

笔者初入深度学习先是使用TensorFlow后转PyTorch,但都是在框架上进行开发,只能理解各种网络结构的“头口”原理。在学习的中后期或者是要做落地的时候,就会困扰一个非常常见的问题——我们的网络到底需要多少的计算资源?我们暂且将计算资源在两方面考虑:显存和浮点计算次数。这就需要对网络计算过程的底层有透彻直接的认识,也就是本文的重点

很多厉害的大佬可以根据经验、直觉直接判断哪些网络可以在嵌入式平台上跑,但是笔者还是偏爱将过程量化

全连接网络

梯度下降

为了方便讨论,我们选取单隐藏层的全连接网络进行讨论。首先,声明该网络的输入为:

$$
x_0 = \begin{bmatrix}
x_0^{(1)} \\
x_0^{(2)} \\
\vdots \\
x_0^{(m_0)}
\end{bmatrix} \sim [m_0,1]
$$

本文中所有公式中~后的为矩阵、向量的维度。然而,在训练过程中,我们通常一次使用几个样本一起训练网络(mini-batch),那么一次输入网络的数据就是:

$$
X_0 = \begin{bmatrix}
x_{0,1} ,
x_{0,2} ,
\cdots ,
x_{0,N}
\end{bmatrix} \sim [m_0,N]
$$

阅读更多...
  • Copyrights © 2022-2023 RY.J
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信