FPGA流水灯(含Vivado使用流程)

1. 建立工程

新建工程。

FPGA流水灯(含Vivado使用流程)

工程名和工程路径。

FPGA流水灯(含Vivado使用流程)

根据芯片型号选择。

FPGA流水灯(含Vivado使用流程)

其他一路Next直至Finish。

2. 源文件

新建源文件:

Add Sources→Add or create design sources

FPGA流水灯(含Vivado使用流程)

FPGA流水灯(含Vivado使用流程)

Verilog代码:(这里先以流水灯为例)

module led_stream(
    output reg [3:0] led,  // LED4 to LED1, 1 on, 0 off
    input            clk,  // FPGA PL clock, 50 MHz
    input            rst_n // FPGA reset pin
);
 reg [31:0] cnt;
 reg [1:0]  led_on_number;
    //clock input 50000000
parameter CLOCK_FREQ  =50000000;
parameter COUNTER_MAX_CNT=CLOCK_FREQ/2-1;//change time 0.5s

    always @(posedge clk, negedge rst_n) begin
        if(!rst_n) begin
            cnt <= 31'd0;
            led_on_number <= 2'd0;
        end
        else begin
            cnt <= cnt + 1'b1;
            if(cnt == COUNTER_MAX_CNT) begin//count time 0.5s
                cnt <= 31'd0;
                led_on_number <= led_on_number + 1'b1;
            end
        end
    end
    always @(led_on_number) begin
        case(led_on_number)
            0: led <= 4'b0001;
            1: led <= 4'b0010;
            2: led <= 4'b0100;

            3: led <= 4'b1000;
        endcase
    end
endmodule

时钟频率CLOCK_FREQ为50000000Hz。通过cnt累加计数,达到0.5s后改变一次输出状态。

3. 仿真文件

Add Sources→Add or create simulation sources

`define clk_cycle 10
module led_sim();
    reg clk, rst_n;
    wire [3:0] led;
    always #`clk_cycle clk = ~clk;
    initial begin
        clk = 0;
        rst_n = 1;
        #10 rst_n = 0;
        #10 rst_n = 1;
    end
led_stream led_stream(.rst_n(rst_n), .clk(clk), .led(led));
endmodule

时钟周期20ns,故设置clk每隔10ns翻转一次。效果如下图所示。

FPGA流水灯(含Vivado使用流程)

仿真至2s出头,得到结果如下图所示,可知程序正确。

led按照0001→0010→0100→1000的顺序变化。

FPGA流水灯(含Vivado使用流程)

4. 综合

点击Run Synthesis

FPGA流水灯(含Vivado使用流程)

Number of jobs代表综合消耗的进线程。

FPGA流水灯(含Vivado使用流程)

点击OK开始综合,同时窗口右上角显示综合正在运行的提示。

FPGA流水灯(含Vivado使用流程)

综合完成后显示

FPGA流水灯(含Vivado使用流程)

5. 管脚绑定

Open Elaborated Design

FPGA流水灯(含Vivado使用流程)

观察原理图。

LED引脚and复位按键引脚:

FPGA流水灯(含Vivado使用流程)FPGA流水灯(含Vivado使用流程)

FPGA流水灯(含Vivado使用流程)

时钟引脚:

FPGA流水灯(含Vivado使用流程)

根据原理图绑定管脚:

FPGA流水灯(含Vivado使用流程)

保存管脚约束文件(Ctrl+S):

FPGA流水灯(含Vivado使用流程)

6. 实现

Run Implementation

FPGA流水灯(含Vivado使用流程)

Generate Bitstream

FPGA流水灯(含Vivado使用流程)

打开硬件管理器 Open Hardware Mnager:

FPGA流水灯(含Vivado使用流程)

连接ZYNQ开发板,选择Auto Connect

FPGA流水灯(含Vivado使用流程)

点击Program进行烧写操作

FPGA流水灯(含Vivado使用流程)

效果:

FPGA流水灯(含Vivado使用流程)

上一篇:超过飞飞系列-ZYNQ之FPGA学习3.6.4串口程序例化(基于正点原子ZYNQ)


下一篇:计算机硬件系统设计—码表计数器