文档库

最新最全的文档下载
当前位置:文档库 > FPGA习题集及参考答案

FPGA习题集及参考答案

习题集及参考答案

一、填空题

1.一般把EDA技术的发展分为()个阶段。

2.FPGA/CPLD有如下设计步骤:①原理图/HDL文本输入、②适配、③功能仿真、④综合、

⑤编程下载、⑥硬件测试,正确的设计顺序是①()⑤⑥。

3.在EDA工具中,能完成在目标系统器件上布局布线的软件称为()。

4.设计输入完成之后,应立即对文件进行()。

5.基于硬件描述语言的数字系统设计目前最常用的设计方法称为()设计法。

6.将硬件描述语言转化为硬件电路的过程称为()。

7.IP核在EDA技术和开发中具有十分重要的地位,以HDL方式提供的IP被称为()

IP。

8.SOC系统又称为()系统。SOPC系统又称为()系统。

9.将硬核和固核作为()IP核,而软核作为()IP核。

10.IP核在EDA技术和开发中具有十分重要的地位,以HDL方式提供的IP被称为()。

11.HDL综合器就是逻辑综合的过程,把可综合的VHDL/Verilog HDL转化成硬件电路时,

包含了三个过程,分别是()、()、()。

12.EDA软件工具大致可以由五个模块构成,分别是设计输入编辑器、()、()、

()和()。

13.按仿真电路描述级别的不同,HDL仿真器分为()仿真、()仿真、()

仿真和门级仿真。

14.系统仿真分为()、()和()。

15.()仿真是对设计输入的规范检测,这种仿真通过只能表示编译通过,说明设计

满足一定的语法规范,但不能保证设计功能满足期望。

16.()仿真是对综合后的网表进行的仿真,它验证设计模块的基本逻辑功能,但不

带有布局布线后产生的时序信息,是理想情况下的验证。

17.()仿真是布局布线后进行的后仿真,仿真时考虑了布线延时,和芯片实际的工

作情况更加接近。

18.目前Xilinx公司生产的FPGA主要采用了()配置存储器结构。

19.描述测试信号的变化和测试工程的模块叫做()。

20.现代电子系统设计领域中的EDA采用()的设计方法。

21.有限状态机可分为()状态机和()状态机两类。

22.Verilog HDL中的端口类型有三类:()、()、输入/输出端口。

23.Verilog HDL常用两大数据类型:()、()。

24.FPGA / CPLD设计流程为:原理图/HDL文本输入→()→综合→适配→()→

编程下载→硬件测试。

25.()是描述数据在寄存器之间流动和处理的过程。

26.连续赋值常用于数据流行为建模,常以()为关键词。

27.Verilog HDL有两种过程赋值方式:()和()。

28.`timescale 1ns/100ps中1ns代表(),100ps代表()。

29.未来的集成电路技术的发展趋势,把整上系统集成在一个芯片上去,这种芯片被称为

()。

30.从互连结构上可将PLD分为确定型和统计型两类。确定型结构的代表是(),

统计型结构代表是()。

31.CPLD是由()的结构演变而来的。

32.FPGA的核心部分是(),由内部逻辑块矩阵和周围I/O接口模块组成。

33.把基于电可擦除存储单元的EEPROM或Flash 技术的CPLD 的在系统下载称为

(),这个过程就是把编程数据写入E2CMOS单元阵列的过程。

34.根据配置数据线数,器件配置可分为并行配置和串行配置两类。串行配置以()

为单位将配置数据载人可编程器件:而并行配置一般以()为单位向可编程器件载入配置数据。

35.FPGA的配置模式有从动串行模式、从动并行模式、主动串行模式、主动并行模式、以

及()模式。

36.可编程逻辑器件的配置方式分为()和()两类。

37.VerilogHDL是在()年正式推出的。

38.在verilog HDL的always块本身是()语句。

39.Verilog HDL中的always语句中的语句是()语句。

40.Verilog HDL提供了标准的系统任务,用于常用的操作。如显示、文件输入/输出等,系

统函数前都有一个标志符()加以确认。

41.Verilog HDL很好地支持了“自顶向下”的设计理念,即,复杂任务分解成的小模块完成

后,可以通过()的方式,将系统组装起来。

42.Verilog HDL模块分为两种类型:一种是()模块,即,描述某种电路系统结构,

功能,以综合或者提供仿真模型为设计目的;另一种是()模块,即,为功能模块的测试提供信号源激励、输出数据监测。

43.Verilog语言中,标识符可以是任意一组字母、数字、()符号和下划线符号的组

合。

44.state,State ,这两个标识符是()同。

45.assign c=a>b? a:b中,若a=3,b=2,则c=();若a=2,b=3,则c=()。

46.在Verilog HDL的逻辑运算中,设A=4′b1010,则表达式~A的结果为()

47.在Verilog HDL的逻辑运算中,设a=2 ,b=0,则a && b结果为(),a || b 结

果为()。

48.在Verilog HDL的逻辑运算中,设a = 4′b1010,a >>1结果是()。

二、EDA名词解释

1.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

三、选择题

1.任Verilog HDL的端口声明语句中,用()关键字声明端口为双向端口A:inout B:INOUT C:BUFFER D:buffer

2.用Verilog HDL的assign语句建模的方法一般称为()方法。

A:连续赋值B:并行赋值C:串行赋值D:函数赋值

3.IP核在EDA技术和开发中具有十分重要的地位,IP是指()。

A:知识产权B:互联网协议C:网络地址D:都不是

4.在verilog HDL的always块本身是()语句

A:顺序B:并行C:顺序或并行D:串行

5.在Verilog HDL的逻辑运算中,设A=8'b11010001,B=8'b00011001,则表达式“A&B”的结果

为()

A:8'b00010001 B:8'b11011001 C:8'b11001000 D:8'b00110111

6.大规模可编程器件主要有FPGA、CPLD两类,下列对FPGA结构与工作原理的描述中,正确的是()。

A:FPGA是基于乘积项结构的可编程逻辑器件;

B:FPGA是全称为复杂可编程逻辑器件;

C:基于SRAM的FPGA器件,在每次上电后必须进行一次配置;

D:在Altera公司生产的器件中,MAX7000系列属FPGA结构。

7.下列EDA软件中,哪一个不具有逻辑综合功能:()。

A:ISE B:ModelSim C:Quartus II D:Synplify

8.下列标识符中,()是不合法的标识符。

A:State0 B:9moon C:Not_Ack_0 D:signal@

9.关于Verilog HDL中的数字,请找出以下数字中最大的一个:()。

A:8′b1111_1110 B:3′o276 C:3′d170 D:2′h3E

10.大规模可编程器件主要有FPGA、CPLD两类,下列对CPLD结构与工作原理的描述中,正确的是()。

A:CPLD是基于查找表结构的可编程逻辑器件;

B:CPLD即是现场可编程逻辑器件的英文简称;

C:早期的CPLD是从GAL的结构扩展而来;

D:在Xilinx公司生产的器件中,XC9500系列属CPLD结构;

11.IP核在EDA技术和开发中具有十分重要的地位;提供用VHDL等硬件描述语言描述的功能块,但不涉及实现该功能块的具体电路的IP核为()。

A :瘦IP B:固IP C:胖IP D:都不是

12.不完整的IF语句,其综合结果可实现()。

A:时序逻辑电路B:组合逻辑电路C:双向电路D:三态控制电路13.CPLD的可编程是主要基于什么结构()。

A :查找表(LUT)C:PAL可编程B:ROM可编程D:与或阵列可编程14.IP核在EDA技术和开发中具有十分重要的地位,以HDL方式提供的IP被称为:()A:硬I PB:固IP C:软IP D:都不是;

15.设a = 4′b1010,b=4′b0001,c= 4′b1xz0则下列式子的值为1的是()A:a > b B:a <= c C:13 - a < b d:13 – (a>b)

16.设a=2 ,b=0,则下列式子中等于X的是()。

A:a && b B:a || b C:!a D:x && a

17.FPGA可编程逻辑基于的可编程结构基于()。

A:LUT结构B:乘积项结构C:PLD D:都不对

18.CPLD 可编程逻辑基于的可编程结构基于()。

A:LUT结构B:乘积项结构C:PLD D:都不对

19.下列运算符优先级最高的是()。

A:!B:+ C :& D:{}

20.设a = 1′b1,b = 3′b101,c = 4′b1010则X= {a,b,c}的值的等于()A:7′b1101100 B:8′b 10101011 C:8′b 11010101 D:8′b11011010 21.将设计的系统按照EDA开发软件要求的某种形式表示出来,并送入计算机的过程,称为()。

A:设计的输入B:设计的输出C:仿真D:综合

22.一般把EDA技术的发展分为()个阶段。

A:2 B:3 C:4 D:5

23.设计输入完成之后,应立即对文件进行()。

A:编译B:编辑C:功能仿真D:时序仿真

24.VHDL是在()年正式推出的。

A:1983 B:1985 C:1987 D:1989

25.Verilog HDL是在()年正式推出的。

A:1983 B:1985 C:1987 D:1989

26.基于硬件描述语言的数字系统设计目前最常用的设计方法称为()设计法。

A:自底向上B:自顶向下C:积木式D:顶层

27.在EDA工具中,能将硬件描述语言转化为硬件电路的重要工具软件为()。

A:仿真器B:综合器C:适配器D:下载器

28.在EDA工具中,能完成在目标系统器件上布局布线的软件称为()。

A:仿真器B:综合器C:适配器D:下载器

29.逻辑器件()属于非用户定制电路。

A:逻辑门B:PROM C:PLA D:GAL

30.可编程逻辑器件PLD属于()电路。

A:半用户定制B:全用户定制C:自动生成D:非用户定制

31.不属于PLD基本结构部分的是()。

A:与门阵列B:输入缓存C:与非门阵列D:或门阵列

32.任Verilog HDL的标识符使用字母的规则是()。

A:大小写相同B:大小写不同C:只允许大写D:只允许小写

33.操作符是Verilog HDL预定义的函数命名,操作符是由()字符组成的。

A:1 B:2 C:3 D:1~3

34.在Verilog HDL模块中,task语句类似高级语言中的()。

A:函数B:常数C:变量D:子程序

35.在Verilog HDL模块中,函数调用时返回一个用于()的值。

A:表达式B:输出C:输入D:程序包

36.Verilog HDL中的always语句中的语句是()语句。

A:串行B:顺序C:并行D:顺序或并行

37.嵌套的if语句,其综合结果可实现()。

A:条件相与的逻辑B:条件相或的逻辑C:条件相异或的逻辑D:三态控制电路38.嵌套的使用if语句,其综合结果可实现()。

A:带优先级且条件相与的逻辑电路B:双向控制电路

C:三态控制电路D:条件相异或的逻辑电路

39.下列哪个FPGA/CPLD设计流程是正确的()。

A:原理图/HDL文本输入->功能仿真->综合->适配->编程下载->硬件测试

B:原理图/HDL文本输入->适配->综合->功能仿真->编程下载->硬件测试

C:原理图/HDL文本输入->功能仿真->综合->编程下载->适配->硬件测试

D:原理图/HDL文本输入->适配->功能仿真->综合->编程下载->硬件测试

四、简答题

1.简述EDA技术的发展历程?

2.什么是EDA技术?

3.在EDA技术中,什么是自顶向下的设计方法?

4.自顶向下的设计方法有什么重要意义?

5.简要说明目前现代数字系统的发展趋势是什么?

6.简述现代数字系统设计流程。

7.简述原理图设计法设计流程。

8.简述原理图设计法设计方法的优缺点。

9.什么是综合?综合的步骤是什么?

10.什么是基于平台的设计?现有平台分为哪几个类型?

11.目前,目前数字专用集成电路的设计主要采用三种方式?各有什么特点?

12.什么是SOC技术含义是什么?什么是SOPC?

13.S OPC技术含义是什么?SOPC技术和SOC技术的区别是什么?

14.S OPC技术是指什么?SOPC的技术优势是什么?

15.简要说明一下功能仿真和时序仿真的异同。设计过程中如果只做功能仿真,不做时序仿真,设计的正确性是否能得到保证?

16.综合完成的主要工作是什么?实现(Implement)完成的主要工作是什么?

17.主要的HDL语言是哪两种?Verilog HDL 语言的特点是什么?

18.简述阻塞赋值与非阻塞赋值的不同。

19.简述过程赋值和连续赋值的区别。

20.什么叫做IP核?IP在设计中的作用是什么?

21.什么是IP软核,它的特点是什么?

22.根据有效形式将IP分为哪几类?根据功能方面的划分分为哪两类?

23.比较基于查找表的FPGA和CPLD系统结构和性能上有何不同?

24.什么是数据流级建模?什么是行为级建模?

25.t imescale指令的作用是什么。

26.采用HDL完成设计后,必须应用测试程序(testbench)对设计的正确性进行验证。测27.什么是FPGA,CPLD?他们分别是基于什么结构的可编程逻辑结构?

28.C PLD是基于什么结构的可编程逻辑器件?其基本结构由哪几部分组成。

29.F PGA是于什么结构的可编程逻辑器件?其基本结构由哪几部分组成。

30.P LD器件按照编程方式不同,可以分为哪几类?

31.解释编程与配置这两个概念。

32.说明FPGA配置有哪些模式,主动配置和从动配置的主要区别是什么?

33.为什么在FPGA构成的数字系统中要配备一个PROM或E2PROM?

五、程序补充完整

1.下面程序是一个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′d0:out=8′b11111110;

3′d1:out=8′b11111101;

3′d2:out=8′b11111011;

3′d3:out=8′b11110111;

3′d4:out=8′b11101111;

3′d5:out=8′b11011111;

3′d6:out=8′b10111111;

3′d7:out=8′b01111111;

endcase

空(4)

空(5)

2.下面程序4位计数器的Verilog HDL描述,试补充完整。

空(1)count4(out ,reset,clk)

output[3:0] out;

空(2)reset,clk;

reg[3:0] out;

空(3)@(posedge clk)

空(4)

if(reset) out<=0;

else out<=out+1;

end

空(5)

3.下面程序描述一个时钟上升沿触发、同步复位的D触发器,试补充完整。空(1)dflop(d,reset,clk,q);

input d,clk;

input reset;

空(2)q;

reg q;

空(3)(posedge clk)

if(reset)

q <= 0;

else

q <=空(4);

空(5)

4.用下面测试平台对mux21u1二选一选择器进行测试,试补充完整。

空(1)1ns/100ps

Module空(2);

reg A,B;

reg SEL;

wire C;

mux21u1 ( .a(A),.b(B),.sel (SEL),.c(C));

空(3)

begin

A = 0;

B = 0; SEL = 0;

#10 begin A=1;B=0;SEL=0; end

#10 begin A=0;B=0;SEL=1;end

#10 $空(4);

end

空(5)

5.clock1是周期为20的时钟,clock_pshift是clock1相移,试补充完整。空(1)Gen_clock1 (clock_pshift,clock1) ;

output clock_pshift,clock1;

reg clock1;

wire clock_pshift;

空(2)T=20;

parameter pshift=2;

空(3)

clock1 =0;

always

# (T/2) clock1=~clock1;

空(4)#PSHIFT clock_pshift=clock1;

空(5)

6.下面程序描述了8位移位寄存器,试补充完整。

空(1)shifter(空(2),clr,dout);

input din,clk,clr;

output空(3)dout;

reg[7:0] dout;

always @(posedge clk)

begin

if (空(4)) dout<= 8'b0;

else

begin

dout <= dout << 1;

dout[0] <= din;

end

空(5)

endmodule

7.下面程序描述了一个数据选择器MUX,试补充完整。

空(1)mux(data_in1,data_in2,sel,data_out);

input data_in1,data_in2;

input [1:0] sel;

output data_out;

always @ (空(2))

begin

case(空(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;

endcase

end

空(5)

8.下面程序描述了一个返回两个数中的最大值的函数。试补充完整。空(1)[3:0] max;

空(2)[3:0] a,b;

begin

if (空(3))

max=a;

else

max=b;

空(4)

空(5)

六、程序改错

1.下面的中有5处错误,试找出错误并修改正确。

第1行module divide2( clk , clk_o, reset)

第2行input clk , reset;

第3行output clk_o;

第4行wire in;

第5行wire out ;

第6行always ( posedge clk or posedge reset)

第7行if ( reset)

第8行 out <= 0;

第9行 else

第10行out <= in;

第11行 assign in <=~out;

第12行assign clk_o = out;

2.下面的中有5处错误,试找出错误并修改正确。

第1行module dff8(reset, d, q);

第2行input clk;

第3行input reset;

第4行input[7:0] d;

第5行output q;

第6行reg[7:0] q;

第7行initial @ (posedge clk)

第8行 if(reset)

第9行q <= 0;

第10行else

第11行q <= d;

第12行endmodule;

3.下面的中有5处错误,试找出错误并修改正确。

第1行module decode4_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

4.下面的中有5处错误,试找出错误并修改正确。第1行timescale 10ns/1ns

第2行module wave2;

第3行reg wave;

第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.下面的中有5处错误,试找出错误并修改正确。第1行module alutast(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行task my_and;

第7行input[3:0]a,b;

第7行output[4:0]out;

第8行interger i;

第9行for(i=3;i>=0;i=i-1)

第10行out[i]=a[i]&b[i];

第11行end

第12行always@(code or a or b)

第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;

6.下面的中有5处错误,试找出错误并修改正确。

第1行module mux4_1(out,in0,in1,in2,in3,sel);

第2行input out;

第3行input in0,in1,in2,in3;

第4行input sel;

第5行reg out;

第6行always @( )

第7行case(sel)

第8行2'b01: out=in0;

第9行2'b01: out=in1;

第10行2'b10: out=in2;

第11行2'b11: out=in3;

第12行default:out=2'bx;

第13行endmodule

7.下面的中有5处错误,试找出错误并修改正确。

第1行module encoder8_3(none_on,outcode,a,b,c,d,e,f,g,h); 第2行output none_on;

第3行output[3:0] outcode;

第4行input a,b,c,d,e,f,g,h;

第5行reg[3:0] outtemp;

第6行assign {none_on,outcode}=outtemp;

第7行always (a or b or c or d or e or f or g or h)

第8行if(h) outtemp=4'b0111;

第9行else if(g) outtemp=4'b0110;

第10行else if(f) outtemp=4'b0101;

第11行else if(e) outtemp=4'b0100;

第12行else if(d) outtemp=4'b0011;

第13行else if(c) outtemp=4'b0010;

第14行else if(b) outtemp=4'b0001;

第15行else if(a) outtemp=4'b0000;

第16行else if outtemp=4'b1000;

第17行end

第18行endmodule

8.下面的中有5处错误,试找出错误并修改正确。

第1行module shifter( );

第2行input din,clk,clr;

第3行output[7:0] dout;

第4行reg[7:0] dout;

第5行alway @(posedge clk)

第6行if (clr) dout = 8'b0;

第7行else

第8行begin

第9行dout <= dout << 1;

第10行dout[0] <= din;

第11行end

第12行endmodule

七、程序分析与设计

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.试描述8-3优先编码器。

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设计

程序。

FPGA习题集及参考答案

16.根据以下原理图写出相应的Verilog程序。

D

Q DFF

D Q

DFF

OR

yout

OUTPUT

xin INPUT

clk

INPUT

习题集解答

一、填空题

1.(3)

2.( ③④②)

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名词解释

1.Application Specific Integrated Circuit,专用集成电路

http://www.wendangku.net/doc/aea53e235ef7ba0d4b733b06.htmlplex Programmable Logic Device 复杂可编程逻辑块

3.Filed Programmable Gate Array 现场可编程门阵列

4.integrated circuit 集成电路

5.look up table 查找表

6.PrintedCircuitBoard印制电路板

7.Register Transfer Level寄存器传输级

8.Finite State Machine有限状态机

9.Generic Array Logic 可编程通用阵列逻辑

10.在系统编程

11.边界扫描测试是一种可测试结构技术

12.Platform-Based Design 基于平台的设计方法

13.Block-Based design 基于块的设计

三、选择题

1-5 A A A B A 6-10 C B B A D 11-15 D A D C A

16-20 D A B A D 21-25 A BAB A 26-30 B B C A A

31-35 C B D D A 36-39 B A A A

四、简答题

1.答:(1)二十世纪70年代,产生了第一代EDA工具。

(2)到了80年代,为了适应电子产品在规模和制作上的需要,应运出现了以计算机仿真和自动布线为核心技术的第二代EDA技术。

(3)90年代后,随着科学技术的发展,出现了以高级语言描述、系统级仿真和综合技术为特征的第三代EDA技术。

2.答:EDA技术就是以计算机为工具,设计者在EDA软件平台上,对系统功能进行描述完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。

3.答:自顶向下首先从系统设计入手,在顶层进行功能划分和结构设计,并在系统级采用仿真手段验证设计的正确性,然后再逐级设计低层的结构,实现从设计、仿真、测试一体化。其方案的验证与设计、电路与PCB设计专用集成电路设计等都由电子系统设计师借助于EDA工具完成。

4.答:(1)基于PLD硬件和EDA工具支撑;(2)采用逐级仿真技术,以便及早发现问题修改设计方案;(3)基于网上设计技术使全球设计者设计成果共享,设计成果的再利用得到保证。(4)复杂系统的设计规模和效率大幅度提高。(5)在选择器件的类型、规模、硬件结构等方面具有更大的自由度。

5.答:(1)电子设计最优化(EDO);(2)在线可“重构”技术。

6.答:设计准备、设计输入、设计处理、器件编程以及相应的功能仿真、时序仿真和器件测试三个设计验证过程。

7.答:具体设计流程包括设计输入、功能仿真、综合、综合后仿真、约束设置、实现、布局布线后仿真、生成配置文件与配置FPGA

8.答:主要优点是容易实现仿真,便于信号的观察和电路的调整。原理图设计方法直观、易学。但当系统功能较复杂时,原理图输入方式效率低,它适应于不太复杂的小系统和复杂系统的综合设计。

9.答:将硬件描述语言转化成硬件电路的过程叫综合。综合主要有三个步骤:转化,优化,映射。

10.答:基于平台的设计方法是近几年提出的SOC软硬件协同设计新方法,是基于块的设计BBD方法的延伸,它扩展了设计重用的理念,强调系统级复用,包含了时序驱动的设计和BBD的各种技术,支持软硬件协同设计,提供系统级的算法和结构分析。

现有的设计平台分为四类:完整的应用平台;以处理器为中心的平台;以片内通信构造为中心的平台;完整的可编程平台。

11.答:(1)全定制设计或基于标准单元的设计。所有的工艺掩模都需要从头设计,可以最大限度地实现电路性能的优化。然而,由于其设计周期很长,设计时间和成本非常高,市场风险也非常大。

(2)半定制设计或基于标准门阵列的设计。采用标准门阵列进行初步设计,待设计通过验证后,再对各局部功能单元进行优化

(3)基于可编程逻辑器件PLD的设计。PLD的设计不需要制作任何掩模,基本不考虑布局布线问题,设计成本低,设计周期短,设计的风险低。

12.答:SOC就是将微处理器、模拟IP核、数字IP核和存储器(或片外存储控制接口) 、数据通路、与外部系统的数据接口等部件集成在单一芯片上。

SOPC就是基于可编程逻辑器件的SOC设计方案

13.答:SOPC技术是以可编程逻辑器件PLD取代ASIC,更加灵活、高效的技术SOC解

决方案。SSOPC与SOC的区别就是FPGA与ASIC的区别。SOPC是SOC发展的新阶段,代表了当今电子设计的发展方向。其基本特征是设计人员采用自顶向下的设计方法,对整个系统进行方案设计和功能划分,最后系统的核心电路在可编程器件上实现。

14.答:SOPC技术是以可编程逻辑器件PLD取代ASIC,更加灵活、高效的技术SOC解决方案。SOPC的技术优势:(1)运用嵌入的微处理器软核;(2)采用先进的EDA开发工具;(3)由于连接延迟时间的缩短,SOPC可以提供增强的性能,而且由于封装体积的减小,产品尺寸也减小。

15.答:仿功能仿真用于验证设计的逻辑功能。它是在设计输入完成之后,选择具体器件进行编译之前进行的逻辑功能验证,不包含延时信息。时序仿真是在选择了具体器件并完成布局、布线之后进行的快速时序检验,并可对设计性能作整体上的分析。由于不同器件的内部延时不一样,不同的布局、布线方案会给延时造成不同的影响。

只做功能仿真,不做时序仿真,设计的正确性是不能得到保证。

16.答:综合的主要工作将硬件描述语言转化成硬件电路。实现(Implement)是指将综合输出的逻辑网表翻译成所选器件的底层模块与硬件原语,将设计映射到器件结构上,进行布局布线,达到在选定器件上实现设计的目的

17.答:VHDL和Verilog HDL。Verilog HDL语言允许用户在不同的抽象层次上对电路进行建模,底层描述能力较强。

18.答:阻塞赋值:=;必须是阻塞赋值完成后,才进行下一条语句的执行;赋值一旦完成,等号左边的变量值立刻发生变化

非阻塞赋值<=,非阻塞赋值在赋值开始时计算表达式右边的值,到了本次仿真周期结束时才更新被赋值变量(即赋值不立刻生效);非阻塞赋值允许块中其他语句的同时执行。在同一个顺序块中,非阻塞赋值表达式的书写顺序,不影响赋值的结果。

19

FPGA习题集及参考答案

20

将IP核看做黑匣子,只需保证IP模块与外部电路的接口,无需关心其内部操作。利用IP 核还可以使设计师不必了解设计芯片所需要的所有技术,降低了芯片设计的技术难度。IP 核与工业产品不同,调用IP核能避免重复劳动,大大减轻工程师的负担,且复制IP核是不需要花费任何代价的。

21.答:软核是以可综合的寄存器传输级(RTL)描述或通用库元件的网表形式提供的可重用的IP模块。特点:软核的使用者要负责实际的实现和布图,它的优势是对工艺技术的适应性很强,方便地移植。由于软核设计以高层次表示,因而软IP易于重定目标和重配置,然而预测软IP的时序、面积与功率诸方面的性能较困难。

22.答:有效形式分:软核、固核和硬核。功能划分:嵌入式IP核与通用IP模块。23.答:

FPGA习题集及参考答案

FPGA习题集及参考答案

统的CPLD器件的逻辑规模覆盖面属中小规模,器件有很宽的可选范围,上市速度快,市场风险小。对于大规模的逻辑电路设计,则多采用FPGA。因为从逻辑规模上讲,FPGA覆盖了大中规模范围。

24.答:数据流级建模是描述数据在寄存器之间流动和处理的过程。行为级建模在更高层次对系统功能和数据流进行描述。

25.答:在Verilog HDL 模型中,所有时延都用单位时间表述。使用`timescale编译器指令将单位时间与实际时间相关联。用于定义仿真时间、延迟时间的单位和时延精度。26.答:(1)产生模拟激励(波形);(2)将模拟的输入激励加入到被测试模块端口并观测其输出响应;(3)将被测模块的输出与期望值进行比较,验证设计的正确与否。

27.答:FPGA是现场可编程门阵列,CPLD中文全称是复杂可编程逻辑器件。其中CPLD 是基于乘积项的可编程逻辑结构,FPGA是基于查找表的可编程逻辑结构。

28.答:CPLD是基于乘积项的可编程结构,基本构成:逻辑阵列块LAB、宏单元、扩展乘积项、可编程连线阵列、I/O控制器。

29.答:FPGA是基于SRAM查找表的可编程结构。FPGA的核心部分是逻辑单元阵列LCA,LCA是由内部逻辑块矩阵和周围I/O接口模块组成。LCA内部连线在逻辑块的行列之间,占据逻辑块I/O接口模块之间的通道,可以由可编程开关以任意方式连接形成逻辑单元之间的互连。

30.答:PLD器件按照编程方式不同,可以分为熔丝(Fuse)或反熔丝开关、浮栅编程技术、SRAM配置存储器

31.答:基于电可擦除存储单元的EEPROM或Flash 技术的CPLD 的在系统下载称为编程(Program);编程过程就是把编程数据写入E2CMOS单元阵列的过程。而把基于SRAM查找表结构的FPGA 的在系统下载称为配置(Configure)。

32.答:分为:从动串行模式、从动并行模式、主动串行、主动并行、JTAG模式。

主动配置由可编程器件引导配置过程,从动配置则由外部处理器控制配置过程。

33.答:因为常用的FPGA的结构是基于SRAM的,掉电后芯片内的信息将消失,所以配备一个PROM或E2PROM,使得上电后,FPGA的信息由外部加载到芯片中,使得FPGA 成为用户需要功能的芯片。

五、程序补充完整

1.(1)module (2)always (3)case (4)end (5) endmodule

2.(1)module (2) input (3)always (4) begin (5)endmodule

3.(1) module (2) output (3) always@ (4) d (5) endmodule

4.(1) `timescale (2) testbench (3) initial (4) $stop (5) endmodule

5.(1)module (2)parameter (3)initial (4)assign (5)endmodule

6.(1)module (2)din,clk (3)[7:0] (4)clr (5)end

7.(1)module (2)data_in1,data_in2,sel (3)sel (4)default (5)endmodule 8.(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行改为module dff8(clk,reset, d, q);

(2)第5行改为output[7:0] q; (3)第7行initial 改为always

(4)第7行敏感变量加posedge reset (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行加“′”改为′timescale 10ns/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 @(in0 or in1 or in2 or in3 or sel)

(4)第8行正确为:2'b00:out=in0; (5)第12行后面加end

题7:

(1)第3行正确为output[2:0] outcode;

(2)第7行正确为:always @(a or b or c or d or e or f or g or h)

(3)第7行后添加:begin

(4)第8行正确为:else outtemp=4'b1000;

(5)第18行后面加endmodule

题8:

(1)第1行正确为:module shifter(din,clk,clr,dout);

(2)第5行正确为:always @(posedge clk)

(3)第5行后添加:begin

(4)第6行正确为:if (clr) dout<= 8'b0;

(5)第10行后面加end

七、程序分析与设计

1.7人投票表决器:。

module voter7(pass,vote);

output pass;

input[6:0] vote;

reg[2:0] sum;

integer i;

reg pass;

always@(vote)

begin

sum=0;

for(i=0;i<=6;i=i+1)

if(vote[i]) sum=sum+1;

if(sum>4) pass=1;

else pass=0;

end

endmodule

2.具有循环左移和循环右移功能的8位串入并出移位寄存器:module shiftreg(clr,clk,din,LorR,dout);

input clr,clk,din;

input LorR;

output [7:0]dout;

reg [7:0] fifo;

assign dout=fifo;

always@(posedge clk)

if(clr)

fifo<=0;

else

if(LorR)

fifo<={fifo[6:0],din};

else

fifo<={din,fifo[7:1]};

endmodule

3.2倍分频功能的模块:

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.异步复位、二十进制的减法计数器:

module CNT20(CLK, RST, CQ, COUT);

input CLK,RST;

output[4:0] CQ;

output COUT;

reg[4:0] CQI;

reg COUT;

always @(posedge CLK or negedge RST)

begin

if (!RST)

begin

CQI=5'b0;

end

else if (CQI==5'b0)

begin

CQI=5'b10100;

COUT<=1'b1;

end

else

begin

CQI=CQI-1;

COUT<=1'b0;

end

end

assign CQ=CQI;

endmodule

5.带进位输入、输出的4位全加器“module adder8(A,B,CIN,S,COUT);

input[8:0]A,B;

input CIN;

output[8:0]S;

output COUT;

assign {COUT,S}=A+B+CIN; endmodule

6.同步置数、同步清零的8位计数器:module count(out,data,load,reset,clk); output[7:0] out;

input[7:0] data;

input load,clk,reset;

reg[7:0] out;

always @(posedge clk)

begin

if (!reset) out = 8'h00;

else if (load) out = data;

else out = out + 1;

end

endmodule

7.2选1多路选择器:。

持续赋值

module MUX21_1(out,a,b,sel);

input a,b,sel;

output out;

assign out=(sel==0)?a:b;

endmodule