FPGA 硬件仿真框架 (FPGA_HW_SIM_FWK)。





5.00/5 (14投票s)
交互式模拟用 VHDL 编程的 FPGA 硬件。
本文介绍了一种硬件仿真工具,它无需实际硬件或昂贵的许可证即可提供实时的“交互式”用户体验。
对激励和结果的并发仿真非常简单,“真实”线程可用于测试实际情况,而这些情况是标准 VHDL 仿真工具无法实现的。
此工具实际上是一个框架,通过模拟数字信号(尚未支持模拟信号仿真)来仿真硬件。
仿真框架取代了 FPGA 芯片本身,以及外围组件和设备。
通过不同配置或工具变体的同时实例化,甚至可以模拟由多个 FPGA、传感器和执行器组成的复杂系统。
引言
在我恢复 FPGA 开发活动(暂停25年后!)后不久,我意识到有些事情发生了很大变化,而另一些则保持不变。
一方面,尽管其最近扩展到新领域,但这项技术对于业余开发人员来说仍然难以触及,并且主要服务于小众应用。
另一方面,通过降低成本和支持开源的新努力,这个话题在过去几年中越来越受欢迎。
尽管如此,购买开发板来玩耍和尝试仍然可能是即使是最热情的业余开发人员也会遇到的阻碍。
开始这个话题时会遇到几个问题。
根据具体应用,不同制造商、FPGA 系列、特定功能和尺寸、许可证和工具支持的种类可能令人望而生畏。
正是在这一点上,FPGA 硬件仿真框架可以提供一个合适的中间步骤,特别是对于那些在该领域经验不多且预算有限的人。
借助此工具,您可以
- 通过避免开发板/硬件原型、电源、电缆、逻辑分析仪、示波器、传感器、执行器、昂贵的许可证等需求,将成本降至零。
- 避免对特定制造商的依赖
- 通过根据您的需求调整和扩展模拟硬件来获得灵活性
本文除其他外,描述了框架的架构、实现细节、可能的应用以及这种新方法的当前局限性。
目录
- 动机
- 仿真和测试
- 架构概述
- 详细设计
- 代码
- 应用图形用户界面
- 特点
- 约束
- 用例
- 项目设置
- 可执行文件的生成
- 工具
- 关于 FPGA
- FPGA 的应用
- 关于 VHDL
- 后续步骤
- 图片和视频画廊
- 摘要
- 关注点
- 历史
动机
在深入细节之前,让我们看看您为什么需要这个工具,以及为什么您可能找不到替代解决方案。
要理解此工具的“为什么”,我们首先需要了解 FPGA 开发中的经典方法。
有关背景信息,您可能需要阅读此内容:FPGA。
现场可编程门阵列的设计通常使用硬件描述语言 (HDL) 进行。
一旦您编写了代码,您可能希望在仿真上测试它,然后再最终编程实际的 FPGA 并在真实硬件上进行进一步测试。
这通常通过也使用 HDL 编写“测试台”来完成。
在那里,您实例化您的待测单元 (UUT),提供一些输入,并评估相应的输出。
测试台和 UUT 代码都可以在通常由 FPGA 制造商提供的仿真工具中运行。
如果一切都符合预期并且您有良好的测试覆盖率,那么硬件也能正常工作的可能性很高。
当然,您想确保,所以您会直接在真实的 FPGA 上进行进一步测试。
但是,如果没有可用的硬件怎么办?您可以相信仿真吗?您是否充分覆盖了所有重要的测试场景?
是否有可能改用“增强型”仿真工具,该工具可以更真实和交互式地查看系统,包括您的逻辑与外设的交互?
经过一些研究,所有这些问题的答案似乎都是“否”!
(转到 目录。)
仿真和测试
通常,编写和运行测试台是您在编程 FPGA 之前所需要的一切。但是,您能做得更多吗?
实际上可以,通过在测试台中使用定义和变量,您可以使用可能代表不同测试场景的不同值重新编译和重新运行它。
通过这种简单的方法,您现在可以非常轻松地扩展您的测试覆盖率,而无需每次都重新编写测试台的整个代码。
下一种可能性是直接从包含测试台中使用的数据的文件中读取“激励”。然后可以将结果存储在另一个文件中,以便外部评估。
此过程仍然相当静态,并且每次都涉及以不同的值集重新运行测试台。
一个更灵活的可能性是使用 TCL。这真正将您的测试能力提升到专业水平,甚至可以在测试运行期间进行“交互式”更改。
另一种可能性是使用 stdin
/stdout
,尽管这在某些环境或工具中可能不起作用。
上述可能性存在一些缺点。
有些不足以提供交互式体验,而另一些则过于复杂且级别太低,人类无法直接理解。
例如,测试人员可以“手动”交互式输入一位或零位来指示,例如,不同按钮的输入状态,但总体情况可能只存在于他的脑海中。
任何基于文本的高级接口都需要中间格式转换,这会增加复杂性和出错的可能性。
只有最后一步,即测试人员实际按下相应的按钮并更改真实硬件上所需的开关和信号,才能显示例如正确的 LED 是否按预期亮或灭。
这种最终的“视觉验证”以及与实际硬件的高级交互至关重要。
此外,大多数 FPGA 供应商提供“片上调试”以减轻验证过程的复杂性。这允许实时捕获设计中的内部节点。
那么,我们已经完成了,对吧?我们拥有使用 VHDL 进行完整 FPGA 开发所需的一切。
嗯,不完全是。如果您考虑在某些情况下(仍然)没有硬件,则需要一种新的可能性,即以某种形式模拟(仿真)硬件。
仿真硬件不仅允许 FPGA 级别的交互式体验,还可以扩展到模拟/仿真外部外围组件,例如传感器和执行器。
一个漂亮的图形用户界面甚至可以完全隐藏 FPGA 和硬件细节,只显示最终用户与之交互的产品。在后台,FPGA 逻辑将像我们内部有硬件一样运行!
(转到 目录。)
架构概述
在上一章中,我们介绍了使用 HDL 编程的 FPGA 的仿真和测试的几种可能性。
最后,我们注意到在某些情况下需要硬件仿真。
本章将介绍一个我称之为 FPGA 硬件仿真框架的仿真工具的粗略架构,它实现了这个目标。
该工具可以被视为一个框架,因为不可能仅仅通过配置来预先涵盖所有可能性。
相反,所提供的代码可以以预定义的方式轻松扩展,以支持新接口。
除了 Python,本文描述的工具还使用了 VHDL,但将代码移植到 Verilog 或使用 iverilog 等工具将 VHDL 代码转换为 Verilog 相对简单。
因此,从现在开始,我们将只提及 VHDL,但请注意,这也适用于 Verilog 或其他硬件描述语言。
让我们总结一下 FPGA 仿真的不同可能性
- 测试台 (TB)
- TB 定义和变量
- 激励和结果文件
- TCL
stdin
/stdout
- 片上调试
上面列出的所有点都需要供应商的工具支持以及输入/输出仿真参数的方法。接下来将展示这一点
- 仿真器 <-> VHDL (1, 2)
- 仿真器 <-> VHDL <-> 文件 (3)
- 仿真器 <-> TCL 脚本 [ <-> 文件 ] (4)
- 仿真器 <-> VHDL <- 标准流 -> 系统控制台 / 命名管道 (文件) (5)
- 调试器 <-> FPGA 中的调试器硬件 <-> FPGA 硬件 (6)
为了实现 FPGA 硬件仿真框架,需要一个灵活、简单且开放的接口,该接口始终可供开发人员和用户使用。
从上述选项中,“文件共享”/“文件 I/O”是自然的选择,其中“激励和结果文件”的存在本身就代表了某种特定状态的数字信号,例如 ON/OFF 或 HIGH/LOW。
为了保持简单,FPGA_HW_SIM_FWK
的当前实现避免了在文件“内部”传递信息,这需要额外的格式化和检查。
相反,根据约定,特定名称文件的存在或不存在就是我们评估或强制此接口工作所需的全部信息。
通过将数字信号一对一地仿真为文件,定义了一个简单而灵活且强大的接口,可以很容易地在外部实现,例如,在本文后面所示的 Python GUI 应用程序中。
下图提供了架构概述
对多达 64 个数字输入、64 个数字输出、64 个 LED、64 个按钮和 64 个开关(总共 320 个文件)的测试在 10 毫秒的时钟周期下运行良好。
尽管尚未实现,但架构概述已经显示了在 FWK_GUI
和 Testbench
之间交换信息的可能性。
这可能允许,例如,传递与仿真相关的附加信息,而这些信息实际上在 UUT 中是不需要的。
另请注意,同时从 FWK_GUI
和 Testbench
驱动仿真完全可行。但是,应谨慎操作。
当前框架提供了一个示例常量 SIMULATE_BUTTON_IN_TESTBENCH
,允许选择按钮仿真的来源。
这可以在 VHDL 项目的测试台文件 hw_sim_fwk_tb.vhd 中设置。
(转到 目录。)
详细设计
如图 1 所示,该框架由两个主要部分组成。
用 Python 编写的 GUI 应用程序作为外部仿真器,通过共享文件提供同步和异步信号的仿真。
用 VHDL 编写的框架输入和输出将文件共享映射到外部信号,提供了它们来自实际硬件的“幻觉”!
Python 代码有一个名为 MainWindow
的类,其中包含 2 个寄存器(FPGA 板、设置)。
FPGA 板包含所有小部件,它们呈现可定制 FPGA 开发板的相当真实的视图。
用户可以通过按下按钮、切换开关以及观察 LED 和数字输入输出的状态来与其交互。
在相应按钮的帮助下,可以根据需要启动、暂停和恢复仿真。如果需要,还可以更改几个参数(参见图 3)。
线程 thread_scheduler
处理所有“同步”输入和输出,而其他线程,如 thread_di
、thread_switch
和 thread_button
管理“异步”信号。
请注意,每个“异步”信号都有一个单独的线程,甚至每个单独的异步数字输入也有一个单独的线程。
时钟信号在 thread_scheduler
中以配置的速率在 HIGH
和 LOW
之间切换。这个时钟周期定义了我们运行 VHDL 仿真的速度。
在 VHDL 框架输入中,我们有一个模块 hw_sim_fwk_clock.vhd,其中定义了一个组件来“轮询”时钟文件并设置相应的信号。
将 GUI 中的时钟周期设置为 1 毫秒或 10 毫秒可以完美工作,但在大多数情况下,没有理由将时钟周期设置得如此之低,50 毫秒也足够快。
即使是 1 秒或 10 秒在您想仔细查看仿真(例如以“慢动作”观看)的情况下也可能更好。
然后您可以在正确的时间暂停仿真,并在分析或更改一些参数后恢复。因此,此参数是可配置的,并且可以随时更改。
其他信号以类似的方式工作。请注意,该工具附带了几个“示例”,它们仅用于演示目的。请随时根据您的需要调整代码。
让我们继续 VHDL 代码。
所有带有前缀“hw_sim_fwk”的 .vhd 文件都是不可综合的。这仅仅意味着不打算将此逻辑编程到 FPGA 中。
这些模块仅用于仿真目的。
事实上,除了测试台之外,所有此类模块都被定义为我称为“hw_sim_fwk
”的库的一部分。
该库包含在测试台的顶部,代码如下
library hw_sim_fwk;
use hw_sim_fwk.all;
另一方面,UUT 中的所有模块都是可综合的,并且必须遵循一些规则才能实现这一点。
例如,您会发现 top_module
实体是 UUT 的顶层模块。所有其他可综合模块都位于此模块之下。
该代码提供了多种配置可能性,因此您可以轻松地模拟您实际需要的精确硬件。
例如,按钮和 LED 的数量可以轻松调整。
在下图中,您将看到一个包含 2 个输入和 2 个输出的演示 UUT 实例的 RTL(寄存器传输级)原理图
此逻辑是从 UUT 中的 VHDL 代码生成/综合而成的。
请注意,随着您添加更多功能,原理图的复杂性会急剧增加。这就是为什么 FPGA 不再使用原理图设计工具设计而改用 HDL 的原因。
代码
与我的其他文章类似,我在这里将不再深入探讨代码的细节。
由于所应用的“极限编程”方法、VHDL 的初级水平以及“C 语言式”或“反 Python 式?”的编程风格,我不敢将重点放在代码本身上。
该代码是免费和开源的,供所有人阅读和使用。您可以自行得出结论,并在需要时进行一些改进。
但最重要的是,将代码视为实现您目标的手段。如果您有时间、才能和充分的理由编写出色的代码,那么就去做吧。本文可以作为起点。
在这种情况下,我只是提供了一个“概念验证”,它运行得非常好,并且在不同情况下绝对可以帮助其他人(参见 用例)。
应用程序 GUI 的代码是用 Python 编写的,并与 Python 3.8 和 3.9 版本兼容。
GUI 小部件集基于 PyQt。
在 Linux Mint 20 上进行了多次测试,在 PyCharm、eric6 中作为 Python 应用程序运行,并作为可执行文件与 ISE Simulator (ISim) 一起运行。
Windows 11 中的可执行文件已成功生成,似乎具有所有功能,但尚未能与 FPGA 仿真工具一起进行测试。
GitHub 中的当前代码版本标记为 1.0.0。
在本文顶部,您会找到指向 GitHub 项目的链接,并且还提供了 .zip 文件供下载。
借助批处理文件 gen_exe.bat,可以使用 pyinstaller 和其他工具生成 Windows 的可执行文件。
同样,gen_exe.sh 为 Linux 生成可执行文件。有关更多详细信息,请参阅 可执行文件的生成。
(转到 目录。)
应用 GUI
Python GUI 应用程序由 2 个寄存器组成,命名为 FPGA 板和设置。
在未来的版本中,将在电子板周围的空白空间中添加传感器和串行接口,以及七段显示器。
甚至可以在电子元件级别之上添加特定的产品外观和感觉,以使仿真体验更接近最终用户。
(转到 目录。)
功能
该仿真框架具有以下功能
- 分步执行
- 暂停和恢复
- 定时执行
- 将复位信号设置为高/低
- 按下/切换按钮
- 切换开关
- 显示数字输入和输出的值
- 显示 LED
- 绘图(尚未实现)
- 声音
- 显示仿真状态(LED 和进度条)
- 可定制的硬件和仿真(参见 config.ini 和设置)
- 记录到 .csv 文件(记录级别可配置)
让我们仔细看看最后一个功能。
.csv 文件将允许您在没有特定供应商工具的情况下打开数据。
当比较 VHDL 仿真和 .csv 文件中显示的信号时,您可能会注意到它们之间在一个时钟周期内有一些小的延迟,这完全正常。
如果您分析信号,您会注意到这些小的延迟在仿真容差范围内,并且与 VHDL 逻辑中寄存器引入的延迟相对应。
请注意,在图 5 中,有一些不规则信号。该仿真包含真实错误,因为它是在“没有调度器”的情况下运行的测试。
“同步”信号而是通过不同的线程模拟的,这些线程“完全”睡眠相同的时间。但这当然不是很准确。
引入了小的抖动,导致结果不正确,即使考虑到单个线程中花费的时间。
请注意,这种“糟糕的同步信号实现”可以用来模拟实际系统中发生的抖动。
虽然我不会那样做,但这再次展示了一种新的可能性(功能?),这是普通 FPGA 仿真工具不提供的,尽管您也可以在测试台中模拟异步信号。
(转到 目录。)
限制
只要 FPGA 与外设的接口简单且文档完善,我们就可以生成非常准确的仿真来测试我们的 HDL 代码。
该工具的主要限制可能在于,如果我们例如需要接口特定的硬件功能,较大的 FPGA 可能无法正确或完全模拟。
例如,较新的 FPGA 与处理器集成在同一芯片中,以非常高的速度通信并与 FPGA 交换大量数据。
当与由于其复杂性,或者更准确地说,由于其接口的复杂性而不易模拟的外部 ASIC 接口时,也会出现这个问题。
这就是为什么此工具更适合具有标准接口的较小 FPGA。
通常,当涉及高速和大量数据时,可能会出现限制。
这在普通 FPGA 模拟器中使用测试台时已经是一个问题,但当目标是实现“交互式和响应式”模拟时,问题会增加。
例如,当尝试从 GUI 应用程序与“真实硬件”交互时,可能会出现问题。尽管这可能,但应谨慎行事。
例如,考虑我们需要从传感器读取数据然后将其传递给 FPGA 仿真器的情况。
将有一个下限,例如 1 毫秒,这取决于 Python 应用程序和 FPGA 仿真器中的框架之间可靠写入和读取文件的速度。
在这种情况下,时钟速度将被限制在最大 1 kHz。也就是说,我们 then 可以以每秒最大 1000 位的串行方式将传感器数据传输到 FPGA 仿真器。
如果真实传感器生成更多数据,那么我们将需要丢弃几个样本,构建平均值,或者降低传感器的数据采集速度。
我们在仿真/模拟 FPGA 周围的硬件上投入多少精力将很大程度上取决于成本。
如果购买实际硬件(以及所需的相应工具许可证)比开发软件来模拟它更便宜,那么这样做就没有意义了。
最后,我们可能会提醒,当前的一些限制源于 GUI 应用程序和 FPGA 模拟器之间当前使用的接口,该接口基于一种非常特殊的文件共享形式。
如果可能,可以使用不同的接口,例如,以提高速度。再次查看 架构概述 中列出的可能性。
(转到 目录。)
用例
我前面已经提到了我的动机。这个工具可以帮助业余爱好者在 FPGA 和 VHDL/Verilog 的最初步骤中,而无需硬件和许可证,从而降低成本。
但肯定还有其他几个用例。我在这里列出其中一些
- 业余开发者的学习工具
- 在编写最终测试台之前,作为先行步骤导出测试场景
(例如,测试人员通过模拟硬件来查找 UUT 逻辑中的问题。这导致 TB 中相应的测试) - 管理层的演示/展示
- 客户的演示/展示
在最后两种情况下,演示甚至可以在您的经理或客户的 PC 上完成,除了例如 GHDL 之外,无需安装其他工具。
GUI 演示应用程序的可执行文件已经包含运行它所需的一切(例如,在 Windows 中不需要额外的 .dll 文件)。
提供的软件是开源且免费的,无需硬件。
(转到 目录。)
项目设置
Python 代码可以在例如使用 PyCharm 或 eric6 创建的项目中打开,尽管经过一些调整,eric7 也可能运行良好。
工作目录应为大多数 .py 文件所在的路径。在那里,您还会找到 dist/ 和 ui/ 文件夹。
Python 解释器可以设置为您系统中的默认值,但我建议为此使用单独的 Python 环境。
在那里,您可以放置所有您需要的东西,如 可执行文件的生成 中所述。
文件 mainWindow.ui 可以使用 QtDesigner
编辑。使用该工具,您可以例如在 GUI 中添加或编辑小部件。
在 eric6 中,编辑后刷新项目中的 .ui 文件很简单,而在使用 PyCharm 时,您需要执行以下命令(以 Linux 为例)
sudo python3 -m PyQt5.uic.pyuic -x mainWindow.ui -o Ui_mainWindow.py
VHDL 代码可以在任何合适的 FPGA IDE 中打开,例如由 Lattice、Microchip、Xilinx 或 Intel (Altera) 提供。在那里选择任何适合硬件配置的芯片。
大多数 FPGA 制造商免费提供这些工具,前提是您将其用于非商业目的并放弃更高级的功能,但选择将取决于您的具体需求。
您唯一需要注意的是将所有 hw_sim_fwk_*.vhd 文件放入一个仅用于仿真目的的库中。本文中提供的库名称是 hw_sim_fwk
。
请注意,库分配只能在 FPGA IDE 中的项目中手动完成,因为这不是 VHDL 规范的一部分。
例如,在创建项目时使用提供的文件可以完成此操作
如果您在 Python GUI 应用程序中更改了默认配置,例如通过编辑 config.ini 或修改并保存 GUI 中的设置,请确保在 hw_sim_fwk_tb.vhd 中定义的常量中设置相同的值。
我想就是这样。您可能需要调整许多其他小细节,但项目的设置通常非常简单。
(转到 目录。)
可执行文件的生成
用 Python 编程时,可以将您的应用程序打包成一个可执行文件。这适用于 Linux 和 Windows。
借助批处理文件 gen_exe.bat,可以使用 pyinstaller 和其他工具生成 Windows 的可执行文件。
同样,gen_exe.sh 为 Linux 生成可执行文件。
其中一些步骤是可选的,或者可能需要调整,但生成可执行文件大致包括以下步骤
- 编辑 .spec 文件(例如,使用完整路径指定文件 libportaudio64bit.dll 并提供可执行文件的名称)
- 创建并激活您自己的 Python 环境
- 安装或升级所有必需的包和工具,例如借助 pip 工具
- 更新包含应用程序所有依赖项的 requirements.txt 文件
- 安装 requirements.txt 中找到的所有必需依赖项
- 使用 pyinstaller 和 .spec 文件生成可执行文件
我强烈建议使用特定的 Python 虚拟环境。
很长一段时间,我拒绝以这种方式工作,而是把所有东西都放在我的系统里,这让我头疼不已。
(转到 目录。)
工具
在这里,您会找到一些工具,它们可能会帮助您在 FPGA 之旅中,至少在我看来它们确实起到了作用
(转到 目录。)
关于 FPGA
自从我很久以前接触 FPGA 和 CPLD 以来,FPGA 芯片中可编程逻辑元件的数量已经大大增加。
除了经典的逻辑元件,当前的解决方案更密集地利用 FPGA 内部的便利硬件模块,例如用于 I/O、内存、DSP、以太网通信。
此外,市场似乎已经分为两部分,一方面是更大的 FPGA 与处理器和高度复杂的相同芯片功能混合在一起,另一方面是更小的 FPGA 系列专注于低成本和低功耗。
后者可能分配给 Microchip 和 Lattice 等公司,而前者似乎由 Xilinx 和 Intel (Altera) 等公司主导。
更小的 FPGA 系列可能与微控制器竞争,有时适合作为替代品,可能不太受淘汰问题的影响,并且更容易移植。
与微控制器相比,FPGA 仍然速度较慢、成本较高且功耗更大。但其中一些缺点可以转化为优势,例如,当利用应用程序执行中的高度并行性时。
(转到 目录。)
FPGA 的应用
主要的 FPGA 应用领域包括:医疗、视频和图像处理、电信和数据通信、服务器和云计算以及国防和航空航天。
新领域涉及深度神经网络、安全模块、无线通信、数据挖掘、密码学、嵌入式视觉以及作为通用处理器支持的算法加速器的开发。
尽管我没有权力对这个领域发表任何言论,但我的直觉告诉我,这项技术的当前发展势头不会很快结束。
无论如何,看到这个领域正在发生如此多的事情,以及还有多少事情有待完成,都令人兴奋。
(转到 目录。)
关于 VHDL
与任何编程语言一样,学习曲线可能因您的背景而异。
但要考虑的主要事情之一是,在编写 VHDL 代码时,您实际上并不是在“编程”,至少不是以经典的方式。
您正在做的是设计数字逻辑电路。您正在通过将事物连接在一起来描述电子电路的结构和行为。
当然,任何其他硬件设计语言,如 Verilog,也是如此。
在许多情况下,您必须了解综合器将根据您的代码生成什么。在某些其他情况下,您别无选择,只能检查并可能调整您的代码或综合器设置以获得所需的电路。
前方有许多陷阱等待着,特别是对于典型的“软件程序员”。
但不要因此而气馁。有大量的优秀教程视频、书籍和代码示例。这在 25 年前是不可想象的!
直到我编写 FPGA_HW_SIM_FWK
,我才真正将所有东西整合起来,并真正了解了一些我以前多次读过但从未真正理解的 VHDL 知识。
有了这个工具,您现在甚至有了一种新的选择,一种让您可以在尚未拥有“虚拟”硬件的情况下进行尝试的选择。
这是一个强大的进步,我希望您能像我一样享受这段旅程!
(转到 目录。)
后续步骤
该工具的当前版本包含了我敢称之为“框架”所需的最少功能。
很快,我将添加几个重要的功能,以填补最重要的空白。
以下列表包含我当前待办事项列表中的一些要点
- 绘制信号
- 真实的模拟传感器(例如,CPU 负载)
- 模拟模拟传感器,包括一个可选的用于手动控制它的部件
- 串行通信(UART、SPI、I2C 等),包括部件,例如将传感器数据传递给 FPGA 模拟器
- 七段显示器
- 技术债务
- 在 Windows 上测试(访问共享文件有问题?)
- 测试 MessageWindows
- 代码中的待办事项
(转到 目录。)
图片和视频画廊
此处是工具简短演示视频的链接
(转到 目录。)
总结
本文介绍的工具将来可以并将得到改进,但在我个人看来,它本身就已经非常有帮助,支持我在一个有时可能非常困难的新领域迈出第一步。
这个想法是对普及 FPGA 和 VHDL 的一个良好贡献,与现有付费或开源免费解决方案相比,具有多项优势。
借助此工具,FPGA 开发在开源社区中再次得到扩展,为现有工具和技术提供了有价值的补充。
谨慎使用并了解其局限性,FPGA_HW_SIM_FWK
不仅仅是一个小玩意,它还为多种用例提供了更真实和交互式的仿真方法。
兴趣点
我们在这里的只是第一步,但它表明随着技术的进步,FPGA 开发不必困难或昂贵。
通过此链接查看其他您可能感兴趣的文章(主题:加密、隐写术、数据二极管、网络安全)
历史
- 2022年4月15日:初始版本
- 2023年1月2日:添加了对具有改进性能的新 GitHub 项目 FPGA_HW_SIM_FWK_2 的引用