精華區beta NTU-Exam 關於我們 聯絡資訊
課程名稱︰數位系統與實驗 課程性質︰必修 課程教師︰甘宗左 開課學院:電資學院 開課系所︰資工系 考試日期(年月日)︰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