文档库 最新最全的文档下载
当前位置:文档库 › fpga面试

fpga面试

fpga面试
fpga面试

FPGA工程师面试试题

1、同步电路和异步电路的区别是什么?(仕兰微电子)

2、什么是同步逻辑和异步逻辑?(汉王笔试)

同步逻辑是时钟之间有固定的因果关系.异步逻辑是各时钟之间没有固定的

因果关系.

3、什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求?(汉王笔试) 线与逻辑是两个输出信号相连可以实现与的功能.在硬件上,要用oc门来实现,由于不用 oc门可能使灌电流过大,而烧坏逻辑门. 同时在输出端口应加一个上拉电阻.

4、什么是Setup 和Holdup时间?(汉王笔试)

5、setup和holdup时间,区别.(南山之桥)

6、解释setup time和hold time的定义和在时钟信号延迟时的变化.(未知)

7、解释setup和hold time violation,画图说明,并说明解决办法.(威盛VIA

2003.11.06 上海笔试试题)

Setup/hold time 是测试芯片对输入信号和时钟信号之间的时间要求.建立

时间是指触发 器的时钟信号上升沿到来以前,数据稳定不变的时间.输入信

号应提前时钟上升沿(如上升沿有效)T时间到达芯片,这个T就是建立时间

-Setup time.如不满足setup time,这个数据就不能被这一时钟打入触发器,只有在下一个时钟上升沿,数据才能被打入触发器. 保持时间是指触发器的

时钟信号上升沿到来以后,数据稳定不变的时间.如果hold time 不够,数据同样不能被打入触发器.

建立时间(Setup Time)和保持时间(Hold time).建立时间是指在时钟边沿前,数据信 号需要保持不变的时间.保持时间是指时钟跳变边沿后数据信号需要保持不变的时间.如果不满足建立和保持时间的话,那么DFF将不能正确地采样到数据,将会出现 metastability的情况.如果数据信号在时钟沿触发前后持续的时间均超过建立和保持时 间,那么超过量就分别被称为建立时间裕量和保持时间裕量.

8、说说对数字逻辑中的竞争和冒险的理解,并举例说明竞争和冒险怎样消除.(仕兰微 电子)

9、什么是竞争与冒险现象?怎样判断?如何消除?(汉王笔试)

在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争.产生毛刺叫冒险.如果布尔式中有相反的信号则可能产生竞争和冒险现象.解决方法:一是添加布尔式的消去项,二是在芯片外部加电容.

10、你知道那些常用逻辑电平?TTL与COMS电平可以直接互连吗?(汉王笔试) 常用逻辑电平:12V,5V,3.3V;TTL和CMOS不可以直接互连,由于TTL是在

0.3-3.6V之间,而CMOS则是有在12V的有在5V的.CMOS输出接到TTL是可以直接互连.TTL接到CMOS需要在输出端口加一上拉电阻接到5V或者12V. 11、如何解决亚稳态.(飞利浦-大唐笔试)

亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态.当一个

触发器进入亚

稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个

正确的电平

上.在这个稳定期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无

用的输出电平可以沿信号通道上的各个触发器级联式传播下去.

12、IC设计中同步复位与 异步复位的区别.(南山之桥)

13、MOORE 与 MEELEY状态机的特征.(南山之桥)

14、多时域设计中,如何处理信号跨时域.(南山之桥)

15、给了reg的setup,hold时间,求中间组合逻辑的delay范围.(飞利浦-大唐笔试)

Delay < period - setup – hold

16、时钟周期为T,触发器D1的建立时间最大为T1max,最小为T1min.组合逻辑电路最大延

迟为T2max,最小为T2min.问,触发器D2的建立时间T3和保持时间应满足什么条件.(华

为)

17、给出某个一般时序电路的图,有Tsetup,Tdelay,Tck->q,还有 clock的delay,写出决

定最大时钟的因素,同时给出表达式.(威盛VIA 2003.11.06 上海笔试试题) 18、说说静态、动态时序模拟的优缺点.(威盛VIA 2003.11.06 上海笔试试题)

19、一个四级的Mux,其中第二级信号为关键信号 如何改善timing.(威盛VIA

2003.11.06 上海笔试试题)

20、给出一个门级的图,又给了各个门的传输延时,问关键路径是什么,还问给出输入,

使得输出依赖于关键路径.(未知)

21、逻辑方面数字电路的卡诺图化简,时序(同步异步差异),触发器有几种(区别,优

点),全加器等等.(未知)

22、卡诺图写出逻辑表达使.(威盛VIA 2003.11.06 上海笔试试题)

23、化简F(A,B,C,D)= m(1,3,4,5,10,11,12,13,14,15)的和.(威盛)

24、please show the CMOS inverter schmatic,layout and its cross sectionwith P-

well process.Plot its transfer curve (Vout-Vin) And also explain the

operation region of PMOS and NMOS for each segment of the transfer curve? (威

盛笔试题circuit design-beijing-03.11.09)

25、To design a CMOS invertor with balance rise and fall time,please define

the ration of channel width of PMOS and NMOS and explain?

26、为什么一个标准的倒相器中P管的宽长比要比N管的宽长比大?(仕兰微电子)

27、用mos管搭出一个二输入与非门.(扬智电子笔试)

28、please draw the transistor level schematic of a cmos 2 input AND gate and

explain which input has faster response for output rising edge.(less delay

time).(威盛笔试题circuit design-beijing-03.11.09)

29、画出NOT,NAND,NOR的符号,真值表,还有transistor level的电

路.(Infineon笔

试)

30、画出CMOS的图,画出tow-to-one mux gate.(威盛VIA 2003.11.06 上海笔试试题)

31、用一个二选一mux和一个inv实现异或.(飞利浦-大唐笔试)

32、画出Y=A*B+C的cmos电路图.(科广试题)

33、用逻辑们和cmos电路实现ab+cd.(飞利浦-大唐笔试)

34、画出CMOS电路的晶体管级电路图,实现Y=A*B+C(D+E).(仕兰微电子)

35、利用4选1实现F(x,y,z)=xz+yz’.(未知)

36、给一个表达式f=xxxx+xxxx+xxxxx+xxxx用最少数量的与非门实现(实际上就是化

简).

37、给出一个简单的由多个NOT,NAND,NOR组成的原理图,根据输入波形画出各点波形.

(Infineon笔试)

38、为了实现逻辑(A XOR B)OR (C AND D),请选用以下逻辑中的一种,并说明为什

么?1)INV 2)AND 3)OR 4)NAND 5)NOR 6)XOR 答案:NAND(未知)

39、用与非门等设计全加法器.(华为)

40、给出两个门电路让你分析异同.(华为)

41、用简单电路实现,当A为输入时,输出B波形为…(仕兰微电子)

42、A,B,C,D,E进行投票,多数服从少数,输出是F(也就是如果A,B,C,D,E中1的个数比0

多,那么F输出为1,否则F为0),用与非门实现,输入数目没有限制.(未知)

43、用波形表示D触发器的功能.(扬智电子笔试)

44、用传输门和倒向器搭一个边沿触发器.(扬智电子笔试)

45、用逻辑们画出D触发器.(威盛VIA 2003.11.06 上海笔试试题)

46、画出DFF的结构图,用verilog实现之.(威盛)

47、画出一种CMOS的D锁存器的电路图和版图.(未知)

48、D触发器和D锁存器的区别.(新太硬件面试)

49、简述latch和filp-flop的异同.(未知)

50、LATCH和DFF的概念和区别.(未知)

51、latch与register的区别,为什么现在多用register.行为级描述中latch 如何产生的.

(南山之桥)

52、用D触发器做个二分颦的电路.又问什么是状态图.(华为)

53、请画出用D触发器实现2倍分频的逻辑电路?(汉王笔试)

54、怎样用D触发器、与或非门组成二分频电路?(东信笔试)

55、How many flip-flop circuits are needed to divide by 16? (Intel) 16分频?

56、用filp-flop和logic-gate设计一个1位加法器,输入carryin和current-stage,输出

carryout和next-stage. (未知)

57、用D触发器做个4进制的计数.(华为)

58、实现N位Johnson Counter,N=5.(南山之桥)

59、用你熟悉的设计方式设计一个可预置初值的7进制循环计数器,15进制的呢?(仕兰

微电子)

60、数字电路设计当然必问Verilog/VHDL,如设计计数器.(未知)

61、BLOCKING NONBLOCKING 赋值的区别.(南山之桥)

62、写异步D触发器的verilog module.(扬智电子笔试)

module dff8(clk , reset, d, q);

input clk;

input reset;

input [7:0] d;

output [7:0] q;

reg [7:0] q;

always @ (posedge clk or posedge reset)

if(reset)

q <= 0;

else

q <= d;

endmodule

63、用D触发器实现2倍分频的Verilog描述? (汉王笔试)

module divide2( clk , clk_o, reset);

input clk , reset;

output clk_o;

wire in;

reg out ;

always @ ( posedge clk or posedge reset)

if ( reset)

out <= 0;

else

out <= in;

assign in = ~out;

assign clk_o = out;

endmodule

64、可编程逻辑器件在现代电子设计中越来越重要,请问:a) 你所知道的可编程逻辑器

件有哪些? b) 试用VHDL或VERILOG、ABLE描述8位D触发器逻辑.(汉王笔试)

PAL,PLD,CPLD,FPGA.

module dff8(clk , reset, d, q);

input clk;

input reset;

input d;

output q;

reg q;

always @ (posedge clk or posedge reset)

if(reset)

q <= 0;

else

q <= d;

endmodule

65、请用HDL描述四位的全加法器、5分频电路.(仕兰微电子)

66、用VERILOG或VHDL写一段代码,实现10进制计数器.(未知)

67、用VERILOG或VHDL写一段代码,实现消除一个glitch.(未知)

68、一个状态机的题目用verilog实现(不过这个状态机画的实在比较差,很容易误解

的).(威盛VIA 2003.11.06 上海笔试试题)

69、描述一个交通信号灯的设计.(仕兰微电子)

70、画状态机,接受1,2,5分钱的卖报机,每份报纸5分钱.(扬智电子笔试)

71、设计一个自动售货机系统,卖soda水的,只能投进三种硬币,要正确的找回钱

数. (1)画出fsm(有限状态机);(2)用verilog编程,语法要符合fpga 设计

的要求.(未知)

72、设计一个自动饮料售卖机,饮料10分钱,硬币有5分和10分两种,并考虑找零1)

画出fsm(有限状态机);(2)用verilog编程,语法要符合fpga设计的要求;(3)设计

工程中可使用的工具及设计大致过程.(未知)

73、画出可以检测10010串的状态图,并verilog实现之.(威盛)

74、用FSM实现101101的序列检测模块.(南山之桥)

a为输入端,b为输出端,如果a连续输入为1101则b输出为1,否则为0. 例如a: 0001100110110100100110

b: 0000000000100100000000

请画出state machine;请用RTL描述其state machine.(未知) 75、用verilog/vddl检测stream中的特定字符串(分状态用状态机写).(飞利浦-大唐

笔试)

76、用verilog/vhdl写一个fifo控制器(包括空,满,半满信号).(飞利浦-大唐笔试)

77、现有一用户需要一种集成电路产品,要求该产品能够实现如下功

能:y=lnx,其中,x

为4位二进制整数输入信号.y为二进制小数输出,要求保留两位小数.电源电

压为3~5v假

设公司接到该项目后,交由你来负责该产品的设计,试讨论该产品的设计全程.(仕兰微

电子)

78、sram,falsh memory,及dram的区别?(新太硬件面试)

79、给出单管DRAM的原理图(西电版《数字电子技术基础》作者杨颂华、冯毛官205页图9

-14b),问你有什么办法提高refresh time,总共有5个问题,记不起来了.(降低温

度,增大电容存储容量)(Infineon笔试)

80、Please draw schematic of a common SRAM cell with 6 transistors,point out

which nodes can store data and which node is word line control? (威盛笔试题

circuit design-beijing-03.11.09)

81、名词:sram,ssram,sdram

名词IRQ,BIOS,USB,VHDL,SDR

IRQ: Interrupt ReQuest

BIOS: Basic Input Output System

USB: Universal Serial Bus

VHDL: VHIC Hardware Description Language

SDR: Single Data Rate

压控振荡器的英文缩写(VCO).

动态随机存储器的英文缩写(DRAM).

名词解释,无聊的外文缩写罢了,比如PCI、ECC、DDR、interrupt、pipeline、IRQ,BIOS,USB,VHDL,VLSI VCO(压控振荡器) RAM (动态随机存储器),FIR IIR DFT(离散

傅立叶变换)或者是中文的,比如:a.量化误差 b.直方图 c.白平衡

2#大中小 发表于 2009-6-17 21:12 只看该作者

1 什么是Setup 和Holdup时间?

2 什么是竞争与冒险现象?怎样判断?如何消除?

3 用D触发器实现2倍分频的逻辑电路? .......

4 什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求?

5 什么是同步逻辑和异步逻辑?

6 请画出微机接口电路中,典型的输入设备与微机接口逻辑示意图(数据接口、控制接口、所存器/缓冲器)。

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

8 可编程逻辑器件在现代电子设计中越来越重要,请问:你所知道的可编程逻辑器件有哪些?

9 试用VHDL或VERILOG、ABLE描述8位D触发器逻辑。

10 设想你将设计完成一个电子电路方案。请简述用EDA软件(如PROTEL)进行设计(包

括原理图和PCB图)到调试出样机的整个过程。在各环节应注意哪些问题?

11 用逻辑门和cmos电路实现ab+cd

12 用一个二选一mux和一个inv实现异或

13 给了reg的setup,hold时间,求中间组合逻辑的delay范围。

14 如何解决亚稳态

15 用verilog/vhdl写一个fifo控制器

16 用verilog/vddl检测stream中的特定字符串

17 用mos管搭出一个二输入与非门。

18 集成电路前段设计流程,写出相关的工具。

19 名词IRQ,BIOS,USB,VHDL,SDR

20 unix 命令cp -r, rm,uname

21 用波形表示D触发器的功能

22 写异步D触发器的verilog module

23 What is PC Chipset?

24 用传输门和反向器搭一个边沿触发器

25 画状态机,接受1,2,5分钱的卖报机,每份报纸5分钱

=================================================

答案

1 什么是Setup 和Holdup时间?

建立时间(Setup Time)和保持时间(Hold time)。建立时间是指在时钟边沿前,数据信号需要保持不变的时间。保持时间是指时钟跳变边沿后数据信号需要保持不变的时间。见图1。

如果不满足建立和保持时间的话,那么DFF将不能正确地采样到数据,将会出现metastability的情况。

如果数据信号在时钟沿触发前后持续的时间均超过建立和保持时间,那么超过量就分别被称为建立时间裕量和保持时间裕量。

图1 建立时间和保持时间示意图

2什么是竞争与冒险现象?怎样判断?如何消除?

在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争。

产生毛刺叫冒险。

如果布尔式中有相反的信号则可能产生竞争和冒险现象。

解决方法:一是添加布尔式的消去项,二是在芯片外部加电容。

3 用D触发器实现2倍分频的逻辑电路?

Verilog描述:

module divide2( clk , clk_o, reset);

input clk , reset;

output clk_o;

wire in;

reg out ;

always @ ( posedge clk or posedge reset)

if ( reset)

out <= 0;

else

out <= in;

assign in = ~out;

assign clk_o = out;

endmodule

图形描述:

4 什么是"线与"逻辑,要实现它,在硬件特性上有什么具体要求?

线与逻辑是两个输出信号相连可以实现与的功能。在硬件上,要用oc门来实现,由于不用oc门可能使灌电流过大,而烧坏逻辑门。

同时在输出端口应加一个上拉电阻。

5 什么是同步逻辑和异步逻辑?

同步逻辑是时钟之间有固定的因果关系。

异步逻辑是各时钟之间没有固定的因果关系。

6 请画出微机接口电路中,典型的输入设备与微机接口逻辑示意图(数据接口、控制接口、所存器/缓冲器)。

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

12,5,3.3

TTL和CMOS不可以直接互连,由于TTL是在0.3-3.6V之间,而CMOS则是有在12V的有在5V的。CMOS输出接到TTL是可以直接互连。TTL接到CMOS需要在输出端口加一上拉电阻接到5V或者12V。

8 可编程逻辑器件在现代电子设计中越来越重要,请问:你所知道的可编程逻辑器件有哪些?

PAL,PLD,CPLD,FPGA。

9 试用VHDL或VERILOG、ABLE描述8位D触发器逻辑。

module dff8(clk , reset, d, q);

input clk;

input reset;

input [7:0] d;

output [7:0] q;

reg [7:0] q;

always @ (posedge clk or posedge reset)

if(reset)

q <= 0;

else

q <= d;

endmodule

10 设想你将设计完成一个电子电路方案。请简述用EDA软件(如PROTEL)进行设计(包

括原理图和PCB图)到调试出样机的整个过程。在各环节应注意哪些问题? 电源的稳定上,电容的选取上,以及布局的大小。

11 用逻辑门和cmos电路实现ab+cd

12 用一个二选一mux和一个inv实现异或

13 给了reg的setup,hold时间,求中间组合逻辑的delay范围。

Delay < period - setup - hold

14 如何解决亚稳态

亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。在这个稳定期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。

15 用verilog/vhdl写一个fifo控制器

包括空,满,半满信号。

16 用verilog/vddl检测stream中的特定字符串

分状态用状态机写。

17 用mos管搭出一个二输入与非门。

18 集成电路前段设计流程,写出相关的工具。

19 名词IRQ,BIOS,USB,VHDL,SDR

IRQ: Interrupt ReQuest

BIOS: Basic Input Output System

USB: Universal Serial Bus

VHDL: VHIC Hardware Description Language

SDR: Single Data Rate

20 unix 命令cp -r, rm,uname

21 用波形表示D触发器的功能

22 写异步D触发器的verilog module

module dff8(clk , reset, d, q);

input clk;

input reset;

input d;

output q;

reg q;

always @ (posedge clk or posedge reset)

if(reset)

q <= 0;

else

q <= d;

endmodule

23 What is PC Chipset?

芯片组(Chipset)是主板的核心组成部分,按照在主板上的排列位置的不同,通常分为北桥芯片和南桥芯片。北桥芯片提供对CPU的类型和主频、内存的

类型和最大容量、ISA/PCI/AGP插槽、ECC纠错等支持。南桥芯片则提供对KBC(键盘控制器)、RTC(实时时钟控制器)、USB(通用串行总线)、Ultra DMA/33(66)EIDE数据传输方式和ACPI(高级能源管理)等的支持。其中北桥

芯片起着主导性的作用,也称为主桥(Host Bridge)。

除了最通用的南北桥结构外,目前芯片组正向更高级的加速集线架构发展,Intel的8xx系列芯片组就是这类芯片组的代表,它将一些子系统如IDE

接口、音效、MODEM和USB直接接入主芯片,能够提供比PCI总线宽一倍的

带宽,达到了266MB/s。

24 用传输门和反向器搭一个边沿触发器

25 画状态机,接受1,2,5分钱的卖报机,每份报纸5分钱

3#大中小 发表于 2009-6-17 21:12 只看该作者

FPGA面试宝典

这段时间去面试了几家公司,发现比较大的公司相对于重视基础问题。这里边又有几个问题特别的突出。他们是:同步时钟设计、亚稳态、异步FIFO。可以说,这些个问题要是弄清楚了,就至少满足了技术方面1/3的要求,另外的2/3是什么,我就说不清楚了。又有人发了竞争冒险毛刺的问题,不过,对于采用同步设计方法的系统,这些问题一般不会遇到。下面就谈谈我对这些问题的看法,要是你觉得看这些东西觉得类似一堆狗屎,那么恭喜你,你面试成功的机会增加了

1/3;要是你你觉得阿,什么样的牛人拉了一堆牛屎,那么不好意思,还是再去补补课把。这里推荐一本《数字设计——原理和实践》(John F.Wakerly)的书,仔细看一遍吧。

同步时钟设计 简单说就是一个系统中(或系统中的一部分)都采用同一个时钟触发。系统中的(D)触发器全部都连接到一个时钟,而且只控制触发器的同步端(输入,同步置位,同步复位)。这样的系统是相对于异步系统而言的,异步系统并不是不同的触发器时钟端连接到不同的时钟信号的系统(一般的这样叫做跨时钟系统,是相对几个较小的同步系统的组合),而是更本没有了时钟的概念,依靠和触发器构造一样的反馈电路组成。相对于异步系统,同步系统更好设计(异步设计则象一个魔术,类似于汇编和高级语言的关系),更容易进行时序分析(为什么要用D触发器而不用D锁存器)——在这里组合逻辑的竞争冒险毛刺问题都不存在了。应该说,同步系统最大的问题在于时钟的偏斜(skew)。同步时钟系统也存在一些涉及的技巧,这些技巧一般围绕着降低关键路径的延时和时间和空间的平衡。这些都是平衡的艺术(了解了基本的部件之后,剩下的工作就是一个字"平衡"),这里边的方法就太具体,而且本人也知道得不多,不敢乱说了。不过,只要你用过一种方法,就可以体会到其中的精神了。

亚稳态 这是跨时钟设计中最基础的一个问题(宏观的问题是FIFO),按照我的观察,上论坛问问题多的一般不明白这个,请一定要注意了。 什么是亚稳态?数字电路中的简单双稳态电路就是两个反相器首尾相连组成(加一些控制逻辑变成了锁存器,触发器),然而并不像名字显示的,这种电路其实还有第三种半稳定态——就是当两个反相器都处于中间值得情况——这称之为亚稳态。我们知道反相器在非逻辑值范围的反馈系数是相当大的,一旦因为干扰或者噪音离开了这个中心点,就会很快地进入逻辑值范围(稳态)。数学分析,从亚稳态进入稳态,正如放射元素的衰变,是一个指数的规律(为什么是指数的规律?你要是想不明白,说明你还没有搞明白亚稳态)。那么,亚稳态的危害到底是什么呢?消耗功率;),其实不是(虽然亚稳态消耗很大的功率),亚稳态的问题在于其电平并不处于有效逻辑电平范围内,而且在变化。这就导致与其相连其他数字部件将其作出不同的判断(注意,不同),有的作为'1',有的作为'0',有的也进入了亚稳态,数字部件就会逻辑混乱。那么究竟如何避免(或者减小)亚稳态的危险呢?注意到亚稳态的触发器继续停留在亚稳态的几率按照指数减少,那么办法就是等——等足够长的时间,直到这个几率变得小的实际上不会发生。到底需要有多长呢?有的厂商有一个数据,有的没有,按照普通的做法,至少等一个时钟周期——这也就是所谓的异步数据要用两个触发器打一下。这一段有点糊涂,不容易说明白,你看了要是觉得云里雾里,不知所云,那们你只有找一本书学习了;要是觉得作者表达不清,那么恭喜你,面试通过了的几率增加了。关于这个问题有很多糊涂的认识,要是你的主考官和你争论,你就顺着他的意思,毕竟没有人想找一个管教不了的手下。

异步FIFO 异步FIFO是跨时钟域设计方法的集中体现,体现了很多的方法。不

过,其中最重要的有两点,一个就是亚稳态,一个就是和亚稳态类似但不相同的——多个控制/状态信号的跨时钟传递。具体地说,就是当你把一组信号传递到另外一个时钟域的话,这一组信号可能因为延迟不同,这样到达新时钟域之后,得到的数据相差一个老时钟域的时钟周期。兴好,对于FIFO,需要传递的是一个计数器,这个计数器可以编码成格雷码(gray code),这样的编码每次只变化一个位,正好解决了上面的问题(要是没有画过图,最好画一个图看一下)。真不清楚这是怎么发明的!注意,这里其实还对格雷码的相对延迟和相关的时钟周期有一个要求。这就是异步FIFO中最关键的一点,至于指针如何控制,稍微考虑一下都很容易清楚。需要注意的事,这些东西不是用嘴能说清楚的,最好画一个示意图,不要因为没有说清楚,让主考官觉得你没有清楚。

当然,除此之外还有很多很多的东西。比如组合逻辑的设计技巧,俺就没有研究。比如高速布线信号完整性问题,俺也不敢多说。至于整个系统的设计思想,更不敢妄语。不过如果只要你有一个问题了解到了相当的深度,相信你很容易搞清楚其他问题。

UI TOP 4#大中小 发表于 2009-6-17 21:13 只看该作者

4个FPGA工程师面试题目(经历)

FPGA与CPLD内部结构区别? CPLD

以altraMAX7000这种PLD为例,可分为三块结构:宏单元(Marocell),可编程连线(PIA)和I/O控制块。宏单元是PLD的基本结构,由它来实现基本

的逻辑功能。可编程连线负责信号传递,连接所有的宏单元。I/O控制块负责

输入输出的电气特性控制,比如可以设定集电极开路输出,摆率控制,三态输

出等。

这种基于乘积项(实际就是与或阵列)的PLD基本都是由EEPROM和Flash

工艺制造的,一上电就可以工作,无需其他芯片配合。布线方式是全局的,所

以延时可预测。CPLD适合做逻辑设计。

FPGA

FPGA基于LUT,LUT本质上就是一个RAM,每一个LUT可以看成一个有4

位地址线的16x1的RAM。这也是为什么FPGA需要外接一个rom来上电配置。

以xilinx的Spartan-II为例,主要包括CLBs,I/O块,RAM块和可编

程连线。在spartan-II中,一个CLB包括2个Slices,每个slices包括两个LUT,两个触发器和相关逻辑。 Slices可以看成是SpartanII实现逻辑的最基

本结构。

FPGA的制造工艺确定了FPGA芯片中包含的LUT和触发器的数量非常多,往往都是几千上万,PLD一般只能做到512个逻辑单元,而且如果用芯片

价格除以逻辑单元数量,FPGA的平均逻辑单元成本大大低于PLD。 所以如果

设计中使用到大量触发器,例如设计一个复杂的时序逻辑,那么使用FPGA就

是一个很好选择。

https://www.wendangku.net/doc/b02235493.html,tch和Register区别?行为描述中Latch如何产生?

本质的区别在于:latch是电平触发,reg是边沿触发。时序设计中尽量

使用reg触发。

行为描述中,如果对应所有可能输入条件,有的输入没有对应明确的输出,系统会综合出latch。

比如:always@( a or b) //缺少else语句

begin

if(a==1)

q <= b;

end

3.对竞争冒险的理解,以及如何消除?

在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争。产生毛刺叫冒险。如果布尔式中有相反的信号则可能产生竞争和冒险现象。解决方法:一是添加布尔式的消去项,二是在芯片外部加电容。

4.用Verilog设计一个5分频器。

5分频,奇数分频都可以类似这么做,只需要改div1和div2的参数。div1为奇数分频除2的余数。采用上升延和下降延分别触发不同波形,最后叠加的方式产生奇数分频。

module divfreq(clk, clk1x, rst, clk1xpose, clk1xnege, coutpose, coutnege);

input clk;

input rst;

output clk1x;

output clk1xpose;

output clk1xnege;

output[2:0] coutpose;

output[2:0] coutnege;

reg clk1xpose;

reg clk1xnege;

reg[2:0] coutpose;

reg[2:0] coutnege;

parameter div1 = 2 , div2 = 4; // div1 = 5 / 2, div2 = 5 - 1 assign clk1x = clk1xpose | clk1xnege;

always@(posedge clk or negedge rst)

begin

if(!rst)

clk1xpose = 0;

else if(coutpose == div1)

clk1xpose = ~clk1xpose;

else if(coutpose == div2)

clk1xpose = ~clk1xpose;

else

clk1xpose = clk1xpose;

end

always@(negedge clk or negedge rst) begin

if(!rst)

clk1xnege = 0;

else if(coutnege == div1)

clk1xnege = ~clk1xnege;

else if(coutnege == div2)

clk1xnege = ~clk1xnege;

else

clk1xnege = clk1xnege;

end

always@(posedge clk or negedge rst) begin

if(!rst)

coutpose = 0;

else if(coutpose == div2)

coutpose = 0;

else

coutpose = coutpose + 1;

end

always@(negedge clk or negedge rst) begin

if(!rst)

coutnege = 0;

else if(coutnege == div2)

coutnege = 0;

else

coutnege = coutnege + 1;

end

相关文档