我正在用verilog(2001)创建一个数独游戏,最终将其放到FPGA上,我在Java中找到了它的代码,并一直试图进行转换,但遇到了一些错误。
这是Java代码的链接
www.geeksforgeeks.org/program-sudoku-generator
我只有很少的Verilog经验,正在学习中。
task automatic removeKDigits()
reg count = K;
while (count != 0)
begin
integer cellId = randomGenerator(N*N-1);
// System.out.println(cellId);
// extract coordinates i and j
i = (cellId/N);
j = cellId%9;
// System.out.println(i+" "+j);
if (mat[i][j] != 0)
begin
count = count-1;
mat[i][j] = 0;
end
else
count=count;
end
endtask
K是要从mat [i] [j]板上删除的位数,自从9x9数独板开始,N = 9。对于包含“ count = count-1”和“ count = count”的行,我得到了错误
语法错误,意外的'=',期望IDENTIFIER
这是什么意思?我该如何解决?
答案 0 :(得分:1)
不幸的是,如果没有至少对RTL(寄存器传输语言)背后的原理有足够的了解,就不可能将Java代码移植到可综合的Verilog代码。
像Java这样的编程语言是对某些逻辑的高级描述,这些逻辑将转换为机器指令并在处理器上运行。它们按特定顺序顺序运行,每次仅一行。
另一方面,RTL描述了实际的硬件。它们倾向于在触发器(通常是时钟)上并行运行。代替“变量”,您倾向于使用代表实际触发器的“寄存器”,而Verilog程序将描述这些寄存器之间的数据传输。对于代码的实际问题,不可能指出错误,因为它根本不是Verilog。 我建议使用以下答案:https://stackoverflow.com/a/5121853/10719567,以更雄辩地描述编程语言和RTL之间的区别,以及为什么在两者之间移植并不那么容易。