ZH
是硬件,不是指令。
跟随同一组输入,进入彼此独立的逻辑单元。
3D 视图已聚焦 · A–D 切换输入 · 空格键发出时钟脉冲 · R 重置 · L 切换标签 · 1–6 切换章节 · Esc 释放
3D 渲染不可用
逻辑控件、真值表和波形引擎仍可使用。
从一个五分钟实验开始
在全加器中切换 A、B 和 C。SUM 是它们的奇偶值;至少有两个为高时,CARRY 为高。这里不需要时钟。打开LUT 内部,看看输入选中的是哪一个存储位。再改动一个存储位:您就重新配置了电路,而不是改变了数据输入。
接着载入两级流水线,打开记住一位,然后发出时钟脉冲。两个寄存器在同一个边沿对各自的 D 值采样。第二个寄存器采到的是第一个寄存器之前的输出——而不是该边沿刚刚产生的值。关闭 CE 可以保持状态。SRST 是同步复位,并且优先于 CE。
LUT 的真正含义
对于四输入 LUT,地址为 I0 + 2·I1 + 4·I2 + 8·I3,共有 16 个存储位。INIT[address] 就是组合逻辑的结果。可见的 16→8→4→2→1 树,是由 15 个二选一多路选择器组成的逻辑等效网络。I0 在每一对之中选择;I1、I2 和 I3 依次在更大的分组之间选择。这一解释并不代表某种特定的晶体管版图。这棵树显示的是已到达的 LUT 输入所决定的选择;树内部的各个门并不单独做延迟仿真。F 在一个总计 620 ps 的 LUT 延迟之后更新。
例如,0x6666 实现 I0 异或 I1;0x9696 实现三输入奇偶函数;0xE8E8 实现三输入多数表决函数。当函数与 I3 无关时,高八项与低八项完全相同。数据输入变化时,LUT 的存储内容保持不变。
哪些可以配置,哪些不可以?
配置决定 LUT 的各个位、输入源,以及单元对外的输出是用 F 还是寄存后的 Q。多路选择器和金属连线在芯片制造时就已存在;配置只是选择它们的行为。布线显微镜把这一点抽象为每个目标只选一个信号源。真实器件的布线轨道、开关连通性和布线约束都是有限的,且因器件系列而异,并不是一个通用的交叉开关。
本实验室的 16 个单元各有一个 LUT4 和一个可选的上升沿 DFF。真实的可配置逻辑块通常把多个逻辑元件组合在一起;其名称、LUT 大小、打包与共享规则都因器件系列而异。有些 FPGA 使用更大的 LUT 或可拆分的 LUT。FPGA 的配置技术也各不相同:不要以为所有 FPGA 都采用易失性的 SRAM 配置。
数字引擎
引擎使用整数皮秒、排队的信号事件、互连上的传输延迟以及 LUT 的惯性延迟。非常数连接的布线延迟为 260 ps + 140 ps × Manhattan hops + added route delay(260 ps 基础延迟,每个曼哈顿跳距再加 140 ps,另加附加布线延迟)。接成常数的输入没有模型布线延迟。LUT 延迟为 620 ps;时钟到 Q 延迟为 220 ps;建立时间和保持时间分别为 200 ps 和 120 ps。这些只是讲解用的数值,并非任何芯片的规格。
在共同的理想上升沿上,所有 D 输入都会在任何 Q 改变之前完成采样,因此计数器的反馈是同步的。纯组合的反馈环路会被拒绝。X 表示数字值无法保证:当 LUT 的某个输入未知时,只有所有相符的表项都一致,结果才是确定的。建立或保持违例会产生保守的未知状态。引擎不预测亚稳态的模拟电压,也不预测它按概率消解的过程。
时钟脉冲会在当前状态已满足建立时间之后,于未来某个 12 ns 时钟网格边界处安排一个完整的脉冲。用户操作之间的空闲边界可能被跳过;这是一个交互式测试平台,而不是持续运行的振荡器。运行时钟会反复排入这样的脉冲。下一事件会暂停自动传播,并前进一个仿真时间戳。波形仪器和 VCD 导出包含的是实际记录的模型状态,而不是示意性的正弦波。显示区以滚动方式保留最多 4000 个事件时刻快照。
时序是一张明确而独立的工作表
时序章节不会改变实时电路或其波形。它在示意性的最小/最大延迟角下,检查一条假设的寄存器到寄存器路径。建立检查使用最晚到达时间:tCQ(max) + route(max) + N·tLUT(max)。其截止时间为 T + capture−launch skew − uncertainty − setup,即周期加上捕获与发起时钟之间的偏斜,再减去不确定性余量和建立时间。保持检查使用最早到达时间,并要求它大于 capture−launch skew + uncertainty + hold,即该偏斜、不确定性余量与保持时间之和。正的捕获偏斜有利于建立、不利于保持。单靠降低时钟频率,无法修复同一边沿上的保持违例。
工作表采用 tCQ 最大/最小 = 0.22/0.10 ns,tLUT 最大/最小 = 0.62/0.18 ns。每项检查各自计入 0.10 ns 的保守不确定性余量。报告中仅按建立时间得出的频率上限,并不是对整个设计的时序保证。工作表未考虑时钟重汇聚、时序例外、多周期路径、多时钟分析以及厂商的时序角。
配置与小型编译器
布尔映射器最多接受四个变量,以及非(NOT)、与(AND)、异或(XOR)、或(OR)运算和括号。它解析表达式、求出全部 16 种情况的值,并把该函数精确映射到一个 LUT4。它会分配一个固定的教学单元和四条输入连接。它不能综合任意的 Verilog,不解决真实的布线拥塞,不执行时序驱动的布局,也不生成厂商比特流。生成的 RTL 描述当前已配置的实验室网表,包括同步复位和非阻塞的寄存器赋值。FPGA 对寄存器初始化的支持取决于目标器件和工具。
编程一个字、更改一条布线或选择寄存/旁路输出,都被视为对整个模型的重新配置:时钟停止,运行状态和波形历史重新开始,Q 初始化为 0,所选的主输入电平保持不变。这并不是在仿真实时的部分重配置。JSON 项目文件保存的是电路和主输入,而不是模拟量或瞬态的运行状态。
硬核资源与模型局限
BRAM 和 DSP 列只是架构背景:可以查看,但并未在所提供的逻辑网表中例化。在许多真实架构中,专用进位链可以加速算术运算。这里的加法器和计数器有意使用 LUT 逻辑,以揭示其中的布尔机制;它们并不代表经过优化的进位链映射。
本模型不模拟晶体管行为、功耗、发热、信号完整性、模拟亚稳态、电气 I/O 标准、详细的时钟树偏斜、SRAM 翻转概率、器件速度等级或厂商引脚分配。层间距、类似封装的焊盘以及各项尺寸都只是示意。运行这个 JavaScript 仿真器并不等于运行一块 FPGA:它只是在软件中再现所述的数字语义。
操作与无障碍
拖动可环绕观察,按住 Shift 拖动或用右键拖动可平移,双指捏合可缩放。选择俯视可切换为正交平面视图。可以点击逻辑单元、LUT 位或布线交叉点。所有可编辑的电路参数也都能通过普通表单控件修改。3D 视图获得焦点时,滚轮缩放,方向键环绕视角,A–D 切换主输入,空格键排入一个时钟脉冲,R 重置运行状态,1–6 切换章节,L 显示或隐藏标签,? 打开本指南,Esc 释放视图。本实验室使用原生 WebGL 2,并在此浏览器中计算每一个信号。
主要技术参考资料
架构概念和时序公式均已对照以下资料核实。外部链接将在新标签页中打开。
为什么需要专用存储器
LUT 存储一张小型真值表,有些 FPGA 的 LUT 还可以配置为分布式存储器。更大的缓冲区、FIFO 和数据表,用专用的块 RAM 资源实现会更高效。真实的存储块具有特定的容量、位宽、端口模式、写使能、读时序,以及写入同时读取时的行为。
位的另一种角色
在本实验室中,LUT 的 INIT 位定义一个布尔函数。而在运行中的存储器设计里,地址、数据和写使能用来访问用户数据。这两种用途都不能与另一类配置位混为一谈——那些配置位用于选择 RAM 的工作模式或为其端口布线。
选择琥珀色的 LUT 单元即可回到仿真的数据通路。这个可视化模型不会凭空编造任何 BRAM 延迟、双端口冲突行为或存储的用户数据。
乘法器不一定要消耗大量 LUT
许多 FPGA 系列都包含专用的算术模块,用于乘法和乘累加等运算。这些模块可以包含流水线寄存器、加法器、操作数多路选择器和级联连接。位宽、是否有符号、支持的运算和时序都因器件而异。
从 HDL 到合适的资源
当目标器件、操作数位宽和综合设置允许时,综合工具可能从算术 RTL 中推断出 DSP 模块;它也可能改用 LUT 来实现较小的函数。更多的硬件资源可以并发工作,但它们的吞吐量和延迟仍取决于时钟、流水线和数据搬移。
本学习实验室有意展示基于 LUT 的小型函数。它并不声称其示意性的 DSP 列是经过仿真的厂商算术原语。
保存您配置的 LUT 字、布线、寄存器选择和主输入电平。波形和瞬态的寄存器状态不属于配置文件。
可移植的配置
采用 FABRIC 格式、经过验证的可读 JSON 文件。不是厂商比特流。
浏览器本地检查点
仅保存在此浏览器中。能否使用取决于浏览器的存储策略。
记录的信号活动
以标准的值变转储(Value Change Dump)格式导出当前的事件时间记录(时间刻度 1 ps)。
可读的硬件描述
根据实际编程的网表生成,而不是尚未提交的表达式草稿。
展品暂时不可用,播放已暂停。请刷新页面重试。