文章編號:1672-5913(2008)08-0038-02
摘要:本文通過實例對大學計算機硬件類課程中缺乏“低端”實驗這一問題進行了深入的探討。
關鍵詞:計算機硬件類課程;低端實驗;實驗;接口概念
中圖分類號:G642
文獻標識碼:B
1計算機硬件類課程的不足
計算機硬件類課程主要包括“電子電路”、“計算機組成原理”、“微機原理與接口技術”、“單片機”、“計算機控制技術”等多門課程,這些課程不光是計算機專業的專業課,也是電子、機械、自動化及其他相關工科類專業的必修課程,這些課程都具有工程實踐性強,應用技術含量高,課程內容枯燥難學的特點。因此,各學校在開設此類課程時,都把實驗課作為重要的教學手段,有些學校甚至將實驗課時比例提升到全部課時的50~60%以上。
經過我們多年對實驗內容的研究并結合自身的教學體驗發現,這些實驗大都是一些在實驗箱內直接使用芯片進行的實驗,都是直接以芯片為研究對象或為主體,內容多是驗證現成芯片功能和引腳特性或使用芯片進行硬件設計開發的實驗。這種實驗是在基本知識已經掌握,芯片內部工作原理已經精通的前提下進行的更高一層次的實驗,在此我們謂之“高端”實驗。很少有直接輔助基本教學,幫助理解基礎知識的“低端”實驗,這樣的實驗用來輔助說明某些知識點或特定概念,一般設計起來電路簡單,功能也比較單一,層次較低,甚至用不上實驗箱,所以在許多學校看來難登“大雅之堂”,因而對此忽視不見,眾多實驗教材在這方面也是一片空白。但我認為這是一個“誤區”,因為任何課程都是由“低端”知識逐步過渡至“高端”的。那么,怎樣創制設計“低端”實驗?它們對于課程教學有哪些重要意義呢?
我們知道,計算機硬件類課程大都具有濃重的工程背景,具備豐富的可選實例,所以“低端”實驗的創設并不缺乏素材。另外,還要注意實驗內容的設計如何與課程知識有機銜接,在實際教學中如何巧妙引入。實際上,“低端”實驗其意義并不“低端”,實驗雖小卻對重點、難點的理解掌握有著不容小視的“四兩撥千斤”之功效。
2“低端”實驗實例
下面介紹一個較典型的實例,權當拋磚引玉,希望對廣大同行具有一定的啟發意義。就以“微機接口技術”課程中令眾多教師頗感頭疼的“接口”概念的講解為例。這一概念不僅抽象,而且所涉知識比較繁雜晦澀,學生學習效果很不理想。分析定義可以看出,接口就是位于微機與外設之間的硬件電路,作用就是讓微機與外設間能進行信號交換,從而順利完成檢測與控制任務。但是光這樣說有點蒼白無力,學生還是不明就里。于是我們通過引入“低端”實驗來輔助教學,具體說明接口到底是什么,為什么要用接口,它的主要功能有哪些,由此體會“低端”實驗的優越之處。
我們先來設計一個電路(如圖1所示),目的是通過計算機來檢測開關K的狀態(打開還是閉合)。相對于計算機系統,開關K就是一個外設。K打開時,A點為高電平1;K閉合時,A點為低電平0。這個0或者1可以通過數據總線最低位DB0被讀入到CPU中,從而實現微機對外設狀態的檢測。但是如果像圖1那樣,把開關K和計算機系統中的DB0直接相連行不行呢?
圖1 輸入外設數據線直接接至數據總線
我們知道,在計算機系統中,數據總線還連接著CPU和存儲器,并且在程序執行過程中,CPU與存儲器之間要頻繁地交換數據,因此數據總線上傳輸的數據是在不斷變化的。如果此時又將其與外設直接相連(這里是將DB0直接連入A點),那么數據總線上外設數據和存儲器數據就會因走同一線路而相互干擾。比如此時開關K閉合,A點為0,這個0會通過DB0傳入CPU,若此時恰逢存儲器通過DB0送來一個數據1,這樣不但發生相互干擾,還會由于高低電平直接相連而引起電路損壞。
為解決這一問題,我們可以在A點與數據總線DB0間加一個帶低電平選通端的緩沖器,緩沖器的選通端接一個帶3個輸入端的與門,其接線如圖2所示。
圖2 輸入外設數據線經緩沖器接至數據總線
我們知道,只有當與門的3個輸入端同時為0時,與門的輸出端才為0,才會將緩沖器選通,緩沖器輸入端的數據才能夠到達緩沖器的輸出端。要實現這一過程,我們可以執行如下指令:
MOV DX,開關地址;傳送外設地址,地址譯碼端有效
IN AL,DX;執行I/O讀操作,M/ 、 有效
這樣,CPU的輸出引腳(即與門的輸入信號)M/ 、 及地址譯碼信號同時為0,使得與門輸出為0,緩沖器被選通,開關K的狀態才會被讀入到CPU中。同時,為低電平的M/ 信號還會使CPU與存儲器暫時隔開,從而避免了存儲器數據的干擾;若CPU要與存儲器進行數據交換,則M/ 變成高電平,使與門輸出為1,緩沖器截止斷開,又避免了外設數據的干擾。由此可以看出,經過這些電路添加之后,前面的問題順利解決。實際上,這些后添加的電路就是該系統的接口電路,此處接口電路表現出來的功能是輸入緩沖。
相類地,我們再設計第二個電路(如圖3所示)。功能是讓計算機控制發光二極管發光。此處二極管一端已固定接入5V高電平,另一端通過數據總線最低位DB0連至計算機系統。當CPU通過DB0輸出為0時,發光二極管兩端產生電位差,從而導通發光;如果CPU通過DB0輸出為1,則發光二極管電路兩端電位相同(都是高電平),發光二極管截止熄滅。我們以這種方式,實現微機對外設(此處為發光二極管)的控制功能。但是像圖3那樣,讓發光二極管的B點與計算機系統中的DB0直接相連行不行呢?
圖3 數據總線直接接至輸出外設數據線
根據前面所述可知,數據總線上傳輸的數據是在不斷變化的,不可能只保持為固定的0或1。雖然這個時刻為使發光二極管發光,可以通過執行輸出數據指令從DB0向B點輸出數據0,但在下個時刻存儲器上過來的數據又會將其覆蓋,如果后來的這個數據是1,就會使發光二極管熄滅掉。
怎樣讓發光二極管的狀態得以保持呢?為解決這一問題,我們仍然需要添加電路,可在數據總線的DB0與發光二極管的B點間加一個由低電平觸發的鎖存器,鎖存器觸發端接一個帶3個輸入端的與門,電路如圖4所示。
圖4 數據總線經鎖存器接至輸出外設數據線
從該電路中可以看出,只有當與門的3個輸入端同時為0時,與門的輸出端才為0,才能給鎖存器的觸發端CLK加一個觸發信號,鎖存器的輸出端Q才等于鎖存器輸入端D即DB0上的狀態。當與門的輸入端有一個為1時,與門輸出就為1,由于鎖存器為低電平觸發,所以這個1不能觸發鎖存器,鎖存器輸出端Q(即B點的電平)就保持原態不變,從而使發光二極管的狀態保持下來。這一過程我們可通過執行如下指令來實現:
MOV AL,0(或1);0使發光二極管亮,1使該二極管滅
MOV DX,發光二極管地址 ;傳送外設地址,地址譯碼端有效
OUT DX,AL;執行I/O寫操作,M/ 、 有效
這樣,與門輸入端M/ 、 及地址譯碼信號同時為0,使得與門輸出為0,鎖存器被打開,此時從寄存器AL中沿著DB0送出的0或1能夠到達鎖存器的輸出端直至B點,致使發光二極管發光或熄滅。當CPU執行其他指令或者與存儲器交換數據時,與門的三個輸入端就不會同時為0,這樣與門輸出為1,鎖存器的輸出端Q(即B點的電平)就保持不變,發光二極管的狀態便得以保持。
在這個例子中,我們后添加上去的那些電路也是接口電路,在此表現出來的功能是輸出鎖存。
3結束語
通過對上述實例的分析可以看出,我們在用“低端”實驗解決實際問題的過程中已經不自覺地設計出了相應的接口電路,所需器材不多,所起的作用卻不小。這兩個接口電路一個用于完成系統檢測,一個用于完成系統控制,正符合接口定義的外延。這樣一來,學生既看見了實實在在的接口電路,又體會到了接口實實在在的“輸入緩沖,輸出鎖存”的基本功能。有了這兩個“著陸點”的幫助,“接口”這一概念還有什么不能讓人理解的呢?這樣的難點一個個地被靈巧的實驗化為無形,整個微機接口課程還有什么難度可言呢?鑒于硬件類課程工程實踐性強的普遍共性,“低端”實驗這一利器不正好因勢而生,大有可為嗎?
參考文獻
[1] 李芷. 微機原理與接口技術[M]. 北京:電子工業出版社,2007:188-192.
[2] 孫琦. 微機接口技術[M]. 北京:中央廣播電視大學出版社,2000:4-8.
“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”