IC学习之刷题记录

本文总结了HDLBits的一道题目,涉及FPGA中的双边沿采样问题。在FPGA中,无法直接实现同时检测时钟上升沿和下降沿的触发器。文中提供了模块`top_module`的实现,通过两个寄存器`temp1`和`temp2`分别捕获上升沿和下降沿的输入数据`d`,并讨论了如何避免竞争冒险。竞争和冒险是组合逻辑电路中的常见问题,可以通过增加冗余项、滤波电容或引入封锁脉冲等方式消除冒险。
摘要由CSDN通过智能技术生成

HDLBits刷题总结——Dualedge

总结了各位大神的知识,浅浅记录~ ~
如有不对请指正,一起进步
在这里插入图片描述

这道题是实现双边沿采样

FPGA中没有实现时钟上升沿和下降沿同时采样的触发器,即always边沿触发时只有一个clk和一个reset

module top_module (
    input clk,
    input d,
    output q
);
    // q 在上升沿或者下降沿变化
    // 双端沿检测
    
    reg temp1,temp2;
    always @( posedge clk) begin
        temp1 <= d;
    end
    always @(negedge clk) begin
        temp2 <= d;
    end
    //assign q = clk ? temp1 : temp2;  产生竞争冒险
    // 圈1
    //assign q = (temp2 & ~clk) | (temp1 & clk) | (temp1 & temp2); //虽然得到了同样的数值,但是映射到了不同的硬件电路上,因此出现不同的冒险
    assign q = (temp2 | clk) & (temp1 | ~clk) & (temp1 | temp2); // 圈0

endmodule

竞争冒险问题

组合逻辑电路出现的是竞争冒险问题;

时序逻辑电路出现的是亚稳态问题。

竞争

在一个组合电路中,当某一个变量经过两条以上的路径到达输出端的时候,由于每条路径上的延迟时间的不同,到达终点的时间会有先有后,这一现象称为竞争。

冒险

具有竞争现象的组合电路中,当某个变量发生变化时,真值表所描述的逻辑关系或者功能遭受到短暂的破坏,在输出端出现一个不应有的尖脉冲毛刺,这种现象叫冒险。

竞争与冒险的关系

竞争 —— 不一定会产生冒险

冒险 —— 一定存在竞争

冒险的分类

1型冒险:

真值为0的时候出现了1的尖峰

0型冒险:

真值为1的时候出现了0的尖峰

冒险的检测
公式法

逻辑表达式能转换为 A·(~A) ======== 出现1型冒险

逻辑表达式能转换为A+(~A) ======== 出现0型冒险

卡诺图法

利用卡诺图圈“1” / “0”,圈相切 ======== 出现冒险

冒险的消除
增加冗余项

​ 引入额外的乘积项(与门)来覆盖冒险的输入对

增加滤波电容 (低通滤波)

​ 假设毛刺是个高电平脉冲

​ △t很小或电容C很大(等价于给电容充电的时间很短 或者 电容充电非常慢) 电容还没有完成充电过程,电容就赶紧放电,因此毛刺消失。

C = Q/U

​ △t很大或电容C很小(等价于电容足够的时间充电,或者很容易完成充电) 电容可以充满电再放电,U冲到的电压和毛刺一样。

高通滤波电路:即输入信号中,频率越高的就越容易通过电路来到输出端,而频率较低的信号被滤除

低通滤波电路:即输入信号中,频率越低的越容易通过电路来到输出端,而频率较高的信号被滤除

引入封锁脉冲

​ 引入负脉冲,在输入信号发生冒险的时间内,把可能产生的干扰脉冲的门堵住。

引入选通脉冲

​ 在电路状态稳定后,再选通输出。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值