24小时联系电话:18217114652、13661815404
中文
公司新闻
为 FPGA 引脚映射器设计
为 FPGA 引脚映射器设计
众所周知,FPGA IO 名称必须满足 Verilog 或 VHDL 中的特定语法要求。Altium Designer 原理图中使用的命名约定并不总是满足硬件描述语言 (HDL) 指定的这些标准。因此,PCB 网络名称和实际 FPGA 信号名称之间经常会出现不匹配。随着越来越多的用户尝试使用Altium Designer 中的FPGA Pin Mapper工具,他们会发现 Altium Designer 原理图中使用的命名约定在 FPGA 设计领域可能并不总是合法的。本文将回顾在将 FPGA 纳入您的PCB 设计项目时的一些常见陷阱和克服这些挑战的方法。
网络命名挑战
正如介绍中所提到的,通常会发现 PCB 设计使用的 FPGA IO网络名称与 FPGA HDL 中的实际名称不匹配。发生这种情况的原因很简单,因为设计电路板的工程师可能与编写 HDL 的 FPGA 设计人员不同步。发生这种不匹配的另一个原因是Altium Designer 中使用的网络名称本身在 Verilog 或 VHDL 中可能不合法。例如,诸如“\c\h\i\p\_\r\s\t”(在原理图中表示低电平有效)或 SPI.MISO(从信号线束中引出的网络)之类的网络名称完全是在 Altium Designer 中合法,但在 HDL 中不可接受。要解决“\c\h\i\p\_\r\s\t”,我们需要确保不要使用反斜杠。虽然让那个可爱的小栏显示您的网名和端口很有趣,但值得吗?用“_n”(例如“reset_n”)或在其前面加上“n”(例如“nRST”)是人们将在HDL领域使用的一般做法,并且最好与原理图保持一致因此这卖。但是,如果您选择使用 Altium Designer 中的信号线束,则需要一个额外的步骤。
示例:信号线束和 FPGA
在下面的示例中,我们有一个包含 FPGA IO bank 和一些信号线束的原理图。
图 1:使用带有 FPGA 的信号线束的简单原理图示例
如果您仔细查看设计,您会注意到信号线束无需断开。我们需要做的就是使用点指示符引用信号线束层次结构:
图 2:使用点指示符扩展信号线束
事实上,这些信号线束只是单一线束类型的实例化。我们通过导航到 Place > Harness > Predefined Harness Connector 将它们放置在原理图上。
图 3:重用预定义的线束
我们的预定义线束连接器如下所示:
图 4:预定义线束演示
在我们的原理图中,我们已经实例化了三个 SPI 线束:FLASH、SD 和 ACTUATOR。由于我们使用了点指示符,因此我们不需要做任何其他事情。
一旦我们转向 FPGA Pin Mapper 工具,我们很快就会发现为我们的 FPGA 设计人员提供了非法信号名称。在 SystemVerilog 中,如果我们能够合成 Interface Modports,这些“分层名称”对我们很有用,但是,遗憾的是,在撰写本文时,大多数 FPGA 工具都不支持。因此,如果我们决定使用这种网络命名方案,整个引脚命名同步工具对我们没有用处。
解决方案
为了实现PCB 设计和 FPGA 综合工具之间的协调,我们必须在 HDL 中使用合法的网络名称。可以有很多方法来解决这个问题。在本文中,我们将回顾两种不同的解决方案。
第一个选项可能是保留您的线束分层名称并在 Altium Designer 中执行引脚交换/同步。同步完成后,将更新 FPGA 引脚文件(CSV 格式)以反映 Altium Designer 中执行的更改。这些网络名称现在看起来像不合法的分层名称(例如,“SPI.SDO”)。一个简单的解决方法是在将 CSV 引脚文件导入回 FPGA 设计之前添加一个使用外部脚本修改 CSV 引脚文件的阶段。如果你想在 Altium Designer 中运行这个操作,这可以是一个 Delphi 脚本。如果您想在 FPGA 工具中运行它,这可能会在将引脚文件导入 FPGA 综合工具之前发生(例如,运行 Vivado 时 TCL 脚本中的这些额外行)。如果你想独立运行它,
另一种选择是扩展信号线束,然后重命名网络。一个简单、干净的方法是用下划线替换句点(例如,“SPI.MISO 变成”SPI_MISO)像这样:
图 5:使用下划线代替网络名称的句点
确保将扩展线束与 FPGA IO 网络名称分开,以确保正确的引脚交换。图 6 展示了扩展线束和 FPGA 网络名称本身之间的分离。
图 6:扩展信号线束以使用合法的网络名称
这种方法需要在原理图方面做更多的工作,但可以确保从原理图捕获到 FPGA 综合的干净过渡。
结论
本文回顾了使用特定网络命名约定和FPGA Pin Mapper 工具时可能面临的挑战。出现问题的一种特殊情况是信号线束和 FPGA 引脚映射器。使用信号线束的分层网络名称,用户会发现这些名称不会合法地转换为 FPGA 综合工具。文章中提供了两种建议的解决方案:一种侧重于脚本自动化,另一种需要在原理图捕获方面进行更多工作。任何一种解决方案都有效。因此,这种额外的设计应该权衡哪种方法最适合他们。