欢迎关注个人公众号摸鱼范式

目录

对Cracking Digital VLSI Verification Interview:Interview Success这本书的汉化,最新更新请关注微信公众号 摸鱼范式

Digital Logic Design

Number Systems, Arithmetic and Codes

[1] 将下列十进制数转换为有符号二进制,八进制和十六进制,使用尽可能少的比特位

a)17

b)-17

a: 对17辗转相除,得到其二进制为010001,八进制为21,十六进制为0x11。注意二进制必须是010001,而不是10001,不能缺少符号位

b: 根据17的二进制,-17的二进制数原码位110001,取反加一得到补码为101111,因此八进制为57,十六进制为0x2f

二进制转八进制,取三合一,二进制转十六进制,取四合一

[2] 0x3A的十进制数是多少?

ans=3*161+10*160=58

[3] 什么是格雷码,格雷码相对于普通二进制码有什么好处?

格雷码是一种二值编码,相邻的编码之间只有一位的区别。因此与普通二进制码相比,在递增时出错概率更加小。下表是3bit的格雷码编码:

十进制 二进制 格雷码
0 000 000
1 001 001
2 010 011
3 011 010
4 100 110
5 101 111
6 110 101
7 111 100

此外,由于格雷码中比特位变化比较少,与二进制码相比,使用格雷码的功耗更加低

[4] 什么是奇偶校验位,如何计算?

奇偶校验位是在一串二进制码的最后添加的一位,它使得整个二进制串的1的个数为奇数或者偶数。因此奇偶校验分为两种,奇校验和偶校验。

计算校验位需要对二进制码中的1进行计数。如果1的数量为奇数,并且使用偶校验,则校验位为1,使得整体1的个数为偶数。如果1的数量为偶数,并且使用偶校验,则校验位为0,使得整体1的个数为偶数。奇校验类似。奇偶校验位可以通过对所有的比特位进行异或得到。

[5] 计算二进制数111001的奇校验位

111001中1的个数为4个,所以校验位为1,带上校验位以后为1110011,1的个数为5,为奇数

[6] 什么是BCD码,他和二进制码有什么区别?十进制27的二进制码和BCD码是什么?

BCD码也称二进码十进数,BCD码可分为有权码和无权码两类。其中,常见的有权BCD码有8421码、2421码、5421码,无权BCD码有余3码、余3循环码、格雷码。8421BCD码是最基本和最常用的BCD码,它和四位自然二进制码相似,各位的权值为8、4、2、1,故称为有权BCD码。

2的二进制位0010,7的二进制位0111,十进制27的8421BCD码为,00100111,二进制码为11011

Basic Gates

[7] 以下哪个是通用门?为什么?

  • AND
  • NAND
  • OR
  • NOR
  • XOR

通用门是可以实现任何布尔函数而无需使用任何其他门类型的门。 与非门或非门是通用门。

[8] 如何使用两个两输入与非门实现,两输入与门,两输入或门,非门?

与门:

或门:

非门:

[9] 如何使用两个两输入或非门实现,两输入与门,两输入或门,非门?

与门:

或门:

非门:

[10] 用一个2:1MUX构成下面的门

  • 非门
  • 两输入与门
  • 两输入或门
  • 两输入或非门
  • 两输入与非门
  • 两输入异或门

非门:

与门:

或门:

或非门:用或门和非门组成

与非门:用与门和非门组成

异或门:

[11] 异或门在数据通信中的典型应用是什么?

通常被用于错误检测,例如,奇偶校验,CRC校验,ECC。异或门也可以用于伪随机数生成。

[12] 三输入与非门的输出何时为0?

所有输入都为1

[13] 如何使用异或门实现一个非门

Combinational Logic Circuits

[14] 请用2:1选择器实现4:1选择器

[15] 什么是环形振荡器?如果每个门的延迟是2ps,使用三个非门的环形振荡器的频率是什么?

环形振荡器可以由奇数个非门组成,非门或者反相器连接成链后,最后一个输出反馈回第一个反相器。

三个反相器,信号需要经过两次反馈,即2*3个反相器,振荡频率为1/(6*2ps) = 1000/12 GHz = 83.33 GHz

Sequential Circuits and State Machines

[16] 同步电路和异步电路有什么不同?

时序电路分为两种,同步时序电路和异步时序电路

同步时序电路在适中的上升沿或者下降沿改变状态和输出值。常见的例子是flip-flop,在时钟边沿根据输入改变输出。

异步时序电路的状态和输出值是根据使能信号进行控制,这更加类似于一个带有反馈的组合逻辑。

[17] 阐述建立时间和保持时间

建立时间是在时钟进行有效转换前数据信号应该保持稳定的最短时间。

保持时间是在时钟进行有效转换后数据信号应该保持稳定的最短时间。

[18] 解释什么是clock skew

时钟信号到达两个FF的时间差称之为clock skew(时钟偏斜)

例如图中两个FF的时钟,虽然是同一个时钟源,但是由于走线的延迟,导致a的时钟比b的快。

[19] 下图output delay为10ns,setup time为5ns,hold time为2ns,组合逻辑delay为10ns,请计算该电路的最大工作频率

建立时间约束为\(t_{clk-q}+t_{plogic}+t_{setup}<=T\),即\(T>=25ns\),最大工作频率为40Mhz

[20] 触发器和锁存器的区别什么?

触发器和锁存器都是存储信息的基本单元。一个触发器或者锁存器能够存储一bit的信息。两者的主要不同点是,触发器只在时钟上升沿或者下降沿根据采样改变输出,而锁存器在enable信号拉高期间都会跟随输入。

[21] 什么是竞争?什么时候会出现?如何避免?

当输出取决于不同信号的顺序或者时序时,被称为竞争。竞争可以分为两种

  1. 实际的硬件中的竞争
  2. 仿真行为中的竞争

实际硬件中的竞争:以SR锁存器为例,当SR都是1的时候,输出为1,此时如果SR同时变成0,那么Q和Q'就会进入竞争的情况。可以通过添加合适的逻辑避免。

仿真行为中的竞争:例如下面的代码

  1. always @(posedge clk or posedge reset)
  2. if (reset) X1 = 0; // reset
  3. else X1 = X2;
  4. always @(posedge clk or posedge reset)
  5. if (reset) X2 = 1; // reset
  6. else X2 = X1;

由于使用了阻塞赋值,便会发生竞争的情况,通过改为非阻塞赋值可以解决

[22] 用2:1mux实现D触发器

[23] 用D触发器实现T触发器

T触发器,T为0时输出不变,1时翻转。写出真值表就能看出来,将输入和Q异或再输入到D端。

[24] 用JK触发器实现D触发器

J=D,K=D'

[25] 行波进位加法器和超前进位加法器的区别是?

行波进位加法器

结构类似于我们拿笔在纸上做加法的方法。从最低位开始做加法,将进位结果送到下一级做和。由于本级的求和需要等待前一级的进位结果才可以得到,所以对于两个N-bit的求和。即使有N个一位的全加器,也需要N个延迟。

超前进位加法器

事实上,在以下两种情况中,Ci=1:

  1. Ai和Bi都为1
  2. Ai和Bi有一个为1,且Ci-1为1

其对应的表达式为

递归后

可以看出每一级的进位信号可以不通过上一级的结果产生,只与输入有关系。因此减少了时间。

[26] 实现一个32bit寄存器需要几个flip-flop?

一个FF存储一bit信息,因此需要32个FF。

[27] mealy型FSM和moore型FSM有什么区别?

mealy型FSM的输出和当前的状态以及当前的输入有关系。

moore型FSM的输出只和当前的状态有关系。

[28] 九个状态的记录最少需要几个FF?

2^3 < 9 < 2^4,因此是4个

[29] 使用尽可能少的DFF实现二分频和四分频

二分频:

四分频:

Cracking Digital VLSI Verification Interview 第一章的更多相关文章

  1. Cracking Digital VLSI Verification Interview 第二章

    Computer Architecture 对Cracking Digital VLSI Verification Interview:Interview Success这本书的汉化,最新更新请关注微 ...

  2. Cracking Digital VLSI Verification Interview 第三章

    目录 Programming Basics Basic Programming Concepts Object Oriented Programming Concepts UNIX/Linux Pro ...

  3. Cracking Digital VLSI Verification Interview 第四章

    目录 Hardware Description Languages Verilog SystemVerilog 对Cracking Digital VLSI Verification Intervie ...

  4. Cracking the coding interview 第一章问题及解答

    Cracking the coding interview 第一章问题及解答 不管是不是要挪地方,面试题具有很好的联系代码总用,参加新工作的半年里,做的大多是探索性的工作,反而代码写得少了,不高兴,最 ...

  5. Cracking the Coding Interview 第一章

    第一章:数组与字符串 1 数组与字符串 请实现一个算法,确定一个字符串的所有字符是否全都不同.这里我们要求不允许使用额外的存储结构. 给定一个string iniString,请返回一个bool值,T ...

  6. 【读书笔记】《编程珠玑》第一章之位向量&位图

    此书的叙述模式是借由一个具体问题来引出的一系列算法,数据结构等等方面的技巧性策略.共分三篇,基础,性能,应用.每篇涵盖数章,章内案例都非常切实棘手,解说也生动有趣. 自个呢也是头一次接触编程技巧类的书 ...

  7. [A Top-Down Approach][第一章 计算机网络和因特网]

    [A Top-Down Approach][第一章 计算机网络和因特网] 标签(空格分隔): 计算机网络 介绍基本术语和概念 查看构成网络的基本硬件和软件组件. 从网络的边缘开始,考察在网络中运行的端 ...

  8. 《openssl编程》:第一章基础知识

    第一章 基础知识 1.1 对称算法 对称算法使用一个密钥.给定一个明文和一个密钥,加密产生密文,其长度和明文大致相同.解密时,使用读密钥与加密密钥相同. 对称算法主要有四种加密模式: (1) 电子密码 ...

  9. 《Django By Example》第一章 中文 翻译 (个人学习,渣翻)

    书籍出处:https://www.packtpub.com/web-development/django-example 原作者:Antonio Melé (译者注:本人目前在杭州某家互联网公司工作, ...

随机推荐

  1. wdcp升级php5.8到php7.1.12后安装swoole

    http://pecl.php.net/package/swoole wget http://pecl.php.net/get/swoole-4.0.1.tgztar zxvf swoole-4.0. ...

  2. 018.CI4框架CodeIgniter数据库操作之:Delete删除一条数据

    01. 在Model中写数据库操作语句,代码如下: <?php namespace App\Models\System; use CodeIgniter\Model; class User_mo ...

  3. qq群的表设计探究

    2018年3月21日  课题组管理就如qq的群是一样的,课题组有课题组组长:qq群有群主:课题组有组员:qq群有群人员 对于一个课题组来说,组长可以对课题组进行修改,组员只能看得见,但是不能修改.所以 ...

  4. 不可不知的spark shuffle

    shuffle概览 一个spark的RDD有一组固定的分区组成,每个分区有一系列的记录组成.对于由窄依赖变换(例如map和filter)返回的RDD,会延续父RDD的分区信息,以pipeline的形式 ...

  5. 史上最全的mysql聚合函数总结(与分组一起使用)

    1.首先我们需要了解下什么是聚合函数 聚合函数aggregation function又称为组函数. 认情况下 聚合函数会对当前所在表当做一个组进行统计. 2.聚合函数的特点 1.每个组函数接收一个参 ...

  6. MQTT 协议学习:005-发布消息 与 对应报文 (PUBLISH、PUBACK、PUBREC、PUBREL)

    背景 当有订阅者订阅了有关的主题以后,通过发布消息的消息的动作,可以让订阅者收到对应主题的消息. 根据不同的QoS 等级,通信的动作也略有不同. PUBLISH – 发布消息 报文 PUBLISH控制 ...

  7. Golang的标准命令简述

    Golang的标准命令简述 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Go本身包含了大量用于处理Go程序的命令和工具.go命令就是其中最常见的一个,它有许多子命令,接下来就跟随 ...

  8. s5pc100开发板Nand flash移植

    相关软件下载地址:http://pan.baidu.com/s/16yo8Y fsc100开发板 交叉编译工具:arm-cortex_a8-linux-gnueabi-gcc Ÿ   添加针对我们平台 ...

  9. web.xml中的classpath是啥

    在web.xml中一个很面熟的字:classpath,它到底是个啥? <servlet> <servlet-name>dispatcherServlet</servlet ...

  10. HDU - 3068 最长回文(manacher算法)

    题意:给出一个只由小写英文字符a,b,c...y,z组成的字符串S,求S中最长回文串的长度. 分析: manacher算法: 1.将字符串中每个字符的两边都插入一个特殊字符.(此操作的目的是,将字符串 ...