怎样让外部信号第一级寄存器吸入IOB


前言
从FPGA的PAD到IOB里面的寄存器是有专用布线资源的,而到内部其他寄存器没有专用的布线资源。使用IOB里面的寄存器可以保证每次实现的结果都一样,使用内部其他寄存器就无法保证每次用的都是同一个寄存器且采用同样的布线。
流程
(1)有如下代码:
`timescale   1ns / 1ps
module   iob_top  (
     input      i_clk       ,
     input      i_a         ,
     output     o_b                    
);
reg  [ 1 : 0 ] r_a_edge  =   2'd0 ;
always   @ ( posedge  i_clk)
begin
    r_a_edge  <=   { r_a_edge[ 0 ],i_a } ;
end
reg  [ 11 : 0 ] r_cnt  =   'd0 ;
always   @ ( posedge  i_clk)
begin
     if  (r_a_edge  ==   2'b01 )
        r_cnt  <=   'd0 ;
     else  
        r_cnt  <=  r_cnt  +   'd1 ;
end
assign  o_b  =  r_cnt[ 11 ];

endmodule   // end the iob_top model
(2)不吸入IOB的方式:适配后可以看到对于检测a的边沿使用了两个寄存器,位于内部的CLB中。

(3)吸入IOB的方式:
ILOGIC3资源框图:可以看到这个触发器可以作为Latch、FF、DDR使用。

在xdc文件中约束输入使用IOB寄存器资源:
set_property  IOB TRUE [ all_inputs]
在下图中可以看到使用了IOB寄存器资源,实际上是用了IDDR实现的,另一个寄存器是使用的内部寄存器资源。

如果是用输出的IOB寄存器资源,也是类似的用法。
以上。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值