Vivado综合属性系列之九 CLOCK_BUFFER_TYPE

本文介绍了在FPGA设计中,如何通过CLOCK_BUFFER_TYPE属性来指定时钟缓冲器类型,如BUFG、BUFH和BUFR,以适应不同的时钟需求。提供了属性设置的模板和工程代码示例,展示了不同缓冲器类型在综合后的结果。
摘要由CSDN通过智能技术生成

目录

一、前言

二、CLOCK_BUFFER_TYPE

    ​    ​2.1 属性说明

    ​    ​2.2 工程代码

    ​    ​2.3 结果


一、前言

    ​    ​在设计中,对于时钟端口驱动时钟单元时,工具会自动综合出全局时钟BUFG连接时钟源和时钟负载。当存在全局时钟BUFG不足或者因为某些原因不想使用BUFG时,想使用其他时钟BUF如BUFH,BUFR等,可通过属性CLOCK_BUFFER_TYPE来实现。

二、CLOCK_BUFFER_TYPE

    ​    ​2.1 属性说明

    ​    ​CLOCK_BUFFER_TYPE用于指定时钟BUFFER的类型,通常未指定是,默认为BUFG,属性可直接代码中设置也可在XDC文件中使用。

    ​    ​使用模板:(* CLOCK_BUFFER_TYPE=VALUE*) input clk;

    ​    ​VALUE可设置为BUFG、BUFH、BUFR、BUFMR、BUFIO、NONE六个值,分别对应全局时钟,水平时钟,区域时钟,跨区域时钟,IO时钟,默认值。

    ​    ​2.2 工程代码

    ​    ​设计中对3个触发器使用BUFG、BUFH、BUFR作为示例

module DIRECT_ENABLE_test( d,ce,clkbufg,clkbufh,clkbufr,out );

(*CLOCK_BUFFER_TYPE="BUFG"*)input clkbufg;

(*CLOCK_BUFFER_TYPE="BUFH"*)input clkbufh;

(*CLOCK_BUFFER_TYPE="BUFR"*)input clkbufr;

input ce;

input [2:0]d;

output  out;

reg [2:0] out;

always@(posedge clkbufg)

begin

    if(ce)

        out[0]<=d[0];

end

always@(posedge clkbufh)

begin

    if(ce)

        out[1]<=d[1];

end

always@(posedge clkbufr)

begin

    if(ce)

        out[2]<=d[2];

end

endmodule

    ​    ​2.3 结果

如下图,时钟端口最终综合为CLOCK_BUFFER_TYPE设置的类型

​    ​    ​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值