语法错误,意外的'=',期望IDENTIFIER

时间:2018-11-28 20:39:18

标签: verilog

我正在用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
这是什么意思?我该如何解决?

1 个答案:

答案 0 :(得分:1)

不幸的是,如果没有至少对RTL(寄存器传输语言)背后的原理有足够的了解,就不可能将Java代码移植到可综合的Verilog代码。

像Java这样的编程语言是对某些逻辑的高级描述,这些逻辑将转换为机器指令并在处理器上运行。它们按特定顺序顺序运行,每次仅一行。

另一方面,RTL描述了实际的硬件。它们倾向于在触发器(通常是时钟)上并行运行。代替“变量”,您倾向于使用代表实际触发器的“寄存器”,而Verilog程序将描述这些寄存器之间的数据传输。

对于代码的实际问题,不可能指出错误,因为它根本不是Verilog。 我建议使用以下答案:https://stackoverflow.com/a/5121853/10719567,以更雄辩地描述编程语言和RTL之间的区别,以及为什么在两者之间移植并不那么容易。