《FPGA期末考试题目(共2页).docx》由会员分享,可在线阅读,更多相关《FPGA期末考试题目(共2页).docx(2页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上四、 简答题1简述EDA技术的发展历程? 2什么是EDA技术?3在EDA技术中,什么是自顶向下的设计方法?4自顶向下的设计方法有什么重要意义?5简要说明目前现代数字系统的发展趋势是什么?6简述现代数字系统设计流程。7简述原理图设计法设计流程。8简述原理图设计法设计方法的优缺点。9什么是综合?综合的步骤是什么?10什么是基于平台的设计?现有平台分为哪几个类型?11目前,目前数字专用集成电路的设计主要采用三种方式?各有什么特点?12什么是SOC技术含义是什么?什么是SOPC?13SOPC技术含义是什么?SOPC技术和SOC技术的区别是什么?14SOPC技术是指什么?SOP
2、C的技术优势是什么?15简要说明一下功能仿真和时序仿真的异同。设计过程中如果只做功能仿真,不做时序仿真,设计的正确性是否能得到保证?16综合完成的主要工作是什么?实现(Implement)完成的主要工作是什么?17主要的HDL语言是哪两种?Verilog HDL 语言的特点是什么?18简述阻塞赋值与非阻塞赋值的不同。19简述过程赋值和连续赋值的区别。20什么叫做IP核?IP在设计中的作用是什么?21什么是IP软核,它的特点是什么?22根据有效形式将IP分为哪几类?根据功能方面的划分分为哪两类?23比较基于查找表的FPGA和CPLD系统结构和性能上有何不同?24什么是数据流级建模?什么是行为级建
3、模?25timescale指令的作用是什么。26采用HDL完成设计后,必须应用测试程序(testbench)对设计的正确性进行验证。测27什么是FPGA,CPLD?他们分别是基于什么结构的可编程逻辑结构? 28CPLD是基于什么结构的可编程逻辑器件?其基本结构由哪几部分组成。29FPGA是于什么结构的可编程逻辑器件?其基本结构由哪几部分组成。30PLD器件按照编程方式不同,可以分为哪几类?31解释编程与配置这两个概念。32说明FPGA配置有哪些模式,主动配置和从动配置的主要区别是什么?33为什么在FPGA构成的数字系统中要配备一个PROM或E2PROM?1答:(1)二十世纪70年代,产生了第一
4、代EDA工具。(2)到了80年代,为了适应电子产品在规模和制作上的需要,应运出现了以计算机仿真和自动布线为核心技术的第二代EDA技术。(3)90年代后,随着科学技术的发展,出现了以高级语言描述、系统级仿真和综合技术为特征的第三代EDA技术。2答:EDA技术就是以计算机为工具,设计者在EDA软件平台上,对系统功能进行描述完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。3答:自顶向下首先从系统设计入手,在顶层进行功能划分和结构设计,并在系统级采用仿真手段验证设计的正确性,然后再逐级设计低层的结构,实现
5、从设计、仿真、测试一体化。其方案的验证与设计、电路与PCB设计专用集成电路设计等都由电子系统设计师借助于EDA工具完成。4答:(1)基于PLD硬件和EDA工具支撑;(2)采用逐级仿真技术,以便及早发现问题修改设计方案;(3)基于网上设计技术使全球设计者设计成果共享,设计成果的再利用得到保证。(4)复杂系统的设计规模和效率大幅度提高。(5)在选择器件的类型、规模、硬件结构等方面具有更大的自由度。5答:(1)电子设计最优化(EDO);(2) 在线可“重构”技术。6答:设计准备、设计输入、设计处理、器件编程以及相应的功能仿真、时序仿真和器件测试三个设计验证过程。7答:具体设计流程包括设计输入、功能仿
6、真、综合、综合后仿真、约束设置、实现、布局布线后仿真、生成配置文件与配置FPGA8答:主要优点是容易实现仿真,便于信号的观察和电路的调整。原理图设计方法直观、易学。但当系统功能较复杂时,原理图输入方式效率低,它适应于不太复杂的小系统和复杂系统的综合设计。9答:将硬件描述语言转化成硬件电路的过程叫综合。综合主要有三个步骤:转化,优化,映射。10答:基于平台的设计方法是近几年提出的SOC软硬件协同设计新方法,是基于块的设计BBD方法的延伸,它扩展了设计重用的理念,强调系统级复用,包含了时序驱动的设计和BBD的各种技术,支持软硬件协同设计,提供系统级的算法和结构分析。现有的设计平台分为四类:完整的应
7、用平台;以处理器为中心的平台;以片内通信构造为中心的平台;完整的可编程平台。11答:(1)全定制设计或基于标准单元的设计。所有的工艺掩模都需要从头设计,可以最大限度地实现电路性能的优化。然而,由于其设计周期很长,设计时间和成本非常高,市场风险也非常大。(2)半定制设计或基于标准门阵列的设计。采用标准门阵列进行初步设计,待设计通过验证后,再对各局部功能单元进行优化(3)基于可编程逻辑器件PLD的设计。PLD的设计不需要制作任何掩模,基本不考虑布局布线问题,设计成本低,设计周期短,设计的风险低。12答:SOC就是将微处理器、模拟IP核、数字IP核和存储器(或片外存储控制接口) 、数据通路、与外部系
8、统的数据接口等部件集成在单一芯片上。SOPC就是基于可编程逻辑器件的SOC设计方案13答:SOPC技术是以可编程逻辑器件PLD取代ASIC,更加灵活、高效的技术SOC解决方案。SSOPC与SOC的区别就是FPGA与ASIC的区别。SOPC是SOC发展的新阶段,代表了当今电子设计的发展方向。其基本特征是设计人员采用自顶向下的设计方法,对整个系统进行方案设计和功能划分,最后系统的核心电路在可编程器件上实现。14答:SOPC技术是以可编程逻辑器件PLD取代ASIC,更加灵活、高效的技术SOC解决方案。SOPC的技术优势:(1)运用嵌入的微处理器软核;(2)采用先进的EDA开发工具;(3)由于连接延迟
9、时间的缩短,SOPC可以提供增强的性能,而且由于封装体积的减小,产品尺寸也减小。15答:仿功能仿真用于验证设计的逻辑功能。它是在设计输入完成之后,选择具体器件进行编译之前进行的逻辑功能验证,不包含延时信息。 时序仿真是在选择了具体器件并完成布局、布线之后进行的快速时序检验,并可对设计性能作整体上的分析。由于不同器件的内部延时不一样,不同的布局、布线方案会给延时造成不同的影响。 只做功能仿真,不做时序仿真,设计的正确性是不能得到保证。16答:综合的主要工作将硬件描述语言转化成硬件电路。实现(Implement)是指将综合输出的逻辑网表翻译成所选器件的底层模块与硬件原语,将设计映射到器件结构上,进
10、行布局布线,达到在选定器件上实现设计的目的17答:VHDL和Verilog HDL。Verilog HDL语言允许用户在不同的抽象层次上对电路进行建模,底层描述能力较强。18答:阻塞赋值: =;必须是阻塞赋值完成后,才进行下一条语句的执行;赋值一旦完成,等号左边的变量值立刻发生变化 非阻塞赋值 =,非阻塞赋值在赋值开始时计算表达式右边的值,到了本次仿真周期结束时才更新被赋值变量(即赋值不立刻生效);非阻塞赋值允许块中其他语句的同时执行。在同一个顺序块中,非阻塞赋值表达式的书写顺序,不影响赋值的结果。19答:过程赋值和连续赋值的区别:过程赋值连续赋值无关键字(过程连续赋值除外)关键字assign
11、用“= ”和“=”赋值只能用“=”赋值只能出现initial和always语句中不能出现initial和always语句中用于驱动寄存器用于驱动网线20答:IP是指知识产权芯核。IP核是可以完成特定电路功能的模块,在设计电路时可以将IP核看做黑匣子,只需保证IP模块与外部电路的接口,无需关心其内部操作。利用IP核还可以使设计师不必了解设计芯片所需要的所有技术,降低了芯片设计的技术难度。IP核与工业产品不同,调用IP核能避免重复劳动,大大减轻工程师的负担,且复制IP核是不需要花费任何代价的。21答:软核是以可综合的寄存器传输级(RTL)描述或通用库元件的网表形式提供的可重用的IP模块。特点:软核
12、的使用者要负责实际的实现和布图,它的优势是对工艺技术的适应性很强,方便地移植。由于软核设计以高层次表示,因而软IP易于重定目标和重配置,然而预测软IP的时序、面积与功率诸方面的性能较困难。22答:有效形式分:软核、固核和硬核。功能划分:嵌入式IP核与通用IP模块。23答:FPGA和CPLD系统结构比较:性能指标CPLDFPGA集成规模小(万门)大(百万门)逻辑单元大(PAL结构)小(PROM)结构互连方式集总总线分段总线、专用互连编程工艺EPROM、E2ROM、FLASHSRAM编程类型ROM、信息固定RAM、可实时重构性能:逻辑电路在中小规模范围内,选用CPLD价格较便宜,能直接用于系统。各
13、系统的CPLD器件的逻辑规模覆盖面属中小规模,器件有很宽的可选范围,上市速度快,市场风险小。对于大规模的逻辑电路设计,则多采用FPGA。因为从逻辑规模上讲,FPGA覆盖了大中规模范围。24答:数据流级建模是描述数据在寄存器之间流动和处理的过程。行为级建模在更高层次对系统功能和数据流进行描述。25答:在Verilog HDL 模型中,所有时延都用单位时间表述。使用timescale编译器指令将单位时间与实际时间相关联。用于定义仿真时间、延迟时间的单位和时延精度。26答:(1)产生模拟激励(波形);(2)将模拟的输入激励加入到被测试模块端口并观测其输出响应;(3)将被测模块的输出与期望值进行比较,
14、验证设计的正确与否。27答:FPGA是现场可编程门阵列,CPLD中文全称是复杂可编程逻辑器件。其中CPLD是基于乘积项的可编程逻辑结构,FPGA是基于查找表的可编程逻辑结构。28答:CPLD是基于乘积项的可编程结构,基本构成:逻辑阵列块LAB、宏单元、扩展乘积项、可编程连线阵列、I/O控制器。29答:FPGA是基于SRAM查找表的可编程结构。FPGA的核心部分是逻辑单元阵列LCA,LCA是由内部逻辑块矩阵和周围I/O接口模块组成。LCA内部连线在逻辑块的行列之间,占据逻辑块I/O接口模块之间的通道,可以由可编程开关以任意方式连接形成逻辑单元之间的互连。30答:PLD器件按照编程方式不同,可以分
15、为熔丝(Fuse)或反熔丝开关、浮栅编程技术、SRAM配置存储器31答:基于电可擦除存储单元的EEPROM或Flash 技术的CPLD 的在系统下载称为编程(Program);编程过程就是把编程数据写入E2CMOS单元阵列的过程。而把基于SRAM查找表结构的 FPGA 的在系统下载称为配置(Configure)。32答:分为:从动串行模式、从动并行模式、主动串行、主动并行、JTAG模式。主动配置由可编程器件引导配置过程,从动配置则由外部处理器控制配置过程。33 答: 因为常用 的FPGA的结构是基于SRAM的,掉电后芯片内的 信息将消失,所以配备一个PROM或E2PROM,使得上电后,FPGA
16、的信息由外部加载到芯片中,使得FPGA成为用户需要功能的芯片。七、程序分析与设计1.设计7人投票表决器,当大于等于4票时输出为1,否则为0。2.试描述一个具有循环左移和循环右移功能的8位串入并出移位寄存器。3.试描述一个能实现2倍分频功能的模块。4.?试描述一个异步复位、二十进制的减法计数器。5.试描述一个带进位输入、输出的4位全加器,其中端口:A、B为加数,CIN为进位输入,S为加和,COUT为进位输出。6.试描述一个同步置数、同步清零的8位加法计数器7.分别用持续赋值和阻塞赋值方式描述的2选1多路选择器。8.用阻塞赋值方式描述移位寄存器。9.用for语句实现2个位数相乘。10.试描述83优
17、先编码器。11.试描述一个异步清0、异步置1的D触发器。12.试描述一个4位并串转换器。13.设计一个序列检测器,用于检测串行的二进制序列,每当连续输入三个或三个以上的1时,序列检测器的输出为1,其它情况下输出为0。(1)画出状态图(2)写出实现程序。14.设计一个状态机实现在时钟clk的控制下检测输入的串行数据是否为“110”,画出状态转移图,并写出设计实现程序。要求:当串行数据是“101”时,flag_out =1,否则flag_out =0。15.下图是一个含有下降沿触发的D触发器的时序电路,试写出此电路的VerilogHDL设计程序。16根据以下原理图写出相应的Verilog程序人投票
18、表决器:。module voter7(pass,vote);output pass;input6:0 vote;reg2:0 sum;integer i;reg pass;always(vote)begin sum=0;for(i=0;i4) pass=1; else pass=0;endendmodule2.具有循环左移和循环右移功能的8位串入并出移位寄存器:module shiftreg(clr,clk,din,LorR,dout);input clr,clk,din;input LorR;专心-专注-专业output 7:0dout;reg 7:0 fifo;assign dout=fi
19、fo;always(posedge clk)if(clr) fifo=0;else if(LorR) fifo=fifo6:0,din; else fifo=din,fifo7:1;endmodule倍分频功能的模块: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 c
20、lk_o = out;endmodule4.异步复位、二十进制的减法计数器:module CNT20(CLK, RST, CQ, COUT); input CLK,RST; output4:0 CQ; output COUT; reg4:0 CQI; reg COUT; always (posedge CLK or negedge RST) begin if (!RST)beginCQI=5b0; end else if (CQI=5b0) begin CQI=5b10100;COUT=1b1; end else begin CQI=CQI-1;COUT=1b0; end end assign
21、 CQ=CQI;endmodule5.带进位输入、输出的4位全加器“module adder8(A,B,CIN,S,COUT);input8:0A,B;input CIN;output8:0S;output COUT;assign COUT,S=A+B+CIN;endmodule6.同步置数、同步清零的8位计数器:module count(out,data,load,reset,clk);output7:0 out;input7:0 data;input load,clk,reset;reg7:0 out;always (posedge clk)beginif (!reset) out = 8
22、h00;else if (load) out = data;else out = out + 1;endendmodule选1多路选择器:。持续赋值module MUX21_1(out,a,b,sel);input a,b,sel;output out;assign out=(sel=0)?a:b; endmodule阻塞赋值module MUX21_2(out,a,b,sel);input a,b,sel;output out;reg out;always(a or b or sel) begin if(sel=0) out=a; else out=b; endendmodule8.阻塞赋值
23、方式描述移位寄存器:module block3(Q0,Q1,Q2,Q3,din,clk); output Q0,Q1,Q2,Q3;input clk,din;reg Q0,Q1,Q2,Q3;always (posedge clk) beginQ0=din; 异步清0、异步置1的D触发器:module DFF1(q,qn,d,clk,set,reset);input d,clk,set,reset;output q,qn;reg q,qn;always (posedge clk or negedge set or negedge reset)beginif (!reset) begin q =
24、0; qn = 1; endelse if (!set) begin q = 1; qn = 0; endelse begin q = d; qn = d; endendendmodule位并串转换器:module serial_pal(clk,reset,en,in,out);input clk,reset,en,in;output3:0 out;reg3:0 out;always (posedge clk)beginif(reset) out=4h0;else if(en) out=out,in;endendmodule13.设状态图如下:s0:初始状态,电路还未收到一个有效1 s1:收到
25、一个1后的状态S2:连续收到两个1后的状态 s3:连续收到三个1个后的状态 (2)实现程序module fsm(clk,ina,out);input clk,ina;output out;reg out;parameter s0 = 3bOO,s1 =3b01,s2 =3b10,s3=3b11;reg0:1state;always (posedge clk)beginstate=s0;out =0;case(state)s0:beginstate=(ina)?s1:s0;out=0;ends1:beginstate=(ina)?s2:s0;out=0;ends2:beginstate=(ina
26、)?s3:s0;out=0;ends3:beginstate=(ina)?s3:s0;out=1;endendcaseendendmodule14.状态图如下:程序:module xx(reset,clk,in,flag_out);input in,clk,reset;output flag_out;reg cur_state,next_state;parameter s1=1,s2=2,s3=3;always (posedge clk or posedge reset) if (!reset)cur_state=s1; else cur_state=next_state;always(cur
27、_state)case(cur_state)s1:if(in) next_state=s2;flag_out=0; else next_state=s1;flg_out=0;s2:if(in) next_state=s3;flag_out=0; else next_state=s1;flg_out=0;s3:if(!in) next_state=s1;flag_out=1; else next_state=s1;flg_out=0;endcaseendmodule程序如下:module dtrigger(cl,clk,out1);input cl,clk;output out1;reg d,q,out;always (clk)begind=(cl|q);if(clk=0)q=d;out=q;end assign out1=out;endmodule程序如下:module trig(xin,clk,yout);input xin,clk;output yout;reg d1,d2,q1,q2;always (clk)begind1=q2;d2=xin|q1;if(clk=1)q1=d1;endalways (posedge clk)beginq2=d2;endassign yout=q2;endmodule