FPGA习题集及参考答案讲解_第1页
FPGA习题集及参考答案讲解_第2页
FPGA习题集及参考答案讲解_第3页
FPGA习题集及参考答案讲解_第4页
FPGA习题集及参考答案讲解_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

习题集及参考答案填空题一般把EDA技术的发展分为()个阶段。FPGA/CPLD有如下设计步骤:=1\*GB3①原理图/HDL文本输入、=2\*GB3②适配、=3\*GB3③功能仿真、=4\*GB3④综合、=5\*GB3⑤编程下载、=6\*GB3⑥硬件测试,正确的设计顺序是=1\*GB3①()=5\*GB3⑤=6\*GB3⑥。在EDA工具中,能完成在目标系统器件上布局布线的软件称为()。设计输入完成之后,应立即对文件进行()。基于硬件描述语言的数字系统设计目前最常用的设计方法称为()设计法。将硬件描述语言转化为硬件电路的过程称为()。IP核在EDA技术和开发中具有十分重要的地位,以HDL方式提供的IP被称为()IP。SOC系统又称为()系统。SOPC系统又称为()系统。将硬核和固核作为()IP核,而软核作为()IP核。IP核在EDA技术和开发中具有十分重要的地位,以HDL方式提供的IP被称为()。HDL综合器就是逻辑综合的过程,把可综合的VHDL/VerilogHDL转化成硬件电路时,包含了三个过程,分别是()、()、()。EDA软件工具大致可以由五个模块构成,分别是设计输入编辑器、()、()、()和()。按仿真电路描述级别的不同,HDL仿真器分为()仿真、()仿真、()仿真和门级仿真。系统仿真分为()、()和()。()仿真是对设计输入的规范检测,这种仿真通过只能表示编译通过,说明设计满足一定的语法规范,但不能保证设计功能满足期望。()仿真是对综合后的网表进行的仿真,它验证设计模块的基本逻辑功能,但不带有布局布线后产生的时序信息,是理想情况下的验证。()仿真是布局布线后进行的后仿真,仿真时考虑了布线延时,和芯片实际的工作情况更加接近。目前Xilinx公司生产的FPGA主要采用了()配置存储器结构。描述测试信号的变化和测试工程的模块叫做()。现代电子系统设计领域中的EDA采用()的设计方法。有限状态机可分为()状态机和()状态机两类。VerilogHDL中的端口类型有三类:()、()、输入/输出端口。VerilogHDL常用两大数据类型:()、()。FPGA/CPLD设计流程为:原理图/HDL文本输入→()→综合→适配→()→编程下载→硬件测试。()是描述数据在寄存器之间流动和处理的过程。连续赋值常用于数据流行为建模,常以()为关键词。VerilogHDL有两种过程赋值方式:()和()。`timescale1ns/100ps中1ns代表(),100ps代表()。未来的集成电路技术的发展趋势,把整上系统集成在一个芯片上去,这种芯片被称为()。从互连结构上可将PLD分为确定型和统计型两类。确定型结构的代表是(),统计型结构代表是()。CPLD是由()的结构演变而来的。FPGA的核心部分是(),由内部逻辑块矩阵和周围I/O接口模块组成。把基于电可擦除存储单元的EEPROM或Flash技术的HYPERLINKCPLD的在系统下载称为(),这个过程就是把编程数据写入E2CMOS单元阵列的过程。根据配置数据线数,器件配置可分为并行配置和串行配置两类。串行配置以()为单位将配置数据载人可编程器件:而并行配置一般以()为单位向可编程器件载入配置数据。FPGA的配置模式有从动串行模式、从动并行模式、主动串行模式、主动并行模式、以及()模式。可编程逻辑器件的配置方式分为()和()两类。VerilogHDL是在()年正式推出的。在verilogHDL的always块本身是()语句。VerilogHDL中的always语句中的语句是()语句。VerilogHDL提供了标准的系统任务,用于常用的操作。如显示、文件输入/输出等,系统函数前都有一个标志符()加以确认。VerilogHDL很好地支持了“自顶向下”的设计理念,即,复杂任务分解成的小模块完成后,可以通过()的方式,将系统组装起来。VerilogHDL模块分为两种类型:一种是()模块,即,描述某种电路系统结构,功能,以综合或者提供仿真模型为设计目的;另一种是()模块,即,为功能模块的测试提供信号源激励、输出数据监测。Verilog语言中,标识符可以是任意一组字母、数字、()符号和下划线符号的组合。state,State,这两个标识符是()同。assignc=a>b?a:b中,若a=3,b=2,则c=();若a=2,b=3,则c=()。在VerilogHDL的逻辑运算中,设A=4′b1010,则表达式~A的结果为()在VerilogHDL的逻辑运算中,设a=2,b=0,则a&&b结果为(),a||b结果为()。在VerilogHDL的逻辑运算中,设a=4′b1010,a>>1结果是()。EDA名词解释ASIC,2.CPLD,3.FPGA,4.IC,5.LUT.6.PCB.7.RTL,8.FSM,9.GAL,10.ISP,11.JATG,12.PBD,13.BBD选择题任VerilogHDL的端口声明语句中,用()关键字声明端口为双向端口A:inoutB:INOUTC:BUFFERD:buffer用VerilogHDL的assign语句建模的方法一般称为()方法。A:连续赋值B:并行赋值C:串行赋值D:函数赋值IP核在EDA技术和开发中具有十分重要的地位,IP是指()。A:知识产权B:互联网协议C:网络地址D:都不是在verilogHDL的always块本身是()语句A:顺序B:并行C:顺序或并行D:串行)大规模可编程器件主要有FPGA、CPLD两类,下列对FPGA结构与工作原理的描述中,正确的是()。A:FPGA是基于乘积项结构的可编程逻辑器件;B:FPGA是全称为复杂可编程逻辑器件;C:基于SRAM的FPGA器件,在每次上电后必须进行一次配置;D:在Altera公司生产的器件中,MAX7000系列属FPGA结构。下列EDA软件中,哪一个不具有逻辑综合功能:()。A:ISEB:ModelSimC:QuartusIID:Synplify下列标识符中,()是不合法的标识符。A:State0 B:9moon C:Not_Ack_0 D:signal@关于VerilogHDL中的数字,请找出以下数字中最大的一个:()。A:8′b1111_1110B:3′o276C:3′d170D:2′h3E大规模可编程器件主要有FPGA、CPLD两类,下列对CPLD结构与工作原理的描述中,正确的是()。

A:CPLD是基于查找表结构的可编程逻辑器件;B:CPLD即是现场可编程逻辑器件的英文简称;C:早期的CPLD是从GAL的结构扩展而来;D:在Xilinx公司生产的器件中,XC9500系列属CPLD结构;IP核在EDA技术和开发中具有十分重要的地位;提供用VHDL等硬件描述语言描述的功能块,但不涉及实现该功能块的具体电路的IP核为()。A:瘦IPB:固IPC:胖IPD:都不是不完整的IF语句,其综合结果可实现()。A:时序逻辑电路 B:组合逻辑电路C:双向电路D:三态控制电路CPLD的可编程是主要基于什么结构()。A:查找表(LUT)C:PAL可编程B:ROM可编程D:与或阵列可编程IP核在EDA技术和开发中具有十分重要的地位,以HDL方式提供的IP被称为:()A:硬IPB:固IPC:软IPD:都不是;设a=4′b1010,b=4′b0001,c=4′b1xz0则下列式子的值为1的是()A:a>bB:a<=cC:13-a<bd:13–(a>b)设a=2,b=0,则下列式子中等于X的是()。A:a&&bB:a||bC:!aD:x&&aFPGA可编程逻辑基于的可编程结构基于()。A:LUT结构B:乘积项结构C:PLDD:都不对CPLD可编程逻辑基于的可编程结构基于()。A:LUT结构B:乘积项结构C:PLDD:都不对下列运算符优先级最高的是()。A:!B:+C:&D:{}设a=1′b1,b=3′b101,c=4′b1010则X={a,b,c}的值的等于()将设计的系统按照EDA开发软件要求的某种形式表示出来,并送入计算机的过程,称为()。A:设计的输入B:设计的输出C:仿真D:综合一般把EDA技术的发展分为()个阶段。A:2B:3C:4D:5设计输入完成之后,应立即对文件进行()。A:编译B:编辑C:功能仿真D:时序仿真VHDL是在()年正式推出的。A:1983B:1985C:1987D:1989VerilogHDL是在()年正式推出的。A:1983B:1985C:1987D:1989基于硬件描述语言的数字系统设计目前最常用的设计方法称为()设计法。A:自底向上B:自顶向下C:积木式D:顶层在EDA工具中,能将硬件描述语言转化为硬件电路的重要工具软件为()。A:仿真器B:综合器C:适配器D:下载器在EDA工具中,能完成在目标系统器件上布局布线的软件称为()。A:仿真器B:综合器C:适配器D:下载器逻辑器件()属于非用户定制电路。A:逻辑门B:PROMC:PLAD:GAL可编程逻辑器件PLD属于()电路。A:半用户定制B:全用户定制C:自动生成D:非用户定制不属于PLD基本结构部分的是()。A:与门阵列B:输入缓存C:与非门阵列D:或门阵列任VerilogHDL的标识符使用字母的规则是()。A:大小写相同B:大小写不同C:只允许大写D:只允许小写操作符是VerilogHDL预定义的函数命名,操作符是由()字符组成的。A:1B:2C:3D:1~3在VerilogHDL模块中,task语句类似高级语言中的()。A:函数B:常数C:变量D:子程序在VerilogHDL模块中,函数调用时返回一个用于()的值。A:表达式B:输出C:输入D:程序包VerilogHDL中的always语句中的语句是()语句。A:串行B:顺序C:并行D:顺序或并行嵌套的if语句,其综合结果可实现()。A:条件相与的逻辑B:条件相或的逻辑C:条件相异或的逻辑D:三态控制电路嵌套的使用if语句,其综合结果可实现()。A:带优先级且条件相与的逻辑电路B:双向控制电路C:三态控制电路D:条件相异或的逻辑电路下列哪个FPGA/CPLD设计流程是正确的()。A:原理图/HDL文本输入->功能仿真->综合->适配->编程下载->硬件测试B:原理图/HDL文本输入->适配->综合->功能仿真->编程下载->硬件测试C:原理图/HDL文本输入->功能仿真->综合->编程下载->适配->硬件测试D:原理图/HDL文本输入->适配->功能仿真->综合->编程下载->硬件测试简答题简述EDA技术的发展历程?什么是EDA技术?在EDA技术中,什么是自顶向下的设计方法?自顶向下的设计方法有什么重要意义?简要说明目前现代数字系统的发展趋势是什么?简述现代数字系统设计流程。简述原理图设计法设计流程。简述原理图设计法设计方法的优缺点。什么是综合?综合的步骤是什么?什么是基于平台的设计?现有平台分为哪几个类型?目前,目前数字专用集成电路的设计主要采用三种方式?各有什么特点?什么是SOC技术含义是什么?什么是SOPC?SOPC技术含义是什么?SOPC技术和SOC技术的区别是什么?SOPC技术是指什么?SOPC的技术优势是什么?简要说明一下功能仿真和时序仿真的异同。设计过程中如果只做功能仿真,不做时序仿真,设计的正确性是否能得到保证?综合完成的主要工作是什么?实现(Implement)完成的主要工作是什么?主要的HDL语言是哪两种?VerilogHDL语言的特点是什么?简述阻塞赋值与非阻塞赋值的不同。简述过程赋值和连续赋值的区别。什么叫做IP核?IP在设计中的作用是什么?什么是IP软核,它的特点是什么?根据有效形式将IP分为哪几类?根据功能方面的划分分为哪两类?比较基于查找表的FPGA和CPLD系统结构和性能上有何不同?什么是数据流级建模?什么是行为级建模?timescale指令的作用是什么。采用HDL完成设计后,必须应用测试程序(testbench)对设计的正确性进行验证。测什么是FPGA,CPLD?他们分别是基于什么结构的可编程逻辑结构?CPLD是基于什么结构的可编程逻辑器件?其基本结构由哪几部分组成。FPGA是于什么结构的可编程逻辑器件?其基本结构由哪几部分组成。PLD器件按照编程方式不同,可以分为哪几类?解释编程与配置这两个概念。说明FPGA配置有哪些模式,主动配置和从动配置的主要区别是什么?为什么在FPGA构成的数字系统中要配备一个PROM或E2PROM?程序补充完整下面程序是一个3-8译码器的VerilogHDL描述,试补充完整。空(1)decoder_38(out,in)output[7:0]out;input[2:0]in;reg[7:0]out空(2)@(in)begin空(3)(in)3′d7:out=8′b01111111;endcase空(4)空(5)下面程序4位计数器的VerilogHDL描述,试补充完整。空(1)count4(out,reset,clk)output[3:0]out;空(2)reset,clk;reg[3:0]out;空(3)@(posedgeclk) 空(4) if(reset)out<=0; else out<=out+1;end空(5)下面程序描述一个时钟上升沿触发、同步复位的D触发器,试补充完整。空(1)dflop(d,reset,clk,q);inputd,clk;inputreset;空(2)q;regq;空(3)(posedgeclk)if(reset) q<=0;elseq<=空(4);空(5)用下面测试平台对mux21u1二选一选择器进行测试,试补充完整。空(1)1ns/100psModule空(2);regA,B;regSEL;wireC;mux21u1(.a(A),.b(B),.sel(SEL),.c(C));空(3)beginA=0;B=0;SEL=0;#10beginA=1;B=0;SEL=0;end#10beginA=0;B=0;SEL=1;end#10$空(4);end空(5)clock1是周期为20的时钟,clock_pshift是clock1相移,试补充完整。空(1)Gen_clock1(clock_pshift,clock1);outputclock_pshift,clock1;regclock1;wireclock_pshift;空(2)T=20;parameterpshift=2;空(3)clock1=0;always#(T/2)clock1=~clock1;空(4)#PSHIFTclock_pshift=clock1;空(5)下面程序描述了8位移位寄存器,试补充完整。空(1)shifter(空(2),clr,dout);inputdin,clk,clr;output空(3)dout;reg[7:0]dout;always@(posedgeclk)beginif(空(4))dout<=8'b0;elsebegindout<=dout<<1;dout[0]<=din;end空(5)endmodule下面程序描述了一个数据选择器MUX,试补充完整。空(1)mux(data_in1,data_in2,sel,data_out);inputdata_in1,data_in2;input[1:0]sel;outputdata_out;always@(空(2))begincase(空(3))2′b00:data_out<=data_in1^data_in2;2′b01:data_out<=data_in1|data_in2;2′b10:data_out<=data_in1~^data_in2;2′b11:data_out<=~data_in1;空(4):data_out<=2′bxx;endcaseend空(5)下面程序描述了一个返回两个数中的最大值的函数。试补充完整。空(1)[3:0]max;空(2)[3:0]a,b;beginif(空(3))max=a;elsemax=b;空(4)空(5)程序改错下面的中有5处错误,试找出错误并修改正确。第1行moduledivide2(clk,clk_o,reset)第2行input????clk,reset;第3行output

clk_o;

第4行wirein;

第5行wireout;

第6行always(posedgeclkorposedgereset)

第7行if(reset)

第8行

out<=0;

第9行

else

第10行out<=in;

第11行

assignin<=~out;

第12行assignclk_o=out;下面的中有5处错误,试找出错误并修改正确。第1行moduledff8(reset,d,q);

第2行input

clk;

第3行input

reset;

第4行input[7:0]

d;

第5行outputq;

第6行reg[7:0]q;

第7行initial@(posedgeclk)

第8行

if(reset)

第9行

q<=0;

第10行else

第11行

q<=d;

第12行endmodule;下面的中有5处错误,试找出错误并修改正确。第1行moduledecode4_7(decodeout,indec)第2行output[6:0]decodeout;第3行input[3:0]indec;第4行reg[6:0]decodeout;第5行always@(indec)第6行begin第7行 case第8行 4´d1:decodeout=7´b1111110;第9行4´d1:decodeout=7´b0110000;第10行4´d2:decodeout=7´b1101101;第11行4´d3:decodeout=7´b1111001;第12行4´d4:decodeout=7´b0110011;第13行4´d5:decodeout=7´b1011011;第14行4´d6:decodeout=7´b1011111;第15行4´d7:decodeout=7´b1110000;第16行4´d8:decodeout=7´b1111111;第17行4´d9:decodeout=7´b1111011;第18行endcase第19行end下面的中有5处错误,试找出错误并修改正确。第1行timescale10ns/1ns第2行modulewave2;第3行regwave;第4行cycle=5;第5行always第6行fork第7行wave=0;第8行#(cycle)wave=1;第9行#(2*cycle)wave=0;第10行#(3*cycle)wave=1;第11行#(4*cycle)wave=0;第12行#(5*cycle)$finish;第13行endmodule;下面的中有5处错误,试找出错误并修改正确。第1行modulealutast(code,a,b,c)第2行input[1:0]code;第3行input[3:0]a,b;第4行output[4:0]c;第5行reg[4:0]c;第6行taskmy_and;第7行input[3:0]a,b;第7行output[4:0]out;第8行intergeri;第9行for(i=3;i>=0;i=i-1)第10行out[i]=a[i]&b[i];第11行end第12行always@(codeoraorb)第13行begin第14行 case(code)第15行 2’b00:my_hand(a,b,c);第16行2’b01:c=a|b;第17行 2’b10:c=a-b;第18行 2’b11:c=a+b;第19行end第20行endmodule;下面的中有5处错误,试找出错误并修改正确。modulemux4_1(out,in0,in1,in2,in3,sel);inputout;inputin0,in1,in2,in3;inputsel;regout;always@()case(sel)2'b01: out=in0;2'b01: out=in1;2'b10: out=in2;2'b11: out=in3;default:out=2'bx;endmodule下面的中有5处错误,试找出错误并修改正确。moduleencoder8_3(none_on,outcode,a,b,c,d,e,f,g,h);outputnone_on;output[3:0]outcode;inputa,b,c,d,e,f,g,h;reg[3:0]outtemp;assign{none_on,outcode}=outtemp;always(aorborcordoreorforgorh)if(h) outtemp=4'b0111;elseif(g) outtemp=4'b0110;elseif(f) outtemp=4'b0101;elseif(e) outtemp=4'b0100;elseif(d) outtemp=4'b0011;elseif(c) outtemp=4'b0010;elseif(b) outtemp=4'b0001;elseif(a) outtemp=4'b0000;elseif outtemp=4'b1000;endendmodule下面的中有5处错误,试找出错误并修改正确。moduleshifter();inputdin,clk,clr;output[7:0]dout;reg[7:0]dout;alway@(posedgeclk)if(clr)dout=8'b0;elsebegindout<=dout<<1;dout[0]<=din;endendmodule程序分析与设计设计7人投票表决器,当大于等于4票时输出为1,否则为0。试描述一个具有循环左移和循环右移功能的8位串入并出移位寄存器。试描述一个能实现2倍分频功能的模块。

试描述一个异步复位、二十进制的减法计数器。 试描述一个带进位输入、输出的4位全加器,其中端口:A、B为加数,CIN为进位输入,S为加和,COUT为进位输出。试描述一个同步置数、同步清零的8位加法计数器分别用持续赋值和阻塞赋值方式描述的2选1多路选择器。用阻塞赋值方式描述移位寄存器。用for语句实现2个位数相乘。试描述8-3优先编码器。试描述一个异步清0、异步置1的D触发器。试描述一个4位并串转换器。设计一个序列检测器,用于检测串行的二进制序列,每当连续输入三个或三个以上的1时,序列检测器的输出为1,其它情况下输出为0。(1)画出状态图(2)写出实现程序。设计一个状态机实现在时钟clk的控制下检测输入的串行数据是否为“110”,画出状态转移图,并写出设计实现程序。要求:当串行数据是“101”时,flag_out=1,否则flag_out=0。下图是一个含有下降沿触发的D触发器的时序电路,试写出此电路的VerilogHDL设计程序。根据以下原理图写出相应的Verilog程序。□习题集解答填空题1.(3)2.(=3\*GB3③=4\*GB3④=2\*GB3②)3.(适配器)4.(编译)5.(自顶向下)6.(综合)7.(软)8.(片上系统)、(可编程片上系统)9.(硬)、(软)10.(软IP)11.(转化)、(优化)、(映射)12.(HDL综合器)、(仿真器)、(适配器或布局、布线器)、(下载器)13.(系统级)、(行为级)、(RTL级)14.(行为仿真)、(功能仿真)、(时序仿真)15.(行为)16.(功能)17.(时序)18.(SRAM)19.(测试平台testbench)20.(自顶向下)21.(Mealy)、(Moore)22.(输入端口)、(输出端口)23.(线网类型)、(寄存器类型)24.(功能仿真)、(时序仿真)25.(数据流级建模)26.(assign)27.(阻塞赋值)、(非阻塞赋值)28.(时间单位)、(时间精度)29.(片上系统SOC)30.(CPLD、(FPGA)31.(简单PLD)32.(逻辑单元阵列LCA)33.(编程)34.(Bit比特)、(Byte字节)35.(JTAG)36.(主动配置)、(从动配置)37.(1983)38.(并行)39.(顺序)40.($)41.(调用(也称例化))42.(功能)、(测试)43.($)44.(不同)45.(3)、(3)46.(8'b0101)47.(0)、(1)48.(4´b0101)EDA名词解释ApplicationSpecificIntegratedCircuit,专用集成电路ComplexProgrammableLogicDevice复杂可编程逻辑块FiledProgrammableGateArray现场可编程门阵列integratedcircuit集成电路lookuptable查找表PrintedCircuitBoard印制电路板RegisterTransferLevel寄存器传输级FiniteStateMachine有限状态机GenericArrayLogic可编程通用阵列逻辑在系统编程边界扫描测试是一种可测试结构技术Platform-BasedDesign基于平台的设计方法Block-Baseddesign基于块的设计选择题1-5AAABA6-10CBBAD11-15DADCA16-20DABAD21-25ABABA26-30BBCAA31-35CBDDA36-39BAAA简答题答:(1)二十世纪70年代,产生了第一代EDA工具。(2)到了80年代,为了适应电子产品在规模和制作上的需要,应运出现了以计算机仿真和自动布线为核心技术的第二代EDA技术。(3)90年代后,随着科学技术的发展,出现了以高级语言描述、系统级仿真和综合技术为特征的第三代EDA技术。答:EDA技术就是以计算机为工具,设计者在EDA软件平台上,对系统功能进行描述完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。答:自顶向下首先从系统设计入手,在顶层进行功能划分和结构设计,并在系统级采用仿真手段验证设计的正确性,然后再逐级设计低层的结构,实现从设计、仿真、测试一体化。其方案的验证与设计、电路与PCB设计专用集成电路设计等都由电子系统设计师借助于EDA工具完成。答:(1)基于PLD硬件和EDA工具支撑;(2)采用逐级仿真技术,以便及早发现问题修改设计方案;(3)基于网上设计技术使全球设计者设计成果共享,设计成果的再利用得到保证。(4)复杂系统的设计规模和效率大幅度提高。(5)在选择器件的类型、规模、硬件结构等方面具有更大的自由度。答:(1)电子设计最优化(EDO);(2)在线可“重构”技术。答:设计准备、设计输入、设计处理、器件编程以及相应的功能仿真、时序仿真和器件测试三个设计验证过程。答:具体设计流程包括设计输入、功能仿真、综合、综合后仿真、约束设置、实现、布局布线后仿真、生成配置文件与配置FPGA答:主要优点是容易实现仿真,便于信号的观察和电路的调整。原理图设计方法直观、易学。但当系统功能较复杂时,原理图输入方式效率低,它适应于不太复杂的小系统和复杂系统的综合设计。答:将硬件描述语言转化成硬件电路的过程叫综合。综合主要有三个步骤:转化,优化,映射。答:基于平台的设计方法是近几年提出的SOC软硬件协同设计新方法,是基于块的设计BBD方法的延伸,它扩展了设计重用的理念,强调系统级复用,包含了时序驱动的设计和BBD的各种技术,支持软硬件协同设计,提供系统级的算法和结构分析。现有的设计平台分为四类:完整的应用平台;以处理器为中心的平台;以片内通信构造为中心的平台;完整的可编程平台。答:(1)全定制设计或基于标准单元的设计。所有的工艺掩模都需要从头设计,可以最大限度地实现电路性能的优化。然而,由于其设计周期很长,设计时间和成本非常高,市场风险也非常大。(2)半定制设计或基于标准门阵列的设计。采用标准门阵列进行初步设计,待设计通过验证后,再对各局部功能单元进行优化(3)基于可编程逻辑器件PLD的设计。PLD的设计不需要制作任何掩模,基本不考虑布局布线问题,设计成本低,设计周期短,设计的风险低。答:SOC就是将微处理器、模拟IP核、数字IP核和存储器(或片外存储控制接口)、数据通路、与外部系统的数据接口等部件集成在单一芯片上。SOPC就是基于可编程逻辑器件的SOC设计方案答:SOPC技术是以可编程逻辑器件PLD取代ASIC,更加灵活、高效的技术SOC解决方案。SSOPC与SOC的区别就是FPGA与ASIC的区别。SOPC是SOC发展的新阶段,代表了当今电子设计的发展方向。其基本特征是设计人员采用自顶向下的设计方法,对整个系统进行方案设计和功能划分,最后系统的核心电路在可编程器件上实现。答:SOPC技术是以可编程逻辑器件PLD取代ASIC,更加灵活、高效的技术SOC解决方案。SOPC的技术优势:(1)运用嵌入的微处理器软核;(2)采用先进的EDA开发工具;(3)由于连接延迟时间的缩短,SOPC可以提供增强的性能,而且由于封装体积的减小,产品尺寸也减小。答:仿功能仿真用于验证设计的逻辑功能。它是在设计输入完成之后,选择具体器件进行编译之前进行的逻辑功能验证,不包含延时信息。时序仿真是在选择了具体器件并完成布局、布线之后进行的快速时序检验,并可对设计性能作整体上的分析。由于不同器件的内部延时不一样,不同的布局、布线方案会给延时造成不同的影响。只做功能仿真,不做时序仿真,设计的正确性是不能得到保证。答:综合的主要工作将硬件描述语言转化成硬件电路。实现(Implement)是指将综合输出的逻辑网表翻译成所选器件的底层模块与硬件原语,将设计映射到器件结构上,进行布局布线,达到在选定器件上实现设计的目的答:VHDL和VerilogHDL。VerilogHDL语言允许用户在不同的抽象层次上对电路进行建模,底层描述能力较强。答:阻塞赋值:=;必须是阻塞赋值完成后,才进行下一条语句的执行;赋值一旦完成,等号左边的变量值立刻发生变化非阻塞赋值<=,非阻塞赋值在赋值开始时计算表达式右边的值,到了本次仿真周期结束时才更新被赋值变量(即赋值不立刻生效);非阻塞赋值允许块中其他语句的同时执行。在同一个顺序块中,非阻塞赋值表达式的书写顺序,不影响赋值的结果。答:过程赋值和连续赋值的区别:过程赋值连续赋值无关键字(过程连续赋值除外)关键字assign用“=”和“<=”赋值只能用“=”赋值只能出现initial和always语句中不能出现initial和always语句中用于驱动寄存器用于驱动网线答:IP是指知识产权芯核。IP核是可以完成特定电路功能的模块,在设计电路时可以将IP核看做黑匣子,只需保证IP模块与外部电路的接口,无需关心其内部操作。利用IP核还可以使设计师不必了解设计芯片所需要的所有技术,降低了芯片设计的技术难度。IP核与工业产品不同,调用IP核能避免重复劳动,大大减轻工程师的负担,且复制IP核是不需要花费任何代价的。答:软核是以可综合的寄存器传输级(RTL)描述或通用库元件的网表形式提供的可重用的IP模块。特点:软核的使用者要负责实际的实现和布图,它的优势是对工艺技术的适应性很强,方便地移植。由于软核设计以高层次表示,因而软IP易于重定目标和重配置,然而预测软IP的时序、面积与功率诸方面的性能较困难。答:有效形式分:软核、固核和硬核。功能划分:嵌入式IP核与通用IP模块。答:FPGA和CPLD系统结构比较:性能指标CPLDFPGA集成规模小(万门)大(百万门)逻辑单元大(PAL结构)小(PROM)结构互连方式集总总线分段总线、专用互连编程工艺EPROM、E2ROM、FLASHSRAM编程类型ROM、信息固定RAM、可实时重构性能:逻辑电路在中小规模范围内,选用CPLD价格较便宜,能直接用于系统。各系统的CPLD器件的逻辑规模覆盖面属中小规模,器件有很宽的可选范围,上市速度快,市场风险小。对于大规模的逻辑电路设计,则多采用FPGA。因为从逻辑规模上讲,FPGA覆盖了大中规模范围。答:数据流级建模是描述数据在寄存器之间流动和处理的过程。行为级建模在更高层次对系统功能和数据流进行描述。答:在VerilogHDL模型中,所有时延都用单位时间表述。使用`timescale编译器指令将单位时间与实际时间相关联。用于定义仿真时间、延迟时间的单位和时延精度。答:(1)产生模拟激励(波形);(2)将模拟的输入激励加入到被测试模块端口并观测其输出响应;(3)将被测模块的输出与期望值进行比较,验证设计的正确与否。答:FPGA是现场可编程门阵列,CPLD中文全称是复杂可编程逻辑器件。其中CPLD是基于乘积项的可编程逻辑结构,FPGA是基于查找表的可编程逻辑结构。答:CPLD是基于乘积项的可编程结构,基本构成:逻辑阵列块LAB、宏单元、扩展乘积项、可编程连线阵列、I/O控制器。答:FPGA是基于SRAM查找表的可编程结构。FPGA的核心部分是逻辑单元阵列LCA,LCA是由内部逻辑块矩阵和周围I/O接口模块组成。LCA内部连线在逻辑块的行列之间,占据逻辑块I/O接口模块之间的通道,可以由可编程开关以任意方式连接形成逻辑单元之间的互连。答:PLD器件按照编程方式不同,可以分为熔丝(Fuse)或反熔丝开关、浮栅编程技术、SRAM配置存储器答:基于电可擦除存储单元的EEPROM或Flash技术的HYPERLINKCPLD的在系统下载称为编程(Program);编程过程就是把编程数据写入E2CMOS单元阵列的过程。而把基于SRAM查找表结构的FPGA的在系统下载称为配置(Configure)。答:分为:从动串行模式、从动并行模式、主动串行、主动并行、JTAG模式。主动配置由可编程器件引导配置过程,从动配置则由外部处理器控制配置过程。答:因为常用的FPGA的结构是基于SRAM的,掉电后芯片内的信息将消失,所以配备一个PROM或E2PROM,使得上电后,FPGA的信息由外部加载到芯片中,使得FPGA成为用户需要功能的芯片。程序补充完整(1)module(2)always(3)case(4)end(5)endmodule(1)module(2)input(3)always(4)begin(5)endmodule(1)module(2)output(3)always@(4)d(5)endmodule(1)`timescale(2)testbench(3)initial(4)$stop(5)endmodule(1)module(2)parameter(3)initial(4)assign(5)endmodule(1)module(2)din,clk(3)[7:0](4)clr(5)end(1)module(2)data_in1,data_in2,sel(3)sel(4)default(5)endmodule(1)function(2)input(3)a>b(4)end(5)endfunction程序改错题1:(1)第1行加;(2)第5行wire改为reg(3)第6行always后加@(4)第11行<=改为=(5)第12行后面加endmodule题2:(1)第1行改为moduledff8(clk,reset,d,q);(2)第5行改为output[7:0]q;(3)第7行initial改为always (4)第7行敏感变量加posedgereset(5)第12行去掉;题3:(1)第1行加;(2)第7行改为case(indec)(3)第8行改为4´d0(4)第17行和18行之间加 default:decodeout=7´bx;(5)第19行后endmodule题4:(1)第1行加“´”改为´timescale10ns/1ns(2)第4行加parameter(3)第5行always改为initial(4)第12行之后加join(5)第13行去掉;分号题5:(1)第1行加;分号(2)第8行后加begin(3)第11行后加endtask(4)第18行后加endcase(5)第20行后去掉分号题6:(1)第2行加input改成output;(2)第4行正确为:input[1:0]sel;(3)第6行正确为:always@(in0orin1orin2orin3orsel)(4)第8行正确为:2'b00: out=in0;(5)第12行后面加end题7:(1)第3行正确为output[2:0]outcode;(2)第7行正确为:always@(aorborcordoreorforgorh)(3)第7行后添加:begin(4)第8行正确为:elseouttemp=4'b1000;(5)第18行后面加endmodule题8:(1)第1行正确为:moduleshifter(din,clk,clr,dout);(2)第5行正确为:always@(posedgeclk)(3)第5行后添加:begin(4)第6行正确为:if(clr)dout<=8'b0;(5)第10行后面加end程序分析与设计7人投票表决器:。modulevoter7(pass,vote);outputpass;input[6:0]vote;reg[2:0]sum;integeri;regpass;always@(vote)beginsum=0;for(i=0;i<=6;i=i+1)if(vote[i])sum=sum+1;if(sum>4)pass=1;elsepass=0;endendmodule具有循环左移和循环右移功能的8位串入并出移位寄存器:moduleshiftreg(clr,clk,din,LorR,dout);inputclr,clk,din;inputLorR;output[7:0]dout;reg[7:0]fifo;assigndout=fifo;always@(posedgeclk)if(clr)fifo<=0;elseif(LorR)fifo<={fifo[6:0],din};elsefifo<={din,fifo[7:1]};endmodule2倍分频功能的模块:moduledivide2(clk,clk_o,reset);

input

clk,reset;

output

clk_o;

wirein;

regout;

always@(posedgeclkorposedgereset)

if(reset)

out<=0;

else

out<=in;

assignin=~out;

assignclk_o=out;

endmodule异步复位、二十进制的减法计数器:moduleCNT20(CLK,RST,CQ,COUT);inputCLK,RST;output[4:0]CQ;outputCOUT;reg[4:0]CQI;regCOUT;always@(posedgeCLKornegedgeRST)beginif(!RST) begin CQI=5'b0; endelseif(CQI==5'b0)beginCQI=5'b10100; COUT<=1'b1;endelsebeginCQI=CQI-1; COUT<=1'b0;endendassignCQ=CQI;endmodule带进位输入、输出的4位全加器“moduleadder8(A,B,CIN,S,COUT);input[8:0]A,B;inputCIN;output[8:0]S;outputCOUT;assign{COUT,S}=A+B+CIN;endmodule同步置数、同步清零的8位计数器:modulecount(out,data,load,reset,clk);output[7:0]out;input[7:0]data;inputload,clk,reset;reg[7:0]out;always@(posedgeclk)beginif(!reset) out=8'h00;elseif(load)out=data;else out=out+1;endendmodule2选1多路选择器:。持续赋值moduleMUX21_1(out,a,b,sel);inputa,b,sel;outputout;assignout=(sel==0)?a:b;endmodule阻塞赋值moduleMUX21_2(out,a,b,sel);inputa,b,sel;outputout;regout;always@(aorborsel)beginif(sel==0)out=a;elseout=b;endendmodule阻塞赋值方式描述移位寄存器:moduleblock3(Q0,Q1,Q2,Q3,din,clk);outputQ0,Q1,Q2,Q3;inputclk,din;regQ0,Q1,Q2,Q3;always@(posedgeclk) begin Q0=din;//还有其他多种方式 Q1=Q0; Q2=Q1; Q3=Q2; endendmodule2个位数相乘:modulemult_for(outcome,a,b);parametersize=8;input[size:1]a,b;output[2*size:1]outcome;reg[2*size:1]outcome;integeri;always@(aorb)beginoutcome=0;for(i=1;i<=size;i=i+1)if(b[i])outcome=outcome+(a<<(i-1));endendmodule8-3优先编码器:moduleencoder8_3(none_on,outcode,a,b,c,d,e,f,g,h);outputnone_o

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论