FPGA中触发器和锁存器总结

目录

一,实例

二,不同模型RTL代码或源语

FDCE:异步复位触发器

FDPE:异步置位触发器

FDRE:同步复位触发器

FDSE:同步置位触发器

LDCE:异步清零锁存器

LDPE:异步置位锁存器

三,总结


一,实例

用个简单实例来看看代码到综合网表再到底层基本元件映射关系:

代码中data_buf[0]会被映射为触发器,data_buf[1]会被映射为锁存器。综合后网表见下图

由原理图可见触发器CE端跟锁存器G端是等效的。触发器比锁存器多了时钟同步。

打开device看元件place,发现锁存器的G端口映射为底层元件存储器的clk端口。见红色高亮的net。锁存器的GE端口映射为存储器的CE端口。

触发器和锁存器place整体图

触发器和锁存器映射再同一个SLICEL里面,并不是相邻两个寄存器,一个是place在AFF2,一个place在EFF2,由此可见在ultrascale系列中, 8个存储单元为一组控制集。

    

二,ultrascale系列不同存储模型RTL代码/源语

  FDCE:异步复位触发器

always @(posedge i_clk or posedge i_rst)
    begin
    if(i_rst)
        data<=1'b0
    else if(enable)
        data<=di;
    end

 

FDPE:异步置位触发器

always @(posedge i_clk or posedge i_rst)
    begin
    if(i_rst)
        data<=1'b1
    else if(enable)
        data<=di;
    end

FDRE:同步复位触发器

always @(posedge i_clk)
    begin
    if(i_rst)
        data<=1'b0
    else if(enable)
        data<=di;
    end

FDSE:同步置位触发器

always @(posedge i_clk)
    begin
    if(i_rst)
        data<=1'b1
    else if(enable)
        data<=di;
    end

LDCE:异步清零锁存器

always @(*)
    begin
    if(i_rst)
        data<=1'b0
    else if(enable)
        data<=di;
    end

LDPE:异步置位锁存器

always @(*)
    begin
    if(i_rst)
        data<=1'b1
    else if(enable)
        data<=di;
    end

 

不同FPGA系列寄存器模型区别

如下图所示,7系列FPGA中对触发器参数定义只有INIT初始化的值。

而ultrascale系列支持 时钟取反,输入数据D取反,复位信号取反 选项。所以ultrascale系列芯片综合更加灵活,有更多优化空间。

 上图7系列FPGA FDSE源语

 上图ultrascale系列FPGA FDSE源语

所以对于7系列FPGA如果复位是低有效,则会复位之前增加lut取反逻辑。ultrascale系列则不需要,因为触发器可配置为低复位。

三,总结

1,FPGA中触发器和锁存器类型有6种,存储元件可转换为以下任何一种。

      ⊙FDCE:异步复位触发器

      ⊙FDPE:异步置位触发器

      ⊙FDRE:同步复位触发器

      ⊙FDSE:同步置位触发器

       ⊙LDCE:异步清零锁存器

       ⊙LDPE:异步置位锁存器

2,组合逻辑中当输出条件没完全列出,剩下没列出的条件编译器默认输出值是不变的,这种情况就会产生锁存器。时序逻辑不会产生锁存器。因为触发器CE使能端口相当于锁存器的G端口,可以使输出保持不变。

3,FPGA中使用触发器并不会比使用触发器多资源,在ultrascale系列中,一个CLB中包含16 存储单元,所有存储单元都可以配置为寄存器或锁存器。8个存储单元为一组,要么配置为锁存器要么配置为触发器。

4,不建议使用锁存器原因:锁存器对毛刺敏感,不能异步复位,因此在上电后处于不确定的状态。锁存器不利于静态时序分析。

5,FPGA保留锁存器功能并不会增加FPGA资源(寄存器和锁存器可相互转化),保留锁存器可实现FPGA灵活性,锁存器虽然在FPGA中不怎么被使用,但在CPU中却很常见,因为锁存器比Flip-Flop快很多。

 

参考文档:

,1,大家一致避免使用的锁存器为什么依然存在于FPGA中?我们对锁存器有什么误解? | 电子创新网赛灵思社区

2,从底层结构开始学习FPGA(3)----存储单元之触发器、寄存器与锁存器_孤独的单刀的博客-CSDN博客_fpga寄存器是什么

3,关于锁存器的后仿真_zhouyiiii11111的博客-CSDN博客_simulink 锁存器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值