基于proteus的計數器設計
-
- 計數器原理
- 異步/同步計數器
- 加法/減法計數器
- 任意進制計數器
- 計數器設計示例:電子鐘
- 參考資料
計數器原理
由邏輯門構成的電路稱為 組合邏輯電路 ,其任何時刻輸出端的信号僅取決于該時刻輸入端的信号組合,而與輸入/輸出端原有的狀态無關。相對應的,由觸發器構成的電路稱為時序邏輯電路,其輸出不僅是輸入信号的組合,還是電路目前狀态的函數。
時序邏輯電路中最重要的一種電路類型是計數器,其主要功能是對輸入時鐘脈沖的個數進行計數。假設一個3位的二進制計數器[Q0, Q1, Q2],其計數範圍000~111,在輸入時鐘脈沖CP的驅動下,其狀态是:000、001、010、…110、111。如下圖1所示,把Q0、Q1和Q2端的波形沿着時間軸排列對齊,可以看出計數器各位之間是分頻關系:Q1端是低位Q0端的二分頻,Q2端是低位Q1端的二分頻及Q0端的四分頻。類似地,在n位二進制計數器[Q0…Qn]中,任意Qn端都是相鄰低位Qn-1端的二分頻。是以,一方面計數器可以作為分頻器使用,另一方面計數器的設計亦可以參考下圖1中計數器各位信号的波形。
圖1:3位二進制計數器的輸出波形示意圖

異步/同步計數器
如上圖1所示,計數器的每個位輸出波形都是方波,即“0”、“1”電平交替,電平間隔時間相同。是以,計數器每個位的輸出信号很容易用一個JK觸發器來産生。同時,因為每個位的輸出波形是相鄰低位波形的二分頻,故可用相鄰低位的JK觸發器輸出作為本位JK觸發器的時鐘源,使得相鄰低位信号狀态邊沿跳變(例如下降沿)時刻,本位信号狀态翻轉。因為該類型的計數器中所有位的JK觸發器時鐘源不是同一個時鐘源,是以稱為異步計數器。一個基于JK觸發器的4位異步加法計數器如下圖2所示。
圖2. 異步計數器的時序邏輯電路
計數器的另一種更常見的結構設計是同步計數器,如下圖3所示:所有位的JK觸發器都由同一時鐘源CLK驅動。在同步計數器中,每一位JK觸發器的狀态翻轉由J和K端的目前狀态決定;“當所有低位全1時,本位觸發器的J=K=1”。是以,在下圖3所示的4位同步計數器[D0,D1,D2,D3]中,D1位翻轉的條件是D0=1,D2位翻轉的條件是D0=D1=1(與門實作),而D3位翻轉的條件則是D2=D1=D0=1(兩個與門級聯實作)。
圖3. 同步計數器的時序邏輯電路
加法/減法計數器
上述異步和同步計數器電路皆預設在時鐘信号CLK的驅動下,計數器的輸出是遞增的,即加法計數器。在實際應用中,亦有可能需要計數器的輸出是遞減的,即減法計數器。
減法計數器最簡單的構造方法是把加法計數器的輸出反向,即加法計數器遞增操作“+1=-(-1)”,加法計數器正向輸出端[D0,D1,D2,D3]遞增,對于其反向輸出端[#D0, #D1, #D2, #D3]則是遞減。是以,如下圖4所示的同步減法計數器電路與上圖3所示的同步加法計數器電路完全相同,唯有輸出端是JK觸發器的反向輸出端#Q,而同步加法計數器輸出端是JK觸發器的正向輸出端Q)。
圖4. 同步減法計數器的時序邏輯電路
任意進制計數器
在內建電路中,除了二進制計數器以外,還有其它進制計數器需求,例如統計顯示常用的10進制、時鐘顯示的60進制、24進制等等。10進制計數器有專用的內建電路器件74LS160,除了表數範圍0000 ~ 0001與二進制計數器74LS163的表數範圍0000 ~ 1111不同以外,74LS160的邏輯功能與74LS163完全相同,如下表1所示。
表1. 同步計數器74LS163/74LS160真值表
而其它任意n進制的計數器均可以基于74LS163增加清零電路構造,例如下圖5所示:BUS總線右邊是十進制計數器74LS160電路,而BUS總線左邊則是基于二進制計數器74LS163的電路。BUS總線兩邊電路實作的功能完全等效:當74LS163的計數值到“1001”後,通過清零電路(與非門)置位清零端MR,CLK端的下一個上升沿跳變則令74LS163輸出強制為0。是以,74LS163的表數範圍限定于0000~1001(即10進制)。
圖5 計數器74LS160及74LS163電路
計數器設計示例:電子鐘
下圖6所示是一個經典的計數器設計示例:“時-分-秒”計時顯示的電子鐘。圖中從左到右分别是電子鐘的時鐘、分鐘和秒鐘的計時單元,每個單元包括:2個10進制同步加法計數器74LS160分别計數十位和個位,對應的兩個數位管顯示十位和個位資訊,而8位撥碼開關用來給2個計數器置位。此外,秒鐘電路上方是複位RESET電路,其操作方法如下:
1)若置位端#LOAD=0,電子鐘處于加載模式:電子鐘停止運作,便于重置計時初始值。此時,若手動按鈕令信号#RESET 上升沿跳變,則撥碼開關DSW1/DSW2/DSW3設定的計時初始值将加載到電子鐘的時鐘/分鐘/秒鐘單元,并且在數位管顯示。啟動仿真前,電子鐘必須處于該模式,便于啟動仿真後,先重置“時/分/秒”資料,再開始計時。
2)若置位端#LOAD=1,電子鐘處于計數模式,開始倒計時。在該模式下,不允許手動按鈕令信号#RESET變化,否則會出錯。
圖6 .電子鐘電路圖
下圖7所示是電子鐘的時鐘和秒鐘計時單元電路(分鐘電路與秒鐘電路基本相同,省略不述),都是由兩個10進制同步加法計數器74LS160級聯組成的計數器。不同的是,圖7(左)所示的時鐘計時單元是24進制計數器電路,而圖7(右)所示的秒鐘/分鐘計時單元則是60進制計數器電路。
當置位端#LOAD=0, 電子鐘進入加載模式(初始化或重置):基準脈沖AUTO-CLK和所有的進位輸出端RCO_x都被#LOAD信号屏蔽為“1”(即所有計數器停止計時),而所有計數單元的CLK輸入端直接連到複位端#RESET。若在複位電路中手動按鈕令使#RESET信号上跳沿跳變,将使時鐘/分鐘/秒鐘計時單元的計數器輸入端D0D1D2D3(連接配接8位撥碼開關)同步置數到輸出端Q0Q1Q2Q3,即計數器加載計時初始值成功。
當置位端#LOAD=1,電子鐘進入計數模式:當低位計數器74LS163輸出端Q3Q2Q1Q0全“1”時,進位輸出端RCO=1送到高位計數器74LS163的ENT和ENP端,使得高位計數器74LS163在下一次的CLK上升沿自加1一次(同時RCO=0,是以僅一次自加1)。
圖7. 電子鐘的時鐘和秒鐘計時單元電路圖
參考資料
本文的内容節選自作者編撰的教材專著《基于Proteus的計算機系統實驗教程——邏輯、組成原理、體系結構、微機接口》(機械工業出版社),更詳細的内容可以直接在書中查閱。
讀者如有興趣,可以在 當當網圖書, 京東圖書,亞馬遜上搜尋作者姓名賴曉铮即可找到這本著作。
本書較長的描述了在proteus虛拟仿真環境中,從邏輯電路開始,一步一步構造運算器、存儲器、控制器,最終用三種CPU體系架構(微程式、硬布線、流水線)實作了一個8位的CPU。并且,這個CPU不僅可以做邏輯、算術運算,擁有循環、分支、堆棧等程式結構,還可以完整實作對8086所有外設的控制,即替代8086完整實作了傳統《微機原理》裡講到的所有外設實驗。
本書的全部proteus工程檔案,PPT,實驗視訊以及配套的兩種形式課程設計(純彙編、硬體改動)的資料都放在 百度網盤,提取密碼:34ad
廣州風标為本書配套了實驗箱(如下圖所示),可以讓學生在電腦的proteus虛拟仿真環境中設計CPU或選擇已有的8086、8051、ARM等CPU模型,然後通過虛拟總線映射到實驗箱的實體總線,控制實驗箱面闆上的真實外設。有興趣的讀者可以自行聯系 廣州風标教育技術股份有限公司。