什么是EDA技术.docx

上传人:b****7 文档编号:11417773 上传时间:2023-02-28 格式:DOCX 页数:21 大小:76.01KB
下载 相关 举报
什么是EDA技术.docx_第1页
第1页 / 共21页
什么是EDA技术.docx_第2页
第2页 / 共21页
什么是EDA技术.docx_第3页
第3页 / 共21页
什么是EDA技术.docx_第4页
第4页 / 共21页
什么是EDA技术.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

什么是EDA技术.docx

《什么是EDA技术.docx》由会员分享,可在线阅读,更多相关《什么是EDA技术.docx(21页珍藏版)》请在冰豆网上搜索。

什么是EDA技术.docx

什么是EDA技术

1.什么是EDA技术?

答:

EDA是指电子设计自动化。

指以PLD为设计载体,以HDL为系统逻辑描述的主要方式,以计算机、开发软件、开发系统为设计工具,通过相关的开发软件,自动完成将用软件方式设计的电子系统转化成硬件电路,最终形成集成电子系统或ASIC的一门新技术。

2.一般把EDA技术的发展分为CAD、CAE和EDA三个阶段,并向着ESDA方向发展。

3.EDA技术的精髓是什么?

它们各自的含义是什么?

答:

精髓是建模、仿真、综合。

建模指的是用硬件描述语言描述电路的功能;仿真指的是验证所建模型的电路功能;综合是指把软件模型转化为硬件电路。

4.EDA技术在应用设计领域主要包含哪四个方面的内容

(1)HDL

(2)PLD

(3)EDA工具软件(4)EDA开发系统。

5.EDA技术的基本特征

(1)自顶向下的设计方法;

(2)采用硬件描述语言;(3)高层综合和优化;(4)并行工程;(5)开放性和标准化。

6.当前最流行的并成为IEEE标准的硬件描语言是VHDL和Verilog-HDL。

7.什么是PLD?

答:

PLD,Programmable-Logic-Device,即可编程逻辑器件。

是一种具有内建结构、由用户编程以实现某种逻辑功能的新型逻辑器件。

8.SPLD的基本结构框图是什么?

9.一般CPLD器件至少包含可编程逻辑宏单元,可编程I/O单元和可编程内部连线3种基本结构。

一般FPGA器件至少包含可编程逻辑功能块/CLB、IOB/可编程I/O块和PI/可编程内部互连三类可编程资源。

10.用PROM完成半加器/全加器的示意图。

11.使用方框图示意出采用硬件描述语言设计硬件电路进行由上而下的设计的三个层次为:

12.可编程逻辑器件的发展趋势在哪5个方面

(1)向更大规模、更高集成度的片上系统方向发展

(2)向低电压、低功耗的绿色器件方向发展(3)向更高速可预测延时的方向发展(4)向在PLD内嵌入多种功能模块的方向发展(5)向模数混合可编程的方向发展

13.目前,在PLD器件制造与生产领域的三大公司为Altera、Xilinx和Lattice

14.FPGA的发明者是Xilinx公司;ISP编程技术的发明者是Lattice公司。

16、目前常见的可编程逻辑器件的编程和配置工艺包括基于E2PROM/Flash技术、基于SRAM查找表的编程单元和基于反熔丝编程单元。

17、基于EPROM、E2PROM和快闪存储(flash)器件的可编程器件,在系统断电后编程信息不丢失

18、采用SRAM结构的的可编程器件,在系统断电后编程信息丢失

19、Verilog-HDL于1983年推出,是在C语言的基础上演化而来的。

于1995年正式采纳为IEEE标准,其代号为Verilog-HDL1634-1995。

20、一个基本的Verilog-HDL程序由模块构成。

21、一个完整的Verilog-HDL设计模块包括:

模块关键字和模块名、端口列表、端口定义、和功能描述4部分。

22、Verilog-HDL模块的I/O端口声明用来声明模块端口定义中各端口数据流动方向,包括

输入端口、输出端口和双向端口。

23、Verilog-HDL语言的三种常用的模型描述方法为行为描述、结构描述和数据流描述。

24.Verilog-HDL的数值集合由哪四种基本的值组成

(1)0

(2)1(3)x(4)z。

25、10’hxf=10’xxxxxx1111;

10’hzf=10’zzzzzz1111;

26、标识符count、Count、COUNT是代表同一标识符吗?

不是,因为标识符区分大小写。

27、wor和trior连线类型,在多重驱动时,具有线或特性的连线;wand和triand连线类型,在多重驱动时,具有线与特性的连线。

28、Wire[15:

0]wire-b表示连线宽度为16位,其最高位为15,最低位为0。

29、tri[7:

0]bus表示定义了一个8位宽的线矢量,名字叫bus。

30、常用的register型变量主要为reg、integer、time和real四种。

31、若a=5’b10x01,b=5’b10x01,则

a==b的结果为xa===b的结果为1

32、若A=5’b11011,B=5’b10101,则有

&A=0|B=1~A=5’b00100A&B=5’b10001

33、若A=8’b1000_0100

则A<<3的结果为8’b00100000A>>3的结果为8’b00010000;

34、对于Verilog-HDL语言中的关键字,在建模时都必须小写。

35、MAX+plusⅡ软件是Altera公司自己开发的第三代PLD开发软件。

36、MAX+plusⅡ软件支持的设计的方式有图形输入、文本输入、波形输入和符号输入等不同的编辑方式。

37、MAX+plusⅡ软件环境下,执行原理图输入设计法,应选择图形输入方式。

其设计文件保存的扩展名应为.gdf.

若在MAX+plusⅡ软件环境下,执行文本输入设计法,应选择文本输入方式。

对于Verilog语言其设计文件保存的扩展名应为.v.

第一部分思考题:

1、谈谈你对EDA技术的理解。

2、简要解释建模、仿真和综合的含义。

答:

建模是指用硬件描述语言描述电路的功能。

仿真是指验证电路的功能。

综合是指把软件模型转化为硬件电路。

3、EDA技术的主要特征有哪些?

答:

自顶向下的设计方法;采用硬件描述语言;高层综合优化;并行工程;开放性和标准化。

4、什么是SOC和SOPC?

SOC:

SystemOnaChip,片上系统。

SOPC:

SystemOnProgrammableChip,可编程片上系统。

5、什么是硬件描述语言?

用硬件描述语言设计电路有哪些优点?

答:

是一种用于设计硬件电子系统的计算机语言,它用软件编程的方式来描述电子系统的功能、电路结构和连接形式;与传统的门级描述方式相比,它更适合复杂数字电子系统的设计。

突出的优点:

①语言的公开可利用性;

②设计与工艺的无关性;

③宽范围的描述能力;

④便于组织大规模系统的设计;

⑤便于设计的复用、交流、保存和修改等。

6、Top-Down与Bottom-Up的硬件电路的设计方法各有何优缺点?

答:

Top-Down的设计方法有利于早期发现结构设计上的错误,避免设计工作的浪费,减少了逻辑功能仿真的工作量,提高了设计的一次成功率。

7、OLMC的主要功能是什么?

简述GAL是如何实现组合电路和时序电路功能的?

答:

主要功能是提供时序电路需要的寄存器或触发器;提供多种形式的输入/输出方式;提供内总信号反馈,控制输出逻辑极性;分配控制信号。

GAL利用与或阵列加寄存器的结构实现组合电路和时序电路功能。

8、 什么是基于乘积项的可编程逻辑结构?

通常它实现什么电路更优?

答:

CPLD是基于乘积项的可编程逻辑结构。

适于实现复杂的组合逻辑;复杂的状态机;

控制量多的逻辑;完全编码的状态机。

9、 什么是基于查找表的可编程逻辑结构?

通常它实现什么电路更优?

答:

FPGA是基于查找表的可编程逻辑结构。

适于实现数据通路功能;寄存器用量大的设计;算术功能;“OneHot”方式编码的状态机。

 

1、根据部分程序,用示意图表示a、b、c值发生的时刻

程序1:

modulea_bc1;

rega,b,c;

begin

b发生

a发生

c发生

a=#51;

17

15

5

b=#100;

0

#

c=#21;

end

endmodule

程序2:

modulea_bc2;

rega,b,c;

initial

begin

a<=#151;

b<=#50;

c<=#101;

end

10

c发生

b发生

a发生

#

endmodule

15

5

0

2、设a=8’b0011_1001,b=8’b1110_1110,请分别计算结果。

a==b

a!

=b

a>b

{3{a,b}}

~a

&b

0

1

0

8’b1100_0110

0

a&&b

!

a

a&b

a>>5

b<<3

!

b

1

0

8’b0010_1000

0000_0001

0111_0000

0

{3{a,b}}=48’b0011_1001_1110_1110_0011_1001_1110_1110_0011_1001_1110_1110

 

1、四选一数据选择器定义为UDP元件,且元件名称为MUX4-1。

primitiveMUX4-1(out,D1,D2,a,b,c,d);

outputout;

inputD1,D2,a,b,c,d;

table

//D1D2abcd:

out

000?

?

?

:

0;

001?

?

?

:

1;

01?

0?

?

:

0;

01?

1?

?

:

1;

10?

?

0?

:

0;

10?

?

1?

:

1;

11?

?

?

0:

0;

11?

?

?

1:

1;

endtable

endprimitive

2、用case语句编写BCD码--七段数码管显示译码电路的Verilog程序,且模块名为de4-7

数码管为共阴数码管。

moduledec4_7(a,b,c,d,e,f,g,D3,D2,D1,D0);

outputa,b,c,d,e,f,g;

inputD3,D2,D1,D0;//输入的4位BCD码

rega,b,c,d,e,f,g;

always@(D3orD2orD1orD0)

begin

case({D3,D2,D1,D0})

4′d0:

{a,b,c,d,e,f,g}=7′b1111110;

4′d1:

{a,b,c,d,e,f,g}=7′b0110000;

4′d2:

{a,b,c,d,e,f,g}=7′b1101101;

4′d3:

{a,b,c,d,e,f,g}=7′b1111001;

4′d4:

{a,b,c,d,e,f,g}=7′b0110011;

4′d5:

{a,b,c,d,e,f,g}=7′b1011011;

4′d6:

{a,b,c,d,e,f,g}=7′b1011111;

4′d7:

{a,b,c,d,e,f,g}=7′b1110000;

4′d8:

{a,b,c,d,e,f,g}=7′b1111111;

4′d9:

{a,b,c,d,e,f,g}=7′b1111011;

default:

{a,b,c,d,e,f,g}=7′bx;

endcase

end

endmodule

3、用for语句编写一个7人投票表决的Verilog程序,且模块名为Voter-7;多数赞成通过,

否则,不通过。

moduleVoter-7(out,in);

outoutout;

inputin;

reg[6:

0]in_buf;

reg[2:

0]count;

regout;

integerI;

always@(in)

begin

in_buf=in;

count=0;

for(I=0;I<7;I=I+1)

begin

if(in_buf[I])count=count+1;

out=(count>=4)?

1:

0;

end

end

endmodule

4、用Verilog描述产生一周期为200ms的方波周期信号(至少用两种方法)

参考教材80页

方法一:

`timescale1ms/1ms

modulewave(wav);

outputwav;

regwav;

initial

begin

wav=0;

forever#100wav=~wav;

end

endmodule

方法二:

`timescale1ms/1ms

modulewave(wav);

outputwav;

regwav;

initial

fork

wav=0;

#100wav=1;

#200wav=0;

#300wav=l;

#400wav=0;

#500wav=l;

join

endmodule

方法三:

`timescale1ms/1ms

modulewave(wav);

outputwav;

regwav;

initial

begin

wav=0;

#100wav=1;

#100wav=0;

#100wav=1;;

#100wav=0;

#100wav=l;

end

endmodule

5、请分别用结构建模、数据

流建模描述图示电路:

参考教材134页

描述方法一:

采用结构建模方法描述

modulegate(F,A,B,C);

inputA,B,C;

outputF;

nand(F1,A,B);//调用与非门实例

and(F2,B,C);

not(F3,A);//调用非门实例

or(F,F1,F2,F3);//调用或门实例

endmodule

描述方法二:

采用数据流建模方法描述

modulegate(F,A,B,C,);

inoutA,B,C;

outputF;

assignF=~A|~B|~C;//数据流描述时F必须是线型

endmodule

6、描述一个12位的二进制可逆计数器,该计数器有一个可逆控制端Contrl,Contrl为“1”,实现加计数,为“0”时,实现减计数,load为同步预置端,clear同步清零端。

参考教材144页

moduleupdown_count(d,clk,clear,load,Contrl,qd);

input[11:

0]d;//预置的数据输入端

inputclk;//时钟输入端

inputclear;//同步清零端

inputload;//同步预置端

inputContrl;//加减控制端

output[11:

0]qd;//12位计数器输出端口

reg[11:

0]cnt;//输出端口寄存器

assignqd=cnt;

always@(posedgeclk)

begin

if(!

clear)cnt=12`h000;//clear为0时清零

elseif(load)cnt=d;//load为1时预置数据、输入端为d

elseif(Contrl)cnt=cnt+1;//up_down为1时实现加法计数器

elsecnt=cnt-1;//up_down为0时实现减法计数器

end

endmodule

7、描述一个序列码(100110010)的产生模型。

参考教材146页

modulexlmcs(clock,z);

inputclock;

outputz;

regz;

parameters0=1,s1=2,s2=3,s3=4,s4=5,s5=6,s6=7,s7=8,s8=9,

s9=10,s10=11,s11=12,s12=13,s13=14,s14=15,s15=16;

reg[3:

0]moore_state;

always@(posedgeclock)

case(moore_state)

s0:

beginz=1;moore_state=s1;end

s1:

beginz=0;moore_state=s2;end

s2:

beginz=0;moore_state=s3;end

s3:

beginz=1;moore_state=s4;end

s4:

beginz=1;moore_state=s5;end

s5:

beginz=0;moore_state=s6;end

s6:

beginz=0;moore_state=s7;end

s7:

beginz=1;moore_state=s8;end

s8:

beginz=0;moore_state=s0;end

s9:

moore_state=s0;

s10:

moore_state=s0;

s11:

moore_state=s0;

s12:

moore_state=s0;

s13:

moore_state=s0;

s14:

moore_state=s0;

s15:

moore_state=s0;

endcase

endmodule

8、描述一个序列码(101_0010_0101_1001)的检测模型。

modulejc(z,clk,in);

outputz;

inputclk,in;

reg[15:

1]cun,bz;

regz;

always@(posedgeclk)

begin

bz=15’b101_0010_0101_1001;

cun=cun<<1;

cun[1]=in;

z=(cun==bz)?

1:

0;

end

endmodule

9、由一个10进制和6进制的计数器,分别用图形输入方式和文本输入方式设计实现60进制的计数器。

参考教材144页

modulecounter10(z,out,data,load,clk);

outputz;

output[3:

0]out;//1位10进制数只需4位2进制数表示

input[3:

0]data;//data为计数器输入初值

inputload,clk;//load数据输入标志位

reg[3:

0]out;

regz;

always@(posedgeclk)

begin

if(load)

out=data;//load为高电平时,预置计数器初值

elseif(out≥1010)

z=1;//计数器已经计到9,输出进位标志

elseout=out+1;//计数器加1

end

endmodule

modulecounter6(z,out,data,load,clk);

outputz;

output[2:

0]out;//1位6进制数只需3位2进制数表示

input[2:

0]data;//data为计数器输入初值

inputload,clk;//load数据输入标志位

reg[2:

0]out;

regz;

always@(posedgeclk)

begin

if(load)

out=data;//load为高电平时,预置计数器初值

elseif(out≥110)

z=1;//计数器已经计到5,输出进位标志

elseout=out+1;//计数器加1

end

endmodule

modulecnt60(F,cout,cdata,cload,clock);//调用刚才的模块组成60进制计数器

inputcload,clock;

input[6:

0]cdata;//高3位为十位,低4位为个位

output[6:

0]cout;

outputF;

wirea,b;

counter10u1(a,cout[3:

0],cdata[3:

0],cload,clock);//调用10进制计数器(个位)

counter6u2(b,cout[6:

4],cdata[6:

4],cload,clock);//调用6进制计数器(十位)

andu3(F,a,b);//当两个计数器的标志都置位时,60进制标志位置位

endmodule

10、描述用Verilog-HDL语言,建模的一般步骤(流程)?

 

 

11、试述用Verilog-HDL语言,在MAX+plusⅡ软件下,采用GW48开发器和EPM7128LC8的FPGA器件,设计并验证某系统的主要步骤:

1、分析设计任务,功能模块划分。

2、程序编写

3、利用软件输入、选择器件EPM7128LC8、编译、仿真。

4、引角锁定、下载程序目标芯片。

5、在GW48开发器验证功能。

12、异步(同步)带清零(置位)功能的上升沿(下降沿)触发的D触发器。

参考教材142页

*异步清0、置1的D触发器描述。

moduleDFF1(q,qn,d,clk,set,reset);

inputd,clk,set,reset;

outputq,qn;

regq,qn;

always@(posedgeclkornegedgesetornegedgereset)/*清0和置1均为独立的触发事件,也就是说并未和时钟同步*/

begin

if(!

reset)begin

q=0;//异步清0,低电平有效

qn=1;

end

elseif(!

set)begin

q=1;//异步置1,低电平有效

qn=0;

end

elsebegin

q=d;

qn=~d;

end

end

endmodule

*同步清0、置1的D触发器描述

moduleDFF2(q,qn,clk,set,reset);

inputd,clk,set,reset;

outputq,qn;

regq,qn;

always@(posedgeclk)/*上升沿时钟触发事件是唯一的事件控制,后面的清0和置1

均在该事件发生时实现,这就是所谓的同步*/

begin

if(reset)begin

q=0;qn=1;//同步清0,高电平有效

end

elseif(set)begin

q=1;qn=0;//同步置1,高电平有效

end

elsebegin

q=d;qn=~d;

end

end

endmodule

 

13、描述一个重复产生图示波形的Verilog-HDL模型。

26

2510151617222324

modulewave(wav);

outputwav;

regwav;

initial

fork

wav=0;

#2wav=1;

#5wav=0;

#10wav=1;

#15wav=0;

#16wav=l;

#17wav=0;

#22wav=1;

#23wav=0;

#24wav=l;

#26wav=0;

join

endmodule

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1