【FPGA】关于KC705开发板的差分时钟(主时钟为差分100M)

写作时间:2020-03-08

开发环境:vivado2019.1

readme:

最近在学习FPGA,第一个实例当然是流水灯了,我已经将之整理为博客。
FPGA实现led流水灯 (工程+代码)
这个工程,使用的开发板,给FPGA的主时钟是单端时钟,然而我想把这个工程套用在xilinx KC705上,发现不是那么顺利。

我自己的开发板,主时钟是单端时钟,如下图:
在这里插入图片描述

因为KC705上的主时钟是差分时钟,如下图:
在这里插入图片描述
在这里插入图片描述

对于差分时钟,我们需要在==.v文件约束文件xdc==中修改下,才可以生成bit正常。
1).v文件 修改如下:

`timescale 1ns / 1ps
//
// Company:
// Engineer:
//

module run_led(
	input sys_clk_p,
	input sys_clk_n,
	input RSTn_i,
	output reg [3:0]LED_o
);
//*********差分时钟这么处理***********
wire  CLK_i;
//对差分时钟采用IBUFGDS IP核去转换
IBUFGDS CLK_U(
.I(sys_clk_p),
.IB(sys_clk_n),
.O(CLK_i)
);
//**********************************
reg [31:0] Cnt;
always @(posedge CLK_i )

if (RSTn_i==1)//复位
    begin 
    LED_o<=4'b0001;
    end
else
    begin
        if (Cnt==32'd200_000_000)
            begin
            Cnt<=32'd0;
            if(LED_o==4'b1000)
                begin
                LED_o<=4'b0001;
                end
            else  
                begin  
                LED_o<=LED_o<<1'b1;
                end
            end
        else
            begin
            Cnt<=Cnt+1'b1;
            LED_o<=LED_o;
            end
    end
	
endmodule

2)约束文件xdc 修改如下:

#vivado管脚约束XDC文件
#*********差分时钟这么处理***********
set_property PACKAGE_PIN AD12 [get_ports {sys_clk_p}]
#//只需要约束p端
set_property IOSTANDARD DIFF_SSTL15 [get_ports {sys_clk_p}]
#//注意这里的电平标准
set_property IOSTANDARD DIFF_TERM true [get_ports {sys_clk_p}]
#//只需要约束p端
set_property SEVERITY {Warning} [get_drc_checks UCIO-1]   
#//可以忽略掉drc error
#**********************************

#rst_n
set_property PACKAGE_PIN AG5 [get_ports RSTn_i]
set_property IOSTANDARD LVCMOS15 [get_ports RSTn_i]
#LED_o
set_property PACKAGE_PIN AB9 [get_ports {LED_o[3]}]
set_property IOSTANDARD LVCMOS15 [get_ports {LED_o[3]}]
set_property PACKAGE_PIN AC9 [get_ports {LED_o[2]}]
set_property IOSTANDARD LVCMOS15  [get_ports {LED_o[2]}]
set_property PACKAGE_PIN AA8 [get_ports {LED_o[1]}]
set_property IOSTANDARD LVCMOS15 [get_ports {LED_o[1]}]
set_property PACKAGE_PIN AB8 [get_ports {LED_o[0]}]
set_property IOSTANDARD LVCMOS15 [get_ports {LED_o[0]}]


#set_property CONFIG_MODE <configuration_mode> [current_design]
#set_property BITSTREAM.CENERAL.COMPRESS TRUE [current_design]
set_property CFGBVS VCCO [current_design]
set_property CONFIG_VOLTAGE 3.3 [current_design]

这样修改后,bit 生成正确,流水灯跑起来了哈~~

其他项目中,FPGA的时钟为差分时钟的时候,完全可以套用本文方法。

补充:
关于复位,说明如下:
在这里插入图片描述
GPIO_SW_E是直接连接到FPGA管脚上,下拉到地,按键断开时,常为低电平。按键按下闭合,为高电平。
我们想要实现的就是,按键按下,为高电平时候,进行复位。


THE END~

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三青山上种萝卜

红外图像核心算法,高质量解析

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值