【不定期更新】FPGA/IC岗位常见笔试面试题总结(基础知识)
1 数字IC(ASIC)设计流程:
IC设计分为前端和后端。前端设计主要将HDL语言-->网表,后端设计是网表-->芯片版图。
前端主要有需求分析与架构设计、RTL设计、仿真验证、逻辑综合、STA、形式验证。后端主要包括DFT、布局规划、布线以及版图物理验证。
2 MCU结构:
它是由CPU系统、程序存储器(ROM)、数据存储器(RAM)、各种I/O端口、基本功能单元(定时器/计数器等)组成。
3 低功耗技术:
功耗可用公式描述:Power = KFCV^2,即功率等于常数系数*工作频率*负载电容值*电压的平方。
故从以下几个方面降低功耗方式:
a.控制工作频率:降低频率增大数据路径宽度,动态频率调整,门控时钟(时钟使能有效时钟才进入寄存器时钟输入引脚)
b.减少电容负载:使用几何尺寸更小的逻辑门,其电容负载较小,功率也随之减少。
c.降低工作电压:动态改变工作电压、零操作电压(直接关闭系统中一部分的电源)。
4 MOS管基本概念及画图:
MOS中文意思是金属氧化物半导体场效应管,由栅极(G)、漏级(D)、源级(S)组成。分为PMOS和NMOS两种类型,区别在于G级高电平时,N型管导通,P型管截止。两者往往是成对出现的,即CMOS。只要一只导通,另一只则不导通,现代单片机主要是采用CMOS工艺制成的。
画图一般需要根据一个简单的逻辑表达式,画出CMOS电路图结构。需要掌握常用逻辑门的实现方式。
总体来看还是挺好记的,与非门和或非门都是上下各两个MOS管,且上面是PMOS,下面是NMOS。不同之处在于与非是“上并下串”,或非是“上串下并”。
5 FPGA内部结构及资源:
FPGA主要由可编程单元、可编程I/O单元及布线资源构成。
可编程逻辑单元(可配置逻辑单元,CLB)由两个SLICE构成,SLICE主要包括实现组合逻辑的LUT和实现时序逻辑的触发器。FPGA内部还包含专用存储单元BRAM,运算单元DSP Slice,及专用内嵌功能单元,如:PLL、Serdes等。
6 FPGA内部LUT实现组合逻辑的原理:
LUT相当于存放逻辑表达式对应真值表的RAM。软件将逻辑表达式所有可能结果列出后存放在RAM中,输入作为RAM地址,输出为逻辑运算结果。如使用LUT模拟二输入“与”逻辑。列出真值表:00 -- 0,01 -- 0,10 -- 0,11 -- 1。此时将00 01 10 11作为地址线,依次将结果0 0 0 1存放在RAM中。当输入00时及输出0&0=0.
7 常用逻辑表达式化简公式:
左右关系为*变+,+变*
交换律:A*B = B*A A+B = B+A
结合律:(A*B)*C = A*(B*C) (A+B)+C = A+(B+C)
分配率:A(B+C) = AB+AC A+BC = (A+B)(A+C)
特殊定律:
8 FIR滤波器与IIR滤波器函数表达式、特点及结构:
FIR(有限冲激响应)滤波器:非递归,具有线性相位。IIR(无限冲激响应)滤波器:递归结构,非线性相位。相同阶数FIR和IIR滤波器,IIR滤波器滤波效果较好,但会产生相位失真。
FIR滤波器:
对N个采样数据进行加权和平均处理。
表达式:
结构图:
IIR滤波器:
包含递归部分也包含非递归部分。
表达式:(具有N个前馈系数和M-1个反馈系数)
结构图:
9 N位二进制数所能表示的数据范围,两个Nbit数相加相乘后需要多少bit?(多在计算题中间接提问)
有符号数:(补码)-2^(N-1) ~ 2^(N-1)-1 如N = 8,则表示范围是:-128 ~ 127.
无符号数:0~2^N-1 如N = 8,则表示范围是:0~255.
定点数:3Q13 范围是:-4~4-2^(-13) 精度是:2^(-13)
相加相乘后需要的数据位宽若无已知数据范围,按照基本规律:相加位宽+1,相乘位宽*2.若已知操作数范围,根据运算操作数所能表示数的绝对值最大值求出运算结果极限值。
问:例如两个8bit有符号数相乘,其结果需要的位宽是多少?
答:8bit有符号数补码所能表示的数据范围是:-128到127,具有最大绝对值的数是-128,所以极限情况下是-128*(-128) = 16384 = 2^14. 15bit有符号数所能表示范围是:-2^14到2^14-1,并不能表示2^14。综上,需要16bit位宽。正好位宽扩大一倍。
10 FPGA详细设计流程(面试提问)
与数字IC设计流程类似,以xilinx vivado工具为例,主要有以下步骤:系统规划、RTL输入、行为仿真、逻辑综合、综合后仿真(可选)、综合后设计分析(时序及资源)、设计实现(包括布局布线及优化)、实现后设计分析(时序及资源)、板级调试、bitstream固化。
11 时序约束相关
有哪几种时序路径:
input paths:外部引脚到内部模块路径
register-to-register paths:系统内部寄存器到寄存器路径
output paths:内部模块到外部引脚的路径
port to port paths:FPGA输入端口到输出端口路径(不常用)
创建时序约束的关键步骤:
a baseline约束:create clocks define clocks interactions b I/O约束:set input and output delays c 例外约束:set timing execptions(set_max_delay/set_min_delay、set_multicycle_path、set_false_path)
设计初期可先不加I/O约束,但baseline约束要尽早建立。
input delay和output delay计算:
input delay:
a 系统同步:min_delay Tco min + Trce min
max_delay Tco max + Trce max
b 源同步: min_delay Tco min
max_delay Tco max
output delay:
min_delay Trce min - Th
max_delay Trce max + Tsu
其中input delay的源同步模式下,DDR采样多采用示波器测量延迟的方式。
Tsu和Th与Tco T Tdata的关系:
T≥Tco+Tdata+Tsu
Th≤Tco+Tdata
12 异步信号同步方式
单比特数据,打两拍后检测打拍后信号变化沿。若快时钟域信号进入慢时钟域,则先扩展位宽再打两拍。
多比特数据,使用异步FIFO桥接。在数据量不大,带宽要求不高的场合可以采用握手同步方式(利用单比特握手信号打两拍同步方式找到数据稳定时刻,保证上游握手信号拉高时数据稳定不变)。
13 SRAM和DRAM的区别
SRAM是静态随机访问存储器,由晶体管存储数据,无需刷新,读写速度快。DRAM是动态随机访问存储器,由电容存储数据,由于电容漏电需要动态刷新,电容充放电导致读写速度较SRAM低。但DRAM成本较低,适合做大容量片外缓存。
14 逻辑设计中竞争与冒险概念,如何识别和消除?
竞争:在组合逻辑电路中,信号经过多条路径到达输出端,每条路径经过的逻辑门不同存在时差,在信号变化的瞬间存在先后顺序。这种现象叫竞争。
冒险:由于竞争而引起电路输出信号中出现了非预期信号,产生瞬间错误的现象称为冒险。表现为输出端出现了原设计中没有的窄脉冲,即毛刺。
常见的逻辑代数法判断是否有竞争冒险存在:只要输出逻辑表达式中含有某个信号的原变量A和反变量/A之间的“与”或者“或”关系,且A和/A经过不同的传播路径,则存在竞争。解决办法一是修改逻辑表达式避免以上情况,二是采样时序逻辑,仅在时钟边沿采样,三十在芯片外部并联电容消除窄脉冲。
15 格雷码特点及其应用
连续的格雷码之间只有单比特信号变化,多用在异步时钟域处理上,如异步FIFO中地址指针的索引就采用格雷码编码。
分析:只有单比特信号跨时钟域时,我们能通过双触发器构成的同步器在另一个时钟域内得到有效脉冲,但多比特信号若采用同样的方法,会出现各个比特更新时刻不一致导致数据错误的情况。而在异步FIFO设计中,两侧信号属于不同时钟域,FIFO必须通过对比来自不同时钟域的读写地址指针数值给出空满指示信号,地址指针需要多个比特信号才能代表FIFO深度。格雷码的单比特变化特性正好适用于这一场合,使用单比特信号同步策略完全适用于格雷码。
16 亚稳态的产生原因及消除方式
在异步系统中,寄存器建立保持时间不满足引起亚稳态。典型的场合为数据跨时钟域传输和异步复位电路。在异步传输过程中,通过单比特信号双寄存器同步,多比特信号FIFO桥接的方式消除亚稳态(实际上异步信号同步方式即为异步传输过程中亚稳态的消除方式)。通过异步复位,同步释放可消除异步复位引起的亚稳态。
17 如何利用C语言编写带有多个返回值的子函数
常见的有两种方式:一是利用全局变量,子函数在执行过程中修改多个全局变量即可达到与多个返回值同样的效果。二是利用数组指针作为函数参数,通过地址传递改变多个实参本身。
18 时钟抖动和时钟偏移的概念及产生原因,如何避免?
时钟抖动jitter:指时钟信号的跳变沿不确定,故是时钟频率上的不一致。
时钟偏移Skew:指全局时钟产生的各个子时钟信号到达不同触发器的时间点不同,是时钟相位的不一致。
jitter主要受外界干扰引起,通过各种抗干扰手段可以避免。而skew由数字电路内部各路径布局布线长度和负载不同导致,利用全局时钟网络可尽量将其消除。
19 CMOS和TTL电路区别是什么?
两者区别主要体现在三个方面:
a.结构:CMOS电路由场效应管构成,TTL由双极性晶体管构成。
b.电平范围:CMOS逻辑电平范围大(5~15V),TTL只工作在5V以下,因此CMOS噪声容限比TTL大,抗干扰能力强。
c.功耗与速率:CMOS的功耗比TTL小,但工作频率低于TTL。
20 信号3dB带宽的意义是什么?
3dB带宽通常指功率谱密度的最高点下降到1/2时界定的频率范围。
21 JTAG接口信号及功能
JTAG实际上使用的只有四个信号:时钟TCK、状态机控制信号TMS、数据输入信号TDI、数据输出信号TDO。
【不定期更新】FPGA/IC岗位常见笔试面试题总结(基础知识)的更多相关文章
- 转----------数据库常见笔试面试题 - Hectorhua的专栏 - CSDN博客
数据库基础(面试常见题) 一.数据库基础 1. 数据抽象:物理抽象.概念抽象.视图级抽象,内模式.模式.外模式 2. SQL语言包括数据定义.数据操纵(Data Manipulation),数据控制( ...
- HTML5常见的面试题,基础知识点
HTML5常见的面试题 一.HTML 常 ...
- 常见SQL语句和SQL基础知识
引自:http://blog.csdn.net/u012467492/article/details/46790205 SQL语句考察(一) 1.查询出每门课都大于80 分的学生姓名 name k ...
- SQL常见笔试面试题
sql理论题 1.触发器的作用? 答:触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的.它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化.可以 ...
- FPGA入门到精通系列1:数字电路基础知识
本文主要介绍数字电路基础知识,用最简洁的内容介绍最核心的知识. 1.数字电路是什么? 数字电路是利用电源电压的高电平和低电平分别表示1和0,进而实现信息的表达.模拟信号:随时间连续变化的信号.处理 ...
- C++常见笔试面试要点以及常见问题
1. C++常见笔试面试要点: C++语言相关: (1) 虚函数(多态)的内部实现 (2) 智能指针用过哪些?shared_ptr和unique_ptr用的时候需要注意什么?shared_ptr的实现 ...
- 基于C/S架构的3D对战网络游戏C++框架_【不定期更新通知】
由于笔者最近有比赛项目要赶,这个基于C/S架构的3D对战网络游戏C++框架也遇到了一点瓶颈需要点时间沉淀,所以近一段时间不能保证每天更新了,会保持不定期更新.同时近期笔者也会多分享一些已经做过学过的C ...
- 从壹开始前后端分离 [.netCore 不定期更新 ] 三十五║ 完美实现全局异常日志记录
缘起 哈喽我是不定期更新的日常,昨天群里小伙伴问到了记录日志,当然,以前我也挖过这个坑,后来一直没有来得及填上,也想着 swagger 一直又有错误信息展示的功能,就迟迟没有添加这个功能,不过昨天夜里 ...
- net core 小坑杂记之配置文件读取(不定期更新)
其实很早就想写了,原想等积累差不多了再写的,但是发现遇到一个当时记下效果会比较好,所以就不定期更新这个系列了,后面获取会整个整理一下. 此篇记载net core入门时踩的一些坑,网上教程太少了,也不规 ...
随机推荐
- javascript语言精粹-笔记
walkDOM function walkTheDOM(node, func) { func(node); node = node.firstChild; while (node) { walkThe ...
- ArcGIS注册数据库问题分析
本文是'猴妹'师妹授权给我来发表的,介绍都是师妹的研究成果,在此,非常感谢'猴妹'师妹. 用ArcGIS Server在发布地图服务时,注册数据库是很常见的,几年前就开始注册数据库,直到昨天,才有点顿 ...
- Android路由框架-ARouter详解
文章大纲 一.页面路由基本介绍1.什么是页面路由2.为什么要使用页面路由二.页面路由框架ARouter介绍1.常用功能介绍2.常见应用场景三.源码下载四.参考文章 一.页面路由基本介绍 1.什么是 ...
- 如何在WSL下使用VS Code
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者.本有由葡萄城技术团队翻译并整理 自微软开始宣布拥抱开源以来,我认为微软发布的最棒的两大功能是:Visual S ...
- ThinkPHP5.1 + tufanbarisyildirim 解析apk
摘要 对于apk,我可以说只会安装,并不知道其中有什么内容需要记录下来.这次公司做一个关于电视机顶盒的项目.对于这个陌生的项目,刚开始真是一脸懵逼,完全不知道如何下手. 因为这类的项目完全没有接触过, ...
- 【机器学习】--LDA初始和应用
一.前述 LDA是一种 非监督机器学习 技术,可以用来识别大规模文档集(document collection)或语料库(corpus)中潜藏的主题信息.它采用了词袋(bag of words)的方法 ...
- python接口自动化(九)--python中字典和json的区别(详解)
简介 这篇文章的由来是由于上一篇发送post请求的接口时候,参数传字典(dict)和json的缘故,因为python中,json和dict非常类似,都是key-value的形式,为啥还要这么传参,在群 ...
- 【Android Studio安装部署系列】十三、Android studio添加和删除Module
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 概述 新建.导入.删除Module是常见的操作,这里简单介绍下. 新建Module File——New——New Module... 选中 ...
- Golang之变量去哪儿
目录 什么是逃逸分析 为什么要逃逸分析 逃逸分析是怎么完成的 逃逸分析实例 总结 参考资料 写过C/C++的同学都知道,调用著名的malloc和new函数可以在堆上分配一块内存,这块内存的使用和销毁的 ...
- 一套代码小程序&Web&Native运行的探索05——snabbdom
接上文:一套代码小程序&Web&Native运行的探索04——数据更新 对应Git代码地址请见:https://github.com/yexiaochai/wxdemo/tree/ma ...