FPGA学习之安全行为和非安全行为

电子说

1.2w人已加入

描述

安全行为和非安全行为

由于条件语句的描述在很多情况下,导致生成锁存器。这些锁存器将上游的毛刺传输至下游,并且锁存器的使能信号(源自组合电路)也带有毛刺,引起的冒险竞争,导致下游逻辑出现错误的捕获,这种现象称为非安全行为。

一旦非安全行为发生错误,典型的特征是:前仿正确,后仿不正确,下板不正确,而且很难以找到问题所在。

因此,现代EDA,要求写安全行为的HDL,一旦出现非安全行为,大多数工具直接给出警告。又由于非安全行为的根源在锁存器,因此,“消灭锁存器”为EDA综合编译和时序收敛过程一个必然步骤。也就是说,一旦生锁,将给出警告。

安全行为的编码原则:

1.开节点输出的信号,必须满足:“全条件”+“全线与”

2.闭节点输出的信号,这些信号中的条件译码信号,必须写“全条件”+“全线与

安全行为编码例子:摩尔流水灯

设计需求

开发板的4个led灯,轮流点亮

每一个灯亮200ms,然后熄灭50ms

任何时候,按下start_n,流水灯开始运行

任何时候,按下stop_n,流水灯停止运行,全部熄灭

二段摩尔状态机

工作时钟clk频率为100KHz(10us)

顶层框图

锁存器

顶层架构

锁存器

ET:使能信号触发器,在start_n为真时触发ena为真,在stop_n为真时触发ena为假。复位rst_n为真触发ena为假。

CNT:cnt_en为假,cnt清零;cnt_en为真,cnt加一计数

TS:shift_rst_n为真,给出temp的初始值4’b1110;shift_en为真,temp左移一次

引用TPS:

锁存器

状态转移图(非安全行为)

锁存器

状态转移图(安全行为)

锁存器

编辑:jq

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分