1、EDA 技术题库一填空题1. Verilog 的基本设计单元是模块。它是由两部分组成,一部分描述接口;另一部分描述逻辑功能,即定义输入是如何影响输出的。 2. 用 assign 描述的语句我们一般称之为组合逻辑,并且它们是属于并行语句,即于语句的书写次序无关。而用 always 描述的语句我们一般称之为组合逻辑或时序逻辑,并且它们是属于串行语句,即于语句的书写有关。 3 在 case 语句中至少要有一条 default 语句。 4. 已知 x=4b1001,y=40110,则 x 的 4 位补码为 4b1111,而 y 的 4 位的补码为 4b0110 。5. 两个进程之间是并行语句。而在 A
2、lways 中的语句则是顺序语句。6.综合是将高层次上描述的电子系统转换为低层次上描述的电子系统,以便于系统的具体硬件实现 。综合器是能自动将高层次的表述(系统级、行为级)转化为低层次的表述(门级、结构级)的计算机程序7. 设计输入的方式有原理图、硬件描述语言、状态图以及波形图。 8.按照仿真的电路描述级别的不同,HDL 仿真器可以完成:系统级仿真,行为级仿真,RTL级仿真,门级(时序)仿真。按照仿真是否考虑硬件延时分类,可以分为:功能仿真和时序仿真。仿真器可分为基于元件(逻辑门)仿真器和基于 HDL 语言的仿真器 9. IP 核是知识产权核或知识产权模块,在 EDA 技术中具有十分重要的地位
3、。半导体产业的 IP 定义为用于 ASIC 或 FPGA 中的预先设计好的电路功能模块。IP 分为软 IP、固 IP 和硬IP。 10.可编程逻辑器件 PLD 是一种通过用户编程或配置实现所需逻辑功能的逻辑器件,也就是说用户可以根据自己的需求,通过 EDA 开发技术对其硬件结构和工作方式进行重构,重新设计其逻辑功能 11.两种可编程逻辑结构是基于与-或阵列可编程结构(乘积项逻辑可编程结构) 、基于SRAM 查找表的可编程逻辑结构 12.PLD 按集成度分类:简单 PLD、复杂 PLD;按结构分类:基于 “与-或”阵列结构的器件、基于查找表结构的器件;从编程工艺上分类:熔丝型、反熔丝型、EPRO
4、M 型、EEPROM型、SRAM 型、Flash 型 13.Verilog 的端口模式有三种:输入端口、输出端口、双向端口,对应的端口定义关键词分别是:input、output、inout 14.Verilog 中常用有两种变量:寄存器型变量(用 reg 定义) 、网线型变量(用 wire 定义)15.Verilog 有两种赋值方式:阻塞式赋值(=) 、非阻塞式赋值(2= 4b0010 。26.下面程序中语句 5、6、7、11 是 并行 执行,语句 9、10 是 顺序 执行1 module M();2 input . ;3 output ;4 reg a,b;5 always(.)6 assi
5、gn f=c7 always(.)8 begin9 a=.;10 b=.;end11 mux mux1(out,in0,in1);endmodule27. 用 EDA 技术进行电子系统设计的目标是最终完成 ASIC 的设计与实现。28. 可编程器件分为 CPLD 和 FPGA。29. 随着 EDA 技术的不断完善与成熟,自顶向下的设计方法更多的被应用于 Verilog HDL设计当中。30. 目前国际上较大的 PLD 器件制造公司有 ALtera 和 Xilinx 公司。31. 完整的条件语句将产生组合电路,不完整的条件语句将产生时序电路。32. 阻塞性赋值符号为 = ,非阻塞性赋值符号为 =
6、 。33有限状态机分为 Moore 和 Mealy 两种类型。34、EDA 缩写的含义为电子设计自动化(Electronic Design Automation)35状态机常用状态编码有二进制、格雷码和独热码。36Verilog HDL 中任务可以调用其他任务和函数。37系统函数和任务函数的首字符标志为 $ ,预编译指令首字符标志为 # 。38可编程逻辑器件的优化过程主要是对速度和资源的处理过程。39、大型数字逻辑电路设计采用的 IP 核有软 IP、固 IP 和硬 IP。二.简答题1.简述自顶向下的设计方法 答:从自然语言说明到 HDL 的系统行为描述;从 HDL 的系统行为描述到 RTL 描
7、述;从 RTL 描述到逻辑门级描述;从门级描述到最终可以物理布线实现的底层电路;(以上可以理解成是逐步综合的过程。)后期设计还包括涉及硬件实现和测试。 2.简述 EDA 的设计流程 答:图形输入:a.原理图 b.硬件描述语言 c.状态图 d.波形图;HDL 文本输入;综合;适配;功能仿真与时序仿真;编程下载;硬件测试 3.简述过程语句的执行过程 答:由 always引导的过程语句结构是 Verilog 中最常用和最重要的语句结构。任何顺序语句都必须放在过程语句结构中。通常要求将过程语句中所有的输入信号都放在敏感信号表中。(a.用文字 or 连接所有敏感信号。b.用逗号区分或连接所有敏感信号。c
8、.省略形式,只写成(*),或直接写成 always * ,显然试图通过选择性地列入敏感信号来改变逻辑设计是无效的。)过程语句的执行依赖于敏感信号的变化(发生事件) 。当某一敏感信号发生变化,过程语句被启动,内部的所有顺序语句被执行一遍,然后返回过程起始端,再次进入等待状态,直到下一次某一敏感信号发生变化再次进入“启动-运行”状态。过程语句结构是一个不断重复运行的模块。一个模块中可以包含任意个过程语句,过程语句本身属于并行语句,而由过程引导的各类语句属于顺序语句。 4.简述什么是元件例化 答:元件例化就是引入一种连接关系,将预先设计好的元件,与当前设计模块中的指定端口相连接,从而构成层次化的设计
9、方式。元件例化可以是多层次的,一个调用了较低层次元件的设计模块,也可以被更高层次的设计模块调用,成为高层次设计模块中的一个元件。被例化的元件可以以不同的形式出现,可以是 Verilog 设计文件,可以是 FPGA 元件库中的元件,或者是以别的硬件描述语言设计的元件,还可以是 IP 核。 5. 简要说明仿真时阻塞赋值与非阻塞赋值的区别非阻塞(non-blocking)赋值方式 ( b= a):b 的值被赋成新值 a 的操作, 并不是立刻完成的,而是在块结束时才完成;块内的多条赋值语句在块结束时同时赋值;硬件有对应的电路。阻塞(blocking)赋值方式 ( b = a):b 的值立刻被赋成新值
10、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.简述 Moo
11、re 型和 Mealy 型状态机的区别 答:Mealy 型状态机的输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的,不依赖时钟的同步。Moore 型状态机的输出则仅为当前状态的函数,这类状态机在输入发生变化时还必须等待时钟的到来,时钟状态发生变化时才导致输出的变化,所以比 Mealy 机要多等待一个时钟周期。 8.always 语句和 initial 语句的关键区别是什么?能否相互嵌套?(5 分)always 语句是循环语句,initial 只执行一次。它们不能嵌套。9.画出下面程序段中 r(reg 型)的仿真波形 (6 分)fork#20 r=1 b0;#10 r=1 b
12、1;#15 r=1 b1;#25 r=1 b1;#5 r=1 b0;join10.画出下面程序综合出来的电路图。(7 分)always(posedge clk) beginq0=q2;q1= q0;q2= q1;End11.HA 模块程序如下,写出引用 HA 模块描述 FA 模块的 Verilog 程序。(7 分)module HA(A,B,S,C);input A,B;output S,C;assign C,S=A+B;endmodulemodule FA(A,B,Ci,Co,S);input A,B,Ci;output Co,S;wire Sl,C1,C2;HA a(A,B,Sl,C1);
13、HA b(Sl,Ci,C2,S);assign Co=C1|C2;endmodule12、写出下面程序中变量 x,y,cnt,m,q 的类型(5 分)Assgin x=y; always(posegde clk)begincnt=m+1;q=q;end13.initial 和 always 预计的关键区别是什么? intial 只能用在仿真中,只在 0 时刻开始执行一次 always 可以用在仿真中也可以用在综合中,只要触发条件满足,就会重复执行其中的语句 14.定义如下的变量和常量: (1)定义一个名为 count 的整数; (integer count) (2)定义一个名为 ABUS 的
14、8 位 wire 总线;(wire 7:0 ABUS) (3)定义一个名为 address 的 16 位 reg 型变量,并将该变量的值赋为十进制数128;(reg 15:0 address address = 16d128) (4)定义参数 Delay_time, 参数值为 8;(parameter Delay_time = 8) (5)定义一个名为 DELAY 的时间变量;(没讲过) (6)定义一个 32 位的寄存器 MYREG;(reg 31:0 MYREG;) (7)定义一个容量为 128,字长为 32 位的存储器 MYMEM;(reg 31:0 MYMEM 127:0) 15.下列标
15、识符哪些是合法的,哪些是错误的? Cout(y), 8sum(n), a*b(y), _data(y), wait(y), initial(n), $latch(n) 16.下列数字的表示是否正确? 6d18(y), Bx0(y), 5b0x110(y), da30(n), 10d2(y), hzF(y) 17.简述有限状态机 FSM 分为哪两类?有何区别?有限状态机的状态编码风格主要有哪三种?根据内部结构不同可分为摩尔型状态机和米里型状态机两种。摩尔型状态机的输出只由当前状态决定,而次态由输入和现态共同决定;米里型状态机的输出由输入和现态共同决定,而次态也由输入和现态决定。状态编码主要有三种
16、:连续二进制编码、格雷码和独热码。18.简述基于数字系统设计流程包括哪些步骤?包括五个步骤:、设计输入:将设计的结构和功能通过原理图或硬件描述语言进行设计或编程,进行语法或逻辑检查,通过表示输入完成,否则反复检查直到无任何错误。、逻辑综合:将较高层的设计描述自动转化为较低层次描述的过程,包括行为综合,逻辑综合和版图综合或结构综合,最后生成电路逻辑网表的过程。x 为 wire 型y 为 reg 或 wire 型cnt 为 reg 型m 为 reg 或 wire 型q 为 reg 型、布局布线:将综合生成的电路网表映射到具体的目标器件中,并产生最终可下载文件的过程。、仿真:就是按照逻辑功能的算法和
17、仿真库对设计进行模拟,以验证设计并排除错误的过程,包括功能仿真和时序仿真。、编程配置:将适配后生成的编程文件装入到 PLD 器件的过程,根据不同器件实现编程或配置。19.简述 Verilog HDL 编程语言中函数与任务运用有什么特点?20.简述 FPGA 与 CPLD 两种器件应用特点。CPLD 与 FPGA 都是通用可编程逻辑器件,均可在 EDA 仿真平台上进行数字逻辑电路设计,它们不同体现在以下几方面:FPGA 集成度和复杂度高于 CPLD,所以 FPGA 可实现复杂逻辑电路设计,而 CPLD 适合简单和低成本的逻辑电路设计。、FPGA 内主要由 LUT 和寄存器组成,倾向实现复杂时序逻
18、辑电路设计,而 CPLD 内主要由乘积项逻辑组成,倾向实现组合逻辑电路设计。、FPGA 工艺多为 SRAM、flash 等工艺,掉电后内信息消失,所以该类型需外配存储器,而 CPLD 工艺多为 EEPROM 等工艺,掉电后信息不消失,所以不用外配存储器。、FPGA 相对 CPLD 成本高,但都可以在内都镶嵌硬核和软核,实现片上系统功能。3.选择题1、已知 “a =1b1; b=3b001;”那么a,b( C )(A) 4b0011 (B) 3b001 (C) 4b1001 (D) 3b101 2、在 verilog 中,下列语句哪个不是分支语句?( D ) (A) if-else (B) ca
19、se (C) casez (D) repeat 4、在 verilog 语言中,a=4b1011,那么 2)input P,Q,R3:0;3)input P3:0,Q3:0,R3:0;4)input 3:0 P,3:0Q,0:3R;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 addr3:0=-3;addr 被赋予的值是( A) A、4 b1101 B、4 b
20、0011 C、4bxx11 D、4bzz114、reg7:0 mema255:0正确的赋值是( A) A、mema5=3 d0, B、8 d0; C、1 b1; D、mema53: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 b
21、11001,b=4 bx110”选出正确的运算结果( B )A、 aend 产生的波形( 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 中,下列语句哪个不是分支语句?(
22、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 =1b1;
23、 b=3b001;”那么a,b( C ) (A) 4b0011 (B) 3b001 (C) 4b1001 (D) 3b101 17.根据调用子模块的不同抽象级别,模块的结构描述可以分为( ABC ) (A) 模块级 (B)门级 (C) 开关级 (D) 寄存器级 18在 verilog 语言中,a=4b1011,那么 output even,odd;input7:0 bus; /奇同偶异assign even=bus;/偶校验用异或assign odd=bus;/奇校验用同或endmodule2. module m2(out,clk,reset);input reset,clk;output o
24、ut;reg out;always (negedge clk)begin if(reset)out=0;elseout=out;endendmodule3. module adder_4(qout,clr,clk,load,data);output3:0 qout;input3:0 data;input load,clr,clk;reg3:0 qout;always (posedge clk or negedge load or negedge clk)beginif(!load)仿真波形qout=data;else if(!clr)qout=0;else qout=qout+1;endend
25、module4.设计 9 人表决器 module voter9(pass,vote); output pass; input6:0 vote; reg2:0 sum; integer i; reg pass; always (vote) begin sum=0; for(i=0;i=8;i=i+1) /for 语句 if(votei) sum=sum+1; case(sum) 5,6,7,8,9: pass=1; default: pass=0; endcase endmodule 5.设计一个 8 位计数器,要求异步复位,下降沿有效。module count8(out,clk rst_);
26、output7:0 out; input clk, rst_; reg 7:0out; always (posedge clk or negedge rst_) if(!rst_) out = 8h0; else out = out+1; endmodule 5. 利用有限状态机,以格雷码编译方式设计一个从输出信号序列中检测出 101 信号的电路图,其方块图、状态图和状态表如图表示。Din=0 Din=1S0=00 SO, O S1, 0S1=01 S2, 0 S1, 0S2=11 S0, 0 S1, 1下 一 状 态 NS和 输 出 Qout目 前 状 态 CSmodule melay(clk,Din,reset,Qout);input clk,reset;input Din;output Qout;reg Qout;parameter1:0 S0=2b00,S1=2b01,S2=2b11;reg1:0 CS;reg1:0 NS;always (posedge clk or posedge reset)begin if(reset=1b01)CS=S0;else CS=NS;endalways (CS or Din)begincase(CS)S0:beignif(Din=1b0)beginNS=S0;Qout=1b0;endelsebeginNS=S1;