建立Verilog文件

PS输入的时钟是100MHZ(周期10ns),我们的目标是输出一个1KHZ(周期1000_000ns)的方波,定义一个计数器计数到50000-1时翻转输出就可以很容易的得到1KHZ的方波,新建一个squarewave.v文件填入以下代码

module square_wave_gen(
    input clk,
    input rst_n,
    output sq_wave
);

parameter TCOUNT = 16'd49_999;

reg sq_wave_reg;
reg [15:0] C1;

always @(posedge clk or negedge rst_n) begin
    if(!rst_n)
        begin
            sq_wave_reg <= 1'b0;
            C1 <= 16'd0;
        end
    else if(C1 == TCOUNT)
        begin
            sq_wave_reg <= ~sq_wave_reg;
            C1 <= 16'd0;
        end
    else
        C1 <= C1 + 1'b1;
       
end

assign sq_wave = sq_wave_reg;

endmodule

建立Block Design

参考https://segmentfault.com/a/11...
生成如图所示,此时FCLK_CLK0 的输出频率为100MHZ

clipboard.png

Diagram窗口右键Add Module添加刚刚的square_wave_gen模块

clipboard.png

按图连接模块,并在square_wave_gen模块上右键选择Make External导出端口,结果如图

clipboard.png

产生HDL Wrapper

导出文件选择Create HDL Wrapper…

clipboard.png

可以在生成的design_1_wrapper文件中看到输出引脚

clipboard.png

添加引脚约束

添加Zybo-Master.xdc文件,这里使用JE_PMODPin 1(V12)做为输出

clipboard.png

clipboard.png

clipboard.png

修改约束文件如下所示

set_property -dict { PACKAGE_PIN V12   IOSTANDARD LVCMOS33 } [get_ports { sq_wave }];

产生位元流 (bitstream)

clipboard.png

当 bitstream 产生完成后,要将刚刚产生的硬件代码输出给Xilinx SDK去。

点击File -> Export -> Export Hardware

clipboard.png

完成后,启动 Xilinx SDK

clipboard.png

Xilinx SDK

打开后界面如图所示

clipboard.png

然后建立一个Application Project然后建立一个main.c

clipboard.png

填入

int main(){
    return 0;
}

Program FPGA进行FPGA的烧录
clipboard.png

在工程左侧Procject Explorer栏,右击工程->RunAs->Launch on Hardware运行

实验结果

示波器连接对应IO输出1KHZ方波
clipboard.png

clipboard.png

参考

https://numato.com/kb/styx-us...


Kyseng
1 声望3 粉丝

电子爱好者一枚,利用工作空余时间记录一下学习过程