作者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