数字IC常见问题系列--1(50题)
如何将XOR门转换为 buffer和 inverter(仅使用一个XOR门)?
Buffer
Inverter
2.使用2x1 MUX实现2输入AND门。
3.什么是多路复用器(mux)?
多路复用器是一种组合电路,它从许多输入信号中选择一个作为输出。
4、什么是环形振荡器?
环形计数器是一种由循环移位寄存器组成的计数器。 最后一个移位寄存器的输出被馈送到第一个寄存器的输入。 例如,在4寄存器计数器中,初始寄存器值为1100,重复模式为:1100,0110,0011,1001,1100,依此类推。
5.比较同步和异步复位。
同步复位逻辑将综合较小的触发器,但是组合逻辑门数会增加。时钟可以滤除复位信号的毛刺,但是如果这些毛刺发生在有效时钟边沿附近,则触发器可能会变成亚稳态。在某些设计中,复位必须由一组内部逻辑生成的。建议对这些类型的设计进行同步复位,因为它会过滤时钟之间的毛刺。
同步复位的问题在于综合工具不能容易地将复位信号与任何其他数据信号区分开。同步复位需要在数据路径中增加额外的逻辑和延迟以处理同步复位。
异步复位:使用异步复位,不会在数据路径增加额外的逻辑门。异步复位的主要问题是复位释放。如果复位的释放发生在时钟边沿或者接近时钟边沿,则触发器可能进入亚稳态。
6.什么是Johnson 计数器?
Johnson 计数器将最后一个移位寄存器的输出反相连接到它的输入。 例如,在包含4个寄存器Johnson 计数器中,重复模式是:
0000,1000,1100,1110,1111,0111,0011,0001,依此类推。
7.在4位Johnson计数器中有多少未使用的状态?
4位Johnson计数器:0000,1000,1100,1110,1111,0111,0011,0001,0000。
存在8个未使用的状态。
8.使用最少数量的2个输入与非门设计3输入与非门。
9.如何将JK触发器转换为D触发器?
10.触发器和锁存器之间有什么区别?
触发器是边沿敏感,锁存器是电平敏感。
触发器不受毛刺的影响,锁存器对毛刺很敏感。
锁存器比触发器需要更少数量的门,功耗更低。
锁存器比触发器快。
11. Mealy型状态机和Moore 型状态机有什么区别?
Mealy型状态机输出取决于输入和状态。
Moore 型状态机输出仅取决于状态。
12.什么是状态编码技术? 解释一下。
One-Hot encoding :每个状态由1位触发器表示。 如果有四种状态,那么它需要四个触发器来表示当前状态。 有效状态值为1000,0100,0010和0001.如果值为0100,则表示第二个状态是当前状态。
One-Cold encoding ::与 One-Hot encoding :相同,只是'0'是有效值。 如果有四种状态,那么它需要四个触发器来表示当前状态。 有效状态值是0111,1011,1101和1110。
Binary encoding :每个状态由二进制代码表示。 具有“2^N”状态的有限状态机仅需要N个触发器。
Gray encoding : 每个状态由格雷码表示。 具有“2^N”状态的有限状态机仅需要N个触发器。
13、什么是时钟偏移(Clock skew) ,负时钟偏移,正时钟偏移?
时钟偏移是同步电路中的一种现象,时钟信号在不同时间到达不同的时序器件。 这可能是由许多不同的因素造成的,例如导线互连长度,温度变化,电容耦合等。
时钟偏差有两种类型:负偏斜和正偏斜。 当时钟到达接收寄存器比到达发送寄存器时,会发生正偏移。 负偏斜是相反的:接收寄存器比发送寄存器更早地获得时钟触发。
14.给出CMOS NAND门的晶体管级电路。
15、什么是亚稳态( Metastability)。
如果在任何时序电路中存在建立 (setup time)和保持时间(hold time)违例,则输出会进入不可预测的状态,该状态称为亚稳状态。在亚稳状态结束时,触发器稳定至逻辑高或逻辑低。
16、什么是setup时间和hold时间约束
setup时间是时钟边沿到达之前的数据需要稳定的时间。
hold时间是在时钟边沿到达之后数据需要稳定的时间。
当触发器中存在setup和hold时间违例时,它就进入输出不可预测的状态,这被称为亚稳状态。
17、画出二分频电路
18、给出两种将两输入NAND门转换为反相器的方法。
19、使用2x1多路复用器实现D锁存器。
20、如果A * B = C且C * A = B那么,布尔运算符*是什么?
* is 异或
21、使用PLA实现功能:X = A'BC + ABC + A'B'C'和Y = ABC + AB'C。
可编程互连线
22、什么是LUT?
LUT - 查找表。查找表可以用多路复用器实现,其选择是LUT的输入。 LUT可以通过真值表来编码任何布尔函数。 LUT实际上是现代FPGA的关键组件。
23、FPGA在现代电子产品中的重要意义是什么?
一、ASIC原型设计:由于ASIC芯片的高成本,首先在FPGA中验证。
二、数字信号处理
24、什么是bus?
总线是一组承载数据,地址和控制信号的线。
25、什么是三态逻辑?
使用三个逻辑电平,它们是高,低和高阻抗状态。 高和低是逻辑1和零电平。 高阻抗状态是电气开路状态。 三态逻辑有 enable 端。
26、什么是冯·诺依曼架构?
冯·诺依曼体系结构是一种计算机设计模型,它使用单独的存储结构来保存指令和数据。 从存储器读取指令/数据并由处理单元执行。
27、function 和 task有什么区别?
function
可以调用其他function ,但是不能调用其他 task
消耗0仿真时间
不得包含任何延迟和时序控制语句。
必须至少有一个输入参数。
函数始终返回单个值。 他们不能有output或inout参数。
task
可以调用其他function 和 task
消耗非0仿真时间
可以包含任何延迟和时序控制语句。
可以有零个或多个类型为input,output或inout参数。
他们不能有output或inout参数。 任务不返回值,但可以通过output或inout参数传递多个值。
28、$ display和$ monitor有什么区别?
$ monitor持续监视参数列表中指定的变量或信号的值,并在任何一个变量/参数的值发生变化时执行该语句。
与$ display不同,$ monitor只需要调用一次。
29、wire和reg有什么区别?
Wire是一种net数据类型,表示硬件元素之间的连接。 它的默认值是z。 reg是寄存器数据类型,表示数据存储元素。 寄存器保留值,直到将另一个值放在它们上面。 它的默认值是x。
30、阻塞赋值和非阻塞赋值有什么区别?
阻塞赋值语句按顺序块中指定的顺序执行。 阻塞赋值不会阻止并行块中的语句执行。 “=”运算符用于指定阻塞赋值。
非阻塞赋值不阻止顺序块中的语句。 “<=”运算符用于指定非阻塞赋值。
31、使用和不使用临时寄存器写一个verilog代码来交换两个寄存器的内容。
With a temporary register:
always @ (posedge clock)
begin
temp_reg=b;
a=temp_reg;
Without using a temporary register:
always @ (posedge clock)
begin
a < = b;
b < = a;
end
32、`timescale 1 ns / 1 ps 在verilog代码中表示什么?
这意味着时间单位为1ns,精度最高可达1ps。
33、在纯组合电路中,是否有必要在敏感列表中的列入所有输入?为什么?
是的,在组合电路中,如果其中一个输入发生变化,则输出重新计算。 因此,必须将所有输入信号放在敏感列表中。
34、如何使用verilog编码生成正弦波?
使用CORDIC算法。
35、如何在Verilog中描述同步和异步复位?
Synchronous reset:
always @(posedge clk)
begin
if(reset)
Asynchronous reset: