FPGA工程师面试试题.docx

FPGA工程师面试试题.docx

ID:57277837

大小:12.07 KB

页数:3页

时间:2020-08-08

FPGA工程师面试试题.docx_第1页
FPGA工程师面试试题.docx_第2页
FPGA工程师面试试题.docx_第3页
资源描述:

《FPGA工程师面试试题.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、4个FPGA工程师面试题目(经历)  1.FPGA与CPLD内部结构区别?      CPLD     以altraMAX7000这种PLD为例,可分为三块结构:宏单元(Marocell),可编程连线(PIA)和I/O控制块。宏单元是PLD的基本结构,由它来实现基本的逻辑功能。可编程连线负责信号传递,连接所有的宏单元。I/O控制块负责输入输出的电气特性控制,比如可以设定集电极开路输出,摆率控制,三态输出等。     这种基于乘积项(实际就是与或阵列)的PLD基本都是由EEPROM和Flash工艺制造的,一上电就可以工作,无

2、需其他芯片配合。布线方式是全局的,所以延时可预测。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实现逻辑的最基本结

3、构。      FPGA的制造工艺确定了FPGA芯片中包含的LUT和触发器的数量非常多,往往都是几千上万,PLD一般只能做到512个逻辑单元,而且如果用芯片价格除以逻辑单元数量,FPGA的平均逻辑单元成本大大低于PLD。所以如果设计中使用到大量触发器,例如设计一个复杂的时序逻辑,那么使用FPGA就是一个很好选择。2.Latch和Register区别?行为描述中Latch如何产生?   本质的区别在于:latch是电平触发,reg是边沿触发。时序设计中尽量使用reg触发。行为描述中,如果对应所有可能输入条件,有的输入没有对应

4、明确的输出,系统会综合出latch。比如:always@(aorb) //缺少else语句       begin          if(a==1)            q<=b;        end  3.对竞争冒险的理解,以及如何消除?    在组合逻辑中,由于门的输入信号通路中经过了不同的延时,导致到达该门的时间不一致叫竞争。产生毛刺叫冒险。如果布尔式中有相反的信号则可能产生竞争和冒险现象。解决方法:一是添加布尔式的消去项,二是在芯片外部加电容。4.用Verilog设计一个5分频器。      5分频,奇数分频

5、都可以类似这么做,只需要改div1和div2的参数。div1为奇数分频除2的余数。采用上升延和下降延分别触发不同波形,最后叠加的方式产生奇数分频。moduledivfreq(clk,clk1x,rst,clk1xpose,clk1xnege,coutpose,coutnege);inputclk;inputrst;outputclk1x;outputclk1xpose;outputclk1xnege;output[2:0]coutpose;output[2:0]coutnege;regclk1xpose;regclk1xn

6、ege;reg[2:0]coutpose;reg[2:0]coutnege;parameterdiv1=2,div2=4; //div1=5/2,div2=5-1assignclk1x=clk1xpose

7、clk1xnege;always@(posedgeclkornegedgerst) begin if(!rst)     clk1xpose=0;  elseif(coutpose==div1)   clk1xpose=~clk1xpose; elseif(coutpose==div2)   clk1xpose=~clk

8、1xpose; else    clk1xpose=clk1xpose; endalways@(negedgeclkornegedgerst) begin if(!rst)     clk1xnege=0;  elseif(coutnege==div1)  clk1xnege=~clk1xnege; elseif(coutnege==div2)  clk1xnege=~clk1xnege; else   clk1xnege=clk1xnege; endalways@(posedgeclkornegedgerst) begi

9、n if(!rst)  coutpose=0; elseif(coutpose==div2)  coutpose=0; else  coutpose=coutpose+1; endalways@(negedgeclkornegedgerst) begin if(!rst)  coutnege=0; el

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。