計(jì)數(shù)器是一種能夠記錄脈沖數(shù)目的裝置,是數(shù)字電路中最常用的邏輯部件。計(jì)數(shù)器在數(shù)字系統(tǒng)中主要是對脈沖的個(gè)數(shù)進(jìn)行計(jì)數(shù),以實(shí)現(xiàn)測量、計(jì)數(shù)和控制的功能,同時(shí)兼有分頻功能。計(jì)數(shù)器由基本的計(jì)數(shù)單元和一些控制門所組成,計(jì)數(shù)單元?jiǎng)t由一系列具有存儲信息功能的各類觸發(fā)器構(gòu)成。計(jì)數(shù)器在數(shù)字系統(tǒng)中應(yīng)用廣泛,如在電子計(jì)算機(jī)的控制器中對指令地址進(jìn)行計(jì)數(shù)。本文為大家?guī)砹N10進(jìn)制計(jì)數(shù)器設(shè)計(jì)方案。
10進(jìn)制計(jì)數(shù)器設(shè)計(jì)方案一:JK觸發(fā)器實(shí)現(xiàn)的同步十進(jìn)制加法計(jì)數(shù)器

同步十進(jìn)制加法計(jì)數(shù)器邏輯圖
在上圖所示的同步十進(jìn)制加法計(jì)數(shù)器中:

將這些關(guān)系代入各JK觸發(fā)器的特性方程,則得計(jì)數(shù)器的狀態(tài)方程為:

設(shè)計(jì)數(shù)器初始狀態(tài)為0000,第1個(gè)計(jì)數(shù)脈沖來到后,

即計(jì)數(shù)器的狀態(tài)為0001??梢运愕茫?個(gè)計(jì)數(shù)脈沖來到后,其狀態(tài)為0010。以下類推,可以得到如表Z1503所示的狀態(tài)表。但需注意,在第9個(gè)脈沖來到后,亦即計(jì)數(shù)器處于1001態(tài)時(shí),
的低電平封住了F2的置1端,Q1的高電平又使K4=1,故第十個(gè)計(jì)數(shù)脈沖來到后,F(xiàn)2、F3狀態(tài)不變,F(xiàn)1、F4同時(shí)置0,計(jì)數(shù)器跳過多余的6個(gè)狀態(tài),完成一次十進(jìn)制計(jì)數(shù)循環(huán)。結(jié)合計(jì)數(shù)脈沖的觸發(fā)方式,可以斷定該計(jì)數(shù)器是同步十進(jìn)制加法計(jì)數(shù)器。

同步十進(jìn)制加法計(jì)數(shù)器狀態(tài)表
10進(jìn)制計(jì)數(shù)器設(shè)計(jì)方案二:CD54HC160異步復(fù)位的BCD同步十進(jìn)制計(jì)數(shù)器
CD54HC160是具有異步復(fù)位的BCD同步十進(jìn)制計(jì)數(shù)器。其引腳圖如圖2-30所示。其中,CLR為計(jì)數(shù)器復(fù)位端,CLR=0時(shí),QDQCQBQA=0000;LOAD是計(jì)數(shù)器的預(yù)置端,DCBA是預(yù)置數(shù)據(jù)輸入端。當(dāng)LOAD=0時(shí),在CLK的上升沿作用下,QDQCQBQA=DCBA;ENP和ENT是計(jì)數(shù)器的功能控制端,ENP和ENT均為高電平時(shí)計(jì)數(shù)器才能計(jì)數(shù),它們中有任何一個(gè)為低電平時(shí),計(jì)數(shù)器的裝備不會發(fā)生變化,而是處于保持狀態(tài)。RCO是計(jì)數(shù)器的進(jìn)位輸出,RCO=ENT× QDQA。

CD54HC160引腳圖
步驟
1.根據(jù)十進(jìn)制計(jì)數(shù)器的原理和特點(diǎn),利用VHDL語言的基本描述語句編寫出十進(jìn)制計(jì)數(shù)器的VHDL語言程序。
2.對所設(shè)計(jì)的十進(jìn)制計(jì)數(shù)器的VHDL程序進(jìn)行編譯,然后利用波形編輯器對其進(jìn)行仿真,初步驗(yàn)證程序設(shè)計(jì)的正確性。
3.利用開發(fā)工具軟件,選擇所用可編程邏輯器件,并對十進(jìn)制計(jì)數(shù)器進(jìn)行管腳配置。
4.通過下載電纜將編譯后的*.sof文件下載到目標(biāo)器件之中,并利用實(shí)驗(yàn)開發(fā)裝置對其進(jìn)行硬件驗(yàn)證。
程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CD54HC160 IS
PORT(
CLK,D,C,B,A, CLR, LOAD,ENP,ENT: IN STD_LOGIC;
QD,QC,QB,QA,RCO: BUFFER STD_LOGIC);
END CD54HC160;
ARCHITECTURE behave OF CD54HC160 IS
SIGNAL EN: STD_LOGIC_VECTOR(1 DOWNTO 0);
SIGNAL D_SIGNAL: STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL Q_SIGNAL: STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
PROCESS(LOAD,D,C,B,A,CLK,CLR, ENP,ENT)
BEGIN
EN<=(ENP&ENT);
D_SIGNAL<=(D&C&B&A);
IF (CLR=‘0’) THEN
Q_SIGNAL<=(OTHERS=>‘0’);
ELSE IF CLK‘EVENT AND CLK=’1‘ THEN
IF (LOAD=’0‘) THEN Q_SIGNAL<=D_SIGNAL;
ELSIF (EN=“11”) THEN
IF Q_SIGNAL<“1001” THEN
Q_SIGNAL<=Q_SIGNAL+1;
ELSE
Q_SIGNAL<=(OTHERS=>’0‘);
END IF;
ELSE
Q_SIGNAL<=Q_SIGNAL;
END IF;
END IF;
END IF;
QD<=Q_SIGNAL(3);
QC<=Q_SIGNAL(2);
QB<=Q_SIGNAL(1);
QA<=Q_SIGNAL(0);
RCO<=ENT AND QD AND QA;
END PROCESS;
END behave;
10進(jìn)制計(jì)數(shù)器設(shè)計(jì)方案三:74LS161的六位十進(jìn)制計(jì)數(shù)器設(shè)計(jì)

仿真電路(如上圖)脈沖信號首先進(jìn)入74LS161的CLK端,其QA~QD端接入74LS47A~D后B端和D端接邏輯與非門,當(dāng)74LS161計(jì)數(shù)到1010使該芯片進(jìn)位,并產(chǎn)生一個(gè)脈沖,到下一個(gè)74LS161的CLK端如此循環(huán)完成0-999999的計(jì)數(shù)功能。用開關(guān)控制鎖存完成鎖存功能,其中CLK為數(shù)據(jù)輸入端,QA~QD為數(shù)據(jù)輸出端可以用來驅(qū)動(dòng)74LS47芯片完成正常譯碼。開關(guān)控制CLK和CLR,當(dāng)CLK和CLR為高電平時(shí),OA---OG為正常邏輯狀態(tài),可以用來驅(qū)動(dòng)顯示器使其完成0—9的正常顯示,當(dāng)CL為低電平時(shí),即不驅(qū)動(dòng)顯示器,但內(nèi)部的邏輯操作不受影響。CET和CEP為鎖存允許端。
10進(jìn)制計(jì)數(shù)器設(shè)計(jì)方案四:verilog設(shè)計(jì)十進(jìn)制計(jì)數(shù)器
設(shè)計(jì)要求:
1、每當(dāng)計(jì)數(shù)器值為4’b001時(shí),自動(dòng)回到4’b0000
2、每個(gè)時(shí)鐘沿計(jì)數(shù)器值加1
3、進(jìn)位輸出carry應(yīng)該與4‘b1001同周期輸出
4、異步復(fù)位
? ? ? ?實(shí)驗(yàn)程序:
module cnt10 ( clk, rst_n, carry, cnt );
input clk, rst_n;
output carry;
output [3:0] cnt;
reg carry;
reg [3:0] cnt;
always @( posedge clk or negedge rst_n )
begin
if ( ~rst_n )
begin
cnt 《= 4‘b0000;
end
else if ( cnt == 4‘b1001 )
begin
cnt 《= 4‘b0000;
end
else
begin
cnt 《= cnt + 4‘b0001;
end
end
always @(posedge clk or negedge rst_n)
begin
if(!rst_n)
begin
carry 《= 1‘b0;
end
else if(cnt == 4‘b1000)
begin
carry 《= 1‘b1;
end
else
carry《= 1‘b0;
end
endmodule
View Code
測試程序:
`timescale 1ns/1ps
module cnt10_tb();
reg clk, rst_n;
wire carry;
wire [3:0] cnt;
always #10 clk = ~clk;
cnt10 cnt10_tb(
.clk(clk),
.rst_n(rst_n),
.carry(carry),
.cnt(cnt)
);
initial
begin
clk = 1‘b0;
rst_n = 1‘b1;
#10 rst_n = 1‘b0;
#10 rst_n = 1‘b1;
end
endmodule
? ? ? ?波形圖

? ? ? 在這個(gè)十進(jìn)制計(jì)數(shù)器中,唯一要注意的一點(diǎn)就是進(jìn)位位carry變化的時(shí)刻,如果是為了使下一級能正確接收到前一級的進(jìn)位位標(biāo)識,要在計(jì)數(shù)到九時(shí)使進(jìn)位位有效;如上圖波形所示。
10進(jìn)制計(jì)數(shù)器設(shè)計(jì)方案五:74191設(shè)計(jì)成兩位十進(jìn)制計(jì)數(shù)器

功能:U1的D0 D1 D2 D3 輸出的個(gè)位 ,U2的D0 D1 D2 D3 輸出的十位 。加一鍵按下數(shù)據(jù)加一,清零鍵按下數(shù)據(jù)清零。該單位電路實(shí)現(xiàn)的記錄“加一”按鍵按下次數(shù),清零按鍵清零的功能。
? ? ? ?工作原理:利用四位制計(jì)數(shù)器74191設(shè)計(jì)成兩位十進(jìn)制。個(gè)位、十位74191計(jì)數(shù)器的D0 D1 D2 D3腳接低電平,S、M腳接低電平。個(gè)位74191計(jì)數(shù)器CP腳接按鍵,十位74191計(jì)數(shù)器CP腳接來自個(gè)位計(jì)數(shù)器的進(jìn)位信號,這樣個(gè)位,十位都處于計(jì)數(shù)工作狀態(tài)。個(gè)位計(jì)數(shù)器由Q3Q2Q1Q0(0000)2增加到(1001)2時(shí)產(chǎn)生進(jìn)位信號,進(jìn)位信號接傳給個(gè)位計(jì)數(shù)器和十位計(jì)數(shù)器,分別實(shí)現(xiàn)了各位清零十位加一的功能。
10進(jìn)制計(jì)數(shù)器設(shè)計(jì)方案六:基于MAX+PLUSⅡ的十進(jìn)制計(jì)數(shù)器的設(shè)計(jì)
詳細(xì)電路設(shè)計(jì)方案:基于MAX+PLUSⅡ的十進(jìn)制計(jì)數(shù)器的設(shè)計(jì)
本設(shè)計(jì)采用的七段譯碼器電路由7447和外部共陰極數(shù)碼管構(gòu)成,7447七段譯碼器將BCD8421碼譯成數(shù)碼管所需的七段數(shù)顯碼。
(1)圖形設(shè)計(jì)輸入:MAX+PLUSⅡ的圖形設(shè)計(jì)輸入較其他軟件更容易使用,因?yàn)镸AX+PLUSⅡ提供豐富的庫單元供設(shè)計(jì)者調(diào)用,尤其是在 MAX+PLUSⅡ里提供的mf庫幾乎包含了所有的74系列的器件,在prim庫里提供了數(shù)字電路中所有的分離器件。因此只要具有數(shù)字電路的知識,幾乎不需要過多的學(xué)習(xí)就可以利用MAX+PLUSⅡ進(jìn)行CPLD/FPGA的設(shè)計(jì)。
(2)文本編輯輸入:MAX+PLUSⅡ的文本輸入和編譯系統(tǒng)支持AHDL語言、VHDL語言、VERILOG語言三種輸入方式。
(3)波形輸入方式:如果知道輸入、輸出波形,也可以采用波形輸入方式。
?。?)混合輸入方式:MAX+PLUSⅡ設(shè)計(jì)開發(fā)環(huán)境,支持圖形設(shè)計(jì)輸入、文本編輯輸入、波形編輯輸入的混合編輯。

電子發(fā)燒友App









































































評論