我是靠谱客的博主 清新小蘑菇,最近开发中收集的这篇文章主要介绍IC/FPGA校招笔试题分析(三),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

还有1天就要进行某瓦科技的面试了,今天晚上赶紧复习下上次它的笔试题:


1、一个四位十六个状态的格雷码计数器,起始值为1001,经过100个时钟脉冲作用之后的值为()。

首先,算出100个脉冲后跑了多少个16状态了,100除以16=6余4;

所以要知道1001后的第四个状态是谁?

4位格雷码表:

十进制数4位自然二进制码4位典型格雷码

0

0000

0000

1

0001

0001

2

0010

0011

3

0011

0010

4

0100

0110

5

0101

0111

6

0110

0101

7

0111

0100

8

1000

1100

9

1001

1101

10

1010

1111

11

1011

1110

12

1100

1010

13

1101

1011

14

1110

1001

15

1111

1000

可知,填写0011.


2、下面哪个不属于跨时钟域数据传递的基本方法():

A:使用多级触发器缓冲

对于从慢时钟域到快时钟域的控制信号传输中,需要使用二级触发器缓冲来消除亚稳态。

B:使用FIFO

FIFO是跨时钟域信号传输最常见的方法,无论是从快时钟域到慢时钟域还是从慢到快,FIFO可谓是通吃。

具体可参考:跨时钟域信号传输(二)——数据信号篇

C:使用握手协议

握手协议常用语慢时钟域到快时钟域的多比特数据的传输,对应于单比特数据从慢时钟域到快时钟域的传输,之所以使用握手协议是为了数据能够正确传输,它抛却了单比特信号从慢时钟域到快时钟域传输的多级触发器同步的方法,原因是同步出去的数据虽然减少了亚稳态的传播,但是保障不了数据的正确传输,采用握手信号可以很好的解决这个问题,但是缺点是传输的速度略慢。

原理见图:

此图参考:https://www.cnblogs.com/IClearner/p/6579754.html

同时参考博文: 使用握手协议的方式处理跨时钟域传输问题

二者同时服用,大概可以了解这个问题。

 

D: 信号通路上插入isolation

以上三种都是跨时钟域传输常用的办法,唯有这个不是。


3、下图是某电路的一条关键路径,其中路径各参数如下:

Tco = 1ns,Tsu = 2ns,Thold = 1ns,Tlogic_max = 4ns, Tlogic_min = 3ns, Jitter = 2ns。

要求算出最小时钟周期。

 

本题直接给出了关键路径,所以简单多了,算是一道选择题:

最小时钟周期,也就是最大时钟频率的倒数。

在算最小时钟周期之前,我们先分析这里的时钟偏斜以及时钟抖动对最小时钟周期的影响,是有害的还是有益的,从上述关键路径可以看出,这个时钟偏斜是正时钟偏斜,是有益于时序满足的,所以对于这个时钟偏斜的处理应该是拿原本的时钟周期减去它。

至于时钟抖动,那就不具有可测性,我们必须考虑进去,因此要认为是有害于时序的,我们要在原有的时钟周期内加上它。

Tmin = Tco + Tlogicmin + Tsu - Tskew + Jitter

= 1 + 3 + 2 -  1 +2

= 7ns

这个问题虽然就这样分析完了,但是也仅仅是针对这个题而已,对于类似的题目,我们要提取关键路径,也就是从一个触发器到另一个触发器之间时序最大的路径,它约束着系统的时钟频率。

从时钟的工作频率来看,数字系统可以分为两类,一类是时钟频率是固定的,另一类是时钟频率不是固定的。

对于时钟频率固定的数字系统,如果我们要求最大允许的门延迟,我们不得不把时钟偏斜考虑进去,且这里的时钟偏斜是不利于最大逻辑门延迟的,它导致不允许太大的逻辑门延迟,这个时钟偏斜属于负时钟偏斜,示意图如下:

这里就由于负时钟偏斜的存在而导致实际的时钟频率更低,所以允许的最大逻辑延迟(门延迟)更小。

关系式如下:

Tco + Tgate(max) + Tsetup = Tclk - Tskew;

对于时钟频率不固定的数字系统,我们设计要尽可能降低门延迟,最大限度的提高系统的时钟频率。


4、简单画出串口发送时序图?串口是否能够一次发送有效数据位由8变为1024?如果能,请说明为什么可以,如果不能,也请说明不能的原因?

当处于空闲状态时,数据线处于高电平,起始位为低电平,结束位为高电平,以传输0X55(01010101)为例,时序图如下:

需要注意的是传输是从低位开始的( 1-0-1-0-1-0-1-0.)。

目前串口一次发送有效位一般为8位数据,串口的数据传输速率分为4种:

  • 1200 bauds.
  • 9600 bauds.
  • 38400 bauds.
  • 115200 bauds (usually the fastest you can go).

以115200bauds为例,这意味着每秒传输115200bit数据,这就需要我们的串口时钟为115200Hz。而我们FPGA时钟通常不能精确的产生这种波特时钟,这就会导致传输每个bit位都会有误差存在。

对于其他波特率也是如此,有误差存在。

如果仅仅是传输8bit有效位,这还没什么关系,传输完8bit数据,就会进入idle状态,进入下一个8bit数据传输。

但是如果传输数据的有效位变成了1024bit,那就说不准了,每一位都有误差,位数越多误差越大,随着有效位数的增大,误差也积累到很大程度,而累积的误差会使(接收端)采样出错。


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

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

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

时序约束的作用

1、提高设计的工作频率(减少了逻辑和布线延时);对很多数字电路设计来说,提高工作频率非常重要,因为高工作频率意味着高处理能力。通过附加约束可以控制逻辑的综合、映射、布局和布线,以减小逻辑和布线延时,从而提高工作频率。

2、获得正确的时序分析报告;(静态时序分析工具以约束作为判断时序是否满足设计要求的标准,因此要求设计者正确输入约束,以便静态时序分析工具可以正确的输出时序报告)

引脚约束的作用:

FPGA/CPLD的可编程特性使电路板设计加工和FPGA/CPLD设计可以同时进行,而不必等FPGA/CPLD引脚位置完全确定,从而节省了系统开发时间。这样,电路板加工完成后,设计者要根据电路板的走线对FPGA/CPLD加上引脚位置约束,使FPGA/CPLD与电路板正确连接。另外通过约束还可以指定IO引脚所支持的接口标准和其他电气特性。


5、你在开发过程中用到的时序约束有哪些?针对其中一个简述其作用和约束的重要性。

周期约束,周期(PERIOD)约束附加在时钟网线上,时序分析工具根据PERIOD约束检查时钟域内所有同步元件(包括寄存器、锁存器、同步RAM/ROM等)的时序是否满足要求。

偏移约束包括 OFFSET_IN_BEFORE、OFFSET_IN_AFTER、OFFSET_OUT_BEFORE、OFFSET_OUT_AFTER 4中约束。偏移约束规定了外部时钟和数据输入输出引脚之间的时序关系,只用于与PAD相连的信号,不能用于内部信号。通过设置偏移约束,告诉综合工具输入信号到达的时间和输出信号需要保持稳定的时间,从而保证输入FPGA/CPLD的信号满足建立时间的要求,同时保证由FPGA/CPLD输出的信号满足下一级电路的时序要求。
说一下最基本的周期约束吧,周期约束作为时序分析工具的一个参考,让综合工具在布局布线的时候考虑到时钟的周期,选择合适的路径布局布线,同时在时序报告中也以此周期约束为基准,判断是否出现时序违规。

6、

什么叫亚稳态?如何解决亚稳态。

由于建立时间或者保持时间不满足而导致触发器需要花很长时间来实现输出逻辑达到标准电平,也就是说电路处于中间状态的时间变长,使得电路“反应”迟钝的现象,叫做亚稳态。

例如输入信号在时钟有效沿的建立时间与保持时间之间改变了,导致不满足触发器的建立时间和保持时间,导致输出有一段时间的不稳定态,就是亚稳态。

解决亚稳态的办法很多,需要具体情况具体分析:

例如,对于单比特控制信号从慢时钟到快时钟域同步,需要采用二级触发器缓冲,可以几乎消除亚稳态。

对于多比特数据从慢时钟域到快时钟域的传输,我们可以采用握手的方式来消除亚稳态。

而异步FIFO可以解决所有亚稳态问题,几乎通吃。无论是从慢时钟到快时钟域还是从快时钟域到慢时钟域的信号传输,我们都可以采用异步FIFO的方式来解决亚稳态。

对于复位信号,可以采用异步复位,同步撤离的方式来解决亚稳态。

7、如下电路,写出驱动方程,画出波形图并描述功能。

 

这个电路相对于用D触发器实现的电路稍微增加了那么一点难度,我们接触D触发器的机会远比JK触发器多(至少FPGA如此),不过通过这个电路以及JK触发器的公式 Q^{^{n+1}} = Jbar{Q^{^{^{n}}}} + bar{K}Q^{n}

可以得出输出方程。

需要注意的是JK触发器如果输入端悬空则为1,且复位后的输出为0.根据此可以画出波形图。

可见,这个函数的功能可以描述为占空比为1:3的3分频信号,Q1相对于Q0延迟了一个时钟。

 

 

 

 

 

最后

以上就是清新小蘑菇为你收集整理的IC/FPGA校招笔试题分析(三)的全部内容,希望文章能够帮你解决IC/FPGA校招笔试题分析(三)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部