1. 程式人生 > >數字邏輯課程設計拔河遊戲機

數字邏輯課程設計拔河遊戲機

 

《數字邏輯》

課 程 設 計 報 告

 

 

 

題目:             拔河遊戲機                   

 

 

 

 

 

專業:        電腦科學與技術         

班級:        14計科2班                     

組長:  張欽穎(1414080901218) 

成員:                    無                              

成員:                         無                            

 

惠州學院計算機科學系

二○一五 年 一 月 八 日


1 設計任務書

設計題目:拔河遊戲機

拔河遊戲機用7個發光二極體排列成一行,開機後只有中間一個發亮,以此作為拔河的中心線,遊戲雙方各持一個按鍵,迅速地、不斷地按動產生脈衝,誰按得快,亮點向誰方向移動,每按一次,亮點移動一次。任一方終端二極體發亮時這一方獲勝,此時雙方按鍵被鎖住,只有經復位後才使亮點恢復到中心線。

2 總體方案設計

2.1 功能和邏輯需求分析

(1)本課程設計的拔河遊戲機由7個電平指示燈排列成一行,開機之後只有中間一個電平指示燈亮,以此作為拔河的中心線,遊戲雙方各持一個按鍵,迅速地、不斷地按動產生脈衝,誰按得快,亮點向誰移動,每按一次,亮點移動一次。移到任一方終端指示燈點亮,這一方就獲勝,此時雙方按鍵均無效,輸出保持,只有經裁判置位後才使亮點恢復到中心線。

(2)當一局比賽結束後,由點亮該終點燈的訊號使電路封鎖加減脈衝訊號的作用。即實現電路自鎖,使加減脈衝無效。同時,使電路自動加分。

(3)控制電路部分應能控制計數器的計數,可以使計數器停止計數。(其進入方向則由參賽雙方的按鍵訊號決定)

2.2 總體方案設計


2.2.1  模五計數器:

分設兩個計數器比較選手快慢,對選手輸入的手動脈衝進行計數,用預置法設初始值為0101,即5,使十進位制計數器改成五進位制計數器,先輸入五個脈衝訊號的將傳一個進位訊號到可逆計數器。

2.2.2  可逆計數器:

若甲選手對應可逆計數器的加法,乙選手對應可逆計數器的減法,若甲的速度比乙快(即甲所用計數器先輸出進位訊號),則控制可逆計數器進行加法,反之,則進行減法.

2.2.3  譯碼器:

譯碼器有三個輸入和7個輸出。每個輸入都有和它唯一對應的輸出。例如輸入為001時對應l1這個燈亮,輸入為111時對應l7這個燈亮。

2.2.4  異或門:

由於TDS-4實驗箱只有兩個手動脈衝,考慮到兩個人比賽,那麼這兩個手動脈衝必然是要接入到計數器中,而比分顯示器和可逆計數器都是需要脈衝觸發的,而我們用異或門提供一個脈衝給可逆計數器,使得它們可正常計數。

3單元模組設計

3.1  十進位制計數器(2個)

         

整形電路由兩個模為5帶進位訊號的計數器組成。按鍵AB為別作為兩個計數器的時鐘脈衝,這樣來實現AB按鍵哪個按得快,它所對應的計數器就會先產生一個進位訊號,在把這個進位訊號作為7模計數器的加減訊號。這樣可以減小AB按鍵直接作為計數器的加減訊號對計數器正常計數的影響。

3.2  可逆計數器


簡要原理說明:使用GAL16V8實現,接受來自兩個模五計數器的進位訊號,以及一個人工脈衝,輸出4位二進位制碼,此外,設有一個復位開關及使能開關。

實現程式碼:

MODULECOUTER
TITLE'COUTER'
 
DECLARATIONS
CLK,EN,CO1,CO2,MPIN 1,11,2,3,4;
Q0..Q3PIN 12..15 ISTYPE 'REG';
Q=[Q3..Q0];
EQUATIONS
Q.CLK=CLK;
Q.OE=!EN;
WHEN(M==1)
THENQ:=3;
ELSEWHEN(M==0)&(CO1==1)
THENQ:=Q-1;
ELSEWHEN(M==0)&(CO2==1)
THENQ:=Q+1;
ELSEQ:=Q;
 
END

3.3  譯碼器


簡單原理說明:使用GAL16V8製作,接受可逆計數器的輸出的4位二進位制碼作為輸入,以下面真值表進行譯碼,輸出直接連線7個二極體。另有一個輸出控制兩個模五計數器的使能端,當滿足某一方勝利條件時輸出0,使兩個模五計數器不能工作。


 

實現程式碼:

MODULE YIMA
 
TITLE 'YIMA'
DECLARATIONS
A0..A3 PIN 2..5;
RES PIN 6;
L6,L5,L4,L3,L2,L1,L0 PIN 13..19;
E PIN 12;
A=[A3..A0];
L=[L6..L0];
EQUATIONS
WHEN(RES==1)
THEN{L=8;E=1;}
ELSE WHEN(RES==0)
THEN{
WHEN(A==0)
THEN{L=64;E=0;}
ELSE WHEN(A==1)
THEN{L=32;E=1;}
ELSE WHEN(A==2)
THEN{L=16;E=1;}
ELSE WHEN(A==3)
THEN{L=8;E=1;}
ELSE WHEN(A==4)
THEN{L=4;E=1;}
ELSE WHEN(A==5)
THEN{L=2;E=1;}
ELSE WHEN(A==6)
THEN{L=1;E=0;}
}
 
END

 

3.4  異或門

 

簡單原理說明:用來產生脈衝訊號給可逆計數器以及比分顯示器,另外產生模五計數器的預置訊號。

3.5 總體電路設計


4電路除錯與測試

4.1模五計數器單元模組

將74LS162計數器的輸出接二極體,脈衝接手動脈衝,並用預置法將計數器改為模五計數器,按動脈衝測試是否可以實現模五計數器並輸出進位訊號。

測試結果如下:

脈衝次數

DCBA現態

DCBA次態

進位輸出

1

0101

0110

0

2

0110

0111

0

3

0111

1000

0

4

1000

1001

0

5

1001

0101

1

DCBA為計數器輸出的4位2進位制數

由真值表可知,與理想要求一樣。

4.2  可逆計數器單元模組

將RES、X、Y、EN接開關,並接一個手動脈衝,Q3、Q2、Q1、Q0接輸出,分別按動RES、X、Y和脈衝,測試當復位開關無效時,X=1,是否可以實現加法,X=0,是否可以實現減法,再測試當復位開關有效時,是否可以實現輸出為0011。

當X=1時,可逆計數器實現加法

脈衝

RES

X

Y

使能端EN

Q3Q2Q1Q0

 1

1

×

×

0

0011

2

0

1

0

0

0100

3

0

1

0

0

0101

4

0

1

0

0

0110

當Y=1時,可逆計數器實現減法

脈衝

RES

X

Y

使能端EN

Q3Q2Q1Q0

1

1

×

×

0

0011

2

0

0

1

0

0010

3

0

0

1

0

0001

4

0

0

1

0

0000

RES:復位開關

X:模五計數器輸出的進位訊號

Y:模五計數器輸出的進位訊號

Q3Q2Q1Q0:輸出的4位2進位制數

由真值表可知,與理想要求一樣。

4.3  譯碼器單元模組

把燒製的晶片接入實驗箱。

步驟1:把輸入端a2、a1、a0接入001到111之間所有的可能,發現輸出端y7為1時,輸入為111;y6=1時,輸入為110;y5=1時,輸入為101;y4=1時,輸入為100;y3=1 時,輸入為011;y2=1時,輸入為010;y1=1時,輸入為001。而且y7到y1只有一個燈亮,不存在兩個或者兩個燈同時亮的情況。

步驟2:重複步驟1,進行多次測試,發現該晶片符合實驗要求。

 

開關

輸入

Q

L6

L5

L4

L3

L2

L1

L0

1

×

1

0

0

0

1

0

0

0

0

0000

0

1

0

0

0

0

0

0

0

0001

1

0

1

0

0

0

0

0

0

0010

1

0

0

1

0

0

0

0

0

0011

1

0

0

0

1

0

0

0

0

0100

1

0

0

0

0

1

0

0

0

0101

1

0

0

0

0

0

1

0

0

0110

0

0

0

0

0

0

0

1

 

4.4  異或門

X:甲使用的計數器的進位訊號

Y:乙使用的計數器的進位訊號

RES:復位開關

Q0:傳給計數器預置端的值,當復位開關有效時,將兩個計數器均進行預置,當復位開關無效時,若兩個計數器中有一個輸出了進位訊號,表示燈將往其方向跳一格,這 時,將兩個計數器進行預置,以示公平。

Q1:傳給可逆計數器的值,為可逆計數器提供脈衝,當沒有進位訊號且開關無效時,輸出0,當有進位訊號或者開關有效時,輸出1,輸出值由0變為1相當於為可逆計數器提 供了一個脈衝,使可逆計數器可以正常使用。

輸入

輸出

X

Y

RES

Q

0

0

1

1

0

1

1

1

1

0

1

1

0

0

0

0

0

1

0

1

1

0

0

1

5總結

   經歷這次實驗,雖然只用到計數器和譯碼器這兩個基本的功能,但是在實際的實驗中,通過自己寫程式碼燒製出來的晶片有時不會實現我們預想的功能。對於怎麼解決AB按鍵的訊號會影響7模計數器的計數,為此我們耗費了很多時間,最後才找到合理的、可行的、貼合實際的解決方法。對於這樣一個簡單的實驗,對於第一次做的我們來說卻是困難重重,由於經驗的不足,對於很多簡單的問題都想不出解決方法,需要花大量的時間。由於實驗過程所需的線路比較多,所以需要很大的耐心,也需要我們每個組員細心接線,既不能接重複又不能接漏哪怕一根線。不過經過耐心的接線和檢驗之後,我們的實驗倒是挺成功的,預期的實驗結果都達到了,不過可惜的是在反覆的除錯過程中燒壞了一個晶片,起初我們還不知道怎麼回事好端端的輸出結果就錯了,後來把線全拆了,又測試每個晶片才知道用GAL編寫的可逆計數器壞了才導致整個電路出錯。因此我們明白了一個道理,即使是最簡單的事情,如果沒有經驗也是很難完成。另一方面,即使是理論上可以得出的結果,在實踐過程中卻出現錯誤,所以必須經過實踐的考驗才能證明我們所做的實驗是成功的。

 

附錄

晶片:GAL16V8D*2、74LS86、74ls162*2

《數字 邏 輯》課 程 實 驗 芯 片 匯 集

GAL16V8D 的外引線排列圖、設計方法

同步十進位制計數器74LS162的外外引線排列圖、邏輯電路圖、功能表

數字邏輯(第六版.立體化教材)北京科學出版社  2013年3月

《數字邏輯》實驗指導書2013

惠州學院計算機科學系硬體教研室數字系統設計實驗室 2015年1月


 

脈衝

RES

X

Y

使能端EN

Q3Q2Q1Q0

1

1

×

×

0

0011

2

0

1

0

0

0100

3

0

1

0

0

0101

4

0

1

0

0

0110