前言

我一向是很讨厌形而上学的东西的。奈何考试确实会考概念,故整理一些可能考的简答题。

1-5

简述什么是硬件描述语言? 它的主要作用是什么?

答案

硬件描述语言是一种专门用来描述电子电路的功能和行为的编程语言,它可以让工程师在不同的抽象层次上设计复杂的数字逻辑电路,如寄存器传输级(RTL)、行为级和逻辑门级等。

为什么说用硬件描述语言设计的数字逻辑系统具有最大的灵活性并可以映射到任何工艺的电路上?

答案

因为硬件描述语言设计的数字逻辑系统主要是在RTL级和行为级,不涉及具体的门电路,因此不依赖工艺,且便于移植。

为什么并发性是 HDL 中的一个重要概念?

  1. 并发是 HDL 的一个特点,无法用原理图来建模。
  2. 并发允许进行自动综合。
  3. 并发允许逻辑仿真器显示有用的系统信息。
  4. 并发是对并行运行的真实系统进行建模的必要条件。
答案

4

仿真是什么? 为什么要进行仿真?仿真可以在几个层面上进行? 每个层面的仿真有什么意义?

答案

仿真是对电路模块进行动态的全面测试。

通过观测被测试模块的输出信号是否符合要求可以调试和验证逻辑系统的设计和结构准确与否,并发现问题及时修改。

仿真分为:前仿真,逻辑网表仿真,门级仿真和布线后仿真。

前仿真,逻辑网表仿真,门级仿真,可以调试和验证逻辑系统的设计和结构准确与否,并发现问题及时修改。布线后仿真可以分析设计的电路模块的运行是否正常。

6-9

如果 case 语句的分支条件没有覆盖所有可能的组合条件,定义了 default 项和没有定义 default 项有什么不同?

答案

定义default之后,若所有的分支表达式的值都没有与控制表达式的值相匹配,就执行default后面的语句;若不定义 default,不匹配时不会执行任何操作,且有产生latch的可能。

怎样理解 initial 语句只执行一次的概念?怎样理解由 always 语句引导的过程块是不断活动的?

答案

initial在仿真最开始的时候进行。

always块不断地监视敏感列表内的变量,因此是不断活动的。

沿触发的 always 块和电平触发的 always 块各表示什么类型的逻辑电路的行为? 为什么?

答案

沿触发的是时序电路,电平触发的可能是组合电路,也可能是时序电路。

initial 块语句何时过期终结?

答案

initial内最后一句语句执行完毕之后。注意,不一定在仿真一开始的时候终结,因为initial语句生命周期可以贯穿整个仿真流程。

在什么条件下,initial 语句可综合?

答案

没有任何条件。initial不支持综合。

请仔细阐述`timescale编译预处理的作用?不同`timescale 定义的多模块仿真测试时需要注意什么?

答案

说明仿真时模块的时间单位时间精度

要注意时间单位一致。

Verilog HDL 的模型共有哪几种类型(级别)?

答案

系统级、算法级、RTL级、门级、开关级

为什么说 Verilog HDL 的语言结构可以支持构成任意复杂的数字逻辑系统?

答案

因为一个很大的复杂系统可以被拆分成不同的小模块

不可综合成为电路的 Verilog 模块有什么用处?

答案

例如UDP,表现直观。

10-12

为什么用算术操作符号表示的加法器和乘法器能通过综合器转变成逻辑电路?

答案

因为标准单元库或者更高级的IP库中已存在可配置的参数化加法器乘法器的电路结构和相应行为模型。

提髙复杂运算组合逻辑运算速度有哪些办法?采用流水线能提高单个计算的计算速度吗?

答案

改进算法、精简电路结构、增加算法在电路上的并行性。

采用流水线不能提高单个计算的计算速度,只能提高多次运算的吞吐量。

利用数字电路的基本知识解释,为什么说即使组合逻辑的输入端的所有信号同时变化,其输出端的各个信号不可能同时达到新的值? 各个信号变化的快慢由什么决定?

答案

因为逻辑门之间布线有延迟,无法使实际电路输出和布尔方程一致。实际情况下组合逻辑输出的瞬间不确定性是无法避免的。

各个信号变化快慢和逻辑门自身延迟以及布线导致的传输延迟有关。

为使运算组合逻辑有一个确定的输出,为什么必须在复杂运算组合逻辑的输入端和输出端增加寄存器组来寄存数据?

答案

实际情况下组合逻辑输出的瞬间不确定性是无法避免的,因此使用寄存器来暂存组合逻辑的输出,只要使输入端信号在一段相对较长的时间内不发生变化就能一定程度上消除竞争冒险和毛刺的现象。只要避开输出不确定区域就可以保证

为什么建议使用同步时序逻辑来设计数字逻辑电路?

答案

许多综合器不支持异步时序逻辑的综合,且异步时序很难控制组合逻辑与延迟产生的冒险和竞争。

不同时钟域之间如何准确传送模块?

答案

使用RAM、FIFO缓冲的方法,输入端口使用前级时钟写数据,输出端口使用本机时钟读数据,

是否可以把状态变量中的某些位指定为状态机的输出,直接用来控制逻辑开关?这样做有什么好处?有什么缺点?

答案

可以,优点是提高输出信号的开关速度并节省附加的组合电路器件。缺点是开关维持时间必须和状态机时间一致。

以下哪种说法是错误的?

  1. moore 状态机比 mealy 更通用。
  2. mealy 中的状态数必须是有限的。
  3. moore 的状态数一定是有限的。
  4. 一个 moore 可以用组合电路来实现。
答案

AD。

在Moore中输出只取决于状态,而Mealy中输出既取决于状态又取决于当前输入。

Moore和Mealy都是有限状态机,通过时序电路实现。

以下声明都表示什么意思?

  1. reg [7:0] data [15:0]
  2. reg data [7:0] [15:0]
  3. reg [7:0] [15:0] data
答案
  1. 这是一个16字节的数组。reg [7:0]表示每个数据项是一个8位寄存器data [15:0]表示它是一个大小为16的数组。
  2. 这是一个8行16列二维数组,每个元素都是一个比特。reg后没有指定大小,表明每个数据元素的大小是1位。data后面的两个维度表示这是一个单比特数的二维数组。
  3. 这样写是错误的。

13-15

异步状态机能否综合为电路结构?

答案

不能。