Fpga中常用器件

调节

  • Bang-bang 调节器。输入是目标值和实际值。误差为正,输出满挡向一边;误差为负,输出满挡向另一边。只有这两档。
  • 带回差的调节器。误差很小的一段里输出保持不动,出了这段才加或减。你见过的列周期死区就是这个器件。
  • PI 调节器。误差乘一个比例,再把误差按拍累加。输出是这两部分的和。
  • PID 调节器。在 PI 上再加"这一拍误差减上一拍误差"。
  • 脉宽调制器。输入一个占空比,输出一段固定周期的高低电平,高电平的长度跟着占空比走。
  • 一位数模转换器。输入一个数字电压,输出一串高低电平。高电平越密,外面滤完之后的平均电压越高。

测量

  • 比较器。两个数比大小,输出大、小或相等。
  • 施密特触发器。带回差的比较器。向上过一个门限才变高,向下过另一个更低的门限才变低。
  • 脉宽测量器。输入一根高低变化的线,输出高电平持续了多少拍。
  • 周期测量器。输出相邻两个上升沿之间有多少拍。
  • 频率计。在一段固定时间里数有多少个上升沿。
  • 占空比测量器。同一段时间里,高电平拍数除以总拍数。
  • 正交编码器。两根方波,相位差 90°。输出方向和走过的格数。码盘那一路就是这种器件。
  • 鉴相器。两根时钟,输出谁领先、领先多少拍。

波形

  • 分频器。输入时钟,每数到 N 拍输出翻转一次。
  • 单稳态。输入一个上升沿,输出固定拍数的高电平,然后自己落下。
  • 定时器。开始后每拍加 1,加到设定值给出一个脉冲,并可以清零重来。
  • 看门狗。必须在数满之前收到一次"喂狗"。没收到,就输出复位脉冲。
  • 数控振荡器。每拍给相位加一个步长。步长大,输出频率就高。可以用相位最高位当方波输出。
  • 正弦发生器。相位去查一张正弦表,输出正弦的采样值。

滤波和运算

  • 滑动平均器。始终保留最近 N 个数的和,新进来一个就加上,最旧的一个就减去。
  • 有限冲激响应滤波器。最近 N 个采样各自乘一个系数,再加在一起。
  • 无限冲激响应滤波器。这一拍的输出还要拿去影响后面几拍。PI 里的积分就是这种反馈。
  • 峰值检测器。一段数据里找出最大值,以及它出现的位置。
  • 直方图。每个到达的数对应一个箱子,那个箱子的计数加 1。
  • 累加器。每拍加上输入的数。
  • 定点乘加器。这一拍做"乘完再加到累加器上"。
  • 除法器。输入被除数和除数,用若干拍算出商和余数。

以前常买芯片、现在用逻辑写的接口

  • UART。一根线发出去,一根线收进来。按波特率把一个字节拆成起始位、数据位、停止位。
  • SPI 主机。时钟、片选、主出从入、主入从出。主机产生时钟,按拍移出和移入。
  • I2C 主机。时钟和数据线都是开漏。主机发出起始、地址、应答和停止。
  • 校验器。数据流过时按一个多项式更新余数,最后余数就是校验结果。
  • 扰码器。数据流过一个移位寄存器,按固定抽头异或,把长串的 0 或 1 打散。

传递数据

  • 同步 FIFO。读写用同一个时钟。满了不能再写,空了不能再读。
  • 异步 FIFO。写时钟和读时钟不同。用格雷码把写指针送到读这边,把读指针送到写这边。
  • 双口 RAM。一边写,一边读,两边可以各用各的时钟。
  • 跨时钟同步器。一根单 bit 信号换时钟域时,先连续打两拍再往下用。
  • 仲裁器。几个人同时要用同一份资源,它决定这一拍给谁。

锁相

  • 数字锁相环。鉴相器看本地时钟和外部时钟谁领先,环路滤波把这个误差收一收,再去改数控振荡器的步长。鉴相器用 bang-bang 时,领先就让本地时钟慢一档,落后就快一档。
  • 延迟锁定环。不改频率,只改本地时钟经过的延迟拍数,直到边沿和外部时钟对齐。

测时间和产生时间

  • 计数器。每拍加 1,到设定值清零或停住。
  • 分频器。每数到 N 拍,输出翻转一次。
  • 定时器。从 0 加到设定值,到了给一个脉冲。
  • 看门狗。到时之前必须被清一次,否则输出复位。
  • 单稳态。来一个上升沿,输出固定拍数的高电平,然后自己落下。
  • 脉宽测量器。数一根线的高电平持续了多少拍。
  • 周期测量器。数相邻两个上升沿之间有多少拍。
  • 频率计。固定时间里数有多少个上升沿。
  • 时间数字转换器。两下事件之间的时间变成一个数字。粗的部分用计数器,比一个时钟还细的部分用一串进位链,看沿停在第几级。你工程里的 TDC 就是这个器件,tx_ref 是被测的那一下反馈沿。

比相位、把频率锁住

  • 异或鉴相器。两根方波相异或。相位差越大,输出高电平的时间越长。锁住时输出接近一半高、一半低。能看的相位差在 ±90° 以内。
  • 边沿鉴相器。比的是两根时钟的上升沿。本地时钟落后,就打出"加快"脉冲;超前,就打出"减慢"脉冲。同时能看出频率谁高谁低,所以锁相环里多用它。
  • Bang-bang 鉴相器。只回答早了还是晚了,不回答早了多少。高速串行收数据时最常见。
  • 数字环路滤波器。把鉴相器那一串忽长忽短的误差收平滑。一种简单做法是可逆计数器:误差让它加,加满才输出一个"加快";误差让它减,减到 0 才输出一个"减慢"。小抖动到不了满或到 0,就不会去动振荡器。
  • 数控振荡器。每拍给相位加一个步长。步长由上面的滤波器改。步长大,输出频率高。
  • 全数字锁相环。上面三件放在一个环里:鉴相器看出本地时钟和外部时钟的差别,环路滤波器把差别收一收,数控振荡器按这个去改频率,直到两边对齐。时间数字转换器可以代替鉴相器,直接把相位差变成数字再送给滤波器。
  • 延迟锁定环。不改频率,只改本地时钟经过几级延迟,直到边沿和外部时钟对齐。

调节

  • Bang-bang 调节器。误差为正,输出满挡向一边;为负,满挡向另一边。只有这两档。
  • 带回差的调节器。误差落在一小段里时输出不动,出了这段才加或减。
  • PI 调节器。误差乘一个比例,再把误差按拍累加,两部分相加作为输出。
  • PID 调节器。再加"这一拍误差减上一拍误差"。
  • 脉宽调制器。固定周期里,高电平的长度跟着输入的数字走。
  • 一位数模转换器。高电平越密,外面滤完之后的平均电压越高。

波形、滤波、运算

  • 比较器。两个数比出大、小或相等。
  • 施密特触发器。向上过一个门限才变高,向下过另一个更低的门限才变低。
  • 滑动平均器。始终保留最近 N 个数的和。
  • 有限冲激响应滤波器。最近 N 个采样各乘一个系数再相加。
  • 无限冲激响应滤波器。这一拍的输出还要影响后面几拍。
  • 峰值检测器。一段数里找出最大值和它所在的位置。
  • 直方图。每个数对应一个箱子,落到哪个箱子,那个箱子加 1。
  • 正弦发生器。相位累加之后去查正弦表。
  • 定点乘加器。这一拍做完乘法,加进累加器。
  • 除法器。若干拍算出商和余数。

接口。以前常是单独的芯片

  • UART。一根线发出,一根线接收。一个字节拆成起始位、数据位、停止位。
  • SPI 主机。主机发时钟,按拍把数据移出、把对方的数据移入。
  • I2C 主机。时钟和数据两根线,发出起始、地址、应答和停止。
  • 正交编码器。两根相位差 90° 的方波,输出方向和走过的格数。
  • 校验器。数据流过时按一个多项式更新余数。
  • 扰码器。用移位寄存器把长串的 0 或长串的 1 打散。
  • 线路编码器。把 8 位数据编成 10 位,保证线上有足够的跳变,对方才能从数据里恢复时钟。

把数从一边送到另一边

  • 同步 FIFO。读写同一个时钟。满了停写,空了停读。
  • 异步 FIFO。读写各用各的时钟。读写指针用格雷码送到对面,保证跨时钟时只有一位在变。
  • 跨时钟同步器。一根单 bit 信号换时钟时,连续打两拍再往下用。
  • 仲裁器。几路同时要用同一份资源,决定这一拍给谁。
  • 消抖器。电平稳定连续若干拍,才承认它变了。
相关推荐
Riwuarua3 小时前
从近似0基础开始FPGA开发——Part.23:AXI/AXIS 数据搬运、DMA 与 DDR 缓存架构设计
缓存·fpga开发
Jason_zhao_MR7 小时前
电力数据采集核心板选型指南
linux·嵌入式硬件·fpga开发·嵌入式
长春的KAKA8 小时前
Proxmark3 RDV4.01:Windows 11 下 Iceman 固件升级与完整使用指南
fpga开发
奋斗的阿狸_19861 天前
ESP32-S3 + ES7210 四通道麦克风录音上传方案
c语言·开发语言·fpga开发
hahaha60161 天前
FPGA+ARM实现AWB的全流程
人工智能·嵌入式硬件·算法·计算机视觉·fpga开发
unicrom_深圳市由你创科技1 天前
板上调试,先抓哪些信号?排查顺序是什么?
fpga开发
北城笑笑1 天前
FPGA 55 ,FPGA 行业 2026 发展分析与报告
fpga开发·fpga
Jason_zhao_MR1 天前
新一代电能数据采集终端方案
linux·人工智能·嵌入式硬件·fpga开发·嵌入式
ERROR:992 天前
AMD Ross没有介入Vivado的私生活
fpga开发