可以在 VHDL 中完成动态可插拔模块吗?

Posted

技术标签:

【中文标题】可以在 VHDL 中完成动态可插拔模块吗?【英文标题】:Can dynamically pluggable modules be done in VHDL? 【发布时间】:2008-12-19 14:22:59 【问题描述】:

在c(嵌入式)中,可以通过定义函数指针表和模块可以加载到的地址范围来实现插件。

这需要链接器指令来分配空间并定义函数表的位置。

HDL/VHDL 或 Verilog 中是否有类似的机制。

我想我的想法是在 FPGA 中定义一个门块以用于我的扩展功能,定义它将连接到的端口,然后能够将逻辑加载到该块中以执行特定操作。

这必须在运行时进行,因为 FPGA 是用于交付插件的通信系统的一部分。

【问题讨论】:

【参考方案1】:

如果您使用的是 Xilinx FPGA,他们的某些芯片可以支持这一点。

见: Benefits of Partial Reconfiguration with Xilinx

--jeffk++

【讨论】:

jeffk 描述的不是 Verilog 或 VHDL 功能,而是芯片功能。【参考方案2】:

您正在寻找的功能与 VHDL 的领域是正交的。 VHDL 允许模块(实体,由架构实现),所以理论上,是的,这可以工作。但实际上,这真的取决于您运行的系统。

您希望从中获得什么?节省重新配置时间?

如果您有一个足够复杂的电路板并运行一些软件,您可以从某个通信渠道轻松下载新的 FPGA 配置。通过使用部分重配置,您还可以在 Xilinx 上获得小的性能优势。

或者,也许您可​​以创建一个可配置的 VHDL 模块,软件将在运行时配置该模块以根据需要运行。

【讨论】:

希望在不使设备变砖的情况下获得现场可编程性。通信通道需要 FPGA 的一部分才能在整个编程阶段保持运行。如果出现问题并“变砖”,实际的 FPGA 就无法物理接触。 有解决方案。例如,阅读有关 Altera 的远程升级主题的信息。有一个永远不会改变的“加载器”图像,它会将多个“应用程序”图像加载到内存中,并且可以更新它们。

以上是关于可以在 VHDL 中完成动态可插拔模块吗?的主要内容,如果未能解决你的问题,请参考以下文章

Django-settings可插拔实现

带你手写基于 Spring 的可插拔式 RPC 框架整体结构

PAM - 可插拔认证模块

PAM - 可插拔认证模块

理解及应用 Oracle 12c 插拔数据库

具有 HCS 可插拔共识的 Corda