gpt4 book ai didi

Verilog reg 分配给另一个 reg 的一部分

转载 作者:行者123 更新时间:2023-12-04 18:24:09 25 4
gpt4 key购买 nike

我将 Verilog 与 modelSim 一起使用,当我尝试将 reg 变量分配给另一个 reg 变量的不同部分时出现以下错误:

** Error: Range width must be greater than zero.
** Error: Range width must be constant expression.

这是相关代码:
 integer f; //zd, qd, R and Q are regs

always @ * begin
f = 52 - zd;
R = qd[f +:0];
Q = qd[63 -:f+1];
end

我希望 R 包括 qd(从 0 到 f),而 Q 是(其余的)qd(从 f+1 到 63)。怎么做?谢谢。

最佳答案

你试图做的在verilog 2001中是不合法的。

正如您的警告所说,Range width must be constant expression ,即您不能选择可变长度的部分。

您可以选择改变起点的固定长度部分(即选择从 f 开始的 8 位),但其语法如下:

vector_name[starting_bit_number +: part_select_width]
vector_name[starting_bit_number -: part_select_width]

在硬件中,总线的大小必须是固定大小,您不能根据寄存器的内容更改硅中的线数:)

关于Verilog reg 分配给另一个 reg 的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10046508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com