电子说
安全行为和非安全行为
由于条件语句的描述在很多情况下,导致生成锁存器。这些锁存器将上游的毛刺传输至下游,并且锁存器的使能信号(源自组合电路)也带有毛刺,引起的冒险竞争,导致下游逻辑出现错误的捕获,这种现象称为非安全行为。
一旦非安全行为发生错误,典型的特征是:前仿正确,后仿不正确,下板不正确,而且很难以找到问题所在。
因此,现代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
全部0条评论
快来发表一下你的评论吧 !