带有闪烁LED的按钮连接

时间:2016-02-20 09:51:48

标签: verilog fpga xilinx

我对HDL编码很新。我正在使用Xilinx verilog进行HDL编码。

我正在尝试使用push btn来激活下面的LED闪烁代码,当按钮被释放时,闪烁停止。以下是闪烁的LED代码

`timescale 1ns / 1ps
module blinkyslow(
    input CLOCK, SW,
    output LED
    );
    reg [24:0] COUNT = 25'b0000000000000000000000000;
    reg LED=1;
    always @(posedge CLOCK) begin
    COUNT <= COUNT + 1;
    LED <= (COUNT == 25'b0000000000000000000000000)?~LED:LED;
    end
endmodule

我正在使用basys 3 board,我正在尝试将变量SW链接为开关

3 个答案:

答案 0 :(得分:2)

您可以使用此代码:

`timescale 1ns / 1ps  
module blinkyslow(  
    input CLOCK, SW,reset,  
    output reg LED  
    );  
    reg [24:0] COUNT;  
    always @(posedge CLOCK) begin  
      if ( reset ==1'b1)  
        LED <= 1'b0;
        COUNT <= 0;
      else  
        begin  
    COUNT <= COUNT + 1;  
    LED <= SW & ((COUNT == 25'b0)?~LED:LED);  
        end  
      end  
endmodule  

由于始终模块仅对CLOCK信号的上升沿敏感,因此复位信号为同步复位。

答案 1 :(得分:1)

例如,您可以通过仅在按下按钮时使计数器递增来实现它。

(严格来说,这不是很好,因为如果COUNT保持为零,LED将在时钟切换时切换。仅在按下按钮时切换LED将解决此问题< / p>

`timescale 1ns / 1ps
module blinkyslow(
    input CLOCK, SW,
    output LED
    );
    reg [24:0] COUNT = 25'b0000000000000000000000000;
    reg LED=1;
    always @(posedge CLOCK) begin
        if (SW) begin
            COUNT <= COUNT + 1;
            LED <= (COUNT == 25'b0000000000000000000000000)?~LED:LED;
        end
    end
endmodule

(未经测试,假设SW = 1表示按下了电路板上的开关)

答案 2 :(得分:0)

@Nicholas Chan。在原始代码中,您已在初始块中定义了以下行。因此,LED硬连线为零。

timescale 1ns / 1ps module blinkyslow( input CLOCK, SW, output LED ); initial:begin reg [24:0] COUNT = 25'b0000000000000000000000000; reg LED=1; end always @(posedge CLOCK) begin COUNT <= COUNT + 1; LED <= (COUNT == 25'b0000000000000000000000000)?~LED:LED; end endmodule

所以要么为LED和COUNT定义一个复位信号(如前面的答案),或者你可以尝试使用以下代码使用初始块

import java.io.FileOutputStream; import java.io.IOException; import java.io.PrintStream; public class TestStream { public static void main (String[] args) throws IOException { FileOutputStream fos = new FileOutputStream("test.txt"); PrintStream p1 = new PrintStream(fos, false); PrintStream p2 = new PrintStream(fos, false); p1.print("Test"); p1.flush(); p2.print(100); p2.flush(); fos.close(); } }