type
status
date
slug
summary
tags
category
icon
password
第二章 数字逻辑基础分析题两道第三章 组合逻辑电路设计题一道第四章 时序逻辑电路设计题三道第五章 FPGA设计和硬件描述语言代码题两道第六章 运算方法和运算部件计算题两道第七章 指令系统分析题两道第八章 中央处理器分析题一道第九章 存储器层次结构分析题六道
第二章 数字逻辑基础
分析题两道
1. 用卡诺图化简法将下列逻辑函数化为最简与-或式。
求解:

2. 用卡诺图化简法将下列逻辑函数化为最简与-或式。
求解:

第三章 组合逻辑电路
设计题一道
3. 已知一个组合逻辑电路的功能可用图1所示的真值表来描述,要求利用无关项进行化简,给出函数F的最简逻辑表达式,画出对应的逻辑电路图,并分析该逻辑电路是否存在竞争冒险?



答:利用无关性进行化简如图 2 所示,可能有 3 种化简结果:
观察第一个逻辑表达式,发现其乘积项中变量  存在逻辑相反的情况,若 ,, 时,,此时, 从  变为  时,会在输出端形成短暂的毛刺,因此该电路存在竞争冒险。通过增加冗余项 , 就可消除冒险。
同理,可分析其它两个表达式。
第四章 时序逻辑电路
设计题三道
4. 某时序逻辑电路能够检测并统计两个外部输入信号  和  中  的出现次数,如果  的出现次数累计为  的倍数,则输出信号  为  ,否则  为  。请画出这个电路的状态图。(提示:0 也是  的倍数。)
答:设  表示初始状态以及当  和  输入  的累计次数为  的倍数时的状态, 表示  的累计输入次数为模  余  时的状态, 表示  的累计输入次数为模  余  时的状态, 表示  的累计输入次数为模  余  时的状态则,得到电路的状态图(转移条件表达式格式为  )如图 4 所示。

5. 化简状态图,并给出分析过程。
答:考察图中状态集合中两两之间的次态变化和输出情况可知,状态  和状态  是等价的(同一输入条件下次态和输出都相同)。由状态  和状态  等价可推导出状态  和状态  也等价(在输入  时,两个状态相互转移可认为等价)。 和  合并后,可发现  和  也属于类似情况,由此可知 、 和  都等价。基于上述分析,得到如图化简后的状态表。


6. 化简状态图,并给出分析过程。
答:如图所示,利用隐含表化简分析,寻找等效对,进行关联比较可知,原始状态表中的  个状态共构成  个等效对、、、, 求出  个最大等效类  、 。然后进行状态合并,作出最小化状态表。 令  、 、 、 ,并代入原始状态表中,即可得到化简后的状态表。

第五章 FPGA设计和硬件描述语言
代码题两道
7. 在高性能处理器设计中可通过 PopCount 电路模块来统计每周期执行的指令数量。函数 PopCount(x) 的定义为 x 的二进制表示中“1”的数量,如 PopCount(5)=2,PopCount(11)=3。
假定 x 的位宽为 3 ,按以下要求用 Verilog 实现 PopCount 电路模块的功能:仅实例化全加器模块。
假定实现全加器功能的模块名为FA,以下是模块FA的代码:
仅实例化全加器模块的PopCount实现代码:
8. 设计一个 4 位二进制计数器,当输入信号 clk 的上升沿到来时,输出信号 q 的值加 1,如果 q 的值达到 10(即计数到最大值),则输出信号 overflow 为 1。
答:首先,我们定义输入和输出信号:
输入信号 clk:时钟信号,用于触发计数器操作。
输入信号 reset:复位信号,当复位信号为高电平时,计数器将被清零。
输出信号 q:4 位二进制输出信号,表示计数器的当前值。
输出信号 overflow:溢出信号,当计数器值达到最大值时为高电平。
然后,我们使用 Verilog HDL 语言实现这个计数器:
在上面的代码中,我们使用了一个 always 块来定义一个同步时序逻辑。在 always 块中,我们使用 @posedge 关键字来指定时钟信号的上升沿。当复位信号 reset 为高电平时,我们将计数器清零,并将溢出信号设置为 0 。否则,在时钟信号的上升沿时,我们将检查计数器的当前值。如果计数器的值为 11(即二进制数 1011),则将溢出信号设置为 1 。否则,我们将计数器的值加 1 。
第六章 运算方法和运算部件
计算题两道
9. 假设浮点数格式为:阶码是 4 位移码,偏置常数为 8 ,尾数是 6 位补码(采用双符号位)。用浮点运算规则分别计算在不采用任何附加位和采用 2 位附加位(保护位、舍入位)这两种情况下以下表达式的值。(假定对阶和右规时采用就近舍入到偶数方式)
(1)
(2)
(3)
(4)
解:假定采用隐藏位
根据题目所给的各种位数,可以得到在机器中表示为:
所以,
尾数 M 中小数点前面有三位,前两位为数符,表示双符号,第三位加了括号,是隐藏位“1”
没有附加位时的计算:
(1)
,根据对阶规则可知需要对  进行对阶,结果为: ,
尾数相加:,两位符号相等,数值部分最高位为  ,不需要进行规格化,所以最后结果为:, , 即 
(2)
,根据对阶规则可知需要对  进行对阶,结果为:,
尾数相加:,两位符号相等,数值部分最高为  ,不需要进行规格化,所以最后结果为:, , 即 
(3)
 ,根据对阶规则可知不需要进行对阶
尾数相加: ,两位符号不等,说明尾数溢出,需要进行右规,最后结果为: , , 即 
(4)
,根据对阶规则可知不需要进行对阶
尾数相加: ,两位符号相等,数值部分最高位为  ,需要进行左规,所以最后结果为: , , 即 
如果有两位附加位精度上会有提高,在对阶的时候要注意小数点后就不是 6 位,而是 8 位,最后两位为保护位和舍入位。但是由于本题 6 位尾数已经足够,再加 2 位附加位,其结果是一样的
10. 采用 IEEE754 单精度浮点数格式计算下列表达式的值。
(1)    (2)
解:
用 IEEE754 标准单精度格式表示为:
尾数  和  中小数点前面有两位,第一位为数符,第二位加了括号,是隐藏位“1”
以下是计算机中进行浮点数加减运算的过程(假定保留2位附加位:保护位和舍入位)
(1)
① 对阶:
 ,根据对阶规则可知需要对  进行对阶,结果 ,, 的尾数  右移  位,符号不变,数值高位补  ,隐藏位右移到小数点后面,最后移出的  位保留
② 尾数相加:(注意小数点在隐藏位后)
根据原码加/减运算规则,得: ,上式尾数中最左边第一位是符号位,其余都是数值部分,尾数后面两位是附加位(加红)
③ 规格化:根据所得尾数的形式,数值部分最高位为  ,所以不需要进行规格化
④ 舍入:把结果的尾数  中最后两位附加位舍入掉,从本例来看,不管采用什么舍入法,结果都一样,都是把最后两个  去掉,得 
⑤ 溢出判断:在上述阶码计算和调整过程中,没有发生“阶码上溢”和“阶码下溢”的问题。因此,阶码 
最后结果为  ,,即:
(2)
① 对阶:
,根据对阶规则可知需要对  进行对阶,结果为:, , 的尾数  右移  位,符号不变,数值高位补  ,隐藏位右移到小数点后面,最后移出的  位保留
② 尾数相减:(注意小数点在隐藏位后)
根据原码加/减运算规则,得: ,上式尾数中最左边第一位是符号位,其余都是数值部分,尾数后面两位是附加位(加红)
③ 规格化:根据所得尾数的形式,数值部分最高位为  ,所以不需要进行规格化
④ 舍入:把结果的尾数Mb中最后两位附加位舍入掉,从本例来看,不管采用什么舍入法,结果都一样,都是把最后两个  去掉,得 
⑤ 溢出判断:在上述阶码计算和调整过程中,没有发生“阶码上溢”和“阶码下溢”的问题。因此,阶码 
最后结果为 ,,即:
第七章 指令系统
分析题两道
11. 某计算机字长 16 位,每次存储器访问宽度 16 位,CPU中有 8 个 16 位通用寄存器。现为该机设计指令系统,要求指令长度为字长的整数倍,至多支持 64 种不同操作,每个操作数都支持 4 种寻址方式:立即(I)、寄存器直接(R)、寄存器间接(S)和变址(X),存储器地址位数和立即数均为 16 位,任何一个通用寄存器都可作变址寄存器,支持以下 7 种二地址指令格式(R、I、S、X代表上述四种寻址方式):RR型、RI型、RS型、RX型、XI型、SI型、SS型。请设计该指令系统的 7 种指令格式,给出每种格式的指令长度、各字段所占位数和含义,并说明每种格式指令需要几次存储器访问?
答:指令格式可以有很多种,只要满足以下的要求即可。
至多 64 种操作,故操作码字段:6 位;8 个通用寄存器,故寄存器编号:3 位;直接地址和立即数:16 位;变址寄存器编号:3 位;指令字总位数是 16 的倍数。
二地址指令格式,RI、XI和SI三种指令格式中,添加 3 个 0 ,是为了补足位数,以使指令长度为 16 的倍数。其中,RR、RS和SS型指令都是 16 位,RI、RX和SI型指令都是 32 位,XI型指令是 48 位。
指令格式示例1:
指令类型用专门的“类型”字段(最左 4 位)说明,因而无须对两个操作数的寻址方式进行说明。7 种类型只要 3 位编码即可,最后一位总是 0 。

指令格式示例2: 
用专门的“寻址方式”字段分别说明两个操作数的寻址方式,其定义如下:
寻址方式字段(2位)
00:立即;
01:寄直;
10:寄间;
11:变址。

12. 存储器存取宽度为 16 位,每次从存储器取出 16 位。因此,读取 16 、32 和 48 位指令分别需要 1、2 和 3 次存储器访问。各类指令的功能和访存次数分别说明如下(表示存储器地址 x 的内容, 表示寄存器 x 中的内容)。 
指令  | 功能  | 指令长度  | 取指访存  | 执行访存  | 总访存次数  | 
RR  | 16位  | 1  | 0  | 1  | |
RI  | 32位  | 2  | 0  | 2  | |
RS  | 16位  | 1  | 1  | 2  | |
RX  | 32位  | 2  | 1  | 3  | |
XI  | 48位  | 3  | 2  | 5  | |
SI  | 32位  | 2  | 2  | 4  | |
SS  | 16位  | 1  | 3  | 4  | 
第八章 中央处理器
分析题一道
13. 参照如图 1 所示的多周期数据通路,给出 Load 指令(  ,存储单元地址为寄存器内容加立即数)执行过程的各阶段完成的功能,并给出各阶段所需的有效控制信号及其取值。

答:Load指令(  ,存储单元地址为寄存器内容加立即数)执行过程包括 4 个阶段,各自完成的功能、所需的有效控制信号及其取值如下:
(1)取指令并计算下条指令地址(公共操作),记为 IFecth,根据 PC 读指令并保存到 IR ,PC+4
有效控制信号及其取值如下:
① R[IR] ← M[PC]:PCout = 1、MARout = 0、MemWr = 0、IRWr = 1
② PC ← PC+4:Add1MUX = 0、Add2MUX = 1、PCWr = 1
③ 其他写使能信号(如 MARWr、CCWr、MDRWr、ALUoutWr、RegWr )全部为 0
(2)译码并取数(公共操作),记为 Rfecth / ID,IR 的 OP 及 CC 送控制器译码,并根据 Rs 和 Rt 读取寄存器中数据,加法器空闲,投机计算主存地址有效控制信号及其取值为:ExtOP = 1 (符扩)、Add1MUX = 1、Add2MUX = 0、MARWr = 1、其他写使能信号全部为 0 
Load 指令:地址已投机计算,还需两个时钟周期,记为 lwExec 、lwFinish 状态,根据投机计算好的地址( MAR 中)到主存中取数,送 MDR ,再将 MDR 内容写入 Rt 
(3)lwExec 阶段有效控制信号及其取值:MARout = 1、PCout = 0、MemWr = 0、MDRMUX = 0、MDRWr = 1、其他写使能信号全为 0 
(4)lwFinish 阶段有效控制信号及其取值:RegMUX = 0、RegWr = 1、其他写使能信号全为 0 
第九章 存储器层次结构
分析题六道
14. 用 64K × 1 位的 DRAM 芯片构成 256K × 8 位的存储器。要求:
(1) 计算所需芯片数,并画出该存储器的逻辑框图。
(2) 若采用异步刷新方式,每单元刷新间隔不超过 2ms,则产生刷新信号的间隔是多少时间?若采用集中刷新方式,则存储器刷新一遍最少用多少读写周期?
参考答案:
(1)256KB / (64K×1位) = (256K×8位) / (64K×1位) = 4×8 = 32片。存储器逻辑框图见下页(图中片选信号CS为高电平有效)
(2)因为每个单元的刷新间隔为 2ms ,所以,采用异步刷新时,在 2ms 内每行必须被刷新一次,且仅被刷新一次。因为 64K × 1 位的 DRAM 芯片存储阵列为 64K = 256×256 ,所以一共有 256 行。因此,存储器控制器必须每隔 2ms / 256 = 7.8µs 产生一次刷新信号。采用集中刷新方式时,整个存储器刷新一遍需要 256 个存储(读写)周期,在这个过程中,存储器不能进行读写操作,存在“死时间”。

15. 某计算机主存最大寻址空间为 4GB,按字节编址,假定用 64M × 8 位的具有 8 个位平面的 DRAM 芯片组成容量为 512MB 、传输宽度为 64位 的内存条(主存模块)。回答问题:
(1)每个内存条需要多少个 DRAM 芯片?
(2)构建容量为 2GB 的主存时,需要几个内存条?
(3)主存地址共有多少位?其中哪几位用作 DRAM 芯片内地址?哪几位为 DRAM 芯片内的行地址?哪几位为 DRAM 芯片内的列地址?哪几位用于选择芯片?
答:(1)因为 DRAM 芯片容量为 ,所以,每个内存条需要  个芯片。
(2)构建容量为  的主存时,需要  个内存条。
(3)DRAM 芯片容量为  位 , ,所以芯片内地址为  ~   ,其中, ~  为 DRAM 芯片内的行地址, ~  为 DRAM 芯片内的列地址
因为主存容量为  ,需要  个内存条,每个内存条容量 ,所以数据线为  位,故主存容量  ,所以地址线为  根。其中低  位(  ~  )分为两部分,直接跟芯片的行、列地址相接;剩余  根(  ~  )经过一个  译码器,形成  个片选信号,用于选择不同的内存条。
16. 某计算机主存最大寻址空间为 64KB ,按字节编址,假定用 1K × 8位 的具有 8 个位平面的 DRAM 芯片组成容量为 16KB 的内存条,其传输宽度为 8 位。回答下列问题:
(1)每个内存条需要多少 DRAM 芯片?
(2)构建容量为 48KB 的主存时,需要几个内存条?
(3)主存地址共多少位?哪几位用于选择内存条?哪几位连到内存条的地址引脚上?
(4)每次读写的信息是否可能分布在多个 DRAM 芯片中?若按连续方式对 DRAM 芯片编址,则哪几位用作 DRAM 芯片内地址?哪几位为 DRAM 芯片内的行地址?哪几位为 DRAM 芯片内的列地址?
答:(1)每个内存条需要 16KB / ( 1K × 8位 ) = 16 × 1 = 16 片 DRAM 芯片。
(2)构建 48KB 内存需要 48KB / 16KB = 3 个内存条。
(3)因为是按字节编址,所以主存地址共  位,假定主存地址为 ,则最高 2 位  用于选择内存条,第 14 位 连到内存条的地址引脚上。
(4)因为每次在总线上传输 8 位数据,所以每次读写的信息一定位于同一个芯片中,而不是分布在多个芯片中。
每个内存条中有 16 个芯片,芯片内按连续方式编址,共有 1024 个存储单元,因此,14 条内存条地址引脚中的高 4 位  表示芯片号,用于选择芯片,第 10 位  表示芯片内地址,其中, 为行地址, 为列地址。
DRAM 芯片内各个存储单元的排列如下图所示,图中每个方框表示一个存储单元,由 8 个位平面中相同位置的 8 位组成,方框上面显示的是对应的存储单元地址,方框内显示的是存储阵列中所在位的行号和列号。从图中显示的地址来看,在同一行中的存储单元是连续的,即在 DRAM 的行缓冲器中数据的地址是连续的。

17. 假设某计算机的主存地址空间大小为 64MB,采用字节编址方式。其 cache 数据区容量为 4KB,采用 4 路组相联映射方式,块大小为 64B。请问:
主存地址字段如何划分?要求说明每个字段的含义、位数和在主存地址中的位置。
参考答案:
cache 的划分为:,所以,cache 组号(组索引)占 4 位。
主存空间划分为:,因此,主存地址划分为三个字段:高 16 位为标志字段、中间 4 位为组号、最低 6 位为块内地址。
18. 假定某机主存空间大小 1GB,按字节编址。cache 的数据区(即不包括标记、有效位等存储区)有 64KB ,块大小为 128字节 ,采用直接映射和全写(write-through)方式。请问:
(1)主存地址如何划分?要求说明每个字段的含义、位数和在主存地址中的位置。
(2)cache 的总容量为多少位?
参考答案:
(1)主存空间大小为 1GB ,按字节编址,说明主存地址为 30位 。cache 共有 64KB / 128B = 512 行 ,因此,行索引(行号)为 9 位;块大小 128 字节,说明块内地址为 7 位。因此,30 位主存地址中,高 14 位为标志(Tag);中间 9 位为行索引;低 7 位为块内地址。
(2)因为采用直接映射,所以 cache 中无需替换算法所需控制位,全写方式下也无需修改(dirty)位,而标志位和有效位总是必须有的,所以,cache 总容量为 512 × (128 × 8 + 14 + 1 ) = 519.5K 位。
19. 假定某中断系统有四个中断源,其响应优先级为 1 > 2 > 3 > 4 。假定在用户程序时同时发生 1 、 3 、和 4 级中断请求,执行 3 级中断服务程序时发生 2 级中断请求。分别写出处理优先级为 1 > 2 > 3 > 4 和 1 > 4 > 3 > 2 时各中断的屏蔽字及 CPU 完成中断处理的过程。
中断优先权的动态分配
(1) 中断处理优先级为 1 > 2 > 3 > 4 时:


(2) 中断处理优先级为 1 > 4 > 3 > 2 时:


- 作者:EageYren
 - 链接:https://www.eageyren.top//learning/itcompose
 - 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
 






