1 / 186

個人電腦檢修卡試題程式解析 — 狀態法 4-1 本章程式設計說明

個人電腦檢修卡試題程式解析 — 狀態法 4-1 本章程式設計說明 本章各試題的 QBASIC 程式幾乎相同,在每程式中的第 22 行由於試題的 Step 有不同 ( 參考各試題 QBASIC 程式 ) ,只作迴圈數的修改,其它部分完全相同;而 PLD 程式部分也很簡單,只要將試題中功能要求的圖形轉換成布林方程式與狀態圖,即完成程式的設計。  由於個人電腦檢修卡製作試題的功能為序向邏輯電路,所以本章 PLD 程式採用狀態機器的設計語法 (State Machine Design) ,此語法簡單好設計,其設計流程如下:.

Download Presentation

個人電腦檢修卡試題程式解析 — 狀態法 4-1 本章程式設計說明

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 個人電腦檢修卡試題程式解析—狀態法 4-1 本章程式設計說明 本章各試題的QBASIC 程式幾乎相同,在每程式中的第22行由於試題的Step有不同(參考各試題QBASIC程式),只作迴圈數的修改,其它部分完全相同;而PLD 程式部分也很簡單,只要將試題中功能要求的圖形轉換成布林方程式與狀態圖,即完成程式的設計。  由於個人電腦檢修卡製作試題的功能為序向邏輯電路,所以本章PLD 程式採用狀態機器的設計語法(State Machine Design),此語法簡單好設計,其設計流程如下:

  2. 模擬段在程式中可有可無,作者建議練習時去體會模擬波形的情況 以下用試題一作為一個模擬波形的範例,僅就模擬段作說明,其餘程式在各試題中會詳細解說。(將本PLD程式儲存為S1.PDS檔) PLD 程式: CHIP S1 PAL22V10 CLK A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 GND AEN IOW L9 L10 L11 L12 L13 L14 L15 H80 H200 VCC EQUATIONS H80=/A9* /A8* A7* /A6* /A5* /A4* /A3*/A2*/A1*/A0*/IOW H200=A9*/A8*/A7*/IOW*/AEN ;---------------------------- STATE MOORE_MACHINE START_UP :=POWER_UP -> S0

  3. S0 =/L15* /L14* /L13* /L12* /L11* /L10* /L9 S1 =/L15* /L14* /L13* /L12* /L11* /L10* L9 S2 =/L15* /L14* /L13* /L12* /L11* L10* /L9 S3 =/L15* /L14* /L13* /L12* L11* /L10* /L9 S4 =/L15* /L14* /L13* L12* /L11* /L10* /L9 S5 =/L15* /L14* L13* /L12* /L11* /L10* /L9 S6 =/L15* L14* /L13* /L12* /L11* /L10* /L9 S7 =L15* /L14* /L13* /L12* /L11* /L10* /L9 ;------------------ S0 := VCC -> S1 S1 := VCC -> S2 S2 := VCC -> S3 S3 := VCC -> S4 S4 := VCC -> S5

  4. S5 := VCC -> S6 S6 := VCC -> S7 S7 := VCC -> S0 ;SIMULATION SIMULATION TRACE_ON AEN CLK L9 L10 L11 L12 L13 L14 L15 SETF /CLK /AEN FOR I:= 1 TO 16 DO BEGIN CLOCKF CLK END TRACE_OFF

  5. PLD 模擬段程式解說: (1);SIMULATION “;“ 後面的文字表示註解,說明底下 為模擬程式。 (2) SIMULATION 宣告模擬段 (3) TRACE_ON AEN CLK L9 L10 L11 L12 L13 L14 L15 打開追蹤檔,並依序記錄AEN CLK L9 L10 L11 L12 L13 L14 L15等信號的模擬結果。

  6. SETF 輸入信號1 輸入信號2 輸入信號3 …輸入信號N (4) SETF /CLK /AEN SETF 語法格子: CLK 腳(第1腳)在啟始狀態,被定為High 時,若 使用CLOCKF 指令時,會有警訊產生,所以必須利用 SETF指令將CLK 的初始狀態設定為Low,而AEN (Address Enable) 位址為Low動作,所以SETF /CLK /AEN 為設定CLK AEN信號為Low。 (5) FOR I:= 1 TO 16 DO BEGIN CLOCKF CLK END

  7. FOR 變數名稱:=起始值 TO 終止值 DO BEGIN 動作程序 END 語法格式: CLOCKF 指令,時序順序分為三大步驟: (a)執行CLOCKF指令時,時脈由Low 變為High。 (b)當時脈為High時,新的信號輸出值才會記 錄。當時脈為Low 時,信號輸出值才會顯 現在上一行。

  8. 本試題有8個步階(Step),每一步階取兩次信號,所以作16次迴圈。亦就是要產生16次的 CLOCK(時脈)。 若想要模擬各試題波形,只要將下列模擬段寫到PLD的後面即可,如前面S1.PDS 程式。 ;SIMULATION SIMULATION TRACE_ON AEN CLK L9 L10 L11 L12 L13 L14 L15 SETF /CLK /AEN FOR I:= 1 TO 16 DO BEGIN CLOCKF CLK END TRACE_OFF

  9. 4-2 第一題 個人電腦檢修卡製作與單只LED向 左移閃爍控制 動作要求: (1)、能依本試題提供之「個人電腦檢修卡參考 電路圖」、「個人電腦檢修卡零件配置圖」 製作完成檢修卡。 (2)、將檢修卡安裝於外接式介面緩衝短路保護 器上測試開機,能正常完成開機程序,至 C:\>_。 (3)、設計一程式能測試I/O位址80H上的每一LED, 當程式執行時若按「F1」鍵,則可將LED1 至LED8依序逐一點亮(每一LED亮燈時間為1 秒,其餘的LED不發光,最後全滅),以利 評分。

  10. (4)、以第(3)項之程式控制LED9-LED15,其動 作要求如下: 當按「F2」鍵,首先是LED9發光,其餘的 LED不發光,其亮燈時間為1秒,之後則 LED10發光,然後LED11發光。其順序 LED9→LED10→LED11→LED12→LED13 →LED14 →LED15,最後全部熄滅,每一 STEP時間為1秒。 若再按「F2」鍵,則再次循環,按「ESC」 鍵結束程式執行。 以圖形表示,則動作如下:

  11. 5、電腦執行上述程式時會先清除薑面,並顯示 畫面如下 Hit <F1>to test 80H I/O Now Time:xx:xx:xx Hit <F2>to test LED9-15 Hit<ESC>to quit Please hit a key ---- > 註:xx:xx:xx 表示現在時間

  12. 狀態 現 在 狀 態 狀態 下 一 狀 態 L15 L14 L13 L12 L11 L10 L9 L15 L14 L13 L12 L11 L10 L9 S0 0 0 0 0 0 0 0 S1 0 0 0 0 0 0 1 S1 0 0 0 0 0 0 1 S2 0 0 0 0 0 1 0 S2 0 0 0 0 0 1 0 S3 0 0 0 0 1 0 0 S3 0 0 0 0 1 0 0 S4 0 0 0 1 0 0 0 S4 0 0 0 1 0 0 0 S5 0 0 1 0 0 0 0 S5 0 0 1 0 0 0 0 S6 0 1 0 0 0 0 0 S6 0 1 0 0 0 0 0 S7 1 0 0 0 0 0 0 S7 1 0 0 0 0 0 0 S0 0 0 0 0 0 0 0 第一題 PLD程式解析 一、依試題第四項圖形動作要求撰寫狀態真值表如下: 狀態真值表

  13. 二、 由狀態真值表中,得知各狀態分別為S0、S1、S2、 S3、S4、S5、S6、S7,由此狀態表設計出狀態圖, 然後利用狀態機器莫爾模式(Moore Model),設計 序向邏輯PLD程式。 三、狀態圖

  14. 四、PLD 程式 CHIP PLD PAL22V10 CLK A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 GND AEN IOW L9 L10 L11 L12 L13 L14 L15 H80 H200 VCC EQUATIONS H80=/A9* /A8* A7* /A6* /A5* /A4* /A3*/A2*/A1*/A0*/IOW H200=A9*/A8*/A7*/IOW*/AEN ;---------------------------- STATE MOORE_MACHINE START_UP :=POWER_UP -> S0 S0 =/L15* /L14* /L13* /L12* /L11* /L10* /L9 S1 =/L15* /L14* /L13* /L12* /L11* /L10* L9 S2 =/L15* /L14* /L13* /L12* /L11* L10* /L9 S3 =/L15* /L14* /L13* /L12* L11* /L10* /L9 S4 =/L15* /L14* /L13* L12* /L11* /L10* /L9

  15. S5 =/L15* /L14* L13* /L12* /L11* /L10* /L9 S6 =/L15* L14* /L13* /L12* /L11* /L10* /L9 S7 =L15* /L14* /L13* /L12* /L11* /L10* /L9 ;------------------ S0 := VCC -> S1 S1 := VCC -> S2 S2 := VCC -> S3 S3 := VCC -> S4 S4 := VCC -> S5 S5 := VCC -> S6 S6 := VCC -> S7 S7 := VCC -> S0

  16. 第一題 PLD 程式說明 (1) CHIP PLD PAL22V10 宣告CHIP 元件為PAL22V10,PLD 為自取名稱, 可以任意取名稱。 (2) CLK A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 GND 定義PAL22V10第1 腳到第12腳的腳位名稱,可以 任意取名稱,名稱與名稱之間必須空隔1格以上。 (3) AEN IOW L9 L10 L11 L12 L13 L14 L15 H80 H200 VCC 定義PAL22V10第13腳到第24腳的腳位名稱,可以任意 取名稱,名稱與名稱之間必須空隔1格以上。 (4) EQUATIONS 宣告布林方程式。

  17. (5) H80=/A9*/A8*A7*/A6*/A5*/A4*/A3*/A2*/A1*/A0*/IOW H80只是名稱而已,因為電腦故障代碼顯示的位址為H80,可以任意取名稱(例如取ABC或XYZ ...等等),而本布林代數算出剛好也是H80,所以取用H80比較好記,H代表16進制。而列出的布林代數,只有A7為1,其餘皆為0,/ 代表反相為0, /IOW、/AEN 為低態動作,IOW---Input Output Write,AEN---Address Enable,當QBASIC 程式執行OUTPUT &H80, 2^I時,也就是GAL22V10 PIN22 定義為H80的接腳會輸出一個Pulse 作為74LS273 PIN11 的輸入CLOCK用(參考電路圖與第五章QBASIC程式的說明)。

  18. /A9 /A8 A7 /A6 /A5 /A4 /A3 /A2 /A1 /A0 0 0 1 0 0 0 0 0 0 0 8 0 =80H (6) H200=A9*/A8*/A7*/IOW*/AEN H200只是名稱而已,可以任意取名稱(例如取DEF或RST ...等等),而本布林代數算出剛好也是H200,所以取用H200比較好記,H代表16進制。而列出的布林代數,只有A9為1,其餘皆為0,/ 代表反相為0, /IOW、/AEN 為低態動作,IOW---Input Output Write,AEN---Address Enable,當QBASIC 程式執行OUTPUT &H200, 1時,也就是GAL22V10 PIN23 定義為H200的接腳會輸出一個PULSE 作為PIN1 的輸入CLOCK用(參考電路圖與參考QBASIC程式的說明)。

  19. (7) A9 /A8 A7 /A6 /A5 /A4 /A3 /A2 /A1 /A0 1 0 0 0 0 0 0 0 0 0 2 0 0 =200H (8) STATE 表示以下之設計為狀態機器(STATE MACHINE)的語法來設計電路。 在序向邏輯電路是 開始於狀態圖,欲取得電路輸出函數必須經過多 次化簡,過程相當繁瑣,只要將狀態圖或狀態表 描述出來,即可編輯出序向邏輯電路程式。輸出   是由輸入與現在狀態共同決定 (9) MOORE_MACHINE(莫爾_機器)的模式,表示輸出僅   與目前的狀態有關,而與輸入無關,若輸出是由 輸入與現在狀態共同決定為MEALY_MACHINE (密利 _機器)模式,若未設定預設為MEALY_MACHINEM。

  20. (10) START_UP :=POWER_UP ->S0 設定打開電源的初始狀態為S0,依試題功能 LED1~LED8為OFF(不亮)狀態,所以狀態真值表S0 的狀態為不亮。 POWER_UP(電源啟動)應使暫存器輸出為0的狀態。 符號”->”表示狀態轉換(轉為S0狀態)。 (11) 定義S0~S7的狀態方程式。 S0 =/L15* /L14* /L13* /L12* /L11* /L10* /L9 S1 =/L15* /L14* /L13* /L12* /L11* /L10* L9 S2 =/L15* /L14* /L13* /L12* /L11* L10* /L9 S3 =/L15* /L14* /L13* /L12* L11* /L10* /L9 S4 =/L15* /L14* /L13* L12* /L11* /L10* /L9 S5 =/L15* /L14* L13* /L12* /L11* /L10* /L9 S6 =/L15* L14* /L13* /L12* /L11* /L10* /L9 S7 =L15* /L14* /L13* /L12* /L11* /L10* /L9

  21. (12) 狀態轉換方程式, VCC表示無條件轉換到符號 “->”所指的狀態;例如S0 := VCC -> S1,表示 在S0狀態時,只要時序脈衝(CLOCK)輸入,即無 條件轉換到S1狀態。 S0 := VCC -> S1 S1 := VCC -> S2 S2 := VCC -> S3 S3 := VCC -> S4 S4 := VCC -> S5 S5 := VCC -> S6 S6 := VCC -> S7 S7 := VCC -> S0

  22. 第一題 QBASIC程式 1 CLS 2 PRINT "Hit <F1> to test 80H I/O" 3 PRINT "Hit <F2> to test LED9-15" 4 PRINT "Hit <ESC> to quit" 5 PRINT "Please hit a key ----->" 6 LOCATE 1, 61: PRINT "Now Time:"; TIME$ 7 8 OUT &H80, 0 9 WHILE K$ <> CHR$(27) 10 K$ = RIGHT$(INKEY$, 1) 11 LOCATE 1, 70: PRINT TIME$ 12 IF K$ = "" GOTO KEND 13 SELECT CASE ASC(K$) 14 CASE 59 15 FOR I = 0 TO 7 16 OUT &H80, 2 ^I

  23. 17 LOCATE 1, 70: PRINT TIME$ 18 SLEEP 1 19 NEXT I 20 OUT &H80, 0 21 CASE 60 22 FOR I = 1 TO 8 23 OUT &H200, 1 24 LOCATE 1, 70: PRINT TIME$ 25 SLEEP 1 26 NEXT I 27 END SELECT 28 KEND: 29 WEND 30 END

  24. 第一題 QBASIC程式說明 1 畫面清除。 2-6 依題目功能要求列出畫面指定字串。 8 80H PORT 清除為0,使LED1-LED8 燈全滅。 9 判斷是否按ESC鍵若有按ESC鍵時即結束迴圈, CHR$(27) 函數是將ASCII 27字碼值轉換它所代表   的字元 ASCII 27 代表 ESC 字元。 10 INKEY$函數為取得按鍵字串,INKEY$函數並不會 等待使用者輸入。若使用者鍵入一字串,則此字 串將存入K$ 字串變數中,若無按鍵則傳回一個空 字串(Null),而且一次只能讀取一個字串。使用 INKEY$函數時,鍵入字串後,不必再按<Enter>鍵, 而且鍵入的字串不會顯示於螢幕上。 RIGHT$函數為取字串中最右邊字元, RIGHT$(INKEY$,1) 取<F1>、<F2>鍵入字串中最右 邊的一個字元。

  25. 11 第一列70行處顯示現在時間。 12 假如第10行無按下任何鍵則由INKEY$會傳回空字串 (Null)給K$,所以判斷K$是否為空字串,若是則跳 到KEND 結束。 13 SELECT CASE與END SELECT是一對,表示選擇讀取 開始與選擇讀取結束。 14 若讀取右邊第一個字元的ASCII 碼為59(10進制), 表示有按下<F1> 鍵。 15-19 由80H PORT 輸出1、2、4、8、16、32、64、128 值,每1 秒輸出一個數值(Data)於驅動LED1-LED8。 SLEEP 為延遲1秒。其動作原理如下: 配合GAL22V10 當執行OUT &H80, 2 ^I 時有二個 動作, (1) 控制動作:此OUT 的指令會使 IOW(Input Out Write)與 AEN(Address Enable) 啟動,當GAL22V10 定址於H80,則由GAL22V10 第 22腳輸出一個脈衝(Pulse)到IC 74LS273 的

  26. CLK(第11腳),作為資料(Data)輸出的時序 (Timing),(2)資料(Data)動作:資料是由ISA SLOT 的D0 ~ D7輸出於IC 74LS 273 的資料輸入 端,當CLK 腳有脈衝輸入時, 則資料由74LS273 輸出端1Q ~ 8Q輸出,當輸出為1(高電位)時,即 點亮LED。 20 使LED1-LED8熄滅。 21 若讀取右邊第一個字元的ASCII 碼為60(10進制), 表示有按下<F2> 鍵。 22-26 (a) 說明有8個STEP所以由FOR I=1 TO 8,OUTPORT &H200, 1,是將1 輸出到此H200位址,使PLD IC 接 AEN (Address Enable) 啟動,而且使 GAL22V10 IC的I/OE (I/O Enable) 啟動,當 此H200位址被選擇到,則會由GAL22V10 的第23 腳(H200)輸出一個脈衝(Pulse)給第1腳作為 Clock的輸入。

  27. (b) 在GAL 22V10 中H200位址被選擇到,使GAL 22V10 第1腳有Clock的輸入,此Clock使PLD程式L9輸出1, L9燈亮;由於開始的狀態為 S0,當第1腳有一個 脈衝輸入,則S0狀態將轉為S1狀態,若再一個脈 衝輸入,則S1狀態將轉為S2狀態,依此類推,本 試題設計有8個步進(STEP),每隔1秒PORT(第23 腳)輸出一個脈衝給第1腳,以點亮其餘的LED。 (c) OUTPORT &H200 ,1,此指令的是要產生脈衝(Pulse),不一定要用1輸出,可用0, 或任何數。SLEEP 為延遲1秒。 27 END SELECT為選擇迴圈結束。 29 WEND 為WHILE迴圈結束。 30 END為主程式結束

  28. 4-3 第二題 個人電腦檢修卡製作與單只LED向右移閃爍控制 動作要求: (1)、能依本試題提供之「個人電腦檢修卡參考 電路圖」、「個人電腦檢修卡零件配置圖」 製作完成檢修卡。 (2)、將檢修卡安裝於外接式介面緩衝短路保護 器上測試開機,能正常完成開機程序,至 C:\>_。 (3)、設計一程式能測試I/O位址80H上的每一LED, 當程式執行時若按「F1」鍵,則可將LED1 至LED8依序逐一點亮(每一LED亮燈時間為1 秒,其餘的LED不發光,最後全滅),以利 評分。

  29. (4)、以第(3)項之程式控制LED9-LED15,其動 作要求如下: 當按「F2」鍵,首先是LED15發光,其餘的 LED不發光,其亮燈時間為1秒,之後則 LED14發光,然後LED13發光。其順序 LED15→LED14→LED13→LED12→LED11→ LED10→LED9,最後全部熄滅,每一STEP 時間為1秒。若再按「F2」鍵,則再次循 環,按「ESC」鍵結束程式執行。 以圖形表示,則動作如下:

  30. 5、電腦執行上述程式時會先清除畫面,並顯示 畫面如下 Hit <F1>to test 80H I/O Now Time:xx:xx:xx Hit <F2>to test LED9-15 Hit<ESC>to quit Please hit a key ---- > 註:xx:xx:xx 表示現在時間

  31. 狀態 現 在 狀 態 狀態 下 一 狀 態 L15 L14 L13 L12 L11 L10 L9 L15 L14 L13 L12 L11 L10 L9 S0 0 0 0 0 0 0 0 S1 1 0 0 0 0 0 0 S1 1 0 0 0 0 0 0 S2 0 1 0 0 0 0 0 S2 0 1 0 0 0 0 0 S3 0 0 1 0 0 0 0 S3 0 0 1 0 0 0 0 S4 0 0 0 1 0 0 0 S4 0 0 0 0 0 0 0 S5 0 0 0 0 1 0 0 S5 0 0 0 0 1 0 0 S6 0 0 0 0 0 1 0 S6 0 0 0 0 0 1 0 S7 0 0 0 0 0 0 1 S7 0 0 0 0 0 0 1 S0 0 0 0 0 0 0 0 第二題 PLD程式解析 一、依試題第四項圖形動作要求撰寫狀態真值表如下: 狀態真值表

  32. 二、由狀態真值表中,得知各狀態分別為S0、 S1、S2、S3、S4、S5、S6、S7,由此狀態 表設計出狀態圖,然後利用狀態機器莫爾 模式(Moore Model),設計序向邏輯PLD程式。 三、狀態圖

  33. 四、PLD 程式 CHIP PLD PAL22V10 CLK A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 GND AEN IOW L9 L10 L11 L12 L13 L14 L15 H80 H200 VCC EQUATIONS H80=/A9* /A8* A7* /A6* /A5* /A4* /A3*/A2*/A1*/A0*/IOW H200=A9*/A8*/A7*/IOW*/AEN ;---------------------------- STATE MOORE_MACHINE START_UP :=POWER_UP -> S0 S0 =/L15* /L14* /L13* /L12* /L11* /L10* /L9 S1 =L15* /L14* /L13* /L12* /L11* /L10* /L9 S2 =/L15* L14* /L13* /L12* /L11* /L10* /L9 S3 =/L15* /L14* L13* /L12* /L11* /L10* /L9 S4 =/L15* /L14* /L13* L12* /L11* /L10* /L9

  34. S5 =/L15* /L14*/ L13* /L12* L11* /L10* /L9 S6 =/L15* /L14* /L13* /L12* /L11* L10* /L9 S7 =/L15* /L14* /L13* /L12* /L11* /L10* L9 ;------------------ S0 := VCC -> S1 S1 := VCC -> S2 S2 := VCC -> S3 S3 := VCC -> S4 S4 := VCC -> S5 S5 := VCC -> S6 S6 := VCC -> S7 S7 := VCC -> S0

  35. 第二題 PLD 程式說明 (1) CHIP PLD PAL22V10 宣告CHIP 元件為PAL22V10,PLD 為自取名稱, 可以任意取名稱。 (2) CLK A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 GND 定義PAL22V10第1 腳到第12腳的腳位名稱,可以 任意取名稱,名稱與名稱之間必須空隔1格以上。 (3) AEN IOW L9 L10 L11 L12 L13 L14 L15 H80 H200 VCC 定義PAL22V10第13腳到第24腳的腳位名稱,可以任 意取名稱,名稱與名稱之間必須空隔1格以上。 (4) EQUATIONS 宣告布林方程式。

  36. (5) H80=/A9*/A8*A7*/A6*/A5*/A4*/A3*/A2*/A1*/A0*/IOW H80只是名稱而已,因為電腦故障代碼顯示的位址為H80,可以任意取名稱(例如取ABC或XYZ ...等等),而本布林代數算出剛好也是H80,所以取用H80比較好記,H代表16進制。而列出的布林代數,只有A7為1,其餘皆為0,/ 代表反相為0, /IOW、/AEN 為低態動作,IOW---Input Output Write,AEN---Address Enable,當QBASIC 程式執行OUTPUT &H80, 2^I時,也就是GAL22V10 PIN22 定義為H80的接腳會輸出一個Pulse 作為74LS273 PIN11 的輸入CLOCK用(參考電路圖與第五章QBASIC程式的說明)。

  37. /A9 /A8 A7 /A6 /A5 /A4 /A3 /A2 /A1 /A0 0 0 1 0 0 0 0 0 0 0 8 0 =80H (6) H200=A9*/A8*/A7*/IOW*/AEN H200只是名稱而已,可以任意取名稱(例如取DEF或RST ...等等),而本布林代數算出剛好也是H200,所以取用H200比較好記,H代表16進制。而列出的布林代數,只有A9為1,其餘皆為0,/ 代表反相為0, /IOW、/AEN 為低態動作,IOW---Input Output Write,AEN---Address Enable,當QBASIC 程式執行OUT &H200, 1時,也就是GAL22V10 PIN23 定義為H200的接腳會輸出一個PULSE 作為PIN1 的輸入CLOCK用(參考電路圖與參考QBASIC程式的說明)。

  38. (7) A9 /A8 A7 /A6 /A5 /A4 /A3 /A2 /A1 /A0 1 0 0 0 0 0 0 0 0 0 2 0 0 =200H (8) STATE 表示以下之設計為狀態機器(STATE MACHINE)的語法來設計電路。 在序向邏輯電路是 開始於狀態圖,欲取得電路輸出函數必須經過多 次化簡,過程相當繁瑣,只要將狀態圖或狀態表 描述出來,即可編輯出序向邏輯電路程式。輸出是 由輸入與現在狀態共同決定 (9) MOORE_MACHINE(莫爾_機器)的模式,表示輸出僅與 目前的狀態有關,而與輸入無關,若輸出是由輸入 與現在狀態共同決定為MEALY_MACHINE (密利_機器) 模式,若未設定預設為MEALY_MACHINEM。

  39. (10) START_UP :=POWER_UP -> S0 設定打開電源的初始狀態為S0,依試題功能 LED1~LED8為OFF(不亮)狀態,所以狀態真值表S0 的狀態為不亮。 POWER_UP(電源啟動)應使暫存器輸出為0的狀態。 符號”->”表示狀態轉換(轉為S0狀態)。 (11)定義S0~S7的狀態方程式。 S0 =/L15* /L14* /L13* /L12* /L11* /L10* /L9 S1 =L15* /L14* /L13* /L12* /L11* /L10* /L9 S2 =/L15* L14* /L13* /L12* /L11* /L10* /L9 S3 =/L15* /L14* L13* /L12* /L11* /L10* /L9 S4 =/L15* /L14* /L13* L12* /L11* /L10* /L9 S5 =/L15* /L14* /L13* /L12* L11* /L10* /L9 S6 =/L15* /L14* /L13* /L12* /L11* L10* /L9 S7 =/L15* /L14* /L13* /L12* /L11* /L10* L9

  40. (12) 狀態轉換方程式, VCC表示無條件轉換到符號 “->”所指的狀態;例如S0 := VCC -> S1,表示 在S0狀態時,只要時序脈衝(CLOCK)輸入,即無 件轉換到S1狀態。 S0 := VCC -> S1 S1 := VCC -> S2 S2 := VCC -> S3 S3 := VCC -> S4 S4 := VCC -> S5 S5 := VCC -> S6 S6 := VCC -> S7 S7 := VCC -> S0

  41. 第二題 QBASIC程式 1 CLS 2 PRINT "Hit <F1> to test 80H I/O" 3 PRINT "Hit <F2> to test LED9-15" 4 PRINT "Hit <ESC> to quit" 5 PRINT "Please hit a key ----->" 6 LOCATE 1, 61: PRINT "Now Time:"; TIME$ 7 8 OUT &H80, 0 9 WHILE K$ <> CHR$(27) 10 K$ = RIGHT$(INKEY$, 1) 11 LOCATE 1, 70: PRINT TIME$ 12 IF K$ = "" GOTO KEND 13 SELECT CASE ASC(K$) 14 CASE 59 15 FOR I = 0 TO 7 16 OUT &H80, 2 ^I

  42. 17 LOCATE 1, 70: PRINT TIME$ 18 SLEEP 1 19 NEXT I 20 OUT &H80, 0 21 CASE 60 22 FOR I = 1 TO 8 23 OUT &H200, 1 24 LOCATE 1, 70: PRINT TIME$ 25 SLEEP 1 26 NEXT I 27 END SELECT 28 KEND: 29 WEND 30 END

  43. 第二題 QBASIC程式說明 與第一題相同,在此就不再贅述,請讀者自行參閱前面4-19頁的說明。

  44. 4-3 第三題個人電腦檢修卡製作與兩只LED向左移閃爍控 制 動作要求: (1)、能依本試題提供之「個人電腦檢修卡參考 電路圖」、「個人電腦檢修卡零件配置圖」 製作完成檢修卡。 (2)、將檢修卡安裝於外接式介面緩衝短路保護 器上測試開機,能正常完成開機程序,至 C:\>_。 (3)、設計一程式能測試I/O位址80H上的每一LED, 當程式執行時若按「F1」鍵,則可將LED1 至LED8依序逐一點亮(每一LED亮燈時間為1 秒,其餘的LED不發光,最後全滅),以利 評分。

  45. (4)、以第(3)項之程式控制LED9-LED15,其    動作要求如下: 當按「F2」鍵,首先是LED9,10發光,其餘的LED不發光,其亮燈時間1秒,之後則LED10,11發光,然後LED11,12發光。其順序為LED9,10→LED10,11→LED11,12→LED12,13 →LED13,14→LED14,15,最後全部熄滅,每一STEP時間為1秒。若再按「F2」鍵,則可再次循環,按「ESC」鍵結束程式執行。 以圖形表示,則動作如下:

  46. 5、電腦執行上述程式時會先清除畫面,並顯示 畫面如下 Hit <F1>to test 80H I/O Now Time:xx:xx:xx Hit <F2>to test LED9-15 Hit<ESC>to quit Please hit a key ---- > 註:xx:xx:xx 表示現在時間

More Related