【发布时间】:2018-08-01 00:52:15
【问题描述】:
我初始化一个寄存器
reg[1:0] yreg;
并对其进行一些操作,即上一个的值。当我在 0 点添加新值时,程序的迭代将移动到 1 点
yreg = SIGNAL; //here SIGNAL is an input to the program
然后我想稍后访问寄存器中 0 和 1 点的值进行计算。我怎样才能做到这一点?我最初的反应是yreg[0] 和yreg[1](我通常在python = 中编程)但这会产生错误(第35 行是包含yreg[0] 和yreg[1] 的代码行):
ERROR:HDLCompiler:806 - "/home/ise/FPGA/trapezoid/trapverilog.v" Line 35: Syntax error near "[".
当我看到这一点时,我的假设是使用方括号访问寄存器的某个索引不是正确的语法。您如何正确访问寄存器索引中的信息?我很难找到这方面的信息。
抱歉这个可能很荒谬的问题,这是我第一次使用 Verilog 或 FPGA。
完整代码
module trapverilog(
input CLK,
input SIGNAL,
input x,
output OUT
);
reg[1:0] yreg;
float sum = 0;
always @(posedge CLK)
begin
yreg = SIGNAL; //should shift automatically...?
sum = ((reg[0] + reg[1])*x/2) + sum; //this is effectively trapezoidal integration
OUT = sum;
end
endmodule
【问题讨论】:
-
你能提供更多关于你的代码和错误综合症的细节吗?
-
我很乐意提供帮助,但问题不清楚,请考虑重写以描述错误以及您想要实现的目标以及到目前为止所做的工作。
-
@RaZ 我添加了错误信息。现在清楚了吗?