【问题标题】:how to generate delay on xilinx spartan 6 board?如何在 xilinx spartan 6 板上产生延迟?
【发布时间】:2014-10-21 18:24:05
【问题描述】:

我正在学习 Verilog HDL。现在,我正在尝试在 Digilent Atlys Spartan 6 xc6slx45 上运行一个程序。
我正在板上实现这个计数器。

module counter_s2( output reg [7:0] count);

initial begin
  count=0;
  repeat(127) begin
    #10000000 count=count+1;
  end
end

endmodule

当我在板上运行此代码时,我得到最终输入 1111111。板上没有延迟。我想产生一个延迟,比如说 1 秒,以查看输出。 谢谢!

P.S:我是 Verilog 的新手。

【问题讨论】:

    标签: delay verilog


    【解决方案1】:

    您创建的内容适用于测试台组件,并且可以在模拟中工作,但其中的某些部分不可合成。

    特别是initial 只能在 fpgas 上使用来设置初始值,在这个块中它不能随时间改变,它可以在一个单独的块中更新。注意:这是唯一一次两个块可以设置相同的 reg。

    #delay 值被综合忽略。任意异步时序控制无法可靠实现,因此不是综合工具的一部分。

    为了开发 Verilog 计数器,通常使用时钟,这意味着计数器值将保存在触发器中。为了使计数可以观察到,您需要一个足够慢的时钟。

    后面的计数器会溢出并继续计数

    module counter_s2( 
      input            clk,
      output reg [7:0] count
    );
    
    initial begin
      count= 'b0;
    end
    
    always @(posedge clk) begin
     count <= count + 1 ;
    end
    
    endmodule
    

    如果是用于 ASIC,那么您应该使用重置而不是依赖初始值。

    module counter_s2( 
      input            clk,
      input            rst_n, //Active Low reset
      output reg [7:0] count
    );
    
    always @(posedge clk or negedge rst_n) begin
      if (~rst_n) begin
        count <= 'b0;
      end
      else begin
        count <= count + 1 ;
      end
    end
    
    endmodule
    

    【讨论】:

    • 我尝试运行此代码,但在 LED 上没有得到任何输出。 LED 熄灭。请告诉我输入 clk 是如何到达这个计数器的?它是自动来自板时钟还是我们必须自己配置才能将其提供给我们的程序。我正在明确我的概念,因为我是 Verilog 的新手。谢谢!
    • 没有时钟它不会做任何事情。时钟是数字电子学中最基本的东西之一,它会因 FPGA 而异。对于Xilinx Spartan6,如果您仍然遇到问题,我会在Electronics SE 上询问有关时钟设置的问题。
    猜你喜欢
    • 1970-01-01
    • 2012-01-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多