冼 進(jìn), 賴曉錚
(華南理工大學(xué) 計(jì)算機(jī)科學(xué)與工程學(xué)院, 廣州 510006)
“數(shù)字邏輯”是計(jì)算機(jī)專業(yè)硬件教學(xué)中的一門十分重要的學(xué)科基礎(chǔ)課,也是國家教委《高等學(xué)校計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)發(fā)展戰(zhàn)略研究報(bào)告暨專業(yè)規(guī)范(2008)》要求的計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)學(xué)生必須掌握的一門核心基礎(chǔ)課,是關(guān)于計(jì)算機(jī)硬件領(lǐng)域幾門主干課程的第一門課,學(xué)好該課程,可以為日后繼續(xù)學(xué)習(xí)計(jì)算機(jī)組成與體系結(jié)構(gòu)、嵌入式系統(tǒng)等后續(xù)課程打下堅(jiān)實(shí)的基礎(chǔ)。因此,上好這門課,對于計(jì)算機(jī)專業(yè)的發(fā)展和學(xué)科建設(shè)有著不可忽視的意義。
現(xiàn)有的數(shù)字邏輯的實(shí)驗(yàn)教學(xué)與高水平大學(xué)計(jì)算機(jī)人才的培養(yǎng)極不相適應(yīng),面臨著巨大的挑戰(zhàn):傳統(tǒng)的“面板插線”實(shí)驗(yàn)教學(xué)方式受限于動手能力和實(shí)驗(yàn)條件,學(xué)生僅能通過在實(shí)驗(yàn)箱面板上插線連接去驗(yàn)證實(shí)驗(yàn)箱上設(shè)定功能,不能去改動實(shí)驗(yàn)箱硬件電路,并且現(xiàn)有實(shí)驗(yàn)箱上各器件之間連線錯綜復(fù)雜,每次實(shí)驗(yàn)過程都要重復(fù)進(jìn)行大量的連線操作,不僅實(shí)驗(yàn)箱因?yàn)轭l繁插拔容易損壞,而且學(xué)生在實(shí)驗(yàn)過程中花費(fèi)相當(dāng)精力在枯燥乏味的連線、查錯等瑣事上,嚴(yán)重降低學(xué)生的學(xué)習(xí)興趣與學(xué)習(xí)效率,影響實(shí)驗(yàn)教學(xué)效果。
新的數(shù)字邏輯實(shí)驗(yàn)也增加了一些可編程邏輯實(shí)踐,允許學(xué)生運(yùn)用硬件描述語言對可編程邏輯芯片進(jìn)行數(shù)字邏輯實(shí)驗(yàn)和CPU設(shè)計(jì),靈活性比較高,可以實(shí)現(xiàn)工業(yè)級應(yīng)用標(biāo)準(zhǔn)的復(fù)雜CPU架構(gòu)設(shè)計(jì),但這要求學(xué)生必須有較好的電子設(shè)計(jì)自動化(EDA)技術(shù)基礎(chǔ)和硬件描述語言編程能力[1-2]。
傳統(tǒng)的實(shí)踐方式是以實(shí)際元器件為基礎(chǔ),手工操作來搭建實(shí)驗(yàn)電路,這將帶來線路繁雜,實(shí)驗(yàn)成本高,效率低,器件問題影響實(shí)驗(yàn)結(jié)果等弊端[3]。為了解決這些弊端,力圖用簡單、直觀的方法,使枯燥的計(jì)算機(jī)硬件基礎(chǔ)知識變得直觀、形象,讓學(xué)生方便、快捷進(jìn)行邏輯設(shè)計(jì)實(shí)驗(yàn),減輕學(xué)生和老師的負(fù)擔(dān),本項(xiàng)目將采用電子電路仿真軟件Multisim來進(jìn)行實(shí)踐,雖然Multisim里面也有8051等CPU模型,可以非常方便進(jìn)行單片機(jī)和嵌入式系統(tǒng)的模擬仿真,但是本項(xiàng)目不需要用到任何現(xiàn)成的CPU模型,僅通過中小規(guī)模數(shù)字邏輯器件“搭積木”的方法來實(shí)現(xiàn)所有的實(shí)驗(yàn)[4-6]。
Multisim軟件是專門用于電子電路仿真與設(shè)計(jì)的EDA工具軟件。它具有:直觀的圖形界面、豐富的元器件、強(qiáng)大的仿真能力、豐富的測試儀器、完備的分析手段、方便的人機(jī)交互等特點(diǎn)。基于這些特點(diǎn),采用Multisim軟件的仿真設(shè)計(jì)可以很好地克服實(shí)際元器件搭建電路中存在的問題。數(shù)字邏輯課程已經(jīng)開展了EDA技術(shù)教學(xué)和FPGA實(shí)驗(yàn)多年,該課程可以看作是計(jì)算機(jī)組成原理課程的先導(dǎo)課程。傳統(tǒng)實(shí)驗(yàn)教學(xué)有很多成功應(yīng)用經(jīng)驗(yàn),實(shí)驗(yàn)項(xiàng)目移植到PC機(jī)進(jìn)行模擬仿真實(shí)驗(yàn)教學(xué)改革可行[7-9]。
在Multisim虛擬仿真軟件平臺上,繼承傳統(tǒng)面板插線實(shí)驗(yàn)教學(xué)的“低門檻”特點(diǎn),即只要掌握基本的數(shù)字邏輯電路概念,也能在虛擬環(huán)境中運(yùn)用常見的中小規(guī)模邏輯器件“積木式”設(shè)計(jì)和搭建簡單的CPU;在虛擬仿真教學(xué)中也繼承可編程邏輯實(shí)驗(yàn)教學(xué)一樣的高靈活性特點(diǎn),在Multisim虛擬仿真環(huán)境中從簡單到復(fù)雜,有利于降低硬件基礎(chǔ)課的實(shí)驗(yàn)門檻,提高學(xué)生對計(jì)算機(jī)硬件課程的學(xué)習(xí)興趣,增強(qiáng)學(xué)生的創(chuàng)新意識,培養(yǎng)學(xué)生實(shí)踐動手能力[10-13]。
采用硬件描述語言的編程方法,把傳統(tǒng)的數(shù)字邏輯課程驗(yàn)證式實(shí)驗(yàn)教學(xué)轉(zhuǎn)變?yōu)樵O(shè)計(jì)式實(shí)驗(yàn)教學(xué),對門電路與時(shí)序電路實(shí)驗(yàn)進(jìn)行虛擬仿真設(shè)計(jì),讓學(xué)生自主設(shè)計(jì)控制器,搭建一小型計(jì)算機(jī)控制系統(tǒng),深入理解計(jì)算機(jī)邏輯原理[14]。具體構(gòu)建驗(yàn)證性實(shí)驗(yàn),設(shè)計(jì)性實(shí)驗(yàn)和創(chuàng)新性綜合訓(xùn)練3個(gè)層次。熟悉組合邏輯電路和時(shí)序邏輯電路分析與設(shè)計(jì),創(chuàng)新性綜合訓(xùn)練項(xiàng)目在課程設(shè)計(jì)環(huán)節(jié)中進(jìn)行,主要訓(xùn)練學(xué)生的綜合實(shí)驗(yàn)?zāi)芰?,設(shè)計(jì)一全周而復(fù)始的執(zhí)行一系列任務(wù)的控制器[15]。
本項(xiàng)目擬將數(shù)字邏輯課程的實(shí)驗(yàn)教學(xué)體系分成由淺入深、相互關(guān)聯(lián)的3個(gè)層次,設(shè)計(jì)一批實(shí)用性強(qiáng)的EDA實(shí)驗(yàn)項(xiàng)目。
(1) Multisim虛擬仿真軟件使用。打開的Multisim如圖1所示。菜單欄位于主窗口界面上方的第2行,一共給出了12個(gè)主菜單。
圖1 Multisim設(shè)計(jì)主頁
通過這些菜單可以對Multisim所有功能進(jìn)行操作。菜單中的一些功能與大多數(shù)Windows平臺上的應(yīng)用軟件一致,如文件、編輯、視圖、選項(xiàng)、工具、幫助等菜單。此外,還有一些EDA軟件專用的選項(xiàng),如繪制(放置)、MCU、仿真等。Multisim 提供了多種工具欄,并以層次化的模式加以管理,用戶可以通過視圖(View)菜單中的選項(xiàng)方便地將頂層的工具欄打開或關(guān)閉,再通過頂層工具欄中的按鈕來管理和控制下層的工具欄。通過工具欄,用戶可以方便直接地使用軟件的各項(xiàng)功能。
(2) 組合邏輯電路仿真設(shè)計(jì)。邏輯門是組合邏輯電路的基礎(chǔ)器件,具有1個(gè)或多個(gè)輸入端,但只有唯一的輸出。選取組合邏輯最具特色電路進(jìn)行仿真設(shè)計(jì),在解決邏輯問題時(shí)所使用標(biāo)準(zhǔn)譯碼器,常見的有2-4譯碼器(74LS139)、3-8譯碼器(74LS138)等規(guī)格。2-4譯碼器74LS139有2個(gè)輸入端(A、B),輸入編碼(00~11),對應(yīng)可以選擇4個(gè)輸出端(Y0~Y3),其邏輯功能如表1所示。
74LS139譯碼器芯片功能可以用邏輯門搭建等效邏輯電路實(shí)現(xiàn),如圖2所示。譯碼器邏輯屬于“若全部輸入條件都成立,輸出狀態(tài)才成立”,所以采用與非門實(shí)現(xiàn)(輸出端負(fù)邏輯)。
(3) 時(shí)序邏輯電路仿真設(shè)計(jì)。計(jì)數(shù)器的另一種更常見的結(jié)構(gòu)設(shè)計(jì)是同步計(jì)數(shù)器,如圖3所示。所有位的JK觸發(fā)器都由同一時(shí)鐘源CLK驅(qū)動。在同步計(jì)數(shù)器中,每一位JK觸發(fā)器的狀態(tài)翻轉(zhuǎn)由J和K端的當(dāng)前狀態(tài)決定;“當(dāng)所有低位全1時(shí),本位觸發(fā)器的J=K=1”。 4位同步計(jì)數(shù)器[D0,D1,D2,D3]電路中,D1位翻轉(zhuǎn)的條件是D0=1,D2位翻轉(zhuǎn)的條件是D0=D1=1(與門實(shí)現(xiàn)),而D3位翻轉(zhuǎn)的條件則是D2=D1=D0=1(兩個(gè)與門級聯(lián)實(shí)現(xiàn))。
表1 譯碼器74LS139真值表
圖2 譯碼器74LS139及其等效邏輯電路
圖3 同步計(jì)數(shù)器的時(shí)序邏輯電路
(4) 綜合邏輯電路仿真設(shè)計(jì)。多位數(shù)據(jù)比較的方法則是先比較高位,再比較低位。當(dāng)高位不等時(shí),兩個(gè)數(shù)的比較結(jié)果就是高位的比較結(jié)果;當(dāng)高位相等時(shí),兩數(shù)的比較結(jié)果再由低位做比較。本設(shè)計(jì)的8位數(shù)據(jù)比較器電路如圖4所示,采用了2個(gè)4位比較器74LS85串行級聯(lián)的方式來實(shí)現(xiàn),74LS85的真值表如表2所示,當(dāng)高4位比較器U_H4B的所有比較位都相等時(shí)(Ai=Bi,i=0~3),則FAB=IA>B,即低4位74LS85比較器U_L4B比較結(jié)果從比較器U_H4B的級聯(lián)輸入端直通級聯(lián)輸出端。在比較器U_H4B級聯(lián)輸出端外接紅、黃、綠三色LED燈,分別表示A>B、A=B及A
表2 74LS85真值表
圖4 8位數(shù)據(jù)比較電路圖
(5) 控制器與微程序CPU仿真實(shí)現(xiàn)。仿真設(shè)計(jì)一個(gè)最小版本CPU:只有4條指令,唯一的功能是“程序跳轉(zhuǎn)”,如表3所示。
表3 CPU指令列表
“最小版本”CPU如圖5所示。由時(shí)序發(fā)生器CLOCKUNIT、微程序控制器CONTROLLUNIT和數(shù)據(jù)通路DATAPATH組成。時(shí)序發(fā)生器輸出預(yù)定的CPU時(shí)序,通過微程序控制器按時(shí)序產(chǎn)生操作信號,在數(shù)據(jù)通路中完成CPU的程序跳轉(zhuǎn)。
圖5 “最小版本”CPU電路圖(微程序版)
負(fù)責(zé)執(zhí)行上述微程序流程的CPU部件是微程序控制器,其結(jié)構(gòu)由控制存儲器、微指令寄存器、微地址寄存器和地址轉(zhuǎn)移邏輯電路組成。CPU啟動或復(fù)位后,微地址寄存器清零,控制存儲器從地址[00000]開始輸出微指令。微指令結(jié)構(gòu)包括了控制字段、下址字段和判斷字段??刂谱侄渭磮D5中的微命令字段,直接輸出微操作信號執(zhí)行當(dāng)前微指令;下址字段鎖存在微地址寄存器,待當(dāng)前微指令執(zhí)行完后,再從控制存儲器取出下一條微指令。若當(dāng)前微指令是取指微指令,則P字段啟動地址轉(zhuǎn)移,根據(jù)指令寄存器IR中的OP碼修改微地址寄存器,轉(zhuǎn)向指令執(zhí)行周期的第1條微指令。
創(chuàng)新性綜合訓(xùn)練實(shí)驗(yàn)在課程設(shè)計(jì)環(huán)節(jié)中進(jìn)行,主要實(shí)驗(yàn)內(nèi)容是指導(dǎo)學(xué)生采用不同的外設(shè),與設(shè)計(jì)性實(shí)驗(yàn)中自行設(shè)計(jì)的CPU搭建計(jì)算機(jī)最小系統(tǒng),訓(xùn)練學(xué)生綜合實(shí)驗(yàn)設(shè)計(jì)能力,加強(qiáng)學(xué)生創(chuàng)新能力的培養(yǎng)。具體實(shí)驗(yàn)內(nèi)容有:① 微程序版CPU設(shè)計(jì);② 硬布線CPU設(shè)計(jì);③ 流水線版本CPU設(shè)計(jì);④ 嵌套中斷的CPU設(shè)計(jì)。由最具特色嵌套中斷的CPU設(shè)計(jì)為例,仿真實(shí)驗(yàn)的中斷嵌套所需“斷點(diǎn)”堆棧則是由硬布線邏輯搭建的“硬堆?!?,其對CPU指令和軟件程序員來說是完全透明的[16]。
圖6展示了兩種硬堆棧電路:位(bit)堆棧STACK_BIT和字節(jié)(byte)堆棧STACK。位堆棧STACK_BIT由一個(gè)移位寄存器74LS194獨(dú)立構(gòu)成;而字節(jié)堆棧STACK電路則包括由4個(gè)74LS273寄存器STACK_0~3構(gòu)成的4級堆棧、堆棧指針寄存器SP及輸入/輸出電路等組成部分。
圖6 硬布線邏輯的堆棧電路
(1) 解決傳統(tǒng)數(shù)字邏輯課程實(shí)驗(yàn)、實(shí)踐方式是以實(shí)際元器件為基礎(chǔ),手工操作來搭建實(shí)驗(yàn)電路,這將帶來線路繁雜,實(shí)驗(yàn)成本高,效率低,器件問題影響實(shí)驗(yàn)結(jié)果等弊端。
(2) 學(xué)生通過熟練應(yīng)用基于Multisim的仿真設(shè)計(jì),數(shù)字邏輯知識體系,通過中小規(guī)模數(shù)字邏輯器件“搭積木”的方法來實(shí)現(xiàn)所有的實(shí)驗(yàn)。如自主定義的CPU設(shè)計(jì),提高學(xué)生在計(jì)算機(jī)硬件系統(tǒng)方面的認(rèn)識廣度和深度,符合計(jì)算機(jī)學(xué)科“面向理論知識,兼顧動手能力”的教學(xué)目標(biāo)。理論與實(shí)際相結(jié)合,培養(yǎng)具有較強(qiáng)動手能力和創(chuàng)新能力的學(xué)生。
(3) 對傳統(tǒng)數(shù)字邏輯實(shí)驗(yàn)進(jìn)行模擬仿真。
基于Multisim虛擬仿真數(shù)字邏輯實(shí)驗(yàn),可以說是計(jì)算機(jī)數(shù)字邏輯課程的一次革命??梢詫鹘y(tǒng)的計(jì)算機(jī)數(shù)字邏輯實(shí)驗(yàn)箱的設(shè)計(jì)完整地在仿真軟件Multisim上搭建起來。采用仿真軟件Multisim實(shí)驗(yàn)平臺,學(xué)生的實(shí)驗(yàn)及課程設(shè)計(jì)可以在實(shí)驗(yàn)室完成,也可以在寢室教室完成。學(xué)生實(shí)驗(yàn)設(shè)計(jì)可以在上課時(shí)間完成,也可以在課余時(shí)間完成,完全沒有時(shí)間與空間的限制。更加有助于學(xué)生理解實(shí)驗(yàn)原理、消化實(shí)驗(yàn)內(nèi)容。有利于逐歩培養(yǎng)學(xué)生的動手能力,創(chuàng)新思維與綜合運(yùn)用設(shè)計(jì)的能力,避免了學(xué)生在硬件實(shí)驗(yàn)中“走過場”“只知其然而不知其所以然”。使學(xué)生更深層次的了解計(jì)算機(jī)邏輯結(jié)構(gòu)。把硬件原理學(xué)習(xí)與硬件描述語言編程技術(shù)結(jié)合起來,達(dá)到以軟促硬、軟硬結(jié)合的教學(xué)效果。從而為今后的課程,如計(jì)算機(jī)組成原理、編譯原理、操作系統(tǒng)等做了良好的鋪墊。