我见过很多系统 verilog 程序示例,将数据包表示为打包结构。 该数据是否像数据包一样串行传输?系统verilog结构如何在硬件中实现?
SystemVerilog 中的打包结构为您提供了一种通过名称而不是通过位位置访问信号字段的替代方法。例如
typedef struct packed {
logic [2:0] field1; // 3-bits
logic [4:0] field2; // 5-bits
} signal_t; // 8-bits
您现在可以声明该类型的连线或变量
wire signal_t sigA;
var signal_t sigB;
(除端口声明外,var 关键字在大多数地方都是隐式的)
您现在可以通过
sigA[7:5]
或 sigA.field1
访问 field1。
Unpacked 结构,正如 nguthrie 指出的,提供了变量的分层分组,但它们也提供了比 Verilog 更强的类型。请参阅我的应用说明。
结构只是封装变量的一种便捷方式。这是一种表明这些变量应该作为一个组进行操作的方法。然而,将某些东西称为数据包并不会让合成器创建您想要的硬件。您可以为正在处理的协议创建逻辑。