这里我罗列了一个学习思维导图,笔面试过程中遇到的问题,大都涵盖在内,可以参考。基础知识记录如下:
目录
FPGA部分
1.典型FPGA的开发流程
2.FPGA内部资源包括哪些及作用?
1)输入输出单元(IOB)
可编程输入/输出单元简称 I/O 单元,是芯片与外界电路的接口部分,完成不同电气特性下对输入/输出信号的驱动与匹配要求。
2)可编程逻辑块(CLB)
FPGA的基本可编程逻辑单元是由查找表和寄存器组成的,查找表完成纯组合逻辑功能。FPGA内部寄存器可配置成触发器或锁存器。Altera基本可编程单元LE配置为寄存器加一个查找表。
3)底层内嵌功能单元(DLL)
内嵌功能模块主要指DLL(Delay Locked Loop)、PLL(Phase Locked Loop)、DSP 和CPU等软处理核(Soft Core)。
4)丰富的布线资源(可编程布线矩阵)
布线资源连通FPGA内部的所有单元,连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。可划分为4类不同的类别。第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;第二类是长线资源,用以完成芯片Bank间的高速信号和第二全局时钟信号的布线;第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。
5)嵌入式块 RAM(BRAM)
RAM可被配置为单端口RAM、双端口RAM、内容地址存储器(CAM)以及FIFO等常用存储结构。Block RAM由一定数量固定大小的存储块构成,使用BRAM不占用额外逻辑资源,并且速度快。
6)内嵌专用硬核
内嵌专用硬核是相对底层嵌入的软核而言的,指FPGA处理能力强大的硬核(Hard Core),等效于ASIC电路。为了提高FPGA性能,芯片生产商在芯片内部集成了一些专用的硬核。
3.查找表LUT的原理
查找表(look-up-table)简称为LUT,本质上是一个RAM。目前FPGA 中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的16x1的RAM,多于4输入逻辑可以使用多个LUT实现。
原理:当用户通过原理图或HDL语言描述了一个逻辑电路以后,CPLD/FPGA 开发软件会自动计算逻辑电路的所有可能的结果,并把结果事先写入RAM中,每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内容,然后输出即可。LUT可以配置成内部存储器,即分布式RAM。
4.FPGA芯片内的存储器资源是哪些?
FPGA芯片内有两种存储器资源:一种叫block ram,另一种是由LUT配置成的内部存储器(也就是分布式ram)。block ram由一定数量固定大小的存储块构成的,使用block ram,不占用额外的逻辑资源,并且速度快。但是使用的时钟消耗block ram的资源是其大小的整数倍。
FPGA中可以综合实现为RAM/ROM/CAM的三种资源:BLOCK RAM,查找表,FF触发器。
(1)在生成ram等存储单元的时候,应该首选block ram资源;其原因有二:第一:使用block ram等资源,可以节约更多的FF和4_LUT等底层可编写单元。使用block_ram可以说是不用白不用,最大程度发挥器件效能,节约成本的一种体现;第二:block ram是一种可以配置的硬件结构,其可靠性和速度与用LUT和register构建的存储器更有优势。
(2)弄清FPGA的硬件结构,合理使用block ram资源;
(3)分析block ram的容量,高效使用block ram资源
(4)分布式RAM资源(distribute RAM)
5.选择FPGA时考虑的因素有哪些?
6.FPGA和CPLD的区别?
7.FPGA和ASIC的区别?
FPGA,即现场可编程门阵列,是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。它是当今数字系统设计的主要硬件平台,其主要特点就是完全由用户通过软件进行配置和编程,从而完成某种特定的功能,且可以反复擦写。在修改和升级时,不需额外地改变PCB 电路板,只是在计算机上修改和更新程序,使硬件设计工作成为软件开发工作,缩短了系统设计的周期,提高了实现的灵活性并降低了成本。
ASIC(Application Specific Integrated Circuit),即专用集成电路,是一种为专门目的而设计的集成电路。是指应特定用户要求和特定电子系统的需要而设计、制造的集成电路。ASIC的特点是面向特定用户的需求, ASIC分为全定制和半定制。亮点在于专用,量身定制所以执行速度较快。一句话总结就是,市场上买不到的芯片。水果的A系列处理器就是典型的ASIC。
8.FPGA、CPLD、ASIC的区别?
数电部分
1.逻辑函数的表示方法
常用的逻辑函数表示方法有逻辑真值表,逻辑函数式,逻辑图,波形图,卡诺图和硬件描述语言等。
2.什么是格雷码?
在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码。格雷码(Gray Code)又称Grey Code、葛莱码、格莱码、戈莱码、循环码、反射二进制码、最小差错码等。
3.为什么要使用格雷码?
格雷码是一种具有反射特性和循环特性的单步自补码,其循环和单步特性消除了随机取数时出现重大错误的可能,其反射和自补特性使得对其进行求反操作也非常方便。格雷码属于一种可靠性编码,它在相邻间转换时,只有一位产生变化,它大大减少了一个状态到另一个状态时逻辑的混淆,因此格雷码在通信和测量技术中得到广泛应用。
4.格雷码有哪些特点?
(1)格雷码具有反射特性;
(2)格雷码具有循环特性;
(3)格雷码是一种准权码;
(4)格雷码相邻的码组间仅有一位不同;
(5)格雷码从编码形式上杜绝了逻辑冒险的发生;
(6)卡诺图是按格雷码来画的;
(7)格雷码不是一种二进制;(易错)
5.格雷码和独热码的区别
独热编码占用较多的位,也就是消耗较多的触发器,但这些额外触发器占用的面积可与译码电路省下来的面积相抵消。
6.二进制转格雷码
Gray = (bin>>1) ^ bin;(右移一位后和自身异或)
7.下面那些是格雷码的特性?(ACD)
A、格雷码具有反射特性
B、格雷码是一种二进制
C、格雷码可以减少干扰
D、格雷码相连码组之间只有一个码元不同
8.设计一电路,其输入端为A,B,C,输出端为Y,
要求其功能为:当A=1时,Y=B;当A=0时,Y=C;设计内容包括:
(1)列出真值表;(2)写出Y的最简与或表达式(3)用最少的与非门画出逻辑图。
解:(1)真值表
A B C Y
0 0 0 0
0 0 1 1
0 1 0 0
0 1 1 1
1 0 0 0
1 0 1 0
1 1 0 1
1 1 1 1
(2)Y的与或表达式
根据(1)真值表,将Y=1里含有1的加起来就行,Y = A’B’C + A’BC + ABC’+ ABC = AB+A’C=AB+A’C,忘了公式也可以画卡诺图,很快就得到答案了。
(3)Y=AB+A’C=((AB)’(A’C)’)’所以只需要4个与非门即可。
Verilog部分
1.HDL语言的层次概念?
HDL语言是分层次的、类型的,最常用的层次概念有系统与标准级、功能模块级,行为级,寄存器传输级和门级。
系统级,算法级,RTL级(行为级),门级,开关级
2.FPGA的可综合和不可综合有哪些?
可综合:aupply0、supply1、buf、buff0、buff1、notif0、notif1、integer、for、function、instantitation、operators。
不可综合:defparam、$finish、initial、events、real、time、force、release、fork、join、delays、wait、#。
3.verilog基础描述
(1)如果A=1’b1,B=1’b0,F=A&~B|B&~A|B,则F=1’b1。
(2)y=a+b;属于阻塞赋值语句,执行该语句时,先计算a+b值,然后更新y值,在此过程中不能运算其他语句。
(3)generate,for,function语句可以综合(for循环可综合时,循环变量必须是固定值)。
(4)如果A=4’hb,则^A=1’b1。
解析:~优先级最高,&第二高,|第三高
4.块语句有两种
begin-end语句是(顺序)执行语句;fork-join是(并行)执行语句。
5.Verilog的3种语言描述方式?
6.task和function的区别?
(1)task可以定义自己的仿真时间单位;
function只能与主模块共用仿真时间单位;
(2)task是过程性语句,要出现在always块或initial块中;
function不是过程性语句,不能出现在always块或initial块中;
(3)task可以有时间控制语句,如#,@,wait;
function不能有时间控制语句;
(4)task可以没有输入输出端口;
function至少要有一个输入参量;
(5)task不返回值;
function返回一个值;
(6)task可以调用function;
function不能调用task;