Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unicode Verilog:错误:不匹配的字符(十六进制)_Unicode_Verilog - Fatal编程技术网

Unicode Verilog:错误:不匹配的字符(十六进制)

Unicode Verilog:错误:不匹配的字符(十六进制),unicode,verilog,Unicode,Verilog,我在Verilog中编写了一个shift/add乘法器,它通过在线编译器编译时不会出错,但当我试图通过CMD窗口使用iverilog编译它时,我收到以下错误: shiftadd.v:1:错误:字符不匹配(十六进制U+019E) (U+019E是我能找到的最接近它的unicode字符)。我的代码中是什么导致了这个错误?我不想传递任何十六进制值 module shiftaddmult(product, multiplicand, multiplier, clk); input clk;

我在Verilog中编写了一个shift/add乘法器,它通过在线编译器编译时不会出错,但当我试图通过CMD窗口使用iverilog编译它时,我收到以下错误:

shiftadd.v:1:错误:字符不匹配(十六进制U+019E)

(U+019E是我能找到的最接近它的unicode字符)。我的代码中是什么导致了这个错误?我不想传递任何十六进制值

module shiftaddmult(product, multiplicand, multiplier, clk);
    input clk;

    output reg [63:0] product;
    input [63:0] multiplicand;
    input [31:0] multiplier;
    integer i;

    always @(posedge clk)        //m or m
    begin

        if(i< 32)
        begin


            product[63:32] = 16'b0000_0000_0000_0000;    
            product[32:16] = multiplier;


            if(product[0] == 1)
                begin
                    product[63:32] = product[63:32] + multiplicand;
                    product [63:0] = product[63:1];
                end

            else
                begin
                 product [63:0] = product[63:1];
                end
        i = i + 1;

        end
    end                        //end always
endmodule        //shift add



module tester(output reg [63:0] product,
              output reg [63:0] multiplicand,
              output reg [31:0] multiplier,
              output reg clk,
              output reg i);
initial
        begin

        i = 0;
        clk = 0;

        $dumpfile("multdump.dat");
        $dumpvars;


        #10 multiplier   = 16'b0000_0000_0000_0001;
                multiplicand = 16'b0000_0000_0000_0010;

                //result should = 2


        #20 multiplier   = 16'b0000_0000_0000_0010;
                multiplicand = 16'b0000_0000_0000_0100;


                //result should = 'd8

        #30 multiplier   = 16'b0000_0000_0000_1000;
            multiplicand = 16'b0000_0000_0000_1000;

                //result should = 'd16    
        #40 $finish;
        end

        always begin
                #5 clk = ~clk;    //clock generator
        end
endmodule

module testbench;

wire [63:0] product;
wire [63:0] multiplicand;
wire [31:0] multiplier;

wire i;
wire clk;

tester test(product, multiplicand, multiplier, clk, i);
shiftaddmult mult(product, multiplicand, multiplier, clk);

endmodule
module shiftadmdmult(乘积、被乘数、乘数、时钟);
输入时钟;
输出reg[63:0]产品;
输入[63:0]被乘数;
输入[31:0]倍增器;
整数i;
始终@(posedge clk)//m或m
开始
如果(i<32)
开始
乘积[63:32]=16'b0000_0000_0000_0000;
乘积[32:16]=乘数;
如果(产品[0]==1)
开始
乘积[63:32]=乘积[63:32]+被乘数;
产品[63:0]=产品[63:1];
结束
其他的
开始
产品[63:0]=产品[63:1];
结束
i=i+1;
结束
结束//总是结束
endmodule//shift-add
模块测试仪(输出注册[63:0]产品,
输出寄存器[63:0]被乘数,
输出寄存器[31:0]乘数,
输出寄存器时钟,
输出寄存器i);
最初的
开始
i=0;
clk=0;
$dumpfile(“multdump.dat”);
$dumpvars;
#10乘数=16'b0000\U 0000\U 0000\U 0001;
被乘数=16'b0000_0000_0000_0010;
//结果应为2
#20乘数=16'b0000\U 0000\U 0000\U 0010;
被乘数=16'b0000\U 0000\U 0000\U 0100;
//结果应为'd8
#30乘数=16'b0000\U 0000\U 0000\U 1000;
被乘数=16'b0000_0000_0000_1000;
//结果应该='d16
#40美元;
结束
总是开始
#5时钟=~clk//时钟发生器
结束
端模
模块测试台;
电线[63:0]产品;
导线[63:0]被乘数;
导线[31:0]倍增器;
电线i;
电线电缆;
测试仪测试(产品、被乘数、乘数、clk、i);
shiftadmdmult(乘积、被乘数、乘数、clk);
端模

看起来您正在从浏览器复制代码并将其粘贴到源代码中。从浏览器中复制代码也会复制一些编译器无法检测到的特殊字符。 我建议您重新编写代码,不要复制和粘贴。用键盘把这些行再写一遍。
这将起作用并消除不需要的字符。

字符是什么?同时显示命令行。这段代码对我来说非常适合。@EugeneSh。我编辑了这篇文章,以包含它最接近的字符的unicode编号resembles@enkayh尝试将此页面中的代码复制/粘贴到新文件并编译。如果有一些无效字符,它将清除它们。@EugeneSh。我尝试了多次,但没有成功。同样的错误会被打印出来