作者rod24574575 (天然呆)
看板NTU-Exam
标题[试题] 100下 甘宗左 数位系统与实验 期末考
时间Fri Jun 22 05:07:56 2012
课程名称︰数位系统与实验
课程性质︰必修
课程教师︰甘宗左
开课学院:电资学院
开课系所︰资工系
考试日期(年月日)︰2012/6/21
考试时限(分钟):180分钟
是否需发放奖励金:是
(如未明确表示,则不予发放)
试题 :
NTU DSL 2012 Final Exam (20-12-06-21)
1. 有一个非挥发性记忆体(如 EEPROM & Flash Memory)的操作是在被写之前必须先
Erase 成 0xFF,然後只能由1被写成0,不能由0被写成1。但是该非挥发性记忆体是有
被 Erase 次数之限制。
现在有一个 16Bytes 的非挥发性记忆体,每一个 Byte 被 Erase 的次数是10次。现
在需要记录一个 Counter 值,从0开始,每一次加1。该非挥发性记忆体的 16Bytes
初始值均为 0xFF。
1) 请设计一个方法可以做这个计数记忆,计算并证明您所设计之方法,在该非挥发性
记忆体损毁之前,所能储存之最大计数值为多少。 (20%)
2) 请将上述之方法,以一个 HW 线路实作(以 Block 方式描述,但须定义该 Block
的功能,且须说明如何能够以逻辑电路实作之)包含此非挥发性记忆体之控制电路
,控制之线路至少应有,
a) /nCount,
b) Limit,
c) /OE,
d) DataBus[n]
其中,
a) /nCount 为一个 LowPulse,当收到此 LowPulse 时,对 Counter 进行加1
b) Limit,平时为 Low,若是已达该计数器之上限则拉为 High,不再能进行
Counting
c) /OE,outputEnable,当 /OE 为 Low 时,Counter 的值放到 DataBus[n] 上,
若为 High,则 DataBus[n] 要为高阻抗状态
d) DataBus[n] 为放置 Counter 资料之讯号,若 /OE 为 High,则为高阻抗状态。
当 /OE 为 Low 时,Counter 的值会被放到 DataBus[n] 上
(15%)
2. 请参考之前 SIMP-08 之 Design,
1) 设计可执行如下指令之 SIMP-08 V5 架构 (20%)
2) 描述各指令之执行 Steps (35%)
3) 绘出 Register File(暂存器)的电路图 (10%)
Note:
Register 宽度为 8Bit,Address Bus 宽度为 16Bit
执行之 Step 越短且 CPU 结构越简单分数越高。
Memory Access 为 2 Steps。 [MAR Output & Data Input to MDR
为2个 Clock 完成]
Fetch & Decode Steps 仅需描述第一次,其余请描述 Execution Stage 即可
Reset 时,Program Counter 的来源为 [0xFFFE] & [0xFFFF]
Low Address 在 [0xFFFE],High Address 在 [0xFFFF]
┌────────┬─────┬─────┬─────┬──────────┐
│ Instruction │ OP1 │ OP2 │ OP3 │ Note │
├────────┼─────┼─────┼─────┼──────────┤
│Load Rx,#imm │0000 0xxx│IIII IIII│ - │Load Rx #imm value │
├────────┼─────┼─────┼─────┼──────────┤
│Load Rx,[mem] │0001 0xxx│LLLL LLLL│HHHH HHHH│Load Rx from [mem] │
├────────┼─────┼─────┼─────┼──────────┤
│Store [mem],Rx │0001 1xxx│LLLL LLLL│HHHH HHHH│Store Rx to [mem] │
├────────┼─────┼─────┼─────┼──────────┤
│Add Rx,Ry,Rz │0010 0xxx│0yyy 0zzz│ - │Rx = Ry + Rz │
├────────┼─────┼─────┼─────┼──────────┤
│Sub Rx,Ry,Rz │0010 1xxx│0yyy 0zzz│ - │Rx = Ry - Rz │
├────────┼─────┼─────┼─────┼──────────┤
│Jump [Rx]+[Ry] │0011 0000│0xxx 0yyy│ - │Jump [Rx]+[Ry]; Ry++│
├────────┼─────┼─────┼─────┼──────────┤
│Jump #Loc │0100 0000│LLLL LLLL│HHHH HHHH│Jump #Loc │
├────────┼─────┼─────┼─────┼──────────┤
│Push Rx │0011 0001│0000 0xxx│ - │Push Rx to stack │
├────────┼─────┼─────┼─────┼──────────┤
│Push ALL │0011 0010│ - │ - │Push all regs to │
│ │ │ │ │stack include flags │
├────────┼─────┼─────┼─────┼──────────┤
│Pop ALL │0011 0011│ - │ - │Pop all regs from │
│ │ │ │ │stack include flags │
├────────┼─────┼─────┼─────┼──────────┤
│Pop Rx │0011 0001│1111 0xxx│ - │Pop Rx from stack │
├────────┼─────┼─────┼─────┼──────────┤
│NOP │1000 0000│ - │ - │Do Nothing │
├────────┼─────┼─────┼─────┼──────────┤
│HALT │1111 1111│ - │ - │Stop │
├────────┼─────┼─────┼─────┼──────────┤
│Jump C,[Rx] │0100 0001│0000 0xxx│ - │Jump to Loc[Rx] when│
│ │ │ │ │carry flag is set │
├────────┼─────┼─────┼─────┼──────────┤
│Set.C │0100 0001│0001 0000│ - │Set Carry Flag │
├────────┼─────┼─────┼─────┼──────────┤
│Clr.C │0100 0001│0001 0001│ - │Clear Carry Flag │
├────────┼─────┼─────┼─────┼──────────┤
│Warm Reset │1111 0000│ - │ - │CPU Warm Reset │
├────────┼─────┼─────┼─────┼──────────┤
│Cold Reset │1111 1110│ - │ - │Force CPU Cold Reset│
│ │ │ │ │Trap │
└────────┴─────┴─────┴─────┴──────────┘
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.116.71