Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/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
Loops 在verilog中实现闭环_Loops_Verilog - Fatal编程技术网

Loops 在verilog中实现闭环

Loops 在verilog中实现闭环,loops,verilog,Loops,Verilog,我试图在不使用verilog中的循环指令的情况下实现一个循环,所以我制作了一个计数器模块,模拟进行得非常顺利,但是当我试图在FPGA上实现它时,我在映射中遇到了很多错误,比如这个 ERROR:MapLib:979 - LUT4 symbol "Inst_Count/Mcompar_GND_1105_o_xcount[7]_LessThan_25_o_lut<0>" (output signal=Inst_Count/Mcompar_GND_1105_o_xcount[7]_LessT

我试图在不使用verilog中的循环指令的情况下实现一个循环,所以我制作了一个计数器模块,模拟进行得非常顺利,但是当我试图在FPGA上实现它时,我在映射中遇到了很多错误,比如这个

ERROR:MapLib:979 - LUT4 symbol
"Inst_Count/Mcompar_GND_1105_o_xcount[7]_LessThan_25_o_lut<0>" (output
signal=Inst_Count/Mcompar_GND_1105_o_xcount[7]_LessThan_25_o_lut<0>) has
input signal "Inst_Count/Madd_x[9]_GND_1105_o_add_0_OUT_cy<0>" which will be
trimmed. See Section 5 of the Map Report File for details about why the input
signal will become undriven. 

哦,这完全是错误的。我真的不认为没有人能在这里帮助你而不给你讲Verilog,但是。。。一些马上就能注意到的事情是:

  • 模块参数列表中有一个明显的语法错误,您没有关闭它(即
    丢失)
  • 时钟应该是模块的输入。即使您仅依赖于重置输入并使用寄存器作为“时钟”,它也不会工作(逻辑上,您的组合循环必须中断,否则…)
  • 不要在应该可合成的代码中使用初始块
  • prv\u计数
    无效
  • 无需手动处理溢出(检查255?
    8'd255
    正好是
    8'b111111
    ,如果添加1'b1,它将重置为0,以此类推)
  • 还有很多其他的事情,这就提出了一个明显的问题——你有没有试过在Verilog上读一些书,最好是那些涉及语言可合成部分的书?:)无论如何,你正在尝试做的事情(据我所知)可能是这样的:

    module average(input clk, input rst, output reg [7:0] overflow_count);
       reg [7:0] count;
    
       always @(posedge clk or negedge rst) begin
          if (~rst) begin
             count <= 8'b0;
             overflow_count <= 8'b0;
          end else begin
             count <= (count + 1'b1);
             if (count == 8'b0)
               overflow_count <= (overflow_count + 1'b1);
          end
       end
    endmodule
    
    模块平均值(输入时钟、输入rst、输出寄存器[7:0]溢出计数);
    reg[7:0]计数;
    始终@(posedge clk或negedge rst)开始
    如果(~rst)开始
    
    算了吧,我的verilog知识是一本名为verilog HDL的书的第一部分和建议的集合,因为我只能买一本。我正在赶我的工作,以便在本周六的最后期限之前完成,但一旦完成,我会慢慢来,因为使用FPGA真的很有趣:)谢谢我的朋友,我真的很感谢你的诚实:)
    module average(input clk, input rst, output reg [7:0] overflow_count);
       reg [7:0] count;
    
       always @(posedge clk or negedge rst) begin
          if (~rst) begin
             count <= 8'b0;
             overflow_count <= 8'b0;
          end else begin
             count <= (count + 1'b1);
             if (count == 8'b0)
               overflow_count <= (overflow_count + 1'b1);
          end
       end
    endmodule