FPGA&IC的面试题

每天学习一点,每天更新!都是网上收集的各类大佬整理的问题!所以会雷同,有问题联系我可以删除!

1.什么是同步逻辑和异步逻辑:

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

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

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

 2.同步电路和异步电路的区别:

同步电路:存储中的所有触发器的时钟输入端都接同一个时钟脉冲源,因而所有的触发器的状态的变化都与所加的时钟脉冲信号同步。

异步电路:电路中没有统一的时钟,有些触发器的时钟输入端与时钟脉冲源相连,只有这些触发器的状态变化与时钟脉冲同步,而其他的触发器的状态变化不与时钟脉冲同步。

3.时序设计的实质:

时序设计的实质就是满足每一个触发器的建立/保持时间的要求。

4.建立时间与保持时间的概念:

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

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

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

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

6.建立可综合模型的原则

    要保证Verilog HDL赋值语句的可综合性,在建模时应注意以下要点:

    (1)不使用初始化语句。

    (2)不使用带有延时的描述。

    (3)不使用循环次数不确定的循环语句,如forever、while等。

    (4)不使用用户自定义原语(UDP元件)。

    (5)尽量使用同步方式设计电路。

    (6)除非是关键路径的设计,一般不采用调用门级元件来描述设计的方法,建议采用行为语句来完成设计。

    (7)用always过程块描述组合逻辑,应在敏感信号列表中列出所有的输入信号。

    (8)所有的内部寄存器都应该能够被复位,在使用FPGA实现设计时,应尽量使用器件的全局复位端作为系统总的复位。

    (9)对时序逻辑描述和建模,应尽量使用非阻塞赋值方式。对组合逻辑描述和建模,既可以用阻塞赋值,也可以用非阻塞赋值。但在同一个过程块中,最好不要同时用阻塞赋值和非阻塞赋值。

    (10)不能在一个以上的always过程块中对同一个变量赋值。而对同一个赋值对象不能既使用阻塞式赋值,又使用非阻塞式赋值。

    (11)如果不打算把变量推导成锁存器,那么必须在if语句或case语句的所有条件分支中都对变量明确地赋值。

    (12)避免混合使用上升沿和下降沿触发的触发器。

    (13)同一个变量的赋值不能受多个时钟控制,也不能受两种不同的时钟条件(或者不同的时钟沿)控制。

    (14)避免在case语句的分支项中使用x值或z值。

7.运算符的优先级

8. 如果存在时序违例,它们有何影响?应该如何修复?

        时序违例可以分为两类:分别是建立(setup)时间违例和保持时间(hold)违例。

        建立时间违例是因为数据在时钟上升沿到来之前没有足够的时间来做好准备,导致采集的数据可能不准确。解决方法:1.改用速度更快的器件,降低触发器时钟边沿到数据输出端的响应时间,以增大留给建立时间的时间余量。2.缩短电路中的逻辑。拆分组合逻辑,插入寄存器,增加流水线。

        保持时间违例是因为在时钟上升沿到来之后,数据的保持时间不够。解决方法:1.增加组合逻辑的处理时间,一般就是在后端的时候插入buffer;2.减小时钟的延时。

9.时间抖动Jitter/时间偏移Skew

        时间抖动(jitter):由于晶振本身的稳定性,电源以及温度变化等原因造成了时钟频率上的变化,就是jitter,指的是时钟周期的变化,也就是时钟周期在不同的周期上可能变长或者变短,这个误差是在时钟发生器内部产生的,与晶振或PLL内部电路有关,布线对其没有影响。由于跟晶振本身的工艺有关,所以在设计中无法避免它带来的影响,通常只能在设计中留有一定的余量。

        时间偏移(skew):指同样的时钟产生的多个子时钟信号之间的延时差异。skew指时钟相位上的不定性。由于时钟源到达不同寄存器所经历路径的驱动和负载的不同,时钟边沿的位置也有所差异,因此就导致了skew。完成布局布线后,物理路延时是固定的,所以在设计中考虑到时钟偏移,就可以避免偏移带来的影响。

10.毛刺/竞争与冒险

        由于信号在FPGA的内部走线和通过逻辑单元时造成的延迟,再多路信号变化的瞬间,组合逻辑的输出常常产生一些小的尖峰,即毛刺信号,这是由于FPGA内部结构特性决定的。毛刺现象在FPGA的设计中是不可避免的,任何一点毛刺就可能导致系统出错,尤其是对尖峰脉冲或脉冲边沿敏感的电路更是如此。

解决方法有:

1.冗余法

        冗余法消除毛刺有两种方法分别为代数法和卡诺图法,两者都是通过增加冗余项来消除险象,只是前者针对于函数表达式,后者针对于真值表。

2.采样法

3.吸收法

        在输出端接上小电容。但输出波形的前后沿将变坏,在对波形要求严格时,应再加整形电路,该方法不宜在中间级使用。

4.延迟法

        因为毛刺最终是由于延迟造成的,所以可以找出产生延迟的支路。对于相对延迟小的支路,加上毛刺宽度的延迟可以消除毛刺。

11.亚稳态

        指触发器无法在某个规定时间内达到一个可确认的状态。

        解决方法有:降低系统时钟频率、引入同步机制。

12.线与逻辑

        两根线直接相连实现线与功能。在硬件上需要OC门。

13.时序逻辑与组合逻辑的区别

1.输入输出关系

        组合逻辑电路是任意时刻的输出仅仅取决于当前时刻的输入,与电路原来的状态无关。

        时序逻辑电路的输出不仅仅取决于当前时刻的输入,还取决于电路原来的状态,也就是之前的输入有关。

2.有无存储记忆

       组合逻辑没有存储记忆,而时序逻辑包含了存储记忆。

14.简述三段状态机

        第一段:时序逻辑描述状态寄存器;

        第二段:组合逻辑判断状态转移的条件;

        第三段:描述状态输出(即可时序逻辑也可组合也逻辑)。

        Moore型(摩尔):输出只与当前状态有关,与输入信号的当前值无关。

        Mealy型(米利):输出是现态和所有输入的函数,随输入变化而随时发生变化。从时序上看,Mealy状态机属于异步输出状态机,不依赖于时钟。

15.简述uart

        uart:通用异步接收/发送协议。发送端的uart将并行数据转换成串行数据并按串行的方式传送到接收端。整个过程只需要Tx和Rx两条线。

        传输过程中需要空闲位(高电平)、起始位(由高变低)、数据位、奇偶校验位、停止位(由低变高)。

        波特率指的是串口数据的传输速度,bit/s。

16.简述I2C

        两线式串行总线。SDA串行数据线,SCL串行时钟线。

        空闲状态:SDA和SCL都为高电平;

        起始状态:SCL为高电平,SDA由高变低;

        读写状态:SCL为低电平,SDA传输;SCL为高电平,则SDA保持不变。

        停止状态:SCL为高电平,SDA由低变高。

17.施密特触发器的作用有哪些?

        施密特触发器是一种双稳态多谐振荡器。可以用作波形整形电路,能将模拟信号波形整形为数字电路能够处理的方波波形,而且由于施密特触发器具有滞回特性,所以可用于抗干扰,其应用包括在开路配置中用于抗扰,以及在闭回路正回授/负回授配置中用于实现多谐振荡器。

18.对采样定理作出解释?

        采样定理又称奈奎斯特采样定律:指若频带宽度有限,要从抽样信号中无失真地恢复原信号,抽样频率应该大于2倍信号最高频率。

        抽样频率小于2倍频谱最高频率时,信号的频谱有混叠;

        抽样频率大于2倍频谱最高频率时,信号的频谱无混叠。

 19.格雷码的实例。

        格雷码:相邻的数在转换时,只有一个数位发生改变。例如00-01-11-10。

        在异步fifo中,fifo地址是连续变化的,在这里地址数据格式采用格雷码。因为当格雷码传输失效时,只有一位同步出错,此时地址没有跳变。如果是写地址同步失效,用这个错误的写地址在读时钟域进行空判断时不会出错,最多让空标志在fifo不是真正空的时候产生,而不产生空读的情况。格雷码保证的是同步后的读写地址即使在出错的情况下依然能保证FIFO功能的正确性。

20.用PLL分频和D触发器分频产生的时钟有啥区别?

        PLL的分频在实际电路中时钟信号更加好;

        D触发器有不同的类型,用D触发器进行分频,产生的时钟质量不高,而且综合的时候D触发器的类型需要做一些选择

21.数字前端、后端的区别以及IC设计流程简介

        前端设计又称逻辑设计;后端设计又称物理设计,设计到一些与工艺有关的设计就是后端设计。

        数字前端主要以设计架构为起点,以生成可以布线布局的网表为终点,用设计的电路实现想法。主要包括基本的RTL编程和仿真。前端设计还可以包括IC系统设计、验证、综合、STA和逻辑等值验证。

        数字后端以布局布线为起点,以生成可以送交founday进行流片的GDS2文件为终点,是将设计的电路制造出来、在工艺上实现想法。后端设计简单的说就是P&R,比如芯片封装、管脚设计、floorplan、电源布线和功率验证、线间干扰的预防和修正,时序收敛、STA、DRC、LVS等,要求掌握和熟悉多种EDA工具以及IC生产厂家的具体要求。

        

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值