【发布时间】:2017-12-14 02:52:10
【问题描述】:
我是 Verilog 编码的新手,正在尝试设计一个 16x16 的寄存器文件。
到目前为止,我已经设计了一个 16 位寄存器,它由 16 个带启用的 D 触发器组成。我现在正在尝试设计寄存器文件体,它将由 16 个 16 位寄存器组成。输入是 d[15:0]、e[15:0]、时钟和复位。输出将是 q[15:0][15:0]。如何在 Verilog 中指定此输出?
【问题讨论】:
我是 Verilog 编码的新手,正在尝试设计一个 16x16 的寄存器文件。
到目前为止,我已经设计了一个 16 位寄存器,它由 16 个带启用的 D 触发器组成。我现在正在尝试设计寄存器文件体,它将由 16 个 16 位寄存器组成。输入是 d[15:0]、e[15:0]、时钟和复位。输出将是 q[15:0][15:0]。如何在 Verilog 中指定此输出?
【问题讨论】:
您的代码q[15:0][15:0] 将为您提供一个二维数组,其中每个元素为 1 位。那不是你想要的。
下面的代码将为您提供一维数组:16 个 reg,每个 16 位宽。
output reg [15:0] q [15:0];
请注意,在 verilog 中,您应该先将此类数组展开为向量,然后再在模块之间传递它。阵列式端口是 SystemVerilog 的一项功能。
【讨论】: