门控时钟和门控时钟所引起的竞争与冒险

 


module light(input clk,
             input en,
             output reg this_en,
             output reg this_en_pose);
    
    always@(*)
    begin
        if (clk == 0)
            this_en = en;
        else
            this_en = this_en;
        
    end

    always@(posedge clk)
    begin

        this_en_pose<=en;

    end
    
endmodule

`timescale 1ns / 1ps

module uut();
    reg clk;
    reg en;
    wire this_en;
    wire this_en_pose;
    wire out_en;
    wire out_en_pose;
    
    light   uu(
    .clk(clk),
    .en(en),
    .this_en(this_en),
    .this_en_pose(this_en_pose)
    );

    assign out_en=clk&this_en;
    assign out_en_pose=clk&this_en_pose;
    
    initial begin
        clk = 0;
        while(1)begin
            #2
            clk = ~clk;
        end
    end
    
    
    initial begin
        en = 0;
        while(1)begin
            #1
            en = 1;
            #4
            en = 0;
            #5
            en=1;
            #1
            en=0;
            #2
            en=1;
            #3
            en=0;
            
        end
    end
    
    
    
endmodule

 出现了毛刺,原因是由于clk和this_en_pose同时反转产生了竞争

竞争冒险的原因

门电路两个输入信号同时向相反的逻辑电平跳变(一个从0变为1,一个从1变为0)的现象就叫做竞争。

一个是其它说法:在组合逻辑电路中,某个输入变量通过两条或两条以上的途径传到输出端,由于每条途径延迟时间不同,到达输出门的时间就有先有后,这种现象称为竞争

其实这两个概念都对,因为第一个概念针对的是竞争冒险的适用(经常出现的)情况,第二个是竞争冒险产生的根本原因。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值