FPGA/IC面试常见问题汇总

参考:数字IC设计工程师笔试面试经典100题_OnePlusZero的博客-CSDN博客_数字ic设计面试题

目录

参考:数字IC设计工程师笔试面试经典100题_OnePlusZero的博客-CSDN博客_数字ic设计面试题

1、同步复位和异步复位的优缺点

2、什么是竞争和冒险,如何消除?

3、什么是同步电路,什么是异步电路?

4、什么是亚稳态,产生的原因,如何消除?

5、时序约束的概念和基本策略?

6、FPGA和CPLD的区别?

7、什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求?

8、FPGA芯片内有哪两种存储器资源?

1、同步复位和异步复位的优缺点

        在同步电路中,输入数据需要与时钟满足setup time和hold time才能进行数据的正常传输,防止亚稳态。同样的道理,对于一个异步复位寄存器来说,同样异步复位信号同样需要和时钟满足recovery time(恢复时间)和removal time (去除时间)才能有效进行复位操作和复位释放操作,防止输出亚稳态。

        同步复位优点:能确保电路是100%同步的;同步复位可以综合处更小的触发器;可以保证复位只发生在有效时钟边沿,过滤掉复位信号毛刺;内部逻辑产生的复位信号,采用同步复位可以有效过滤掉毛刺。

                      缺点:当复位信号宽度小于时钟周期时,可能需要一个脉冲展宽器,使得复位信号在时钟边沿能被正确采样;当复位信号有外部逻辑组合产生,那么复位信号可能容易受外部信号控制;在采用门控时钟的设计中,复位信号有效是时钟可能处于关闭状态,复位无效;

    always @ (posedge clk) begin
        if (!rst_n)
            xxxx;
    end

        异步复位优点:很多EDA工具带有异步复位的库文件,能保证数据路径上是干净的,减小延迟;复位信号独立于时钟,只要复位信号发起,电路立即复位;综合工具能很好的识别出复位信号;

                      缺点:对毛刺敏感;若复位刚好在时钟边沿撤销,很容易使寄存器的输出产生亚稳态。

always @ (posedge clk or negedge rst_n) 
    begin
        if (!rst_n)
            xxxx;
        else if (xx) 
            begin
                xxxx;
            end
    end

异步复位同步释放

        就是在复位信号到来的时候不受时钟信号的同步,而是在复位信号释放的时候受到时钟信号的同步。假设复位信号低电平有效rst_n,当复位信号无效时,也就是复位信号拉高时,即为复位信号的释放。由于异步复位信号与时钟无必然联系,两者都是独立的,所以复位信号的释放将有一定的概率导致电路出现亚稳态。

        所谓异步复位同步释放,就是在rst_n信号为低时,立刻进行复位,而rst_n信号由低到高释放时,为了防止亚稳态的出现,将rst_n信号用DFF向后延一周期,达到与时钟clk边沿同步的目的。

        电路目的:防止复位信号撤除时产生亚稳态事件。

        异步复位:显而易见,reset_n异步复位后,rst_n将拉低,即实现异步复位。

        同步释放:这个是关键,看如何实现同步释放,即当复位信号reset_n撤除时,由于双缓冲电路(双寄存器)的作用,rst_n复位信号不会随着reset_n的撤除而撤除。

解释上图:

  • 当异步复位(rst_i)无效,即为高电平时,同步后的复位信号 rst_o 也为高电平;
  • 当异步复位有效时,同步后的复位信号立刻为低电平( 0),即实现了“异步复位”;
  • 信号释放时,会在时钟上升沿来临时,才可以恢复为 高电平(1),实现“同步释放”;
//Synchronized Asynchronous Reset
//异步复位、同步释放:只适用于没有PLL的系统复位信号的设置
module asyn_reset(
	clk	    ,
	rst_n	,	
	rst_s2
);
 
input clk	;
input rst_n	;
 
output reg rst_s2;
 
reg rst_s1;
 
always @ (posedge clk or negedge rst_n) begin
	if (!rst_n) begin
		rst_s1 <= 1'b0;
		rst_s2 <= 1'b0;
	end
	else begin
	   rst_s1 <= 1'b1	;
	   rst_s2 <= rst_s1	;
	end
end
endmodule

2、什么是竞争和冒险,如何消除?

        信号由于经由不同路径传输达到某一汇合点的时间有先有后的现象,就称之为竞争,由于竞争现象所引起的电路输出发生瞬间错误的现象,就称之为冒险。设计中最简单的避免方法是尽量使用时序逻辑同步输入和输出。

       消除毛刺的方法:1、对信号进行采样(在合适的位置采样,将有毛刺的信号剔除)。2、使用边沿触发寄存器寄存信号,相当于将信号同步为同步信号(由于毛刺持续的时间比较短,所以一般很难满足边沿触发器的setup/hold时间)。3、用两级触发器的或运算来消除持续不到一个周期的毛刺信号。4、采用格雷码编码(只变化一个位信号)。5、增加卡诺图冗余项。

3、什么是同步电路,什么是异步电路?

        同步逻辑是时钟之间有固定的因果关系。异步逻辑是各时钟之间没有固定的因果关系。

        在电路中同一个时钟源的时钟分频出来的不同频率的时钟作用于两部分电路,这两部分电路也是同步的。反之,不同时钟源的电路就是异步电路。

        同步时序逻辑电路的特点:各触发器的时钟端全部连接在一起,并接在系统时钟端,只有当时钟脉冲到来时,电路的状态才能改变。改变后的状态将一直保持到下一个时钟脉冲的到来,此时无论外部输入x有无变化,状态表中的每个状态都是稳定的。

        异步时序逻辑电路的特点:电路中除可以使用带时钟的触发器外,还可以使用不带时钟的触发器和延迟元件作为存储元件,电路中没有统一的时钟,电路状态的改变由外部输入的变化直接引起。

4、什么是亚稳态,产生的原因,如何消除?

        亚稳态:是指触发器无法在规定时间内达到一定的状态,此时则会出现亚稳态现象。

        原因:由于触发器的Tsu和Th不满足,当触发器进入亚稳态,使得无法预测该单元的输出,这种不稳定是会沿信号通道的各个触发器级联传播。消除方法:两级或者多级寄存器同步。但是理论上不能完全消除,可以降低。

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

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

5、时序约束的概念和基本策略?

        时序约束主要包括周期约束,偏移约束,静态时序路径约束三种。通过附加时序约束可以综合布线工具调整映射和布局布线,使设计达到时序要求。

        附加时序约束的一般策略是先附加全局约束,然后对快速和慢速例外路径附加专门约束。附加全局约束时,首先定义设计的所有时钟,对各时钟域内的同步元件进行分组,对分组附加周期约束,然后对FPGA/CPLD输入输出PAD附加偏移约束、对全组合逻辑的PAD TO PAD路径附加约束。附加专门约束时,首先约束分组之间的路径,然后约束快、慢速例外路径和多周期路径,以及其他特殊路径。

6、FPGA和CPLD的区别?

7、什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求?

        线与逻辑是两个或多个输出信号相连可以实现与的功能。在硬件上,要用OC门来实现(漏极或者集电极开路),为了防止因灌电流过大而烧坏OC门,应在OC门输出端接一上拉电阻(线或则是下拉电阻)。
        漏极开路(OD),集电极开路(OC)

8、FPGA芯片内有哪两种存储器资源?

        FPGA芯片内有两种存储器资源:一种叫BLOCK RAM,另一种是由LUT配置成的内部存储器(也就是分布式RAM)。BLOCK RAM由一定数量固定大小的存储块构成的,使用BLOCK RAM资源不占用额外的逻辑资源,并且速度快。但是使用的时候消耗的BLOCK RAM资源是其块大小的整数倍。

猜你喜欢

转载自blog.csdn.net/qq_44933149/article/details/125721298