《数字逻辑设计与计算机组成》一练习

练习

3.1 现有一个CPA (8),8位的CPA,完成以下练习:

a.    用非门和与非门设计一个加法器,并给出所需逻辑门的总数量。使用第2章给出的全加器SOP表达式实现。
b.    给出所需三极管总数量。
c.    设计一个CPA (32)需要多少三极管?

3.2 计算下列2的补码的和与差值。对于每个结果标明是否有溢出的情况。

3.3 给出1位PGU和1位CGU的POS表达式并用非门和或非门画出它们的电路框图,要求使用最少的逻辑门数量。
3.4 假设一个8位加法器使用两个4位CPA(标记为CPA1和CPA2)组成的,其中进位输出c3作为CPA2的进位输入。CPA1传入原始进位输入c-1。为了提高加法器的运行速度,c3的生成公式为c3 = g3 + p3g2 + p3p2g1 + p3p2p1g0 + p3p2p1p0c-1,其中p和g可以在0.3ns内生成。给出新的加法器可以提升的速率值,ΔFAc = 0.5ns。
3.5 设计和估计用以下模块实现的16位混合加法器的传输延迟:

a.    2个CLA (8)模块
b.    4个CLA (4)模块
c.    8个CLA (2)模块

3.6 通过计算ΔCPA (8)与ΔCLA (8)的比值比较ΔCPA (8)和ΔCLA (8)速率。使用全加器的SOP表达式。
3.7 用4位BCGU设计15位CLA,其中每一个BCGU输出3个进位以及p和g信号。
3.8 用1位2-1 MUX设计一个1位8-1 MUX。假设与非门有0.1ns延迟,给出其传输延迟的估计。
3.9 用1位2-1和1位4-1 MUX设计一个1位8-1 MUX。假设与非门有0.1ns延迟,4-1 MUX用SOP表达式实现,同时估计其传输延迟。
3.10 估计图3-16中8位ALU的传输延迟,假设与非门有0.1ns延迟,加法器用CLA (8)实现,且只有2-1 MUX可用。
3.11 证明图3-22中的电路可以实现ALU映射模块。
3.12 现有一个8位位并行ALU,其只能实现4个功能:加法、减法、按位与和异或。假设一个加法器/减法器模块用一个由CLA (2)模块组成的混合加法器设计。此外,当进行按位计算时溢出标记必须屏蔽。假设只有8位2-1 MUX可以选择。完成以下练习:

    a.    画出数据通路并估计其传输延迟,假设非门和与非门有0.1ns延迟。
    b.    给出其映射模块的真值表。

3.13 用2-1译码器模块设计一个4-2译码器。提示:你也许还需要一个1位2-1 MUX和一个2输入或门。
3.14 用4-2译码器模块设计一个8-3译码器。提示:你也许还需要一个2位2-1 MUX和一个2输入或门。
3.15 用表3-8中给出的1位ALU片真值表设计图3-23所示的8位位串行ALU。
3.16 设计一个2位2的补码比较器,且用4个比较器模块来设计8位比较器。提示:一个2位2的补码比较器输入两个2位输入A、B和gti(大于)、eqi(等于)和lti(小于)信号,“i”表示从之前的模块输入,输出信号为gto、eqo和lto,“o”表示输出。首先设计一个只有A和B的2位2的补码比较器生成三个输出,当A > B时输出为gtt、A = B时输出为eqt、A < B时输出ltt,这里“t”表示最初的。然后将gtt、eqt、ltt与gti、eqi、lti组合起来生成gto、eqo和lto。例如,当(gti = 1且gtt = 1)或(gti = 1且eqt = 1)或(eqi = 1且gtt = 1)或(lti = 1且gtt = 1)时,gto = 1。
3.17 现有图3-26给出的4位阵列乘法器。完成以下练习:

    a.    根据进位与和值的传输延迟估计其传输延迟;即根据ΔFAc和ΔFAs。
    b.    给出n位阵列乘法器的传输延迟公式。

3.18 现有8位阵列乘法器,CLA (8)替换了最后一行的CPA (8)。假设ΔFAc = 0.2ns,ΔFAs = 0.3ns且CLA (8) = 0.8ns,问新的乘法器可以比原来的乘法器运行多快?
3.19 用恢复除法算法运算用N = 10101101除以D = 1110。你可以使用计算器进行二进制运算来验证你的结果。
3.20 首先通过设计一个1位组合减法MUX位片来设计一个阵列除法器,使得传输延迟最小(例如,SOP或者POS表达式);然后用其来设计4位位串行减法MUX模块;且用其替换图3-28中的4位减法和4位MUX对。
3.21 用你熟悉的语言(或者用Excel)写出实现以下倒数除法算法的程序,且当D = 1.0时做一次观察。然后证明倒数除法算法,计算Q,等于N/D,用除法运算(/)计算。倒数除法算法如下:

    
    考虑到在计算Q的过程中没有除法操作;在N除以D中只用到了乘法操作和减法操作。这个算法是在硬件Intel x486处理器中作为浮点除法指令存在的。执行两次程序,一次用输入D = 1.99且N = 2.4,一次使用输入D = 1.56且N = 2.4。考虑到D的尾数总是小于2(例如,D的最大尾数的二进制表示为1.1111111…1 < 2,“浮点”类型中小数点后有23个1,“双浮点”类型中小数点后有52个1)。
    当D变为1.0时比较N值和用原始N(N0)除以(/)原始D(D0)(例如Q = 2.4/1.99)求得的Q值。对于某些i当Di变为1.0时,比较Ni和Q = N/D。对于某些i,当Di = 1.0时可以得到Q = Ni吗?这两次运行你注意到什么?

3.22 给出6.725的IEEE浮点表示。
3.23 给出0.35的IEEE单浮点类型表示。
3.24 0x41DD0000是IEEE单浮点数。在十进制中其表示的数值为多少?
3.25 给出两个单浮点数A = 0xC18D0000 = - 17.625和B = 0x41080000 = 8.5相加求出和值(S)的步骤。
3.26 设计一个8位组合右移运算器。每一次数值进行一次运算右移,符号位不变。且给出- 80右移三次的步骤(- 80 >>> 3)。
3.27 用CPA(8)设计一个8位2的补码的加法器/减法器Verilog行为和结构模块并进行仿真。用“case”语句来描述一个全加器;然后用一个Verilog结构模块来设计CPA(8),使用8个全加器副本。用“assign”语句来溢出标记(ovf)的表达式,用“if-else”语句来描述转换模块。设计一个Verilog测试模块来测试你的设计是否正确,使用测试向量0x80 - 0x01和0x7F + 0x01。在两个例子中溢出标记是否为真?
3.28 用Verilog设计一个8位恢复除法器。用一个Verilog行为模块设计一个1位与全加器相似的减法器。且设计一个8位与8位CPA类似的BPS。设计一个8位2-1 MUX的行为描述。将若干个BPS和MUX模块结合起来用于设计除法器。设计一个测试模块来测试你的设计。
3.29 考虑外部尾数N.F = {1, N.F}的浮点被除数和内部尾数D.F = {1, D.F}的浮点除数,其中N.F和D.F都为4位数值。用练习3.20中4位位串行减法MUX设计一个FPU中的整数除法器。提示:N.F将从右边填充0;这个例子中,在每一步中Ak总是一个5位数值和Ak[4],最高有效位(MSB),不用于确定下一位数(例如Ak [3:0] - D.F);在每一步中Ak [4]用于与借位输出(bo)连接来决定下一个商位qk = Ak[4] + (bok)。
计算机安全
3.30 计算机安全(硬件木马):练习11.12了解计算机恶意电路如何设计。不用实现其触发机制;直接操作MUX来引起计算机攻击(参照11.2节)。
3.31 计算机安全(访问控制):练习11.26设计一个适用于硬件实现的分级访问控制模块(参照11.1.4节和11.1.5节)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值