Verilog基础之十五、锁存器实现

哔哩哔哩   2023-07-11 21:40:06

一、前言

在之前的文章中介绍过寄存器,本节介绍一个类似的逻辑单元:锁存器。在大部分的资料和文章介绍中,都是告诉读者设计中应尽量避免出现锁存器,这主要是由锁存器的特点决定的。

锁存器和普通触发器最大的区别就是锁存器为电平触发,如高电平或低电平,而触发器为边沿触发,这一特性使得锁存器不如触发器稳定,电平触发容易受干扰信号的影响而导致状态变化,也即产生毛刺。另一方面,因为可不受时钟控制,不利于时序分析,时序分析更加复杂。

二、工程设计

以器件xc7k480tffv1156-1为例,在器件的原语列表中,有两种类型的锁存器:LDCE(异步清零/复位),LDPE(异步置位)


【资料图】

可以直接例化生成锁存器,此种方式将不介绍,主要介绍RTL代码生成锁存器。

工程代码

设计中包含正常综合LDPE,LDCE的场景以及设计不完整意外导致锁存器的场景

综合结果

通过红框1和2中LDCE和LDPE的实现代码区别为清零与置位。o_casey与o_ify可知完整的if-else逻辑以及case语句逻辑是通过LUT来实现,栏框5中o_ff用FDRE实现,即使if语句不完整也不会综合出锁存器。

Latch实现

在device图中,每一个slice中有一个cell可放置锁存器。

同理,触发器o_ff也是放置于slice的AFF中,类型Type为Flop&Latch说明即可为触发器也可以为存储器

相关资讯
最新资讯