数字IC设计笔试面试经典题(1-10)

2023-11-13

 1 基础知识

1.1 锁存器的结构

锁存器即Latch ,数电中称之为电平触发的D触发器,也是D型锁存器,有电平触发器SR触发器改进得到,其工作特点是电平是有效电平(高电平或者低电平)期间,才接受信号并输出,否则保持不变。

1.2 DFF的结构

D触发器,数电中称之为边沿触发D触发器,有两个D-Latch组成而来

工作特点:触发器的次态取决于时钟信号的上升沿或者下降沿到达时输入的逻辑状态,而在这之前或之后,输入信号的变化对触发器输出的状态没影响。有效的提高了触发器的抗干扰能力,也提高了电路的工作可靠性。

FF1,FF2 时D-Latch.

1.3 建立时间,保持时间 ,传播延时,组合逻辑延时。

建立时间:触发器在时钟上升沿到来之前,其数据输入端的数据必须保持不变的最小时间

如果不满足建立时间要求,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿,数据才能被打入触发器,或者说,该数据就会被永久“跳过”而未被“采样”。
如果数据信号在时钟沿触发前的持续时间超过了建立时间,那么这个时间间隔就叫做建立时间裕量。举个例子:坐火车时需要提前到站检票安检,而不是一到火车站就可以乘坐。必须的提前到站的时间就是建立时间。

保持时间:触发器在时钟上升沿来到之后,其数据输入端的数据必须保持不变的最小时间。

  • 如果数据信号在时钟沿触发后的持续时间超过了保持时间 Th,那么这个时间间隔就叫做保持时间裕量。

从延迟的角度来说,

  • 建立时间决定了该触发器之间的组合逻辑的最大延迟。
  • 保持时间决定了该触发器之间的组合逻辑的最小延迟。

传播延时(触发器输出的响应时间)
        是指一个数字信号从器件(一般是 DFF,符号表示为 Tcq / Tco)的输入端到输出端所需的时间。一般在 FPGA 中是指时钟上升沿之后延时 Tcq 的时间,数据才到达寄存器 Q端。

区别于门传播延时:反应为其对输入信号变化响应有多快,表示为信号通过该门所经历的时间,定义为输入信号和输出信号波形在 50% 翻转点之间的时间。

组合逻辑延时
        一般是指两级寄存器之间的输出端 Q 到输入端 D 之间的组合逻辑延时,符号表示为 Tlogic / Tcomb。

1.3.1关于建立时间和保持时间的约束

Tsetup <= Tclk + Tskew - Tcq(max) - Tcomb(max)

Thold <= Tcq + Tcomb - Tshew 

建议收藏:不能不刷的100道数字IC笔/面试题!_数字ic试题_Cheeky_man的博客-CSDN博客

 

 1.4 亚稳态

为什么触发器要满足建立时间和保持时间?

        因为触发器内部数据的形成是需要一定的时间,如果不满足建立和保持时间,触发器将进入亚稳态,进入亚稳态的触发器输出将不稳定,在0和 1 之间变化,这时需要经过一个恢复时间,其输出才能稳定,但稳定后的值并一定是你输入的值,这就是为啥要用两级触发器来同步异步输入信号,这样做是可以防止由于异步输入信号对于本级时钟可能不能满足建立和保持时间而使本级触发器产生亚稳态传播到后面的逻辑中,导致亚稳态的传播。

1.5 时钟域的分类和亚稳态解决办法

1.5.1 跨时钟域的问题-亚稳态

触发器的建立时间和保持时间在时钟上升沿左右定义了一个时间窗口,如果触发器的数据输入端口上数据在这个时间窗口内发生变化(或者数据更新),那么就会产生时序违规。存在这个时序违规是因为建立时间要求和保持时间要求被违反了,此时触发器内部的一个节点(或者要输出到外部的节点)可能会在一个电压范围内浮动,无法稳定在逻辑0或者逻辑1状态。

换句话说,如果数据在上述窗口中被采集,触发器中的晶体管不能可靠地设置为逻辑0或者逻辑1对应的电平上。所以此时的晶体管并未处于饱和区对应的高或者低电平,而是在稳定到一个确定电平之前,徘徊在一个中间电平状态(这个中间电平或许是一个正确值,也许不是)
如图所示,这就是所谓的亚稳态.

总结:亚稳态来源于建立时间和保持时间违例;单个时钟域中可以通过对关键路径的分析来避免亚稳态,但是多时钟域中,亚稳态不可避免!不过可以减少亚稳态的发生和传播,消除亚稳态的有害影响。

1.5.2、亚稳态的量化公式


采用平均故障间隔时间(MTBF:mean-time-between-failure)这个指标来估算从问题出现并导致故障的两个事件间的平均时间。MTBF越高,说明设计的稳定性越好。如果发生了故障,只是说明没有解决亚稳态的问题,并不是系统本身真的出现了问题。

其中,C1和C2代表器件的相关的常数,器件的建立时间和保持时间越小,C2越小,MTBF就越大。所以可以通过更快的触发器,来减少亚稳态发生的概率。是时钟频率,是异步信号边沿频率。

此外,数据变化频率越低,采样时钟频率越低,MTBF越高

1.5.3、解决亚稳态的方法


亚稳态是不可避免的,是器件的固有属性。可以减少亚稳态的发生和传播,避免亚稳态带来的消极影响。

减少亚稳态的方法,通过对MTBF的分析,提出以下几种方法:
(1)使用同步器(多级寄存器):比如常用的2级或者多级FF打拍的方法(最常见的方法)
(2)降低频率:如果能满足功能要求,降低频率能够减少亚稳态的发生。(在高性能要求下并不实用)
(3)避免变化过快或者过于频繁的信号进行跨时钟采样。(在高性能要求下并不实用)
(4)采用更快的触发器:更快的触发器,也可以减少亚稳态的产生
 

总结如下:
      1、有关系的时钟之间传单bit数据,理论上只需要源数据保持足够长的时间(clk2的两个周期)即可;

      2、无关系的时钟之间传单bit数据,必须要使用同步器;

       3、不管有无关系的时钟进行单bit传输,脉冲同步器都可以解决这个问题;

       4、多bit传输只能使用握手机制或者异步fifo;

       5、低频采高频,为防止数据不丢失,应当让源数据变慢,多保持一些周期;高频采低频则不需要,但是高频采低频得到的结果可能带有很多冗余。
 

1.5.4 多级寄存器处理


在全同步设计中,如果信号来自同一时钟域(同步时钟域),各模块的输入不需要使用寄存器来寄存。只要满足建立时间和保持时间的约束,可以保证在时钟上升沿到来时,输入信号已经稳定,可以采样得到正确的值。
一般而言单bit信号就是我们所用到的脉冲信号或者电平信号。假设A和B是两个时钟域,各自的频率是clk_a和clk_b,clk_a的频率高于clk_b,那么单bit信号传输又分为两种情况。


1、信号从慢时钟域B到快时钟域A

在时钟域B下的脉冲信号pulse_b在时钟域A看来,是一个很宽的“电平”信号,保持多个clk_a的时钟周期,所以一定能被clk_a采到。

经验设计采集过程必须寄存两拍。

第一拍将输入信号同步化,同步化后的输出可能带来建立/保持时间的冲突,产生亚稳态。
需要再寄存一拍,减少亚稳态带来的影响。
一般来说两级是最基本要求,如果是高频率设计,则需要增加寄存级数来大幅降低系统的不稳定性。
也就是说采用多级触发器来采样来自异步时钟域的信号,级数越多,同步过来的信号越稳定。
特别需要强调的是,此时pulse_b必须是clk_b下的寄存器信号,如果pulse_b是clk_b下的组合逻辑信号,一定要先在clk_b先用D触发器(DFF)抓一拍,再使用两级DFF向clk_a传递。

这是因为clk_b下的组合逻辑信号会有毛刺,在clk_b下使用时会由setup/hold时间保证毛刺不会被clk_b采到,但由于异步相位不确定,组合逻辑的毛刺却极有可能被clk_a采到。
一般代码形式:

always @ (posedge clk_a or negedge rst_n)
    begin
        if (rst_n == 1'b0) 
            begin
               pules_a_r1 <= 1'b0;
               pules_a_r2 <= 1'b0;
            end
        else 
            begin                                    //打2拍
               pules_a_r1 <= pulse_b;
               pules_a_r2 <= pules_a_r1;
            end
    end
assign pulse_a = pules_a_r2;
2、 信号从快时钟域A到慢时钟域B(低频采高频:脉冲同步器)

如果单bit信号从时钟域A到时钟域B,那么存在两种不同的情况:

传输脉冲信号pulse_a传输电平信号level_a

如果是电平信号,需要保证level_a的宽度足够,至少维持一个clk_b的周期才能保证快的A域信号可以在慢的B域的时钟上升沿采集到;那么对于脉冲信号,宽度又没有那么够,又如何能保证它被采集到呢?

主要原理就是先把脉冲信号在clk_a下展宽,变成电平信号signal_a,再向clk_b传递,当确认clk_b已经“看见”信号同步过去之后,再清掉signal_a

module Sync_Pulse(
    clk_a,//从时钟域A
    clk_b,//到时钟域B
    rst_n,//复位
    pulse_a_in,//脉冲信号输入
    
    pulse_b_out,//慢域B的采集到的脉冲信号
    b_out//慢域B的输出
);


    input clk_a;
    input clk_b;
    input rst_n;
    input pulse_a_in;

    output pulse_b_out;
    output b_out;
    reg signal_a;//脉冲信号变成电平信号
    reg signal_b;//在B域对电平信号signal_a采样
    reg signal_b_r1;//在B域对signal_b打一拍的信号
    reg signal_b_r2;//在B域对signal_b打2拍的信号
    reg signal_b_a1;//在A域对signal_b_r1打1拍的信号
    reg signal_b_a2;//在A域对signal_b_r1打2拍的信号

    //在时钟域clk_a下,生成展宽信号signal_a
    always @(posedge clk_a or negedge rst_n)
        begin
            if (rst_n == 1'b0)
                signal_a <= 1'b0;
            else if (pulse_a_in)    //检测到到输入信号pulse_a_in被拉高,则拉高signal_a
                signal_a <= 1'b1;
            else if (signal_b_a2)    //检测到signal_b1_a2被拉高,则拉低signal_a
                signal_a <= 1'b0;
            else;
        end

    //在时钟域clk_b下,采集signal_a,生成signal_b
    always @(posedge clk_b or negedge rst_n)
        begin
            if (rst_n == 1'b0)
                signal_b <= 1'b0;
            else
                signal_b <= signal_a;
        end
    //多级触发器处理
    always @ (posedge clk_b or negedge rst_n)
        begin
            if(rst_n == 1'b0)
                begin
                    signal_b_r1 <= 1'b0;
                    signal_b_r2 <= 1'b0;
                end
            else
                begin
                    signal_b_r1 <= signal_b;    //对signal_b打两拍
                    signal_b_r2 <= signal_b_r1;
                end
        end
    //在时钟域clk_a下,采集signal_b_r1,用于反馈来拉低展宽信号signal_a
    always @ (posedge clk_a or negedge rst_n)
        begin
            if(rst_n == 1'b0)
                begin
                    signal_b_a1 <= 1'b0;
                    signal_b_a2 <= 1'b0;
            end
                else
                    begin
                        signal_b_a1 <= signal_b_r1;    //对signal_b_r1打两拍,因为同样涉及到跨时钟域    
                        signal_b_a2 <= signal_b_a1;
                    end
        end

    assign pulse_b_out = signal_b_r1 & (~signal_b_r2);//脉冲信号
    assign b_out = signal_b_r1;//在B域对signal_b打一拍的信号

endmodule

上述是对脉冲信号的采样,过程会比较复杂:

①在快域A中生成宽电平信号signal_a;

②再在慢域B中对signal_a进行采样和打两拍;

③根据打拍信号,采用pulse_b_out = signal_b_r1 & (~signal_b_r2);这样的赋值方式,得到脉冲信号(脉宽被拓展了)

而电平信号持续时间比较长(默认比慢域的一个周期还长),可以保证慢域能够采集到,那正常寄存两拍就行了。

小结:

对于电平信号(持续时间较长),快域采慢域或慢域采快域,使用电平同步器就够了——即在目的时钟打两拍;

对于脉冲信号(脉宽等于源时钟周期),使用脉冲同步器可以很好地解决两个域互传数据的问题。

1.5.5握手信号方法

使用握手信号是最古老的在不同域之间转输数据的方式。

1、握手信号工作过程

下图是由两个时钟域分割成的两个单独的系统。

使用握手信号"xreq"和"yack","系统X"将数据发送给"系统Y"。

下面是使用握手信号传输数据的例子:

1)发送器"系统 X"将数据放到数据总线上并发出"xreq"(请求)信号,表示有效数据已经发到接收器"系统 Y"的数据总线上。
2)把"xreq"信号同步到接收器的时钟域"yclk" 上。
3)接收器在识别"xreq"同步的信号"yreq2"后,锁存数据总线上的信号。
4)接收器发出确认信号"yack",表示其已经接受了数据。
5)接收器发出的"yack"信号同步到发送时钟"xclk"上。
6)发送器在识别同步的"xack2"信号后,将下一个数据放到数据总线上。
 

握手信号序列的时序如下图所示。

从上图可以看出,安全地将一个数据从发送器传输到接收器需要5个时钟周期(X:发送req,1个;Y:接受并同步req,2个、再发送ack,1个;X:接受ack,1个。共5个)。

2、握手信号的要求


数据应该在发送时钟域内稳定至少两个时钟上升沿。

请求信号"xreq"的宽度应该超过两个上升沿时钟,否则从高速时钟域向低速时钟域传递可能无法捕捉到该信号。

3、握手信号的缺点


跨时钟域传输单个数据的延迟比使用 FIFO传输相同的数据要大得多。
 

1.5.6 异步FIFO

参考资料

数字IC设计知识点及综合题详解(提前批、秋招必刷基础题)——(四)亚稳态、跨时钟域(CDC)处理方法及其编程仿真代码_下图为单bit信号跨时钟域电路,其中clk_a与clk_b为异步时钟。clk_a频率为100mhz、_Cheeky_man的博客-CSDN博客

数字IC笔试面试常考问题及答案_数字ic设计面试题_Cheeky_man的博客-CSDN博客

数字IC面试题知识汇总:1-20 - 知乎

1.6 时序分析

1.6.1  静态时序分析

静态时序分析(static timing analysis,STA)是遍历电路存在的所有时序路径,根据给定工作条件(PVT)下的时序库.ib文件计算信号在这些路径上的传播延时,检查信号的建立和保持时间是否满足约束要求,根据最大路径延时和最小路径延时找出违背时序约束的错误。
 

静态时序分析的优点:
        不需要给输入激励;
        几乎能找到所有的关键路径(critical path);
        运行速度快,占用内存较少,不仅可以对芯片设计进行全面的时序功能检查,而且还可利用时序分析的结果来优化设计。因此静态时序分析已经越来越多地被用到数字集成电路设计的验证中;
静态时序分析的缺点: 
        只适用同步电路;
        无法验证电路的功能;
        需要比较贵的工具支持;
        对于新工艺可能还需要建立一套特征库,建库的代价可能要几百万。
静态时序分析的工具:
        Synopsys的prime time,
        Cadence的Encounter Timing System等

数字 IC 笔试面试必考点(12)静态时序分析 STA_准静态寄存器 false path_新芯设计的博客-CSDN博客

1.6.2 动态时序分析


动态时序分析(dynamic timing analysis,DTA)通常是所有的输入信号都会给一个不同时刻的激励,在testbench(.sp或者.v)中设置一段仿真时间,最后对仿真结果进行时序和功能分析。 这里的仿真可以是门级或者晶体管级,包括spice格式和RTL格式的网表。(可以理解为仿真)

如下图所示的spice中给激励的语句和波形:

动态时序分析的优点
晶体管级的仿真比较精确,直接基于工厂提供的spice 工艺库计算得到;
适用于任何电路,包括同步、异步、latch等等;
不需要额外搞一套特征库;
不需要很贵的时序分析工具。
动态时序分析的缺点:
需要给不同的测试激励,这使得在分析的过程中关键路径无法检查全 (致命性的);随着规模增大,所需要的向量数量以指数增长,且这种方法难以保证足够的覆盖率。
规模大的电路spice仿真特别慢 (致命性的)。
动态时序的工具 :
spice仿真器: hspice, finesim, hsim, spectre等;
verilog仿真器: ModelSim,VCS,NC-Verilog,Verilog-XL等。
从上面的分析可以看出,静态时序的主要缺点是烧钱,需要很贵的工具。这一点国内的公司也容易解决,要么融资很多不差钱,要么用盗版。

而动态时序分析有2个致命性的缺点:关键路径无法检查全意味着里面可能有fail的path,芯片流片出来无法工作;仿真特别慢意味着你的schedule可能受到影响,无法按时交货。所以动态时序分析只适用于小规模的电路,通过给激励就能完成时序的检查,同时仿真的时间还能接受。


参考资料

数字IC面试题知识汇总:1-20 - 知乎

建议收藏:不能不刷的100道数字IC笔/面试题!_数字ic试题_Cheeky_man的博客-CSDN博客

1.7 Soc动态功耗和静态功耗。

动态功耗是设备运行时或者说信号改变时所消耗的功耗;

静态功耗是设备上电但是信号没有改变时所消耗的功耗;

这里要注意的是:在设备运行时,也需要消耗静态功耗的,因为设备运行时也是上电状态。功耗分类把静态功耗单独拿出来,只是为了理论分析方便,详细参考如下

芯片设计进阶之路——低功耗深入理解(一) - 知乎

1.7.1  SoC低功耗电路设计方法


针对功耗来源,提出了低功耗设计常用方法。

降低电源电压;
减小负载电容;

减少MOS管数量;

减小连线电容
减少电荷分享的影响(对动态电路)节点开关活动因子的影响;
从算法和体系结构角度优化;

选择具有低功耗功能器件;

时钟门控;

提高工艺:
        使用新型低功耗器件和材料,减少晶体管尺寸,如从28nm到16nm等。

时钟门控:
频繁的信号翻转会造成很大的短路电流,以及对负载电容进行频繁的充放电,即增大所谓的内部功耗(Internal Power)和切换功耗
(Switch Power) 。
多电压域技术:
        芯片的动态功耗正比于电压值的平方,静态功耗正比于电压值,因此芯片的电压域管理策略对芯片的功耗影响很大。
        多电压域技术是按照芯片功能和应用需要,将不同的逻辑模块放置在不同的电压域中,这些电压域由电源管理模块分别独立供电,使得不同的逻辑模块可以在不同的电压下工作。
        例如,某一段时间内,某些性能要求不高的模块可位于低电压域中,而性能要求较高模块的供电电压相应较高,且多电压域技术也是动态电压频率缩放(Dynamic Voltage and Frequency Scaling , DVFS)、静态电压缩放(Static Voltage Scaling, SVS)、自适应电压缩放(Adaptive Voltage Scaling,AVS)设计的基础。

电源门控技术:
        随着工艺技术的发展,由漏电流所产生的功耗所占的总功耗比例越来越大。对于诸如手机的手持移动设备中的SoC芯片,休眠模式下漏电流功耗的大小是设计者在设计时必须考虑的设计因素。
        对于希望在休眠模式下尽量节省功耗的设计来说,最好的办法是,将处于休眠模式状态的模块的供电电源关断而保持其它模块的正常供电,这种技术叫电源门控技术。
        电源门控技术与时钟门控技术相比,时钟门控降低的仅仅是电路的动态功耗,而电源门控不仅降低动态功耗,而且降低静态功耗。。时钟门控技术不影响设计电路的功能,也无须修改RTL (Register TransferLevel)代码,它在设计和实现上可以是对设计者透明的,而电源门控技术影响各模块之间的相互连接,安全进入和退出电源门控模式会增加很多额外的操作。
 电源门控—股有两种方法来实现:
        外部电源门控(external power gating)。实现电源门控最基本的方法,适于消耗漏电功耗较少但关断时间较长的设计。举个例子,一个SoC系统在板极上有CPU的专用电源,这个电源只提供电压给CPU。外部电源门控技术就是,可以关闭这个电源以使CPU在非活动状态时漏电功耗减小到零。但这种做法也需要最长的时间对电源门控的模块进行供电和数据的重新加载。
        内部电源门控(on-chip power gating)。内部电源门控是指在芯片内部用一些专门的逻辑单元如电源门控单元来控制所选模块的
供电情况。

外部电源门控技术与内部电源门控技术均能实现将电压域中电压关断从而最大限度地减小漏电功耗的目的,但在物理实现过程中,内部电源门控技术要复杂得多。

器件低功耗
        SOC系统中各个器件选型时,选择具备低功耗功能器件,但器件无业务工作需求时,可以进入低功耗状态。
RTL级优化
        不同的RTL(RegisterTransferLevel,寄存器传输级)代码,也会产生不同的功耗,而且RTL代码的影响比软件代码产生的影响可能还要大。因为,RTL代码最终会实现为电路。电路的风格和结构会对功耗产生相当重要的影响。
RTL级代码优化主要包括:
        ①对于CPU来说,有效的标准功耗管理有睡眠模式和部分未工作模块掉电。
        ②硬件结构的优化包括能降低工作电压Vdd的并行处理、流水线处理以及二者的混合处理。          ③降低寄存电容C的片内存储器memory模块划分。
        ④降低活动因子a的信号门控、减少glitch(毛刺)的传播长度、Glich活动最小化、FSM(有限状态机)状态译码的优化等。

         ⑤由硬件实现的算法级的功耗优化有:流水线和并行处理、Retiming(时序重定)、Unfolding (程序或算法的展开)、Folding(程序或算法的折叠)等等基本方法以及其组合。

后端综合与布线优化
功耗的精确计算
自适应阈值电压调节技术

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

数字IC设计笔试面试经典题(1-10) 的相关文章

  • 在vivado中使用tcl脚本(UG894)

    本文源自UG894 主要介绍如何在vivado中使用tcl脚本 1 vivado中如何获取tcl help vivado中任何自带的命令都可以通过 help 获取帮助信息 也可以直接输入 help 取得vivado命令合集 并通过 help
  • 8x8LED点阵

    点量这个只需要把9高电平 13低电平就可以了 共阳极点阵 行线是led的正极 列线是led的列线 左上角点亮 显示多个灯是动态扫描的 一个一个显示的 然后间隔速度要快就可以造成显示 点阵由两篇74Hc595级联在一起驱动的 只需要三个io口
  • modelsim 关联 notepad++

    modelsim 控制窗口敲入 1 proc external editor filename linenumber exec I notepad notepad exe filename 2 set PrefSource altEdito
  • Verilog中forever、repeat、while、for四类循环语句(含Verilog实例)

    当搭建FPGA逻辑时 使用循环语句可以使语句更加简洁易懂 Verilog中存在四类循环语句 如标题 几种循环语句的具体介绍和用法如下 1 forever 连续的执行语句 语法格式 forever
  • 紫光同创 FPGA 开发跳坑指南(三)—— 联合 Modelsim 仿真

    Modelsim 是 FPGA 开发中重要的 EDA 设计仿真工具 主要用于验证数字电路设计是否正确 紫光 Pango Design Suite 开发套件支持联合 Modelsim 仿真 这里作简要的介绍 添加仿真库 方法一 打开 Pang
  • DEBUG:Generate Bitstream失败

    问题 约束失败 解决 确保IO初始化引脚正确 和选择合适的电平
  • 跨时钟域处理方法(一)——打拍

    一 说明 处理跨时钟域的数据可以分为单bit数据和多bit数据 而打拍的方法主要常见于处理单bit数据的跨时钟域问题 打拍的本质是通过添加寄存器 对输入的数据进行延拍 其主要目标是消除亚稳态的影响 常见的是打2拍 也就是添加2级寄存器 二
  • FPGA project : water_led

    module water led parameter MAX CNT 25 d25 000 000 input wire sys clk input wire sys rst n output wire 03 00 led signal r
  • 【Xilinx DDR3 MIG】Xilinx FPGA DDR3读写实验相关用户接口引脚解释

    目录 DDR3读写实验 实验框图 时钟模块 DDR3读写及LED指示模块 MIG IP核 用户接口解释
  • FPGA提示产生latch的报错

    在fpga的设计中有时会遇到 latch 的报错 1 latch是什么 Latch 就是锁存器 是一种在异步电路系统中 对输入信号电平敏感的单元 用来存储信息 锁存器在数据锁存使能时 数据被锁存 输入信号不起作用 这违背了组合逻辑中输出随输
  • IC数字后端

    在 innovus 里面 有时候我们需要控制 tie cell 的 fanout 和 net length 来避免 tie cell 可能出现 max transition 或者 max fanout 的违例 一般来说 只要 fanout
  • 【FPGA】面试问题及答案整理合集

    面试问题及答案整理合集 1 硬件描述语言和软件编程语言的区别 2 FPGA选型问题 3 建立时间和保持时间问题 3 亚稳态问题 4 竞争和冒险问题 5 乒乓操作问题 6 同步和异步逻辑电路 7 同步复位和异步复位 8 MOORE 与 MEE
  • 【Xilinx Vivado时序分析/约束系列4】FPGA开发时序分析/约束-实验工程上手实操

    目录 建立工程 添加顶层 模块1 模块2 添加约束文件 编辑时钟约束 打开布线设计 代码代表的含义 时序报告 进行时序分析 Summary 包含了汇总的信息量 Source Clock Path 这部分是表示Tclk1的延时细节 Data
  • BUCK电路分析(二)

    BUCK电路分析 二 PSIM仿真同步BUCK电路 在上片文章中 初步的分析了BUCK电路的工作原理 本章使用PSIM软件仿真BUCK电路 观察分析BUCK电路器件关键波形 图1是同步BUCK电路图 开关频率设置为200K 固定占空比 在仿
  • 【数字IC】从零开始的Verilog SPI设计

    从零开始的Verilog SPI协议设计 一 写在前面 1 1 协议标准 1 2 数字IC组件代码 1 3 设计要求 1 4 其他协议解读 1 4 1 UART协议 1 4 2 SPI协议 1 4 3 I2C协议 1 4 4 AXI协议 二
  • [从零开始学习FPGA编程-28]:进阶篇 - 基本组合电路-奇偶校验生成器(Verilog语言版本)

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 第1章 奇偶校验生成器 1 1 什么是奇校验 1 2 Verilog语言描述
  • 基于FPGA的AHT10传感器温湿度读取

    文章目录 一 系统框架 二 i2c接口 三 i2c控制模块 状态机设计 状态转移图 START INIT CHECK INIT IDLE TRIGGER WAIT READ 代码 四 数据处理模块 串口 代码 五 仿真 testbench设
  • 【FPGA】通俗理解从VGA显示到HDMI显示

    注 大部分参考内容来自 征途Pro FPGA Verilog开发实战指南 基于Altera EP4CE10 2021 7 10 上 贴个下载地址 野火FPGA Altera EP4CE10征途开发板 核心板 野火产品资料下载中心 文档 hd
  • [从零开始学习FPGA编程-24]:进阶篇 - 基本组合电路-编码器与译码器(Verilog语言)

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 125247358 目录 前言 Veri
  • 无线网络管理系统与无线路由器的区别

    第5章 波形发生器软件设计 本章我们将介绍系统的软件设计 系统中控制软件占有很重要的地位 它不仅要产生波形数据 控制波形的发生 还要控制显示电路和键盘电路 因此系统软件的好坏直接决定着系统的功能和稳定 5 1软件的总体结构 在本系统中 由于

随机推荐

  • Type-C协议简介(CC检测原理)

    Type C协议简介 CC检测原理 作者 AirCity 2019 12 15 Aircity007 sina com 本文所有权归作者Aircity所有 1 简介 越来越多的手机开始采用Type C作为充电和通信端口 Type C连接器实
  • mesa源码阅读笔记(7)_顶点变换流程解析

    mesa源码阅读笔记 7 顶点变换流程解析 好久没有写博客 同时也放下对mesa源码的阅读很久了 这一篇会是我最后的一篇 有不尽到之处也会放下了 毕竟OpenGL不是我的强项 后面可能没有这么多时间来关注了 这篇文章有点长 而我也不知道自己
  • 毕设-解决移动端用HTTP协议从onenet平台上获取数据流的多个数据点的问题

    onenet平台 OneNET是由中国移动打造的PaaS物联网开放平台 平台能够帮助开发者轻松实现设备接入与设备连接 快速完成产品开发部署 为智能硬件 智能家居产品提供完善的物联网解决方案 产品信息 至于怎么创建产品我就不做过多的介绍了 我
  • 最大公约数和最小公倍数(详解有实例)C语言

    最大公约数这里我运用了辗转相除法来实现 辗转相除法的意思是给出所要求的两个数之后 用大数取余小数 如果为0 那么那个小数就是最大公约数 如果不为1 我再用较大的数取余上个余数 依次循环 最后得到结果 给大家举个例子吧 12和16 首先用16
  • 云原生之使用minikube快速部署本地k8s集群

    云原生之使用minikube快速部署本地k8s集群 一 minikube 介绍 1 minikube简介 2 minikube特点 3 minikube的基本架构 二 本次实践介绍 1 本次实践目的 2 部署环境要求 3 本地环境规划 三
  • 视频流截取保存到本地路径(打包jar包CMD运行)

    需求 现在有一批https的监控视频流URL 需要以多线程模式监听视频流 对视频流进行每三秒截屏一次 将截取的图片post请求发送 根据响应判断图片是否保存到本地 保存时以当前时间命名 代码 BufferedImage类 import or
  • 匿名内部类在开发中的真实使用场景演示

    package Java project 1 import javax swing import java awt event ActionEvent import java awt event ActionListener public
  • linux开启使用ftp

    一 检查系统是否安装vsftpd rpm qa grep vsftpd 这里是安装好了 才会出现版本信息 没有安装不会出现 如果想删除卸载vsftpd使用 rpm qa grep vsftpd 查询出来版本好 通过 rpm e vsftpd
  • libuv使用总结

    libuv是单线程的 依靠uv run轮训当前线程关心的事件IO 所以这些函数的回调里尽量不要有阻塞的函数 否则回调之间相互影响 导致另外的回调走不到 libuv如果使用不当 会造成coredump 多线程用多线程的接口 单线程用单线程的接
  • jemalloc原理分析

    jemalloc原理分析 转载自http club alibabatech org article detail htm articleId 36 首先介绍一下jemalloc中的几个核心概念 1 arena jemalloc的核心分配管理
  • Android中应用程序清除data/data,清除缓存,兼容8.0系统

    前言 最近实现了一款系统级应用中心 需要获取已安装APP的缓存大小以及清除缓存 获取缓存的在另外一篇博客总结过 获取APP缓存大小 因此这篇文章记录一下如何清除缓存 一 安卓8 0之前 1 首先需要自己创建几个AIDL文件 方法在前言连接里
  • 多线程之实现Callable接口

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 调用方法 点击量 月 年 Callable public void yearlyClickCallable 获取参数 String year getPara year 统计
  • 3-13反思总结

    1 innerHTML 修改 HTML 内容的最简单的方法是使用 innerHTML 属性 这句话的说法是错误的 innerHTML属性用于获取或替换 HTML 元素的内容 不能用来修改内容 2 null与undifined 1 null
  • k8s,30分钟部署一个kubernetes集群【1.17】

    作者 李振良 官方网站 http www ctnrs com kubeadm是官方社区推出的一个用于快速部署kubernetes集群的工具 这个工具能通过两条指令完成一个kubernetes集群的部署 创建一个 Master 节点 kube
  • Java如何读取文件文本内容的几种方式汇总

    本文为joshua317原创文章 转载请注明 转载自joshua317博客 Java如何读取文件文本内容的几种方式汇总 joshua317的博客 package com joshua317 import java io import jav
  • Python爬虫学习笔记(三)————urllib

    目录 1 使用urllib来获取百度首页的源码 2 下载网页图片视频 3 总结 1 4 请求对象的定制 解决第一种反爬 5 编解码 1 get请求方式 urllib parse quote 2 get请求方式 urllib parse ur
  • java复制文件的4种方式及拷贝文件到另一个目录下的实例代码

    这篇文章主要介绍了java复制文件的4种方式 通过实例带给大家介绍了java 拷贝文件到另一个目录下的方法 需要的朋友可以参考下 尽管Java提供了一个可以处理文件的IO操作类 但是没有一个复制文件的方法 复制文件是一个重要的操作 当你的程
  • 在计算机中安装深度操作系统

    深度操作系统是一个国产的Linux发行版 界面美观 系统友好 中文支持完善 易上手 对于Linux新手来说 是一个不错的操作系统 这里将我安装深度操作系统的过程复述一下 在这里 我用的是UEFI GPT的方式来安装的 安装准备 一张容量足够
  • js弹出弹窗,并从弹窗中取值,返回父页面

    弹出弹框 url pageContext request contextPath facegl eyecool eyecool jsp pqdwbmid pqdwbmid rytype rytype open win window open
  • 数字IC设计笔试面试经典题(1-10)

    1 基础知识 1 1 锁存器的结构 锁存器即Latch 数电中称之为电平触发的D触发器 也是D型锁存器 有电平触发器SR触发器改进得到 其工作特点是电平是有效电平 高电平或者低电平 期间 才接受信号并输出 否则保持不变 1 2 DFF的结构