EDA技术题库
目录
EDA技术题库
一.填空题
二.简述题
三、选择题
四、计算题(更全的,就看实验)
一.填空题
1.Verilog的基本设计单元是模块。它是由两部分组成,一部分描述接口;另一部分描述逻辑功能,即定义输入是如何影响输出的。
2.用assign描述的语句我们一般称之为组合逻辑,并且它们是属于并行语句,即于语句的书写次序无关。而用always描述的语句我们一般称之为组合逻辑或时序逻辑,并且它们是属于串行语句,即于语句的书写有关。
3.在case语句中至少要有一条default语句。
4.已知x=4’b,y=4’,则x的4位补码为4’b,而y的4位的补码为4’b。
5.两个进程之间是并行语句。而在Always中的语句则是顺序语句。
6.综合是将高层次上描述的电子系统转换为低层次上描述的电子系统,以便于系统的具体硬件实现。综合器是能自动将高层次的表述(系统级、行为级)转化为低层次的表述(门级、结构级)的计算机程序。
7.设计输入的方式有原理图、硬件描述语言、状态图以及波形图。
8.IP核是知识产权核或知识产权模块,在EDA技术中具有十分重要的地位。半导体产业的IP定义为用于ASIC或FPGA中的预先设计好的电路功能模块。IP分为软IP、固IP和硬IP。
9.Verilog中常用有两种变量:寄存器型变量(用reg定义)、网线型变量(用wire定义)。
10.两种可编程逻辑结构是基于与-或阵列可编程结构(乘积项逻辑可编程结构)、基于SRAM查找表的可编程逻辑结构。
11.Verilog的端口模式有三种:输入端口、输出端口、双向端口,对应的端口定义关键词分别是:input、output、inout。
12.Verilog中常用有两种变量:寄存器型变量(用reg定义)、网线型变量(用wire定义)。
13.Verilog有两种赋值方式:阻塞式赋值(=)、非阻塞式赋值(=)。
14.Verilog有四种循环语句:for语句、repeat语句、while语句、forever语句。
15.Verilog的描述风格:RTL描述、数据流描述、行为描述、结构描述。
16.从状态机的信号输出方式上分,有Mealy型和Moore型两种状态机;从状态机的描述结构上分,有单过程状态机和多过程状态机;从状态机表达方式上分,有符号化状态机和确定状态编码的状态机;从状态机编码方式上分,有顺序编码状态机、一位热码编码状态机或其他编码方式状态机。
17.四种简单逻辑器件:PROM中固定的与阵列,可编程或阵列;PLA是与阵列、或阵列都可编程;PAL中或阵列固定,与阵列可编程;GAL是或阵列、与阵列都可编程,输入部分增加了输出逻辑同单元(OLMC)。
18.某一纯组合电路输入为in1,in2和in3,输入出为out,则该电路描述中always的事件表达式应写为always
(in1,in2,in3);若某一时序电路由时钟clk信号上升沿触发,同步高电平复位信号rst清零,该电路描述中always的事件表达是应该写为always(posedgeclk)。19.
if(a)out1=int1;
elseout1=int2;
当a=1;执行out1=int1;
当a=0;执行out1=int2。
20.4’b2=4’b,4’b2=4’b。
21.下面程序中语句5、6、7、11是并行执行,语句9、10是顺序执行:
1moduleM(……);
2input…….;
3output……;
4rega,b……;
5always
(……..)6assignf=cd;
7always
(……..)8begin
9a=…….;
10b=…….;
end
11muxmux1(out,in0,in1);
Endmodule
22.用EDA技术进行电子系统设计的目标是最终完成ASIC的设计与实现。
23.可编程器件分为CPLD和FPGA。
24.随着EDA技术的不断完善与成熟,自顶向下的设计方法更多的被应用于VerilogHDL设计当中。
25.目前国际上较大的PLD器件制造公司有ALtera和Xilinx公司。
26.完整的条件语句将产生组合电路,不完整的条件语句将产生时序电路。
27.阻塞性赋值符号为=,非阻塞性赋值符号为=。
28.有限状态机分为Moore和Mealy两种类型。
29.EDA缩写的含义为电子设计自动化(ElectronicDesignAutomation)。
30.状态机常用状态编码有二进制、格雷码和独热码。
31.VerilogHDL中任务可以调用其他任务和函数。
32.系统函数和任务函数的首字符标志为$,预编译指令首字符标志为#。
33.可编程逻辑器件的优化过程主要是对速度和资源的处理过程。
34.大型数字逻辑电路设计采用的IP核有软IP、固IP和硬IP。
35.操作符有9种类型,其中三目操作符有2个操作符和3个操作数。
36.关键字全是小写,标识符的首字符必须是字母或下划线。
37.数字A=5’b?的?表示z。设B=5’bx1,C=5’b01x11,则操作运算F=B+C的结果F=5bxxxxx。
38.VerilogHDL中保存字符串“Hello”需要40位。
39.声明reg[7:0]data[4:0]表示5个8位的存储单元。
40.
moduletest(q,clk,crt);
outputq;
regq;
inputclk,crt;
always
(posedgeclk)begin
if(crt==1)
q=~q;
end
Endmodule
41.数据流建模的主要语法结构是assignLHS_target=RHS_expression;语句,采用assign关键字开始。
42.大型数字逻辑电路设计采用的IP核有软IP、固IP和硬IP。
二.简述题
1.简述自顶向下的设计方法I
答:①从自然语言说明到HDL的系统行为描述;②从HDL的系统行为描述到RTL描述;③从RTL描述到逻辑门级描述;④从门级描述到最终可以物理布线实现的底层电路;(以上可以理解成是逐步综合的过程。)⑤后期设计还包括涉及硬件实现和测试。
2.简述EDA的设计流程
答:①图形输入:a.原理图b.硬件描述语言c.状态图d.波形图;②HDL文本输入﹔③综合;④适配;功能仿真与时序仿真;⑥编程下载;⑦硬件测试
3.简述什么是元件例化
答:元件例化就是引入一种连接关系,将预先设计好的元件,与当前设计模块中的指定端口相连接,从而构成层次化的设计方式。元件例化可以是多层次的,一个调用了较低层次元件的设计模块,也可以被更高层次的设计模块调用,成为高层次设计模块中的一个元件。被例化的元件可以以不同的形式出现,可以是Verilog,设计文件,可以是FPGA元件库中的元件,或者是以别的硬件描述语言设计的元件,还可以是IP核。
4.简要说明仿真时阻塞赋值与非阻塞赋值的区别
非阻塞(non-blocking)赋值方式(b=a):b的值被赋成新值a的操作,并不是立刻完成的,而是在块结束时才完成;块内的多条赋值语句在块结束时同时赋值;硬件有对应的电路。阻塞(blocking)赋值方式(b=a):b的值立刻被赋成新值a;完成该赋值语句后才能执行下一句的操作;硬件没有对应的电路,因而综合结果未知。阻塞赋值是在该语句结束是立即完成赋值操作;非阻塞赋值是在整个过程块结束是才完成赋值操作。
5.简述if语句的几种主要结构
答:①if(条件表达式)
begin语句块;end
②if(条件表达式)
begin语句块1;end
elsebegin语句块2;end
③if(条件表达式1)
begin语句块1;end
elseif(条件表达式2)begin语句块2;
end…
elseif(条件表达式n)
begin语句块n;end
elsebegin语句块n+1;end
6.简述Moore型和Mealy型状态机的区别-
答:Mealy型状态机的输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的,不依赖时钟的同步。Moore型状态机的输出则仅为当前状态的函数,这类状态机在输入发生变化时还必须等待时钟的到来,时钟状态发生变化时才导致输出的变化,所以比Mealy机要多等待一个时钟周期。
7.画出下面程序段中r(reg型)的仿真波形(6分)
fork
#20r=1’b0;
#10r=1’b1;
#15r=1’b1;
#25r=1’b1;
#5r=1’b0;
Join
8.画出下面程序综合出来的电路图。(7分)
always
(posedgeclk)begin
q0=~q2;
q1=q0;
q2=q1;
End
9.HA模块程序如下,写出引用HA模块描述FA模块的Verilog,程序。(7分)
moduleHA(A,B,S,C);
inputA,B;
outputS,C;
assign{C,S}=A+B;
endmodule
moduleFA(A,B,Ci,Co,S);
inputA,B,Ci;
outputCo,S;
wireS1,C1,C2;
HAa(A,B,S1,C1);
HAb(S1,Ci,C2,S);
assignCo=C1
C2;
endmodule
10.写出下面程序中变量x,y,cnt,m,q的类型
Assginx=y;
always
(posegdeclk)begin
cnt=m+1;
q=~q;
end
11.定义如下的变量和常趣:
(1)定义一个名为count的整数;(integercount
(2)定义一个名为ABUS的8位wire总线;(wire[7:0]ABUS)
(3)定义一个名为address的16位reg型变量,并将该变量的值赋为十进制数;(reg[15:0]addressaddress=16d)
(4)定义参数Delay_time,参数值为8;(parameterDelay_time=8)
(5)定义一个名为DELAY的时间变量;(没讲过)
(6)定义一个32位的寄存器MYREG;(reg[31:0]MYREG;)
(7)定义一个容量为,字长为32位的存储器MYMEM,(reg[31:0]MYMEM[:0])
12.下列标识符哪些是合法的,哪些是错误的?
Cout(y),8sum(n),\a*b(y),data(y),\wait(y),initial(n),$1atch(n)
答:
合法的:Cout(y),\wait(y),initial(n),$1atch(n)
错误的:8sum(n),\a*b(y),data(y)
13.下列数字的表示是否正确?
6d18(y),Bx0(y),5b0x(y),da30(n),10’d2(y),hzF(y)
答:
合法的:Bx0(y),da30(n),hzF(y)
错误的:6d18(y),5b0x(y),10’d2(y)
14.简述有限状态机FSM分为哪两类﹖有何区别?有限状态机的状态编码风格主要有哪三种?
答:根据内部结构不同可分为摩尔型状态机和米里型状态机两种。摩尔型状态机的输出只由当前状态决定,而次态由输入和现态共同决定;米里型状态机的输出由输入和现态共同决定,而次态也由输入和现态决定。
状态编码主要有三种:连续二进制编码、格雷码和独热码。
15.简述基于数字系统设计流程包括哪些步骤?
答:包括五个步骤:
(1)、设计输入:将设计的结构和功能通过原理图或硬件描述语言进行设计或编程,进行语法或逻辑检查,通过表示输入完成,否则反复检查直到无任何错误。
2)、逻辑综合:将较高层的设计描述自动转化为较低层次描述的过程,包括行为综合,逻辑综合和版图综合或结构综合,最后生成电路逻辑网表的过程。
(3、布局布线:将综合生成的电路网表映射到具体的目标器件中,并产生最终可下载文件的过程。
(4)、仿真:就是按照逻辑功能的算法和仿真库对设计进行模拟,以验证设计并排除错误的过程,包括功能仿真和时序仿真。
(5)、编程配置:将适配后生成的编程文件装入到PLD器件的过程,根据不同器件实现编程或配置。
16.程序注解,并说明整个程序完成的功能。
moduleAAA(a,b);//定义模块名为AAA,端口为a,b
outputa;//定义a为输出端口
input[6:0]b;//定义b为输出端口,b为7为二进制数
reg[2:0]sum;//sum为reg型变量,用以统计赞同的人数
integeri;//定义整型变量,i为循环控制变量
rega;//定义a为寄存器变量
always
(b)//过程语句,敏感变量为bbegin//语句块
sum=0;//sum初始值为0
for(i=0;i=6;i=i+1)//for语句,统计b为1的个数
if(b)//条件语句
sum=sum+1;//只要有人投赞成票,则sum加1
if(sum[2])a=1;//若超过4人则表决通过
elsea=0//若不到4人则不通过
三、选择题
1、已知“a=1b’1;b=3b;”那么{a,b}=(C)
(A)4b0
(B)3b
(C)4b
(D)3b
2、在verilog.中,下列语句哪个不是分支语句?(D)
(A)if-else
(B)case
(C)casez
(D)repeat
3、在verilog.语言中,a=4b1.那么a=(D)
(A)4b1
(B)4b
(C)1b1
(D)1b0
4、在verilog.语言中整型数据与(C)位寄存器数据在实际意义上是相同的。
(A)8
(B)16
(C)32
(D)64
5、大规模可编程器件主要有FPGA、CPLD两类,下列对FPGA结构与工作原理的描述中正确的是(C)
A.FPGA全称为复杂可编程逻辑器件;
B.FPGA是基于乘积项结构的可编程逻辑器件;
C.基于SRAM的FPGA器件,在每次上电后必须进行-次配置;
D.在Altera公司生产的器件中,MAX系列属FPGA结构。
6、子系统设计优化,主要考虑提高资源利用率减少功耗(即面积优化),以及提高运行速度(即速度优化);指出下列哪些方法是面积优化(B)
①流线设计②资源共享③逻辑优化④串化⑤寄存器配平⑥关键路径法
A.①③⑤
B.②③④
C.②⑤⑥
D.①④⑥
7、下列标识符中,A是不合法的标识符。
A.9moon
B.State0
C.Not_Ack0
D,signall
8、下列语句中,不属于并行语句的是:(D)
A.过程语句
B.asgn语句
C.元件例化语句
D.case语句
9、P,Q,R都是4bit的输入矢量,下面哪一种表达形式是正确的5)
1)inputP[3:0],Q,R:
2)inputP,Q,R[3:0];
3)inputP[3:0],Q[3:0],R[3;0]:]
4)input[3:0]P,[3:0]Q,[0:3]R;
5)input[3:0]P,Q,R;
10、下列标示符哪些是合法的(B)
A、Stime
B、._date
C、8sum
D、mux#
11、如果线网类型变量说明后未赋值,起缺省值是(D)
A、x
B、1
C、0
D、Z
12、现网中的值被解释为无符号数。在连续赋值语句中assignaddr3:0];3;addr被赋与的值是(A)
A、4b1
B、4b0
C、4bxox11
D、4bzz11
13、reg[7:0]memal:0]正确的赋值是(A)
A、mema=3’do.
B、8’d0:
C、1’b1:
D、mema[51[3:01=4’d
14、在code模块中参数定义如下,请问top模块中d1模块delay1、delay2的值是(D)
modulecode(x,v);
moduletop;
parameedelay1=1,delay2=1;
........
code#(1,5)d1(x1,V1);
endmodule
Endmodule
A、(1,1)
B、(5,5)
C、(5,1)
D、(1,5)
15、"a=4b1,be4bx"选出正确的运算结果(B)
A、ab=O
B、ab=1
C、ba=x
D、ba=x
16、时间尺度定义为timescale10ns/ps.选择正确答案(C)
A、时间精度10ns
B、时间单位ps
C、时间精度ps
D、时间精度不确定
17、若a=9,执行Sdisplay(“currentvalue=%0b,a=%0d",a,a)正确显示为(B)
A、currentvalue=,a=09
B、currentvale=,a=9
C、,9
D、currentvl00..10,a=9
18、awaysbegin#5clk=0;#10clk-~ck;end产生的波形(A)
A、占空比1/3
B、dk=1
C、dk≈0
D、周期为10
19、在Verilog.中定义了宏名definesumatb+c下面宏名引用正确的是(A)
A、out=sum+d;
B、out-sum+d;
C、out=sum+d;
D、都正确
20、下面哪个是可以用verilog语言进行描述,而不能用VHDL语言进行描述的级别?(A)
(A)开关级
(B)门电路级
(C)体系结构级
(D)寄存器传输级
21、在verilog.中,下列语句哪个不是分支语句?(D)
(A)if-else
(B)case
(C)casez
(D)repeat
22、下列哪些Verilog的基本门级元件是多输出(D)
(A)nand
(B)nor
(C)and
(D)not
23、Verilog连线类型的驱动强度说明被省略时,则默认的输出驱动强度为(B)
(A)supply
(B)strong
(C)pull
(D)weak
24、元件实例语句“noti1#(1:34,2:3:4,1:2:4)Ulout,in,ctrD;"中截至延迟的典型值为(B)
(A)1
(B)2
(C)3
(D)4
25、已知“a=1b1;b=3b;"那么{a,b}=(C)
(A)4b"0
(B)3b
(C)4b
(D)3b
26、根据调用子模块的不同抽象级别,模块的结构描述可以分为(ABC)
(A)模块级
(B)门级
(C)开关级
(D)寄存器级
27、在verilog语言中,a=4b1.那么a=(D)
(A)4b1
(B)4)
(C)1b1
(D)1b0
28、在verilog,语言中整型数据与(C)位寄存器数据在实际意义上是相同的。
(A)8
(B)16
(C)32
(D)64
29、状态机编码方式中,其中A占用触发器较多,但其简单的编码方式可减少状态译码组合逻辑资源,且易于控制非法状态。
A.一位热码编码
B.顺序编码
C.状态位直接输出型编码
D.格雷码编码
30、综合是EDA设计流程的关键步骤。在下面对综合的描述中,错误的是(D)
A.综合就是把抽象设计层次中的一.种表示转化成另--种表示的过程。
B.综合就是将电路的高级语言转化成低级的,可与FPGA/CPLD的基本结构相映射的网表文件。
C.为实现系统的速度、面积、性能的要求,需要对综合加以约束,称为综合约束。
D.综合可理解为,将软件描述与给定的硬件结构用电路网表文件表示的映射过程,并且这种映射关系是唯-的(即综合结果是唯-的)。
31、规模可编程器件主要有FPGA.CPLD两类,其中CPLD通过_A_实现其逻辑功能。
A.可编程乘积项逻辑
B.查找表(LUT)
C.输入缓冲
D.输出缓冲
32、不完整的IF语句,其综合结果可实现(A)。
A.时序逻辑电路
B.组合逻辑电路
C.双向电路
D.三态控制电路
33、基于EDA软件的FPGA/CPLD设计流程为:原理图/HDL文本输入→(A)→综合→适配一____一编程下载一硬件测试。
A.功能仿真
B.时序仿真
C.逻辑综合
D.配置
34、IP核在EDA技术和开发中具有十分重要的地位:提供用VHDL等硬件描述语言描述的功能块,但不涉及实现该功能块的具体电路的IP核为(A)。
A.软IP
B.固IP
C.硬IP
D.全对
四、计算题(更全的,就看实验)
(1)2/4分频器Verilog描述语句
modulediv_2_4(reset,clk_in,clk2_out,clk4_out);
inputclk_in,reset;
outputclk2_out,clk4_out;
regclk2_out,clk4_out;
always
(posedgeclk_in)//时钟上升沿触发begin
if(~reset)begin//同步复位
clk2_out=0;
clk4_out=0;
end
elsebegin
clk2_out=~clk2_out;
if(~clk2_out)clk4_out=~clk4_out;
end
end
Endmodule
(2)1/6,10分频参考程序(N=6,10)
modulediv_6(reset,clk_in,clk6_out,clk10_out);
inputclk_in,reset;
outputclk6_out,clk10_out;
regclk6_out,clk10_out;
parameterWIDTH=3;
reg[WIDTH:0]temp1,[WIDTH:0]temp2;
always
(posedgeclk_in)begin
if(~reset)begin
clk6_out=0;
clk10_out=0;
temp1=2;temp2=4;end//使复位后的第一个时钟
elsebegin//就开始分频
temp1=temp1+1;temp2=temp2+1;
if(temp12)beginclk6_out=~clk6_out;
temp1=0;end
if(temp24)beginclk10_out=~clk10_out;
temp2=0;end
end
end
endmodule
(3)占空比为50%的三分频器Verilog描述程序
modulefen3(clkin,qout1,qout2,clkout);
inputclkin;
outputregqout1,qout2;
outputclkout;wireclkout;
assignclkout=qout1
qout2;
always
(posedgeclkin)begin:blk1
reg[1:0]cnt;
if(clkin==1b1)begin
if(cnt1)begin
qout1=1b1;
cnt=cnt+1;end
elsebegin
qout1=1b0;
cnt=cnt+1;
if(cnt1)cnt=0;end
end
end
always
(negedgeclkin)begin:blk2
reg[1:0]cnt;
if(clkin==1b0)begin
if(cnt1)begin
qout2=1b1;
cnt=cnt+1;end
elsebegin
qout2=1b0;
cnt=cnt+1;
if(cnt1)cnt=0;end
end
end
endmodule
(4)由输入信号检测序列Verilong程序
modulemealyfsm(clk,reset,din,dout,cs_state,ns_state);
outputdout;
output[1:0]cs_state,ns_state;
inputclk,reset,din;
regdout;
//用格雷码编码声明状态值
parameter[1:0]s0=2b00,s1=2b01,s2=2b11;
reg[1:0]cs,ns;
assigncs_state=cs,ns_state=ns;
always
(posedgeclk,posedgereset)beginif(reset==1b1)//异步复位,高电平有效
cs=s0;
else
cs=ns;end
//次态计算及输出信号产生,
always
(cs,din)case(cs)
s0:begin
dout=1b0;
if(din===1bx)ns=s0;
elsens=(din)?s0:s1;
end
s1:begin
dout=1b0;
ns=(!din)?s1:s2;
end
s2:begin
dout=(din)?1b0:1b1;
ns=(din)?s0:s1;
end
default:begin
dout=1b0;
ns=s0;
end
endcase
endmodule
(5)BCD码编码器程序:采用行为描述实现编码逻辑电路功能
moduleBCD_Enc(in,out);
input[9:0]in;
output[3:0]out;reg[3:0]out;
always
(in)//always过程语句begin
case(in)
10‘b00__0:out=0;
10‘b00__:out=1;
10‘b00__:out=2;
10‘b00__0:out=3;
10‘b00_0_:out=4;
10‘b00__:out=5;
10‘b00__:out=6;
10‘b00_0_:out=7;
10‘b01__:out=8;
10‘b10__:out=9;
endcase
end
Endmodule
(6)BCD码函数调用
modulebcd_enc(in,out);
input[9:0]in;output[3:0]out;
assignout=func_enc(in);//函数调用
function[3:0]func_enc;//函数定义
input[9:0]in;
case(in)
10b00__0:func_enc=0;
10b00__:func_enc=1;
10b00__:func_enc=2;
10b00__0:func_enc=3;
10b00_0_:func_enc=4;
10b00__:func_enc=5;
10b00__:func_enc=6;
10b00_0_:func_enc=7;
10b01__:func_enc=8;
10b10__:func_enc=9;
endcase
endfunction
endmodule