Verilog 语法错误,意外'=';,期望标识符

Verilog 语法错误,意外'=';,期望标识符,verilog,Verilog,我正在用verilog(2001)创建一个数独游戏,最终将其放到FPGA上,我在java中找到了它的代码,并一直试图转换它,但遇到了一些错误。 下面是java代码的链接 www.geeksforgeks.org/program数独生成器 我几乎没有verilog的经验,我边走边学习 task automatic removeKDigits() reg count = K; while (count != 0) begin integer cell

我正在用verilog(2001)创建一个数独游戏,最终将其放到FPGA上,我在java中找到了它的代码,并一直试图转换它,但遇到了一些错误。 下面是java代码的链接 www.geeksforgeks.org/program数独生成器
我几乎没有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]板上删除的位数,N=9,因为它是9x9数独板。对于包含“count=count-1”和“count=count”的行,我得到了错误信息
语法错误,意外的“=”,需要标识符

这是什么意思?如何修复它?

不幸的是,如果您至少不了解RTLs(寄存器传输语言)背后的原理,就不可能将java代码移植到可合成的Verilog代码

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

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

至于代码的实际问题,不可能指出错误,因为它根本不是Verilog。
我建议您这样回答:,以便更雄辩地描述编程语言和RTL之间的差异,以及为什么在两者之间移植不那么容易。

我强烈建议您阅读并查看现有的Verilog代码。你有很多错误,因为你把Verilog当作其他计算机语言。使用HDL需要进行重大的心理调整!基本上,你已经咬了远远超过你可以咀嚼。Verilog用于硬件设计;Java是用来编写软件的。您正在尝试的任务远比简单地将一种语言转换为另一种语言复杂得多:您正在尝试将软件转换为硬件。