董圣英
(德州職業(yè)技術(shù)學(xué)院,山東 德州 253034)
數(shù)字電路的設(shè)計(jì),尤其是電路的調(diào)試是一件十分繁瑣的工作,通常的做法是在電路設(shè)計(jì)完成后,用面板搭接電路,或是將元件焊接到預(yù)先設(shè)計(jì)好的印刷電路板上進(jìn)行測試、修改、完善.這樣既費(fèi)時(shí)又費(fèi)力,還需要花費(fèi)資金去添置各種工具和儀器.MATLAM沒有提供用于數(shù)字電路仿真的專用工具箱,但是若能巧妙地使用MATLAB/SIMULINK仿真工具進(jìn)行數(shù)字電路的設(shè)計(jì)、調(diào)試、仿真,就可避免上述不必要的麻煩[1].
Simulink是掛接在Matlab環(huán)境上,以 Matlab的強(qiáng)大計(jì)算功能為基礎(chǔ),以直觀的模塊框圖進(jìn)行仿真和計(jì)算的仿真工具[2-3].Simulink模型采用框圖繪制來代替程序的編寫,使系統(tǒng)程序的編寫具有可視化的功能,同時(shí)可借助示波器等虛擬設(shè)備直觀顯示仿真結(jié)果.Simulink已成為廣泛使用的動(dòng)態(tài)系統(tǒng)建模、仿真和分析的軟件包之一.
筆者利用MATLAB/SIMULINK仿真模塊,創(chuàng)建譯碼器、計(jì)數(shù)器數(shù)字電路的仿真模型,通過仿真判定電路設(shè)計(jì)的正確性.
譯碼器是數(shù)字電路中應(yīng)用非常廣泛的多輸入多輸出組合邏輯電路.譯碼就是對輸入信號(hào)進(jìn)行“翻譯”,識(shí)別出其含義并產(chǎn)生相應(yīng)的輸出信號(hào),完成譯碼功能的邏輯電路稱為譯碼器[4].
3線-8線譯碼器有3個(gè)譯碼輸入端A、B、C,1個(gè)使能控制端G,8個(gè)譯碼輸出端.其真值表見表1.
表1 3線-8線譯碼器的真值表
表中的“×”表示任意值(0或1).根據(jù)真值表,可以寫出3線-8線譯碼器的輸入輸出邏輯關(guān)系式:
根據(jù)邏輯表達(dá)式,選用MAT LAB/SIMULINK中的 logical operator模塊、pulse generator模塊、scope模塊,并設(shè)置各模塊的參數(shù),最后用信號(hào)線將各模塊連接起來,即建立了譯碼器的Simulink仿真模型,如圖1所示.
圖1 3-8線譯碼器的仿真模型
模型中用了4各脈沖源,分別命名為G、A、B、C.其中脈沖源G表示譯碼器的使能控制輸入端,高電平時(shí)允許譯碼輸出,低電平時(shí)使電路輸出無效狀態(tài).G脈沖源參數(shù)設(shè)置如下:周期12s,脈寬11s,相位延時(shí)0s.脈沖源A、B、C的輸出代表需要譯碼的3位二進(jìn)制數(shù),為了在譯碼輸入端得到000-111的脈沖序列,A、B、C三個(gè)脈沖源參數(shù)設(shè)置如下,A脈沖源:周期 2s、脈寬 1s、相位延時(shí) 1s;B脈沖源:周期4s、脈寬 2s、相位延時(shí) 2s;C脈沖源:周期 8s、脈寬4s、相位延時(shí)4s.這樣設(shè)置后,A、B、C三個(gè)脈沖源的輸出信號(hào)就構(gòu)成了三位二進(jìn)制數(shù),以8為周期從000變化到111(即第一秒為000,第八秒為111),然后第九秒又為000,如此循環(huán).模型中用了兩個(gè)示波器,其中scope1用來觀測使能控制信號(hào)和三位譯碼輸入信號(hào),輸入端數(shù)目設(shè)為4.scope1用于觀測8路譯碼輸出信號(hào),輸入端數(shù)目設(shè)為8.
設(shè)置仿真參數(shù).仿真時(shí)間0~16s,使用可變步長算法old45,仿真結(jié)果如圖2、圖3所示.
圖2 譯碼器輸入波形
圖3 譯碼器輸出波形
從仿真波形可以看到,輸入的三位二進(jìn)制代碼分別被翻譯成8種不同的輸出,即Y0到Y(jié)7依次為低電平,同時(shí)注意到在11-12s之間,8個(gè)輸出都變成了高電平,反映了控制端G的作用,說明電路設(shè)計(jì)正確.若仿真波形不正確,只需進(jìn)一步分析電路邏輯關(guān)系,修改仿真模型再調(diào)試即可,直到設(shè)計(jì)正確為止,所以運(yùn)用Matlab進(jìn)行數(shù)字電路設(shè)計(jì)、調(diào)試是十分方便的.
在數(shù)字系統(tǒng)中計(jì)數(shù)器是使用最多的一種電路.它不僅能夠?qū)r(shí)鐘脈沖進(jìn)行計(jì)數(shù),還可以用以分頻、定時(shí)以及進(jìn)行數(shù)字運(yùn)算等,同步十進(jìn)制計(jì)數(shù)器也稱為BCD碼計(jì)數(shù)器[4].
計(jì)數(shù)器電路可有各種觸發(fā)器電路構(gòu)成.由于十進(jìn)制計(jì)數(shù)器有十個(gè)狀態(tài),故觸發(fā)器的位數(shù)應(yīng)為4.若計(jì)數(shù)器用T觸發(fā)器構(gòu)成,根據(jù)計(jì)數(shù)器功能可得出同步十進(jìn)制計(jì)數(shù)器的激勵(lì)表,見表2.
表2 十進(jìn)制計(jì)數(shù)器激勵(lì)表
表中的“×”表示輸出為無效狀態(tài).根據(jù)激勵(lì)表2,利用卡諾圖進(jìn)行化簡,可寫出簡化后 T觸發(fā)器的驅(qū)動(dòng)方程[5]:
圖4 計(jì)數(shù)器仿真模型
根據(jù)邏輯表達(dá)式,選用MATLAB/SIMULINK中的logical operator模塊、constant模塊、clock模塊、scope模塊,Matlab/Extras中的J-K觸發(fā)器模塊,將J-K觸發(fā)器接成T觸發(fā)器,然后用信號(hào)線將各模塊連接起來,即建立了計(jì)數(shù)器的仿真模型,如圖4所示.
設(shè)定仿真參數(shù),仿真時(shí)間0~12s,使用可變步長算法old45,仿真結(jié)果如圖5所示.
從仿真波形可以看到,計(jì)數(shù)器在計(jì)數(shù)時(shí)鐘CP的控制下,從0000一步步變化到1001,實(shí)現(xiàn)了十進(jìn)制計(jì)數(shù)功能,說明電路設(shè)計(jì)正確.同樣,即使仿真波形不正確,也可方便地通過修改仿真模型再進(jìn)一步調(diào)試即可,直到正確為止.
本文利用MATLAB/SIMULINK仿真工具,創(chuàng)建了譯碼器、計(jì)數(shù)器電路的仿真模型,并給出了仿真結(jié)果.仿真結(jié)果表明,利用Matlab進(jìn)行數(shù)字電路的設(shè)計(jì)、調(diào)試,結(jié)果直觀、省時(shí)省力.它不僅能用來仿真譯碼器、計(jì)數(shù)器電路,而且能廣泛地應(yīng)用于其它數(shù)字電路的仿真,是數(shù)字電路設(shè)計(jì)、調(diào)試的有效工具.
圖5 計(jì)數(shù)器仿真輸出波形
[1]張葛祥,李娜.Matlab仿真技術(shù)與應(yīng)用[M].北京:清華大學(xué)出版社.2003.
[2]皇甫海燕.Matlab在數(shù)字電路教學(xué)中的應(yīng)用[J].烏魯木齊:新疆師范大學(xué)學(xué)報(bào),2005,24(3):71-73
[3]熊建平.Matlab在數(shù)字電路中的應(yīng)用[J].南昌:計(jì)算機(jī)與現(xiàn)代化,2007(6):101-102
[4]鮑可進(jìn),趙念強(qiáng).數(shù)字邏輯電路設(shè)計(jì)[M].北京:清華大學(xué)出版社,2004.
[5]蔣立平.數(shù)字邏輯電路與系統(tǒng)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2008.
山東理工大學(xué)學(xué)報(bào)(自然科學(xué)版)2010年3期