FPGA学习记录(二)ZCU102开发之PL侧流水灯

·新建工程

工具:vavido2018.3

点击“Create Project”,进入新建工程向导

选择对应的板卡型号,这里我们选择ZCU102

至此,一个新建的工程就创建完成了。

·添加IP核

点击 IP catalog,弹出新建IP对话框

在搜索框中输入clock,在搜索结果中选择Clocking Wizard,然后双击。

点击"Clocking OPtions"标签,在“Input Frequency(MHz)"列中填入输入时钟频率,由于外部输入时钟为125MHz,所以填入125,在”Source"中指定时钟类型,由于输入的时钟为差分时钟,此处选择“Differential clock capable pin"

点击”Output Clocks"标签,在“Output Freq(MHz)”列中填入输出时钟频率,此处填入50,点击“OK”,等待IP生成综合完成。

·新建设计文件

上面步骤中已新建pl_led.v文件,所以不再重复该步骤。

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2023/10/26 17:17:26
// Design Name: 
// Module Name: pl_led
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//
module pl_led(
        input           clk_125_p_i,
        input           clk_125_n_i,
        output          reg led_o);
    
parameter   HALF_LED_PERIOD = 32'd25_000_000;

reg[31:0]   div_counter;    //分频计数器

wire    clk_50M;
wire    rst;
wire    locked;

//clk_wiz_0   clk_wiz_0
//(
//    //Clock out parts
//    .clk_50M(clk_50M),           //output clk_50M
//    //Status and control signals
//    .reset(1'b0),                //output reset
//    .locked(locked),             //output locked
//    //Clock in parts
//    .clk_in1_p(clk_125_p_i),     //input clk_in1_p
//    .clk_in1_n(clk_125_n_i));    //input clk_in1_n
    
    
    clk_wiz_0 kk
    
   (
    // Clock out ports
    .clk_out1(clk_50M),     // output clk_out1
    // Status and control signals
    .reset(1'b0), // input reset
    .locked(locked),       // output locked
   // Clock in ports
    .clk_in1_p(clk_125_p_i),    // input clk_in1_p
    .clk_in1_n(clk_125_n_i));    // input clk_in1_n
// INST_TAG_END ------ End INSTANTIATION Template ---------

    
    
    

assign  rst = !locked;
always @(posedge clk_50M)
    begin
        if(rst)
            begin
                led_o       <=  1'b0;
                div_counter <=  32'd0;
            end
          else
            begin
                if(div_counter == HALF_LED_PERIOD)
                    begin
                        led_o       <=  !led_o;
                        div_counter <=  32'd0;
                    end
                 else
                    begin
                        led_o       <= led_o;
                        div_counter <= div_counter + 32'd1;
                    end
            end
     end
endmodule
 

添加约束文件,pl_led.xdc文件

set_property PACKAGE_PIN AK15 [get_ports "elk_125_p_i"] : 
set_property IOSTANDARD LVDS [get_ports "elk_125_p_i"] ; 

set_property PACKAGE_PIN AK14 (get_ports "elk 125_n_i"] : 
set_property IOSTANDARD LVDS [get_ports "elk_125_n_i"] ; 

set_property PACKAGE_PIN AG14 [get_ports "led_o"] : 
set_property IOSTANDARD LVCMOSI2 [get_ports "led_o"] ;

完成以上步骤,进行综合实现。

按照截图标签进行操作!

点击“Run Synthesis”可对工程进行综合,点击“Run implementation”可对工程进行实现,点击“Generate Bitstream”可生成用来下载调试的bit文件。

·下载调试

bit文件生成完毕之后,我们接下来将下载到开发板进行调试,下载bit之前务必把开发板和电脑之间的JTAG下载器连接好,且将开发板的启动模式拨到JTAG模式。

下载成功!

备注,基本操作就是这个流程,实际效果由代码实现。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值