EDA技术题库
一.填空题
1. Verilog的基本设计单元是模块。它是由两部分组成,一部分描述接口;另一部分描述逻辑功能,即定义输入是如何影响输出的。
2. 用assign描述的语句我们一般称之为组合逻辑,并且它们是属于并行语句,即于语句的书写次序无关。而用always描述的语句我们一般称之为组合逻辑或时序逻辑,并且它们是属于串行语句,即于语句的书写有关。
3.在case语句中至少要有一条default语句。
4. 已知x=4’b1001,y=4’0110,则x的4位补码为4’b1111,而y的4位的补码为4’b0110 。
5. 两个进程之间是并行语句。而在Always中的语句则是顺序语句。
6.综合是将高层次上描述的电子系统转换为低层次上描述的电子系统,以便于系统的具体硬件实现。综合器是能自动将高层次的表述(系统级、行为级)转化为低层次的表述(门级、结构级)的计算机程序
7. 设计输入的方式有原理图、硬件描述语言、状态图以及波形图。
8.按照仿真的电路描述级别的不同,HDL仿真器可以完成:系统级仿真,行为级仿真,RTL 级仿真,门级(时序)仿真。按照仿真是否考虑硬件延时分类,可以分为:功能仿真和时序仿真。仿真器可分为基于元件(逻辑门)仿真器和基于HDL语言的仿真器
9. IP核是知识产权核或知识产权模块,在EDA技术中具有十分重要的地位。半导体产业的IP定义为用于ASIC或FPGA中的预先设计好的电路功能模块。IP分为软IP、固IP和硬IP。
10.可编程逻辑器件PLD是一种通过用户编程或配置实现所需逻辑功能的逻辑器件,也就是说用户可以根据自己的需求,通过EDA开发技术对其硬件结构和工作方式进行重构,重新设计其逻辑功能
11.两种可编程逻辑结构是基于与-或阵列可编程结构(乘积项逻辑可编程结构)、基于SRAM 查找表的可编程逻辑结构
按集成度分类:简单PLD、复杂PLD;按结构分类:基于“与-或”阵列结构的器件、基于查找表结构的器件;从编程工艺上分类:熔丝型、反熔丝型、EPROM型、EEPROM型、SRAM 型、Flash型
的端口模式有三种:输入端口、输出端口、双向端口,对应的端口定义关键词分别是:input、output、inout
中常用有两种变量:寄存器型变量(用reg定义)、网线型变量(用wire定义)
有两种赋值方式:阻塞式赋值(=)、非阻塞式赋值(<=)
有四种循环语句:for语句、repeat语句、while语句、forever语句的描述风格:RTL描述、数据流描述、行为描述、结构描述
18.从状态机的信号输出方式上分,有Mealy型和Moore型两种状态机;从状态机的描述结构上分,有单过程状态机和多过程状态机;从状态机表达方式上分,有符号化状态机和确定状态编码的状态机;从状态机编码方式上分,有顺序编码状态机、一位热码编码状态机或其他编码方式状态机。
19.四种简单逻辑器件:PROM中固定的与阵列,可编程或阵列;PLA是与阵列、或阵列都可编程;PAL中或阵列固定,与阵列可编程;GAL是或阵列、与阵列都可编程,输入部分增加了输出逻辑同单元(OLMC)
的组成结构:逻辑阵列块(由逻辑宏单元构成)、扩展乘积项(共享和并联)、可编程连线阵列、I/O控制块
的组成结构:逻辑阵列块LAB(由多个逻辑宏单元构成)、嵌入式存储器块、嵌入式硬件乘法器、I/O单元和PLL等模块。
22.某一纯组合电路输入为in1,in2和in3,输入出为out,则该电路描述中always的事件表达式应写为always@(in1,in2,in3 );若某一时序电路由时钟clk信号上升沿触发,同步高电平复位信号rst清零,该电路描述中always的事件表达是应该写为always @(posedge clk )。
23.在模块中对任务进行了定义,调用此任务,写出任务的调用 mytast(f,g,m,n,p) 。task mytast; 要求:变量的传递关系如下
output x,y; m——a,n——b,p——c,x——f,y——g
input a,b,c;
…….
endtask
(a) out1<=int1; 当a= 1 执行out1<=int1
else out1<=int2; 当a= 0 执行out1<=int2
’ b1001<<2= 4’b0100,4’ b1001>>2= 4’b0010 。
26.下面程序中语句5、6、7、11是并行执行,语句9、10是顺序执行
1 module M(……);
2 input ……. ;
3 output ……;
4 reg a,b……;
5 always@(……..)
6 assign f=c&d;
7 always@(……..)
8 begin
9 a=…….;
10 b=…….;
end
11 mux mux1(out,in0,in1);
endmodule
27. 用EDA技术进行电子系统设计的目标是最终完成
28. 可编程器件分为CPLD和FPGA。
29. 随着EDA技术的不断完善与成熟,自顶向下的设计方法更多的被应用于Verilog HDL 设计当中。
30. 目前国际上较大的PLD器件制造公司有ALtera和Xilinx公司。
31. 完整的条件语句将产生组合电路,不完整的条件语句将产生时序电路。
32. 阻塞性赋值符号为=,非阻塞性赋值符号为 <= 。
33.有限状态机分为Moore和Mealy两种类型。
34、EDA
35.状态机常用状态编码有二进制、格雷码和独热码。
36.Verilog HDL中任务可以调用其他任务和函数。
37.系统函数和任务函数的首字符标志为$,预编译指令首字符标志为#。
38.可编程逻辑器件的优化过程主要是对速度和资源的处理过程。
39、大型数字逻辑电路设计采用的IP核有软IP、固IP和硬IP。
二.简答题
1.简述自顶向下的设计方法
答:①从自然语言说明到HDL的系统行为描述;②从HDL的系统行为描述到RTL描述;③从RTL描述到逻辑门级描述;④从门级描述到最终可以物理布线实现的底层电路;(以上可以理解成是逐步综合的过程。)⑤后期设计还包括涉及硬件实现和测试。
2.简述EDA的设计流程
答:①图形输入:a.原理图b.硬件描述语言c.状态图d.波形图;②HDL文本输入;③综合;
④适配;⑤功能仿真与时序仿真;⑥编程下载;⑦硬件测试
3.简述过程语句的执行过程
答:①由always@引导的过程语句结构是Verilog中最常用和最重要的语句结构。②任何顺序语句都必须放在过程语句结构中。③通常要求将过程语句中所有的输入信号都放在敏感信号表中。(a.用文字or连接所有敏感信号。b.用逗号区分或连接所有敏感信号。c.省略形式,只写成(*),或直接写成 always @ * ,显然试图通过选择性地列入敏感信号来改变逻辑设计是无效的。)④过程语句的执行依赖于敏感信号的变化(发生事件)。当某一敏感信号发生变化,过程语句被启动,内部的所有顺序语句被执行一遍,然后返回过程起始端,再次进入等待状态,直到下一次某一敏感信号发生变化再次进入“启动-运行”状态。过程语句结构是一个不断重复运行的模块。⑤一个模块中可以包含任意个过程语句,过程语句本身属于并行语句,而由过程引导的各类语句属于顺序语句。
4.简述什么是元件例化
答:元件例化就是引入一种连接关系,将预先设计好的元件,与当前设计模块中的指定端口相连接,从而构成层次化的设计方式。元件例化可以是多层次的,一个调用了较低层次元件的设计模块,也可以被更高层次的设计模块调用,成为高层次设计模块中的一个元件。被例
化的元件可以以不同的形式出现,可以是Verilog设计文件,可以是FPGA元件库中的元件,或者是以别的硬件描述语言设计的元件,还可以是IP核。
5. 简要说明仿真时阻塞赋值与非阻塞赋值的区别
非阻塞(non-blocking)赋值方式 ( b<= a):
b的值被赋成新值a的操作, 并不是立刻完成的,而是在块结束时才完成;块内的多条赋值语句在块结束时同时赋值;硬件有对应的电路。阻塞(blocking)赋值方式 ( b = a):b的值立刻被赋成新值a;完成该赋值语句后才能执行下一句的操作;硬件没有对应的电路,因而综合结果未知。
阻塞赋值是在该语句结束是立即完成赋值操作;非阻塞赋值是在整个过程块结束是才完成赋值操作。
6.简述if语句的几种主要结构
答:①if(条件表达式)
begin 语句块;end
②if(条件表达式)
begin 语句块1;end
else begin 语句块2;end
③if(条件表达式1)
begin 语句块1;end
else if(条件表达式2)
begin 语句块2;
end …
else if(条件表达式n)
begin 语句块n;end
else begin 语句块n+1;end
7.简述Moore型和Mealy型状态机的区别
答:Mealy型状态机的输出是当前状态和所有输入信号的函数,它的输出是在输入变化后
立即发生的,不依赖时钟的同步。Moore型状态机的输出则仅为当前状态的函数,这类状态机在输入发生变化时还必须等待时钟的到来,时钟状态发生变化时才导致输出的变化,所以比Mealy机要多等待一个时钟周期。
语句和initial语句的关键区别是什么能否相互嵌套(5分)
always语句是循环语句,initial只执行一次。它们不能嵌套。
9.画出下面程序段中r(reg型)的仿真波形 (6分)
fork
#20 r=1’ b0;
#10 r=1’ b1;
#15 r=1’ b1;
#25 r=1’ b1;
#5 r=1’ b0;
join
10.画出下面程序综合出来的电路图。(7分)
always@(posedge clk)
begin
q0<=~q2;
q1<= q0;
q2<= q1;
End
模块程序如下,写出引用HA模块描述FA模块的Verilog程序。(7分)
module HA(A,B,S,C);
input A,B;
output S,C;
assign {C,S}=A+B;
endmodule
module FA(A,B,Ci,Co,S);
input A,B,Ci;
output Co,S;
wire Sl,C1,C2;
HA a(A,B,Sl,C1);
HA b(Sl,Ci,C2,S);
assign Co=C1|C2;
endmodule
12、写出下面程序中变量x,y,cnt,m,q的类型(5分)
Assgin x=y;
x为wire型
always@(posegde clk)
y为reg或wire型
begin
cnt为reg型
cnt=m+1;
q=~q;
end
13.initial和always预计的关键区别是什么
14.intial只能用在仿真中,只在0时刻开始执行一次
15.always可以用在仿真中也可以用在综合中,只要触发条件满足,就会重复执行其中的语句
16.定义如下的变量和常量:
17.(1)定义一个名为count的整数;(integer count)
18.(2)定义一个名为ABUS的8位wire总线;(wire [7:0] ABUS)
19.(3)定义一个名为address的16位reg型变量,并将该变量的值赋为十进制数128;(reg [15:0] address address = 16'd128)
20.(4)定义参数Delay_time, 参数值为8;(parameter Delay_time = 8)
21.(5)定义一个名为DELAY的时间变量;(没讲过)
22.(6)定义一个32位的寄存器MYREG;(reg [31:0] MYREG;)
23.(7)定义一个容量为128,字长为32位的存储器MYMEM;(reg [31:0] MYMEM [127:0])
24.下列标识符哪些是合法的,哪些是错误的
25.Cout(y), 8sum(n), \a*b(y), _data(y), \wait(y), initial(n), $latch(n)
26.16.下列数字的表示是否正确
27.6'd18(y), 'Bx0(y), 5'b0x110(y), 'da30(n), 10'd2(y), 'hzF(y)
17.简述有限状态机FSM分为哪两类有何区别有限状态机的状态编码风格主要有哪三种
根据内部结构不同可分为摩尔型状态机和米里型状态机两种。摩尔型状态机的输出只由当前状态决定,而次态由输入和现态共同决定;米里型状态机的输出由输入和现态共同决定,而次态也由输入和现态决定。
状态编码主要有三种:连续二进制编码、格雷码和独热码。
18.简述基于数字系统设计流程包括哪些步骤
包括五个步骤:
⑴、设计输入:将设计的结构和功能通过原理图或硬件描述语言进行设计或编程,进行语法或逻辑检查,通过表示输入完成,否则反复检查直到无任何错误。
⑵、逻辑综合:将较高层的设计描述自动转化为较低层次描述的过程,包括行为综合,逻辑综合和版图综合或结构综合,最后生成电路逻辑网表的过程。
⑶、布局布线:将综合生成的电路网表映射到具体的目标器件中,并产生最终可下载文件的过程。
⑷、仿真:就是按照逻辑功能的算法和仿真库对设计进行模拟,以验证设计并排除错误的过程,包括功能仿真和时序仿真。
⑸、编程配置:将适配后生成的编程文件装入到PLD器件的过程,根据不同器件实现编程或配置。
19.简述Verilog HDL编程语言中函数与任务运用有什么特点
20.简述FPGA与CPLD两种器件应用特点。
CPLD与FPGA都是通用可编程逻辑器件,均可在EDA仿真平台上进行数字逻辑电路设计,它们不同体现在以下几方面:
⑴FPGA集成度和复杂度高于CPLD,所以FPGA可实现复杂逻辑电路设计,而CPLD适合简单和低成本的逻辑电路设计。
⑵、FPGA内主要由LUT和寄存器组成,倾向实现复杂时序逻辑电路设计,而CPLD内主要由乘积项逻辑组成,倾向实现组合逻辑电路设计。
⑶、FPGA工艺多为SRAM、flash等工艺,掉电后内信息消失,所以该类型需外配存储器,而CPLD工艺多为EEPROM等工艺,掉电后信息不消失,所以不用外配存储器。
⑷、FPGA相对CPLD成本高,但都可以在内都镶嵌硬核和软核,实现片上系统功能。
三.选择题
1、已知“a =1b’1; b=3b'001;”那么{a,b}=( C )
(A) 4b'0011 (B) 3b'001 (C) 4b'1001 (D) 3b'101
2、在verilog中,下列语句哪个不是分支语句( D )
(A) if-else (B) case (C) casez (D) repeat
4、在verilog语言中,a=4b'1011,那么&a=(D )
(A) 4b'1011 (B) 4b'1111 (C) 1b'1 (D) 1b'0
5、在verilog语言中整型数据与(C)位寄存器数据在实际意义上是相同的。
(A) 8 (B) 16 (C) 32 (D) 64
6、大规模可编程器件主要有FPGA、CPLD两类,下列对FPGA结构与工作原理的描述中,正确的是___C____ 。
A.FPGA全称为复杂可编程逻辑器件;
B.FPGA是基于乘积项结构的可编程逻辑器件;
C.基于SRAM的FPGA器件,在每次上电后必须进行一次配置;
D.在Altera公司生产的器件中,MAX7000系列属FPGA结构。
7. 子系统设计优化,主要考虑提高资源利用率减少功耗(即面积优化),以及提高运行速度(即速度优化);指出下列哪些方法是面积优化___B______。
①流水线设计
②资源共享
③逻辑优化
④串行化
⑤寄存器配平
⑥关键路径法
A.①③⑤B.②③④C.②⑤⑥D.①④⑥
8、下列标识符中,_____A_____是不合法的标识符。
A.9moon B.State0 C.Not_Ack_0 D.signall
9、下列语句中,不属于并行语句的是:____D___
A. 过程语句B.assign语句C.元件例化语句D.case语句
6、10、P,Q,R都是4bit的输入矢量,下面哪一种表达形式是正确的5)
1)input P[3:0],Q,R;
2)input P,Q,R[3:0];
3)input P[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;
1、下列标示符哪些是合法的(B)
A、$time
B、_date
C、8sum
D、mux#
2、如果线网类型变量说明后未赋值,起缺省值是(D)A、x B、1 C、0 D、z
3、现网中的值被解释为无符号数。在连续赋值语句中,assign addr[3:0]=-3;addr被赋予的值是(A)
A、4’b1101
B、4’b0011
C、4’bxx11
D、4’bzz11
4、reg[7:0] mema[255:0]正确的赋值是(A)
A、mema[5]=3’d0,
B、8’d0;
C、1’b1;
D、mema[5][3:0]=4’d1
5、在code模块中参数定义如下,请问top模块中d1模块delay1、delay2的值是( D) module code(x,y);
module top; paramee delay1=1,delay2=1;
…………….
………………………………
code #(1,5) d1(x1,y1); endmodule
endmodule A、(1,1)B、(5,5)C、(5,1)D、(1,5)
6、“a=4’b11001,b=4’bx110”选出正确的运算结果(B)A、a&b=0 B、a&&b=1 C、b&a=x D、b&&a=x
7、时间尺度定义为timescale 10ns/100ps,选择正确答案(C)
A、时间精度10ns
B、时间单位100ps
C、时间精度100ps
D、时间精度不确定
8、若a=9,执行$display(“current value=%0b,a=%0d”,a,a)正确显示为(B)A、current value=1001,a=09 B、current vale=1001,a=9
C、1001,9
D、current vale=00…001001,a=9
9、aways begin #5 clk=0;#10 clk=~clk;end产生的波形(A)A、占空比1/3 B、clk=1 C、clk=0 D、周期为10
10、在Verilog中定义了宏名`define sum a+b+c 下面宏名引用正确的是(A)A、out=’sum+d; B、out=sum+d; C、out=`sum+d; D、都正确
11. 下面哪个是可以用verilog语言进行描述,而不能用VHDL语言进行描述的级别(A)
(A) 开关级(B)门电路级(C) 体系结构级(D) 寄存器传输级
12.在verilog中,下列语句哪个不是分支语句(D)
(A) if-else (B) case (C) casez (D) repeat
13.下列哪些Verilog的基本门级元件是多输出(D)
(A) nand (B) nor (C) and (D) not
14.Verilog连线类型的驱动强度说明被省略时,则默认的输出驱动强度为(B)
(A) supply (B) strong (C) pull (D) weak
15.元件实例语句“notif1 #(1:3:4,2:3:4,1:2:4) U1(out,in,ctrl);”中截至延迟的典型值为(B)
(A) 1 (B) 2 (C) 3 (D) 4
16.已知“a =1b’1; b=3b'001;”那么{a,b}=(C)
(A) 4b'0011 (B) 3b'001 (C) 4b'1001 (D) 3b'101
17.根据调用子模块的不同抽象级别,模块的结构描述可以分为(ABC)
(A) 模块级(B)门级(C) 开关级(D) 寄存器级
18.在verilog语言中,a=4b'1011,那么&a=(D)
(A) 4b'1011 (B) 4b'1111 (C) 1b'1 (D) 1b'0
19.在verilog语言中整型数据与(C)位寄存器数据在实际意义上是相同的。
(A) 8 (B) 16 (C) 32 (D) 64
四.编程题
1、设计一奇偶校验位生成电路,输入八位总线信号bus,输出及校验位odd,偶校验位even。(6分)
2、设计一个带复位端且对输入时钟clk进行二分频模块,并画出仿真波形。(9分)
设计要求:复位信号为同步、高电平有效,时钟的下降沿触发
3、设计一带异步复位端、异步置数段(低电平有效)的四位加法计数器,时钟clk上升沿
有效),复位信号clr,置数信号load、输入数据data、输出qout。并画出仿真波形。(20分)
答案1. module parity(even,odd,bus);
output even,odd;
input[7:0] bus; module m2(out,clk,reset);
input reset,clk;
output out;
reg out;
always @(negedge clk)
begin
if(reset)
out<=0;
else
out<=~out;
end
endmodule
3. module adder_4(qout,clr,clk,load,data);
output[3:0] qout;
input[3:0] data;
input load,clr,clk;
reg[3:0] qout;
always @(posedge clk or negedge load or negedge clk)
begin
仿真波形
if(!load)
qout<=data;
else if(!clr)
qout<=0;
else qout<=qout+1;
end
endmodule
设计9人表决器
module voter9(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<=8;i=i+1) 利用有限状态机,以格雷码编译方式设计一个从输出信号序列中检测出101信号的电路图,其方块图、状态图和状态表如图表示。
Din=0Din=1S0=00SO, O S1, 0S1=01S2, 0S1, 0S2=11
S0, 0S1, 1下一状态NS和输出Qout 目前状态CS
module melay(clk,Din,reset,Qout); input clk,reset; input Din; output Qout; reg Qout;
parameter[1:0] S0=2'b00,S1=2'b01,S2=2'b11; reg[1:0] CS; reg[1:0] NS;
always @(posedge clk or posedge reset) begin
if(reset==1'b01) CS=S0; else CS=NS; end
always @(CS or Din) begin
case(CS)
S0:beign
if(Din==1'b0) begin
NS=S0;
Qout=1'b0; end
else
begin
NS=S1;
Qout=1'b0; end
end
S1:begin
if(Din==1'b0) begin
NS=S2;
Qout=1'b0; end
else
begin
NS=S1;
Qout=1'b0; end
end
S2:beign
if(Din==1'b0)
begin
NS=S0;
Qout=1'b0;
end
else
begin
NS=S1;
Qout=1'b0;
end
end
endcase
end
endmodule
6.程序注解,并说明整个程序完成的功能。module AAA ( a ,b );
output a ;
input [6:0] b;
reg[2:0] sum;
integer i;
reg a ;
always @ (b)
begin
sum = 0;
for(i = 0;i<=6;i = i+1)
if(b[i]) sum = sum+1;
if(sum[2]) a = 1; else a = 0;
end
endmodule
7.设计一个带有异步复位控制端和时钟使能控制端的10进制计数器。端口设定如下:输入端口:CLK:时钟,RST:复位端,EN:时钟使能端,LOAD:置位控制端,DIN:置位数据端;输出端口:COUT:进位输出端,DOUT:计数输出端。
module cnt10 (clk,rst,en,loat,cout,dout,data);
input clk ;
input en ;
input rst ;
input load ;
input [3:0] data ;
output [3:0] dout ;
output cout ;
reg [3:0] q1 ;
reg cout ;
assign dout = q1;
always @(posedge clk or negedge rst) begin
if (!rst) q1 <= 0;
else if (en)
begin
if (!loat) q1 <= data;
else if (q1<9) q1 <= q1+1;
else q1 <= 4'b0000;
end
end
always @(q1)
if (q1==4'h9) cout = 1'b1;
else cout = 1'b0;
endmodule
8.下面是通过case语句实现四选一电路部分程序,将横线上的语句补上,使程序形成完整功能。
case({s1,s0})
2’b00:out=i0;
2’b01:out=i1;
2’b10:out=i2;
2’b11:out=i3;
9.标注各语句功能,指出整个程序完成的电路功能。
module dff_syn(q,qn,d,clk,set,reset); 据图3给定的两个2位全加器信号关系及实现的4位全加器功能部分程序,在下列部分程序中的横线上填入必要语句,实现4位全加器的完整功能。