FPGA series # IC设计笔面试题目总结(二)

继IC设计笔面试题目总结(一)

IC设计常见面试题目:

1.IC设计流程
  IC设计分为前端和后端。设计前端也称逻辑设计,主要将HDL语言–>网表;后端设计也称物理设计,是网表–>芯片版图。两者并没有严格的界限,一般涉及到与工艺有关的设计就是后端设计。前端主要有需求分析与架构设计、RTL设计、仿真验证、逻辑综合、STA、形式验证。后端主要包括DFT、布局规划、布线以及版图物理验证。
  ① 规格制定(系统总体规划):芯片规格就像功能列表一样,是客户向芯片设计公司提出设计要求,包括芯片需要达到的具体功能和性能方面的要求。
  ② 详细设计:芯片设计公司(Fabless)根据客户提出的规格要求,拿出设计解决方案和具体实现架构,划分模块功能。目前架构的验证一般基于systemC语言,对价后模型的仿真可以使用systemC的仿真工具。例如:CoCentric和Visual Elite等
  ③ HDL编码:将实际的硬件电路功能通过HDL语言描述出来,形成RTL代码。设计输入工具:ultra ,visual VHDL等
  ④ 仿真验证:检验编码设计的正确性,检验的标准就是第一步制定的规格。工具:modelsim
  ⑤ 逻辑综合:仿真验证通过,进行逻辑综合。其结果就是把设计实现的HDL代码翻译成门级网表netlist。综合需要设定约束条件,即希望综合出来的电路在面积、时序等目标参数上达到的标准。逻辑综合需要基于特定的综合库,不同的库中,门电路基本标准单元的面积、时序参数是不一样的。所以,选用的综合库不一样,综合出来的电路在时序、面积上是有差异的。一般来说,综合完成后需要再次做仿真验证(称为后仿真)。工具:synplify
  ⑥ STA(State Timing Analysis,静态时序分析):这也属于验证范畴,它主要是在时序上对电路进行验证,检查电路是否存在建立时间和保持时间的违例(violation)。工具:synopsys的Prime Time
  ⑦ 形式验证:从功能上(STA是时序上)对综合后的网表进行验证。工具:Synopsys的Formality。 
  此处只放前段设计流程,具体参考链接如下: 
  参考链接1参考链接2

2.IC设计中同步复位与异步复位的区别?
  同步复位在时钟沿变化时,完成复位动作。异步复位不管时钟,只要复位信号满足条件,就完成复位动作。异步复位对复位信号要求比较高,不能有毛刺,如果其与时钟关系不确定,也可能出现亚稳态。

3.寄生效应在IC设计中怎样加以克服和利用?
  所谓寄生效应就是那些溜进你的PCB并在电路中大施破坏、令人头痛、原因不明的小故障。它们就是渗入高速电路中隐藏的寄生电容和寄生电感。其中包括由封装引脚和印制线过长形成的寄生电感;焊盘到地、焊盘到电源平面和焊盘到印制线之间形成的寄生电容;通孔之间的相互影响,以及许多其它可能的寄生效应。
  理想状态下,导线是没有电阻,电容和电感的。而在实际中,导线用到了金属铜,它有一定的电阻率,如果导线足够长,积累的电阻也相当可观。两条平行的导线,如果互相之间有电压差异,就相当于形成了一个平行板电容器(你想象一下)。通电的导线周围会形成磁场(特别是电流变化时),磁场会产生感生电场,会对电子的移动产生影响,可以说每条实际的导线包括元器件的管脚都会产生感生电动势,这也就是寄生电感。
  在直流或者低频情况下,这种寄生效应看不太出来。而在交流特别是高频交流条件下,影响就非常巨大了。根据复阻抗公式,电容、电感会在交流情况下会对电流的移动产生巨大阻碍,也就可以折算成阻抗。这种寄生效应很难克服,也难摸到。只能通过优化线路,尽量使用管脚短的SMT元器件来减少其影响,要完全消除是不可能的。

4.单片机最小系统包括哪几个部分
  对51系列单片机来说,最小系统一般应该包括:电源部分、晶振部分、复位部分。还应该包括有cpu。
  参考链接

5.给出一个组合逻辑电路,要求分析逻辑功能。
  所谓组合逻辑电路的分析,就是找出给定逻辑电路输出和输入之间的关系,并指出电路的逻辑功能。
  分析过程一般按下列步骤进行:
  ① 根据给定的逻辑电路,从输入端开始,逐级推导出输出端的逻辑函数表达式。
  ② 根据输出函数表达式列出真值表;
  ③ 用文字概括处电路的逻辑功能;

6.SRAM和DRAM的区别

  • SRAM是静态随机访问存储器,由晶体管存储数据,无需刷新,读写速度快。
  • DRAM是动态随机访问存储器,由电容存储数据,由于电容漏电需要动态刷新,电容充放电导致读写速度较SRAM低。但DRAM成本较低,适合做大容量片外缓存。
    扩展问题:SRAM , FALSHMEMORY , DRAM , SSRAM及SDRAM的区别
  • SRAM:静态随机存储器,存取速度快,但容量小,掉电后数据会丢失,不像DRAM 需要不停的REFRESH,制造成本较高,通常用来作为快取(CACHE) 记忆体使用。
  • FLASH:闪存,存取速度慢,容量大,掉电后数据不会丢失
  • DRAM:动态随机存储器,必须不断的重新的加强(REFRESHED) 电位差量,否则电位差将降低至无法有足够的能量表现每一个记忆单位处于何种状态。价格比SRAM便宜,但访问速度较慢,耗电量较大,常用作计算机的内存使用。
  • SSRAM:即同步静态随机存取存储器。对于SSRAM的所有访问都在时钟的上升/下降沿启动。地址、数据输入和其它控制信号均于时钟信号相关。
  • SDRAM:即同步动态随机存取存储器。

7.如何将JK触发器转换为D触发器
1
扩展问题: 将D触发器转换为JK触发器
2

8.你知道那些常用逻辑电平?TTL与COMS电平可以直接互连吗?

  • 常用逻辑电平:TTL、CMOS、LVTTL、LVCMOS、ECL(Emitter Coupled Logic)、PECL(Pseudo/Positive Emitter Coupled Logic)、LVDS(Low Voltage Differential Signaling)、GTL(Gunning Transceiver Logic)、BTL(Backplane Transceiver Logic)、ETL(enhanced transceiver logic)、GTLP(Gunning Transceiver Logic Plus);RS232、RS422、RS485(12V,5V,3.3V)。也有一种答案是:常用逻辑电平:12V,5V,3.3V。
  • TTL和CMOS 不可以直接互连,由于TTL是在0.3-3.6V之间,而CMOS则是有在12V的有在5V的。CMOS输出接到TTL是可以直接互连。TTL接到 CMOS需要在输出端口加一上拉电阻接到5V或者12V。即:用CMOS可直接驱动TTL;加上拉电阻后,TTL可驱动CMOS.
    扩展问题:
  • 上拉电阻用途
    ① 当TTL电路驱动COMS电路时,如果TTL电路输出的高电平低于COMS电路的最低高电平(一般为3.5V),这时就需要在TTL的输出端接上拉电阻,以提高输出高电平的值。
    ② OC门电路必须加上拉电阻,以提高输出的高电平值。
    ③ 为加大输出引脚的驱动能力,有的单片机管脚上也常使用上拉电阻。
    ④ 在COMS芯片上,为了防止静电造成损坏,不用的管脚不能悬空,一般接上拉电阻产生降低输入阻抗,提供泄荷通路。
    ⑤ 芯片的管脚加上拉电阻来提高输出电平,从而提高芯片输入信号的噪声容限增强抗干扰能力。
    ⑥ 提高总线的抗电磁干扰能力。管脚悬空就比较容易接受外界的电磁干扰。
    ⑦ 长线传输中电阻不匹配容易引起反射波干扰,加上下拉电阻是电阻匹配,有效的抑制反射波干扰。
  • 上拉电阻阻值的选择原则包括:
    ① 从节约功耗及芯片的灌电流能力考虑应当足够大;电阻大,电流小。
    ② 从确保足够的驱动电流考虑应当足够小;电阻小,电流大。
    ③ 对于高速电路,过大的上拉电阻可能边沿变平缓。综合考虑以上三点,通常在1k到10k之间选取。对下拉电阻也有类似道理。
    OC门电路必须加上拉电阻,以提高输出的高电平值。OC门电路要输出“1”时才需要加上拉电阻不加根本就没有高电平。在有时我们用OC门作驱动(例如控制一个 LED)灌电流工作时就可以不加上拉电阻。总之加上拉电阻能够提高驱动能力。
  • CMOS和TTL电路区别是什么?
    两者区别主要体现在三个方面:
    a.结构:CMOS电路由场效应管构成,TTL由双极性晶体管构成。
    b.电平范围:CMOS逻辑电平范围大(5~15V),TTL只工作在5V以下,因此CMOS噪声容限比TTL大,抗干扰能力强。
    c.功耗与速率:CMOS的功耗比TTL小,但工作频率低于TTL。

9.MOS管基本概念及画图
  MOS中文意思是金属氧化物半导体场效应管,由栅极(G)、漏级(D)、源级(S)组成。分为PMOS和NMOS两种类型,区别在于G级高电平时,N型管导通,P型管截止。两者往往是成对出现的,即CMOS。只要一只导通,另一只则不导通,现代单片机主要是采用CMOS工艺制成的。
  画图一般需要根据一个简单的逻辑表达式,画出CMOS电路图结构。需要掌握常用逻辑门的实现方式。
  3
  总体来看还是挺好记的,与非门和或非门都是上下各两个MOS管,且上面是PMOS,下面是NMOS。不同之处在于与非是“上并下串”,或非是“上串下并”。
IC设计面试题里看到关于CMOS的题目较多,但由于自己目前还没用到,本科学过大多数又忘了,所以暂时不做更深入的了解。

10.FIR滤波器与IIR滤波器函数表达式、特点及结构:
  FIR(有限冲激响应)滤波器:非递归,具有线性相位。IIR(无限冲激响应)滤波器:递归结构,非线性相位。相同阶数FIR和IIR滤波器,IIR滤波器滤波效果较好,但会产生相位失真。

  • FIR滤波器:对N个采样数据进行加权和平均处理。
    表达式:
     4
    结构图:
     5
  • IIR滤波器:包含递归部分也包含非递归部分。
    表达式:(具有N个前馈系数和M-1个反馈系数)
    6
    结构图:
    7

11.什么是环形振荡器?
  环形计数器是一种由循环移位寄存器组成的计数器。最后一个移位寄存器的输出被馈送到第一个寄存器的输入。例如,在4寄存器计数器中,初始寄存器值为1100,重复模式为:1100,0110,0011,1001,1100,依此类推;

12.在对信号采样过程之前抗混滤波,其作用是什么?它选用何种滤波器?其截止频率如何确定?
  根据“奈奎斯特采样定律”:在对模拟信号进行离散化时,采样频率f2至少应2倍于被分析的信号的最高频率f1,即:f2≥2 f1;否则可能出现因采样频率不够高,模拟信号中的高频信号折叠到低频段,出现虚假频率成分的现象。
  但工程测量中采样频率不可能无限高也不需要无限高,因为我们一般只关心一定频率范围内的信号成份。
  为解决频率混叠,在对模拟信号进行离散化采集前,采用低通滤波器滤除高于1/2采样频率的频率成份。实际仪器设计中,这个低通滤波器的截止频率(fc) 为:截止频率(fc)= 采样频率(fz) / 2.56

13.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有符号数所能表示范围是:-214到214-1,并不能表示2^14。综上,需要16bit位宽。正好位宽扩大一倍。

14.堆栈溢出原因
  在一个程序中,分配给堆栈的内存是有一定限度的。由于C语言系列没有内置检查机制来确保复制到缓冲区的数据不得大于缓冲区的大小,因此当这个数据足够大的时候,将会溢出缓冲区的范围。堆栈溢出就是不顾堆栈中分配的局部数据块大小,向该数据块写入了过多的数据,导致数据越界,结果覆盖了别的数据。堆栈溢出时会有意想不到的结果发生,甚至程序会运行崩溃。
原因:

  • 函数调用层次太深。函数递归调用时,系统要在栈中不断保存函数调用时的现场和产生的变量,如果递归调用太深,就会造成栈溢出,这时递归无法返回。再有,当函数调用层次过深时也可能导致栈无法容纳这些调用的返回地址而造成栈溢出。
  • 动态申请空间使用之后没有释放。由于C语言中没有垃圾资源自动回收机制,因此,需要程序主动释放已经不再使用的动态地址空间。申请的动态空间使用的是堆空间,动态空间使用不会造成堆溢出。
  • 数组访问越界。C语言没有提供数组下标越界检查,如果在程序中出现数组下标访问超出数组范围,在运行过程中可能会内存访问错误。
  • 指针非法访问。指针保存了一个非法的地址,通过这样的指针访问所指向的地址时会产生内存访问错误。
    参考链接

15.c语言动态申请释放内存的指令
  申请:malloc、释放:free
  参考链接

16.如何利用C语言编写带有多个返回值的子函数
  常见的有两种方式:一是利用全局变量,子函数在执行过程中修改多个全局变量即可达到与多个返回值同样的效果。二是利用数组指针作为函数参数,通过地址传递改变多个实参本身。

17.用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
  #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL

  • #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)
  • 懂得预处理器将为你计算常数表达式的值,因此,直接写出你是如何计算一年中有多少秒而不是计算出实际的值,是更清晰而没有代价的。
  • 意识到这个表达式将使一个16位机的整型数溢出-因此要用到长整型符号L,告诉编译器这个常数是的长整型数。

18.用C编写死循环

  • while(1) { }
  • for( ; ; ) { }
  • Loop:

    goto Loop;

19.用变量a给出下面的定义
a) 一个整型数(An integer)
b) 一个指向整型数的指针(A pointer to an integer)
c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer to an integer)
d) 一个有10个整型数的数组(An array of 10 integers)
e) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to integers)
f) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers)
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)
h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer )

答案是:
a) int a; // An integer
b) int *a; // A pointer to an integer
c) int **a; // A pointer to a pointer to an integer
d) int a[10]; // An array of 10 integers
e) int *a[10]; // An array of 10 pointers to integers
f) int (*a)[10]; // A pointer to an array of 10 integers
g) int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integer
h) int (*a[10])(int); // An array of 10 pointers to functions that take an integer argument and return an integer

20.关键字static的作用是什么?
在C语言中,关键字static有三个明显的作用:
① 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。
② 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。
③ 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。

21.关键字const是什么含意?
const意味着“只读”;
Const int a;
int const a;
const int *a;
int * const a;
int const * a const;

前两个的作用是一样,a是一个常整型数。
第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。
第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。
最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。

21.什么是中断?为什么要中断?
参考:http://www.kerneltravel.net/journal/viii/01.htm

over,关于状态机、分频电路、计数器的题目也较多,数电知识占大多数。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值