文档库 最新最全的文档下载
当前位置:文档库 › EDA技术题库

EDA技术题库

EDA技术题库
EDA技术题库

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位全加器的完整功能。

相关文档