首页
交流分享
积分规则
创作分成
隐私政策
免责声明
电子工程师在线工具
New
发布
开通会员
开通黄金会员
全站资源约8折购买
部分内容免费阅读
VIP用户专属版块
开通黄金会员
开通钻石会员
全站资源约6折购买
部分内容免费阅读
VIP用户专属版块
一对一技术指导
开通钻石会员
简体中文
繁体中文
English
한국어
日本語
Français
Italiano
Deutsch
Русский
开通会员 尊享会员权益
登录
注册
找回密码
简体中文
繁体中文
English
한국어
日本語
Français
Italiano
Deutsch
Русский
首页
交流分享
积分规则
创作分成
隐私政策
免责声明
电子工程师在线工具
New
开通会员 尊享会员权益
登录
注册
找回密码
评分
分享
QQ空间
微博
QQ好友
海报分享
复制链接
首页
社区
FPGA CPLD
FPGA常见问题
正文
【转】应届生面试数字电路设计/FPGA开发工程师岗位总结—— 看得我啼笑皆非
chipdebug
7年前发布
189
1
该帖子内容已隐藏,请登录后查看
登录后继续查看
登录
注册
FPGA
请登录后发表评论
登录
注册
回复
1
查看全部
最新
最热
chipdebug
作者
超级版主
0
搜索
开启精彩搜索
热门帖子
在手机上浏览此页面
登录
没有账号?立即注册
邮箱
验证码
发送验证码
记住登录
账号密码登录
登录
用户名/手机号/邮箱
登录密码
记住登录
找回密码
|
免密登录
登录
注册
已有账号,立即登录
设置用户名
手机号或邮箱
验证码
发送验证码
设置密码
重复密码
注册
注册即表示同意
用户协议
、
隐私声明
欢迎光临!
ChipDebug入站需知
如发现帐号发垃圾帖或垃圾评论的一律封号!
ChipDebug是一个芯片开发调试分享网站
欢迎您的到来!如果您没有帐户请先点击下方按钮进行
注册
登录
注册
找回密码
积分规则
资料篇
今天就把我面试遇到了常见问题总结出来的东西分享到这
1. STA
a. STA这里我说的都是一些自己对sta的总结,哪里有不对或者不足请大家指正
b. step1先说建立时间和保持时间的概念:
c. 建立时间:数据在有效沿来临之前必须保持稳定的最小时间
d. 保持时间:数据在有效沿到达之后必须保持稳定的最小时间
如图所示,上述概念就在说这个,好像也并没有收获
所以我画了下面这幅图
结合这副图来说说静态时序分析
寄存器说白了就是数据暂时保存一个地方,而寄存器到寄存器之间的组合逻辑来实现电路的各种功能(这句话不太严谨暂且这么说),寄存器会在有效沿将数据采集并保存一个周期,但是现实和理想会有一点点区别,为了保证能准确采集到正确的数据,所以对数据提出了要求,这就是建立时间和保持时间的来历。
所以在一个电路中,从上一个寄存器将数据得到经过组合逻辑然后到下一个寄存器这中间的的路径延迟就会有要求(将上一级叫做launch下一级叫capture):1,你的组合逻辑不能太大,也就是当你的组合逻辑太大,数据路径延迟就会变大,你到达下一级的时间就会变大,当你到达时间太慢,慢到setup之后这是就不满足建立时间,你无法保证的你的寄存器采集的是正确的值。2,你的组合逻辑也不能太小,太小路径延迟就太小,数据过早的到达回使capture的上级寄存器的保持时间无法满足。
这里再说一点,建立时间和保持时间和PVT有关,和时钟频率无关。
结合这两点就可以回答很多问题。
e. 计算电路的最大工作频率:本质就是当你的最大延迟路径刚好满足时序要求的时候,即遍历,找到最大延迟路径,求出需要的时间在加上setup time 就是最小周期。
f. 判断电路是否满足静态时序分析。同上
g. 当建立时间不满足,可以通过改变时钟频率来解决吗? 显然是可以的,只需要降低频率就行
h. 当保持时间不满足,可以通过改变时钟频率来解决吗?不行,因为你是因为数据到达过早,你改变时钟频率无法解决数据过早到达的问题
2、跨时钟域
对以一位的异步信号可以使用“一位同步器进行同步”(使用两级触发器)俗称打拍。
原因:两级触发器可防止亚稳态传播的原理:假设第一级触发器的输入不满足其建立保持时间,它在第一个脉冲沿到来后输出的数据就为亚稳态,那么在下一个脉冲沿到来之前,其输出的亚稳态数据在一段恢复时间后必须稳定下来,而且稳定的数据必须满足第二级触发器的建立时间,如果都满足了,在下一个脉冲沿到来时,第二级触发器将不会出现亚稳态,因为其输入端的数据满足其建立保持时间。同步器有效的条件:第一级触发器进入亚稳态后的恢复时间 + 第二级触发器的建立时间 < = 时钟周期。
更确切地说,输入脉冲宽度必须大于同步时钟周期与第一级触发器所需的保持时间之和。最保险的脉冲宽度是两倍同步时钟周期。所以,这样的同步电路对于从较慢的时钟域来的异步信号进入较快的时钟域比较有效,对于进入一个较慢的时钟域,则没有作用 。
而对于多位的异步信号:1:可以采用保持寄存器加握手信号的方法(多数据,控制,地址);2:特殊的具体应用电路结构,根据应用的不同而不同;3:异步FIFO。(最常用的缓存单元是DPRAM)
3、FPGA底层资源
对XilinxFPGA,速度等级一般有“-1”、“-2”、“-3”等,数字越大,速度等级越高,芯片价钱也越贵。
对IntelFPGA,速度等级一般有“-6”、“-7”、“-8”,数字越小表示速度等级越高、价钱越贵。
FPGA内部三大主要资源:可编程逻辑单元、可编程I/O单元、布线资源
CLB在FPGA中最为丰富,由两个SLICE构成,SLICE分为SLICEL(L:Logic)和SLICEM(M:Memory),因此CLB可分为CLBLL和CLBLM两类;
有一部分Slice支持DistributedRAM和32位移位寄存器功能,被记为SLICEM,其他的记为SLICEL(一个CLB最多有一个SLICEM,每个CLB纵列至少有一个SLICEM,在DSP48E(XilinxFPGA内的硬件乘法器)纵列旁的两个CLB纵列,每一个CLB都有SLICEM)。
SLICEL和SLICEM内部都包含4个6输入查找表(LUT6)、3个数据选择器(MUX)、1个进位链(carrychain)和8个触发器(Flip-Flop);
FPGA的I/O资源被分布在若干个Bank中,每个Bank中有20个I/O Tile;
一个Tile包含2个IOB,2个ILOGIC,2个OLOGIC和2个IOEDLAY,用于对双端(差分)信号配对;
IOB包含输入、输出和三态驱动,可配置为不同的I/O标准;IOB直连一对I(O)LOGIC,I(O)LOGIC包含数据I/O的逻辑资源和三态控制,I(O)LOGIC也可以通过调用相关原语配置为I(O)SERDES,实现数据的串并行转换。
4、什么是竞争与冒险现象?怎样判断?如何消除?
在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争。产生毛刺叫冒险。
如果布尔式中有相反的信号则可能产生竞争和冒险现象。
解决方法:一是添加布尔式的消去项,二是在芯片外部加电容。
5、锁存器的特点:
(1)对毛刺敏感(使能信号有效时,输出状态可能随输入多次变化,产生空翻,对下一级电路很危险),不能异步复位,因此在上电后处于不确定的状态。
(2)锁存器会使静态时序分析变得非常复杂,不具备可重用性。(首先, 锁存器没有时钟参与信号传递,无法做 STA;其次,综合工具会将latch 优化掉,造成前后仿真结果不一致)
(3)在FPGA中基本的单元是由查找表和触发器组成的,若生成锁存器反而需要更多的资源。根据锁存器的特点可以看出,在电路设计中,要对锁存器特别谨慎,如果设计经过综合后产生出和设计意图不一致的锁存器,则将导致设计错误,包括仿真和综合。因此,在设计中需要避免产生意想不到的锁存器。如果组合逻辑的语句完全不使用 always 语句块,就可以保证综合器不会综合出锁存器。
(4)但如果锁存器和触发器两者都由与非门搭建的话,锁存器耗用的逻辑资源要比D触发器少(D触发器需要12个MOS管,锁存器只需6个MOS管),锁存器的集成度更高。所以在的ASIC设计中会用到锁存器。但锁存器对毛刺敏感,无异步复位端,不能让芯片在上电时处在确定的状态;另外,锁存器会使静态时序分析变得很复杂,不利于设计的可重用,所以,在ASIC设计中,除了CPU这高速电路,或者RAM这种对面积很敏感的电路,一般不提倡用锁存器。
6、同步复位,异步复位的各自特点:
同步复位
优点:
a、有利于仿真器的仿真。
b、可以使所设计的系统成为100%的同步时序电路,这便大大有利于时序分析,而且综合出来的fmax一般较高。
c、因为他只有在时钟有效电平到来时才有效,所以可以滤除高于时钟频率的毛刺。
缺点:
a、复位信号的有效时长必须大于时钟周期,才能真正被系统识别并完成复位任务。同时还要考虑,诸如:clk skew,组合逻辑路径延时,复位延时等因素。
b、由于大多数的逻辑器件的目标库内的DFF都只有异步复位端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会耗费较多的逻辑资源。
异步复位
优点:
a、大多数目标器件库的dff都有异步复位端口,因此采用异步复位可以节省资源。
b、设计相对简单。
c、异步复位信号识别方便,而且可以很方便的使用FPGA的全局复位端口GSR。
d、无时钟歪斜问题、低电源消耗、平均效能而非最差效能、模块性、可组合和可复用性
缺点:
a、在复位信号释放(release)的时候容易出现问题。具体就是说:倘若复位释放时恰恰在时钟有效沿附近,就很容易使寄存器输出出现亚稳态,从而导致亚稳态。
b、复位信号容易受到毛刺的影响。
6、异步FIFO 的最小深度计算
{FIFO深度 /(写入速率 - 读出速率)} = {FIFO被填满时间} > {数据包传送时间}= {写入数据量 / 写入速率}
例:A/D采样率50MHz,dsp读A/D读的速率40MHz,要不丢失地将10万个采样数据送入DSP,在A/D在和DSP之间至少加多大容量(深度)的FIFO才行?
100,000 / 50MHz = 1/500s = 2ms
(50MHz - 40MHz) * 1/500 = 20k既是FIFO深度。
这是我在网上找的原文有兴趣的可以自己点开看看。
https://blog.csdn.net/u011412586/article/details/10241585
7、减法器/加法器实现除法
使用减法器实现除法
a[31:0]/b[31:0]
1 a_temp[63:0] = { 32’d0 , a[31:0]};
b_temp[63:0] = {b[31:0] , 32’d0};
2 if(a_temp > b_temp)
a = a – b + 1;
else
a <<1 ; 末位补0;
3 循环32次
a_temp[63:32] 为余数 a_temp[31:0]为商。
使用加法器实现除法
对于乘法,a * b 相当于是 对 |a| 做|b| 次连加, 或者对 |b| 做 |a| 次连加,但是,这里我们必须要注意,a 和 b 都有可能是负数。
对于除法,a / b 相当于是让|b| 自己加自己,然后我们设置一个计数器,当|b| 加自己大于 |a| 的时候,计数器停。但是,这里有可能会带余数(除不尽),这里,假设我们考虑的是四舍五入的方法。
8、低功耗设计:
a,门控时钟 b,控制模块的工作电压 c,合理选择器件 d,使用格雷码。
9、锁相环的组成
锁相环通常由鉴相器(PD)、环路滤波器(LF)和压控振荡器(VCO)三部分组成