Verilog - 笔试题(1)

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  

 

3、Verilog HDL语言进行电路设计方法有哪几种 ?

①自上而下的设计方法(Top-Down) 

②自下而上的设计方法(Bottom-Up)

③综合设计的方法

 

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结构。(MAX7000属于CPLD)

 

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语句(条件语句是串行语句)

 

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;

 

11、请根据以下两条语句的执行,最后变量A中的值是___①___。

reg [7:0] A;

A=2'hFF;

① 8'b0000_0011   ② 8'h03      ③ 8'b1111_1111   ④ 8'b11111111

 

3、简述基于数字系统设计流程包括哪些步骤?

包括五个步骤:

⑴、设计输入:将设计的结构和功能通过原理图或硬件描述语言进行设计或编程,进行语法或逻辑检查,通过表示输入完成,否则反复检查直到无任何错误。

⑵、逻辑综合:将较高层的设计描述自动转化为较低层次描述的过程,包括行为综合,逻辑综合和版图综合,最后生成电路逻辑网表。

⑶、布局布线:将综合生成的电路网表映射到具体的目标器件中,并产生最终可下载文件的过程。

⑷、仿真:按照逻辑功能的算法和仿真库对设计进行模拟,以验证设计并排除错误的过程,包括功能仿真和时序仿真。

⑸、编程配置:将适配后生成的编程文件装入到PLD器件的过程,根据不同器件实现编程或配置。

 

4、简述Verilog HDL编程语言中函数与任务运用有什么特点?

⑴、函数中不能包含时序控制语句,对函数的调用,必须在同一仿真时刻返回。而任务可以包含时序控制语句,任务的返回时间和调用时间可以不同。

⑵、在函数中不能调用任务,而任务中可以调用其它任务和函数。但在函数中可以调用其它函数或函数自身。

⑶、函数必须包含至少一个端口,且在函数中只能定义input端口。任务可以包含0个或任何多个端口,且可以定义input、output和inout端口。

⑷、函数必须返回一个值,而任务不能返回值,只能通过output 或inout端口来传递执行结果。

 

5、简述FPGA与CPLD两种器件应用特点。

CPLD与FPGA都是通用可编程逻辑器件,均可在EDA仿真平台上进行数字逻辑电路设计,它们不同体现在以下几方面:

⑴FPGA集成度和复杂度高于CPLD,所以FPGA可实现复杂逻辑电路设计,而CPLD适合简单和低成本的逻辑电路设计。

⑵FPGA内主要由LUT和寄存器组成,倾向实现复杂时序逻辑电路设计,而CPLD内主要由乘积项逻辑组成,倾向实现组合逻辑电路设计。

⑶FPGA工艺多为SRAM、flash等工艺,掉电后内信息消失,所以该类型需外配存储器,而CPLD工艺多为EEPROM等工艺,掉电后信息不消失,所以不用外配存储器。

⑷FPGA相对CPLD成本高,但都可以在内部镶嵌硬核和软核,实现片上系统功能。

 

6. begin-end语句块和fork-join语句块的区别:

1.执行顺序与作用:begin-end语句块按照语句顺序执行可以用于综合电路程序和仿真测试程序。fork-join语句块所有语句均在同一时刻开始执行,不可以用于可综合电路程序。

2.语句前面延迟时间的意义:begin-end语句块为相对于前一条语句执行结束的时间,fork-join语句块为相对于并行语句块启动的时间;

3.起始时间:begin-end语句块为首句开始执行的时间,fork-join语句块为转入并行语句块的时间;

4.结束时间:begin-end语句块为最后一条语句执行结束的时间,fork-join语句块为执行时间最长的那条语句执行结束的时间;

5.行为描述的意义:begin-end语句块为电路中的数据在时钟及控制信号的作用下,沿数据通道中各级寄存器之间的传送过程。fork-join语句块为程序各部分同时开始工作的过程。

 

1、利用有限状态机,以格雷码编码方式设计一个从输出信号序列中检测出101信号的电路图,其电路图、状态图和状态表如图所示。

Verilog - 笔试题(1)_第1张图片

Verilog - 笔试题(1)_第2张图片

Verilog - 笔试题(1)_第3张图片

module mealyfsm(
  input clk,reset,din,
  output reg qout
);
  parameter [1:0] S0=2'b00, S1=2'b01, S2=2'b11;
  reg [1:0] cs, ns;
  always @(posedge clk or posedge reset) begin
    if(reset)
      cs <= S0;
    else
      cs <= ns; 
  end
  always @(*) begin
    case(cs)
      S0: 
        if(!din)
          ns = S0;
        else
          ns = S1;
      S1:
        if(!din)
          ns = S2;
        else
          ns = S1;
      S2:
        if(!din)
          ns = S0;
        else
          ns = S1;
      default: ns = S0;
    endcase
  end
  always @(posedge clk or posedge reset) begin
    if(reset)
      dout <= 0;
    else if(cs == S2 && din)
      dout <= 1;
  end
endmodule

 

2、 程序注解,并说明整个程序完成的功能。

module A(a,b);   // 定义模块名为A,端口为a,b
  output a;  // 定义a为输出端口
  input [6:0] b;  // 定义b为输入端口,b为7位二进制数
  reg [2:0] sum;  // sum为reg型变量,用于统计赞成的人数
  integer i;  // 定义整型变量i为循环变量
  reg a;  // 定义a为寄存器变量
  always @(*) begin  // 过程语句,组合逻辑
    sum = 0;      // sum初值为0
    for(i=0;i<=6;i=i+1)  // for语句,统计b二进制位为1的个数
      if(b[i])
        sum = sum + 1;
    if(sum[2])  // 若超过4票赞成,则表决通过
      a = 1;
    else
      a = 0;  // 若不到四人则不通过
  end
endmodule

 

4、下面是通过case语句实现四选一电路部分程序,将横线上的语句补上,使程序形成完整功能。

Verilog - 笔试题(1)_第4张图片

Verilog - 笔试题(1)_第5张图片

case({s1,s0})
2’b00:out=i0;
2’b01:out=i1;
2’b10:out=i2;
2’b11:out=i3;

 

3、标注各语句功能,指出整个程序完成的电路功能。

// 带同步清0/同步置1(低电平有效)的D触发器.
module dff_syn(q,qn,d,clk,set,reset);  //定义模块diff_syn
  input d,clk,set,reset; 
  output reg q,qn;  //定义端口d,clk,set,reset为输入端口,q,qn为输出端口
  always @(posedge clk) begin  //对clk信号上升沿有效
    if(~reset) begin 
      q<=1'b0;
      qn<=1'b1;
    end //同步清零,低电平有效
    else if(~set) begin 
      q<=1'b1;
      qn<=1'b0;
    end  //同步置位, 低电平有效
    else begin 
      q<=d; 
      qn<=~d; 
    end  //q输出为d, qn输出为非d;
  end
endmodule  //模块结束

 

5、根据下列给定的仿真输入输出波形图2,说明完成此功能的电路是什么功能电路?并写出对应的Verilog HDL(图中clk,clr为输入,q,c为输出)。

Verilog - 笔试题(1)_第6张图片

4进制加法计数器

module counter(clk,clr,q,c);
  input clk,clr;
  output reg [1:0] q;
  output c;
  always @(posedge clk or negedge clr) begin
    if(~clr)  
      q<=2’h0;
    else if(q==2’h3)
      q<=2’h0;
    else 
      q<=q+1;
  end
  assign c=(q==2'h3);
endmodule

 

 

 

你可能感兴趣的:(数字IC笔试面试,verilog)