【IC设计】ZC706板卡点灯入门(含Verilog代码,xdc约束,实验截图)

这篇具有很好参考价值的文章主要介绍了【IC设计】ZC706板卡点灯入门(含Verilog代码,xdc约束,实验截图)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这篇博客将针对AMD Zynq 7000 SoC ZC706 Evaluation Kit板卡(对应Vivado创建工程时FPGA型号:XC7Z045ffg900-2)实现基本的点灯程序。

假定已知的前置知识

本文对以下内容不再介绍,

  • 使用Vivado进行综合、实现、生成比特流并烧录FPGA
  • FPGA的概念、Verilog的基础语法

zc706,ic设计,fpga开发,IC设计,Zynq,Pynq,zc706,点灯

需求:

板卡时钟为200MHz,让板子上的一个LED灯保持0.5秒亮,0.5秒灭。

注意点:

①板卡使用JTAG接口烧录时,必须将SW4拨为01,如图所示:
zc706,ic设计,fpga开发,IC设计,Zynq,Pynq,zc706,点灯
②ZC706的时钟都是差分时钟,必须使用Verilog原语将其转换为单端时钟才可以直接使用:

IBUFGDS IBUFGDS_inst(
    .O(single_clock),    //Clock buffer Output
    .I(clk_p),  //Diff_p clock buffer input (connect directly to top-level port)
    .IB(clk_n)  //Diff_n clock buffer input(connect directly to top-level port)
);

其中IBUFGDS是Xilinx的原语,不需要引入IP,可以直接使用。

③对于200MHz的时钟,即每秒运行210^8个周期,想要每0.5s亮,0.5秒灭,就是要求每0.5秒将led取反一次,
那么应当让计数器,计数到1
10^8个周期时对led取反。文章来源地址https://www.toymoban.com/news/detail-830663.html

代码实现:

顶层模块

`timescale 1ns / 1ps
module top_module(
    input clk_n,
    input clk_p,
    input rst_b,
    output led
);
    wire single_clock;
    IBUFGDS IBUFGDS_inst(
        .O(single_clock),    //Clock buffer Output
        .I(clk_p),           //Diff_p clock buffer input (connect directly to top-level port)
        .IB(clk_n)           //Diff_n clock buffer input(connect directly to top-level port)
    );
    Hello hello_inst(
        .clock(single_clock),
        .reset(rst_b),
        .io_led(led)    
    );
    
endmodule

led闪烁模块

module Hello(
  input   clock,
  input   reset,
  output  io_led
);
  reg [31:0] cntReg; 
  reg  blkReg; 
  wire [31:0] _cntReg_T_1 = cntReg + 32'h1; 
  assign io_led = blkReg; 
  always @(posedge clock) begin
    if (reset) begin 
      cntReg <= 32'h0; 
    end else if (cntReg == 32'd100_000_000) begin 
      cntReg <= 32'h0; 
    end else begin
      cntReg <= _cntReg_T_1; 
    end
    if (reset) begin 
      blkReg <= 1'h0; 
    end else if (cntReg == 32'd100_000_000) begin 
      blkReg <= ~blkReg;
    end
  end
endmodule

xdc约束

#绑定复位按钮
set_property PACKAGE_PIN AK25 [get_ports rst_b]

#设置复位按钮的IO电压为2.5V
set_property IOSTANDARD LVCMOS25 [get_ports rst_b]

#对Verilog中的led端口和板卡上的Y21灯进行绑定
set_property PACKAGE_PIN Y21 [get_ports led]

#设置IO电压为2.5V
set_property IOSTANDARD LVCMOS25 [get_ports led]

#clk_p和clk_n是两个差分时钟信号,要通过IBUFGDS原语转化到单端时钟再使用
set_property PACKAGE_PIN H9 [get_ports clk_p]
set_property PACKAGE_PIN G9 [get_ports clk_n]
set_property IOSTANDARD LVDS [get_ports clk_p]
set_property IOSTANDARD LVDS [get_ports clk_n]

到了这里,关于【IC设计】ZC706板卡点灯入门(含Verilog代码,xdc约束,实验截图)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包