当我运行我的测试台时,它会产生错误
ERROR:HDLCompiler:480 - "/home/ise/FPGA/trapezoid/testbed.v" Line 31: Illegal context for real expression
这是我在verilog中的第一个项目,所以我真的不知道出了什么问题。我正在尝试为我的代码设置一个像第 10 页一样的简单测试包。带有 UCF 的代码编译得很好,所以它必须是测试台中的东西。测试台代码与 powerpoint 中的代码非常相似,所以我认为这是因为我尝试将局部变量设置为测试的某些值,并且我没有定义不同的输入。(我需要这样做,因为要真正测试它,它需要有两个信号输入,但我不能用 powerpoint 中描述的简单测试台来做到这一点。所以我将局部变量设置为它们需要的值并进行on.) 请注意,当SIGNAL
定义为等于 0时,仍会发生此错误。
任何帮助,将不胜感激。我正在使用 Oracle VM Virtualbox ISE。
代码
module trapverilog(
input CLK,
input SIGNAL,
input x,
input SUM, // OUT is mapped to SUM on board
output reg OUT
);
reg[64:0] yregone;
reg[64:0] yregtwo;
reg[64:0] sum;
always @(posedge CLK)
begin
yregtwo = yregone;
yregone = SIGNAL;
if (yregtwo != 0)
begin
sum = ((yregone + yregtwo)*x/2) + SUM; //treats x as plain h, change if treated as h/2
OUT = sum;
end
end
endmodule
用户配置文件
NET "CLK" LOC = P126;
NET "SIGNAL" LOC = P35 | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST;
NET "x" LOC = P34 | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST;
NET "OUT" LOC = P33 | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST;
试验台
module testbed();
reg CLK, SIGNAL, x, SUM;
wire OUT;
// instantiate device under test
trapverilog dut(.CLK(CLK), .SIGNAL(SIGNAL), .x(x), .SUM(SUM), .OUT(OUT));
// apply inputs one at a time
initial begin
x = 1; CLK = 1; SUM = 0; trapverilog.yregone = 1; trapverilog.yregtwo = 2; #10; // apply input, wait
if (OUT !== 1.5) $display("failed."); // check
end
endmodule