第一篇:EDA課程設(shè)計 數(shù)字時鐘(鬧鐘)
課 程 設(shè) 計 說 明 書
題目: 鬧鐘
學(xué)院(系): 年級專業(yè): 學(xué) 號: 學(xué)生姓名: 指導(dǎo)教師: 教師職稱:
共 16 頁
第 1 頁
目 錄
第1章 摘要…………………………………………………………………………………1 第2章 設(shè)計方案……………………………………………………………………………
2.1 VHDL簡介…………………………………………………………………………… 2.2 設(shè)計思路…………………………………………………………………………… 第3章 模塊介紹…………………………………………………………………………… 第4章 Verilog HDL設(shè)計源程序………………………………………………………… 第5章 波形仿真圖………………………………………………………………………… 第6章 管腳鎖定及硬件連線……………………………………………………………… 心得體會 ……………………………………………………………………………………17 參考文獻(xiàn) ……………………………………………………………………………………18
共 16 頁
第 2 頁
第一章 摘要
在當(dāng)今社會,數(shù)字電路產(chǎn)品的應(yīng)用在我們的實際生活中顯得越來越重要,與我們的生活聯(lián)系愈加緊密,例如計算機、儀表、電子鐘等等,使我們的生活工作較以前的方式更加方便、完善,帶來了很多的益處。
在此次EDA課程,我的設(shè)計課題是鬧鐘,使用VHDL語言進行編程完成。報告書主要由設(shè)計方案、模塊介紹、設(shè)計源程序、仿真波形圖和管腳鎖定及硬件連線四部分組成。設(shè)計方案主要介紹了我對于設(shè)計課題的大致設(shè)計思路,之后各個部分將會詳細(xì)介紹設(shè)計組成及程序。
共 16 頁
第 3 頁
第二章 設(shè)計方案 §2.1 VHDL簡介
數(shù)字電路主要是基于兩個信號(我們可以簡單的說是有電壓和無電壓),用數(shù)字信號完成對數(shù)字量進行算術(shù)運算和邏輯運算的電路我們稱之為數(shù)字電路,它具有邏輯運算和邏輯處理等功能,數(shù)字電路可分為組合邏輯電路和時序邏輯電路。
EDA技術(shù),就是以大規(guī)??删幊踢壿嬈骷樵O(shè)計載體,以硬件描述語言為系統(tǒng)邏輯描述的主要表達(dá)方式,以計算機、大規(guī)??删幊踢壿嬈骷拈_發(fā)軟件及實驗開發(fā)系統(tǒng)為設(shè)計工具,通過有關(guān)的開發(fā)軟件,自動完成用軟件的方式設(shè)計的電子系統(tǒng)到硬件系統(tǒng)的邏輯編譯、邏輯化簡、邏輯分割、邏輯綜合及優(yōu)化、邏輯布局布線、邏輯仿真,直至完成對于特定目標(biāo)芯片的適配編譯、邏輯映射、編程下載等工作,最終形成集成電子系統(tǒng)或?qū)S眉尚酒囊婚T新技術(shù)。
利用EDA技術(shù)進行電子系統(tǒng)的設(shè)計,具有以下幾個特點:① 用軟件的方式設(shè)計硬件;② 用軟件方式設(shè)計的系統(tǒng)到硬件系統(tǒng)的轉(zhuǎn)換是由有關(guān)的開發(fā)軟件自動完成的;③ 設(shè)計過程中可用有關(guān)軟件進行各種仿真;④ 系統(tǒng)可現(xiàn)場編程,在線升級;⑤ 整個系統(tǒng)可集成在一個芯片上,體積小、功耗低、可靠性高。因此,EDA技術(shù)是現(xiàn)代電子設(shè)計的發(fā)展趨勢。
EDA技術(shù)伴隨著計算機、集成電路、電子系統(tǒng)設(shè)計的發(fā)展,經(jīng)歷了計算機輔助設(shè)計(Computer Assist Design,簡稱CAD)、計算機輔助工程設(shè)計(Computer Assist Engineering Design,簡稱CAE)和電子設(shè)計自動化(Electronic Design Automation,簡稱EDA)三個發(fā)展階段。
常用的硬件描述語言有VHDL、Verilog、ABEL。
EDA技術(shù)是隨著集成電路和計算機技術(shù)的飛速發(fā)展應(yīng)運而生的一種高級、快速、有效的電子設(shè)計自動化工具。它是為解決自動控制系統(tǒng)設(shè)計而提出的,從70年代經(jīng)歷了計算機輔助設(shè)計(CAD),計算機輔助工程(CAE),電子系統(tǒng)設(shè)計自動化(ESDA)3個階段。前兩個階段的EDA產(chǎn)品都只是個別或部分的解決了電子產(chǎn)品設(shè)計中的工程問題;第三代EDA工具根據(jù)工程設(shè)計中的瓶
共 16 頁
第 4 頁
頸和矛盾對設(shè)計數(shù)據(jù)庫實現(xiàn)了統(tǒng)一管理,并提出了并行設(shè)計環(huán)境概念,提供了獨立于工藝和廠家的系統(tǒng)級的設(shè)計工具。EDA關(guān)鍵技術(shù)之一就是采用硬件描述語言對硬件電路進行描述,且具有系統(tǒng)級仿真和綜合能力。目前應(yīng)用比較廣泛的硬件描述語言就是Verilog HDL。Verilog HDL簡介
Verilog HDL是目前大規(guī)模集成電路設(shè)計中最具代表性、使用最廣泛的硬件描述語言之一。具有如下特點:
(1)能夠在不同的抽象層次上,如系統(tǒng)級、行為級、RTL級、門級和開關(guān)級,對設(shè)計系統(tǒng)進行精確而簡練的描述。
(2)能夠在每個抽象層次的描述上對設(shè)計進行仿真驗證,及時發(fā)現(xiàn)及時發(fā)現(xiàn)可能存在的錯誤,縮短設(shè)計周期,并保存整個設(shè)計過程的正確性。
(3)由于代碼描述與工藝過程實現(xiàn)無關(guān),便于設(shè)計標(biāo)準(zhǔn)化,提高設(shè)計的可重用性。如國有C語言的編程基礎(chǔ)經(jīng)驗,只需很短的時間就能學(xué)會和掌握Verilog HDL,因此,Verilog HDL可以作為學(xué)習(xí)HDL設(shè)計方法的入門和基礎(chǔ)。
§2.2 設(shè)計思路
一、設(shè)計要求
1、設(shè)計簡易的一分鐘鬧鐘;
2、可手動輸入定時時間(0~59s),如30s;
3、兩個動態(tài)數(shù)碼管上跟蹤顯示時間的變化:如30,29,28……到了指定時間蜂鳴器發(fā)出5s的提示音;
4、采用2個動態(tài)數(shù)碼管顯示時間;
5、用蜂鳴器發(fā)出提示音;
6、撥碼開關(guān)設(shè)置定時時間。
二、設(shè)計思路
根據(jù)上述的設(shè)計要求,整個系統(tǒng)大致包括如下幾個組成部分:它包括以下幾個組成
共 16 頁
第 5 頁
部分:1)顯示屏,由2個七段動態(tài)數(shù)碼管組成,用于顯示當(dāng)前設(shè)置的鬧鐘時間并進行跟蹤顯示;2)6個撥碼開關(guān),用于輸入鬧鐘時間;3)復(fù)位鍵,確定新的鬧鐘時間設(shè)置,或顯示已設(shè)置的鬧鐘時間;4)蜂鳴器,在當(dāng)前時鐘時間與鬧鐘時間相同時,發(fā)出報警聲。
共 16 頁
第 6 頁
第三章 模塊介紹
一、計時模塊
此模塊共有6個撥碼開關(guān)作為輸入信號,當(dāng)開關(guān)無輸入時,都處于低電平狀態(tài),D5、D4、D3、D2、D1和D0是并行數(shù)據(jù)輸入端,CRN是異步復(fù)位輸入端,LDN是預(yù)置控制輸入端。當(dāng)開關(guān)有輸入時,會產(chǎn)生一個六位的二進制輸出信號num,此信號表示動作的開關(guān)序號,它是作為動態(tài)顯示模塊的輸入信號。
二、數(shù)碼顯示模塊
這個模塊有兩個輸入信號和兩個輸出信號。其中一個是信號輸入模塊的輸出num作為輸入,另外一個是時鐘輸入端,作為掃描數(shù)碼管的頻率信號,采用1024HZ的中高頻信號。輸出信號為SS0、SS1、SS2,是動態(tài)數(shù)碼管的片選段。
三、報警模塊
報警模塊共有兩個輸入信號ET和CLK1,一個輸出信號COUT。當(dāng)從信號輸入模塊檢測到有開關(guān)輸入時,ET信號已置1,CLK上升沿到來時,程序?qū)OUT置1,蜂鳴器發(fā)出時間為10s的報警信號,時間到達(dá)后,跳出循環(huán),蜂鳴器停止報警。
四、頂層模塊
頂層模塊的作用是將各個模塊組合到一起,從而實現(xiàn)最終的功能。其輸入即為各個模塊的輸入,一個時鐘信號,還有6個撥碼開關(guān)的輸入,其輸出為數(shù)碼管顯示和報警器。
共 16 頁
第 7 頁
第四章Verilog HDL設(shè)計源程序
一、計時模塊
module counter(LDN,D5,D4,D3,D2,D1,D0,CLK,CRN,Q,OC);input LDN,D5,D4,D3,D2,D1,D0,CLK,CRN;output[5:0] Q;output OC;reg OC;reg[5:0] Q;reg[5:0] Q_TEMP;reg[3:0] NUM;always@(posedge CLK or negedge CRN)begin
if(~CRN)Q_TEMP=6'b000000;else if(~LDN)begin Q_TEMP={D5,D4,D3,D2,D1,D0};NUM=4'b0000;end else if(Q_TEMP<6'b111100&&Q_TEMP>6'b000000)begin if(NUM<4'b1000&&NUM>=4'b0000)NUM=NUM+1;else NUM=4'b0001;if(NUM==4'b1000)Q_TEMP=Q_TEMP-1;end
共 16 頁
第 8 頁
else Q_TEMP=6'b000000;end always begin
if(Q_TEMP==6'b000000&&LDN)OC=1'b1;else OC=1'b0;Q=Q_TEMP;end endmodule
二、數(shù)碼顯示模塊
module showtime(A,Q,CLKM,SS0,SS1,SS2);input[5:0] A;input CLKM;output[6:0] Q;output SS0,SS1,SS2;reg[6:0] Q;reg SS0,SS1,SS2;reg M;reg[5:0] B;reg[5:0] C;always@(posedge CLKM)begin M=M+1;end always begin
共 16 頁
第 9 頁
if(A<='b001001)begin B=A;C=0;end else if(A>'b001001&&A<='b10011)begin B=A-10;C=1;end else if(A>'b10011&&A<='b11101)begin B=A-20;C=2;end else if(A>'b11101&&A<='b100111)begin B=A-30;C=3;end else if(A>'b100111&&A<='b110001)begin B=A-40;C=4;end else if(A>'b110001&&A<='b111011)
共 16 頁
第 10 頁
begin B=A-50;C=5;end else if(A=='b111100)begin B=0;C=6;end if(M=='b1)begin SS0=1;SS1=0;SS2=0;case(B)'b000000:Q='b0111111;'b000001:Q='b0000110;'b000010:Q='b1011011;'b000011:Q='b1001111;'b000100:Q='b1100110;'b000101:Q='b1101101;'b000110:Q='b1111101;'b000111:Q='b0000111;'b001000:Q='b1111111;'b001001:Q='b1101111;default:Q='b0111111;endcase end
共 16 頁
第 11 頁
else if(M=='b0)begin SS0=0;SS1=0;SS2=0;case(C)'b000000:Q='b0111111;'b000001:Q='b0000110;'b000010:Q='b1011011;'b000011:Q='b1001111;'b000100:Q='b1100110;'b000101:Q='b1101101;'b000110:Q='b1111101;default:Q='b0111111;endcase end end endmodule
三、報警模塊
module speaker(CLK1,ET,COUT);input CLK1,ET;output COUT;reg COUT;reg[5:0] TEMP;always@(posedge CLK1)begin
if(~ET)TEMP=6'b000000;else if(TEMP<6'b101001&&TEMP>=6'b000000)TEMP=TEMP+1;
共 16 頁
第 12 頁
else TEMP=6'b101001;end always begin if(TEMP<6'b101001&&TEMP!=6'b000000)COUT=1'b1;else COUT=1'b0;end endmodule
四、頂層模塊 module timer(LDN,D5,D4,D3,D2,D1,D0,CLK,CRN,CLK1,COUT,LED,SS0,SS1,SS2,CLKM);input LDN,D5,D4,D3,D2,D1,D0,CLK,CRN,CLK1,CLKM;output[6:0] LED;output COUT,SS0,SS1,SS2;wire X6;wire[5:0] X;counter u1(.LDN(LDN),.D5(D5),.D4(D4),.D3(D3),.D2(D2),.D1(D1),.D0(D0),.CLK(CLK),.CRN(CRN),.Q(X[5:0]),.OC(X6));showtime u2(.A(X[5:0]),.Q(LED[6:0]),.CLKM(CLKM),.SS0(SS0),.SS1(SS1),.SS2(SS2));speaker u3(.CLK1(CLK1),.ET(X6),.COUT(COUT));endmodule
共 16 頁
第 13 頁
第五章 波形仿真圖
一、計時模塊波形仿真圖
二、報警模塊波形仿真圖
三、頂層模塊波形仿真圖
共 16 頁
第 14 頁
第六章 管腳鎖定及硬件連線
一、管腳鎖定
CLK>chip=timer;Input Pin=75 CLKM>chip=timer:Input Pin=83 CLK1> chip=timer;Input Pin=85 COUT> chip=timer;Output Pin=38 CRN> chip=timer;Input Pin=39 DO> chip=timer;Input Pin=53 D1> chip=timer;Input Pin=47 D2> chip=timer;Input Pin=46 D3> chip=timer;Input Pin=45 D4> chip=timer;Input Pin=44 D5> chip=timer;Input Pin=41 LDN> chip=timer;Input Pin=40 LED0> chip=timer;Output Pin=173 LED1> chip=timer;Output Pin=174 LED2> chip=timer;Output Pin=175 LED3> chip=timer;Output Pin=176 LED4> chip=timer;Output Pin=177 LED5> chip=timer;Output Pin=179 LED6> chip=timer;Output Pin=187 SSO> chip=timer;Output Pin=191 SS1> chip=timer;Output Pin=192 SS2> chip=timer;Output Pin=193 引線說明:撥碼開關(guān)使用數(shù)字開關(guān)組A,需外接引線。
共 16 頁
第 15 頁
心得體會
通過這次設(shè)計,初步對EDA有一個了解。
出于沒有學(xué)習(xí)過這門課程,所以再課程設(shè)計開始時對于EDA就是一無所知。課程設(shè)計之初是做了一個簡單的培訓(xùn),關(guān)于軟件和硬件的設(shè)計,算是入門訓(xùn)練吧。通過前兩天的課程講解,我對其有了初步的了解。之后就開始按照指導(dǎo)書中的例題就行練習(xí),仿真,有進一步的掌握后就開始了自己的課程設(shè)計。由于我C++程序設(shè)計知識不扎實,所以導(dǎo)致這次軟件設(shè)計困難重重,也讓我明白了在這個領(lǐng)域知識的串聯(lián)是非常普遍的,學(xué)好學(xué)扎實是我們必須要做到的要求。
通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出結(jié)論,才能提高自己的實際動手能力。在設(shè)計的過程中,可以說得是困難重重,但這畢竟第一次做,同時在設(shè)計的過程中發(fā)現(xiàn)了自己的不足之處。
在此還需要感謝鄭兆兆老師和呂宏詩老師耐心的指導(dǎo)與幫助,使課設(shè)能夠更加順利的完成。
共 16 頁
第 16 頁
參考文獻(xiàn)
1、閻石主編.《數(shù)字電子技術(shù)基礎(chǔ)》(第五版).高等教等育出版社.2006.5,168-175頁 ;
2、李國麗、朱維勇、何劍春主編 《EDA與數(shù)字系統(tǒng)設(shè)計》(第2版).機械工業(yè)出版社.2009.3,105-146頁
共 16 頁
第 17 頁
第二篇:EDA課程設(shè)計 數(shù)字時鐘
EDA
課程設(shè)計報告
一·設(shè)計任務(wù)
使用硬件描述語言,在CPLD/FPGA上實現(xiàn)一個多功能數(shù)字鐘。
二·設(shè)計要求
除按鍵、LED、揚聲器、時鐘信號外,整個數(shù)字鐘的功能要求在一塊芯片上實現(xiàn)。
a)具有時,分,秒,計數(shù)顯示功能,以24小時循環(huán)計時; b)具有時間清零功能;
c)具有小時、分鐘和秒鐘調(diào)整功能(個位和十位分開調(diào)或合起來調(diào))。
d)具有鬧鐘功能,能預(yù)設(shè)鬧鐘時間,精確到秒。
整個數(shù)字鐘只設(shè)一個時鐘輸入端口,所需不同頻率信
號在內(nèi)部分頻實現(xiàn)。(LED掃描頻率設(shè)為50Hz以上)。
三·設(shè)計方案
設(shè)計采用模塊方式,分別為分頻模塊:產(chǎn)生1Hz的脈沖作為秒的輸入,和產(chǎn)生1kHz的脈沖作為數(shù)碼管顯示的動態(tài)掃描。計時模塊:秒模塊,分模塊,時模塊。鬧鐘模塊,顯示模塊,控制模塊。
四·模塊端口設(shè)置
1.分頻模塊
輸入:clkin :
本實驗輸入為50MHz晶振
輸出:clk : 為顯示模塊及始終調(diào)節(jié)提供1KHz脈沖
clkt: 為計數(shù)器模塊提供1Hz脈沖
2.計時模塊
m 是模式按鍵,當(dāng)m=0 時,進入計時模式,在計時模式下可以進行時間調(diào)整。num3,num4 產(chǎn)生加速調(diào)整時間,當(dāng)其值為1 時,可以快速調(diào)整時間,該調(diào)整時間的頻率由clk 提
供。counta,count1 是手動調(diào)節(jié)時間。Turn 接按鍵,可以改變當(dāng)前調(diào)節(jié)的是小時還是分鐘,長按turn 鍵還可以使秒鐘信號清零。sec1,min1,hour1 輸出的是計時的秒,分,時。
3.鬧鐘模塊
原理:num1,num2 產(chǎn)生加速調(diào)整時間,當(dāng)其值為1 時,可以快速調(diào)整時間,該調(diào)整時間的
頻率由clk 提供。countb,count2 是手動調(diào)節(jié)鬧鐘時間。amin,ahour 是輸出的鬧鐘的分鐘和 小時 4.控制模塊
m 是模式按鍵,當(dāng)m=0 時,指當(dāng)前輸出的是計時功能;當(dāng)m=1 時,指當(dāng)前調(diào)整的是
鬧鐘時間;當(dāng)m=2 時,指當(dāng)前調(diào)整的是計時時間;當(dāng)m=3 時,此時turn 按鍵可用于跑表的
暫停與開始。change 接按鍵,手動調(diào)整時,每按一次,計數(shù)器加1;如果長按,則連續(xù)快
速加1,用于快速調(diào)時和定時;turn 接按鍵,在手動校時功能時,選擇是調(diào)整小時,還是分
鐘;若長時間按住該鍵,還可使秒信號清零,用于精確調(diào)時。count1,count2,counta,countb 分
別是用來調(diào)節(jié)計時時間和鬧鐘時間。LD_min,LD_hour,指示當(dāng)前調(diào)節(jié)的是分鐘還是小時。5 顯示模塊
輸入:clk--1kHz時鐘,提供高頻掃描
in0、in1…in5--分別為時、分、秒的個位與十位信號
輸出:a、b…g--數(shù)碼管輸入
d0、d1…d5--數(shù)碼管選通
五.程序。
分頻模塊
module fenpin(clk,clkt,clkin);input clkin;output clk,clkt;reg clk,clkt;reg [31:0]out,t1;
initial t1<=0;initial out<=0;initial clk<=0;initial clkt<=0;
always@(posedge clkin)begin
out<=out+1;
if(out==20000)
begin
out<=0;
clk<=!clk;
end end
always@(posedge clk)
begin
t1<=t1+1;
if(t1==1000)
begin
clkt<=1;
t1<=0;
end
else
clkt<=0;end endmodule
計時模塊 module jishi(clk,clk_1Hz, turn,mode,count1,counta,sec1,min1,hour1,num3,num4);input clk,clkt,turn,num3,num4;input mode;input count1,counta;output [7:0] sec1,min1;output [7:0] hour1;wire clkt,ct1,cta,turn,num3,num4;reg [7:0] sec1=0,min1=0;reg [7:0] hour1=0;reg [1:0] m;wire count1,counta;reg minclk,hclk;always @(posedge mode)//mode 信號控制系統(tǒng)在三種功能間轉(zhuǎn)換 begin if(m==4)m<=0;else m<=m+1;end /////秒鐘計時模塊////// always @(posedge clkt)
if((sec1==8'h59)|turn&(!m))///////若長時間按住該鍵,還可使秒信號清零,用于精確調(diào)時。begin sec1<=0;//按住“turn”按鍵一段時間,秒信號可清零,該功能用于手動精確調(diào)時
if(!(turn&(!m)))minclk<=1;///產(chǎn)生進位 end else begin if(sec1[3:0]==4'b1001)begin sec1[3:0]<=4'b0000;sec1[7:4]<=sec1[7:4]+1;end else sec1[3:0]<=sec1[3:0]+1;minclk<=0;end ////////分鐘計時模?/// assign m_clk=minclk||count1;/////m_clk 產(chǎn)生進位或校正改變 assign ct1=(num3&clk)|(!num3&m_clk);//ct1 用于計時、校時中的分鐘計數(shù)
always @(posedge ct1)begin if(min1==8'h59)begin min1<=0;hclk<=1;end else begin if(min1[3:0]==9)
begin min1[3:0]<=0;min1[7:4]<=min1[7:4]+1;end else min1[3:0]<=min1[3:0]+1;hclk<=0;end end ////////小時計時模塊/// assign h_clk=hclk||counta;//////h_clk 產(chǎn)生進位或校正改變 assign cta=(num4&clk)|(!num4&h_clk);//cta 用于計時、校時中的小時計數(shù)
always @(posedge cta)if(hour1==8'h23)hour1<=0;else if(hour1[3:0]==9)begin hour1[7:4]<=hour1[7:4]+1;hour1[3:0]<=0;end else hour1[3:0]<=hour1[3:0]+1;Endmodule
鬧鐘模塊
module alarm(clk,amin,ahour,num1,num2,count2,countb,LD_alert);input clk,num1,num2,count2,countb;output [7:0] amin;
output [7:0] ahour;output LD_alert;wire LD_alert;reg [7:0] amin=0;reg [7:0] ahour=0;assign ct2=(num1&clk)|(!num1&count2);//ct2 用于定時狀態(tài)下調(diào)整分鐘信號
assign LD_alert=(ahour|amin)?1:0;//指示是否進行了鬧鈴定時 always @(posedge ct2)if(amin==8'h59)amin<=0;else if(amin[3:0]==9)begin amin[3:0]<=0;amin[7:4]<=amin[7:4]+1;end else amin[3:0]<=amin[3:0]+1;assign ctb=(num2&clk)|(!num2&countb);////ctb 用于定時狀態(tài)調(diào)節(jié)小時信號 always @(posedge ctb)if(ahour==8'h23)ahour<=0;else if(ahour[3:0]==9)begin ahour[3:0]<=0;ahour[7:4]<=ahour[7:4]+1;end else ahour[3:0]<=ahour[3:0]+1;Endmodule 控制模塊
module ctrol(change,turn,count1,count2,counta,countb,pause,LD_min,LD_hour,mode);input change,mode,turn;output count1,count2,counta,countb,pause,LD_min,LD_hour;reg [1:0] m;reg fm=0,count1=0,count2=0,counta=0,countb=0,pause=0,LD_min=0,LD_hour=0;wire mode,turn,change;always @(posedge mode)//mode 信號控制系統(tǒng)在三種功能間轉(zhuǎn)換 begin if(m==4)m<=0;else m<=m+1;end always @(posedge turn)//////////接按鍵,在手動校時功能時,選擇是調(diào)整小時,還是分鐘; begin fm<=~fm;end
always @(m or fm or change)begin case(m)2: begin ////////2:調(diào)節(jié)時間功能; if(fm)begin count1<=change;{LD_min,LD_hour}<=2;end//////指示當(dāng)前調(diào)整的是分鐘
Else
begin counta<=change;{LD_min,LD_hour}<=1;end/////指示當(dāng)前調(diào)整的是小時 {count2,countb}<=0;end 1: begin //////1:調(diào)節(jié)鬧鐘功能 if(fm)begin count2<=change;{LD_min,LD_hour}<=2;end/////指示當(dāng)前調(diào)整的是分 else begin countb<=change;{LD_min,LD_hour}<=1;end/////指示當(dāng)前調(diào)整的是小時 {count1,counta}<=0;end
0: begin {count1,count2,counta,countb,LD_min,LD_hour}<=0;end ////0:計時功能 endcase end endmodule 顯示模塊
module show(min1,sec1,amin,hour1,ahour,MSH,MSL,SH,SL,MH,ML,min,sec,hour,mode);input [7:0] min1,sec1,amin;input [7:0] hour1,ahour;input[3:0] MSH,MSL,SH,SL,MH,ML;input mode;output [7:0] min,sec;output [7:0] hour;reg [7:0] min,sec;reg [7:0] hour;reg [1:0] m;always @(posedge mode)//mode 信號控制系統(tǒng)在三種功能間轉(zhuǎn)換
begin if(m==4)m<=0;else m<=m+1;end always @(min1 or sec1 or amin or hour1 or ahour or m)begin case(m)0: begin hour<=hour1;min<=min1;sec<=sec1;end 1: begin hour<=ahour;min<=amin;sec<=8'hzz;end 2: begin hour<=hour1;min<=min1;sec<=8'hzz;end 3: begin
hour<={SH,SL};
min<={MSH,MSL};sec<={MH,ML};end endcase end Endmodule
六
實驗分析 七
實驗總結(jié)
八、參考資料
1、《EDA技術(shù)實用教程》
2、實驗箱使用說明;
第三篇:EDA課程設(shè)計——數(shù)字時鐘
Hefei University
EDA課程綜述
論文題目: EDA課程綜述
專 業(yè): 09通信(2)班
姓 名: 唐吉祥
學(xué) 號: 0905072035 指導(dǎo)老師: 查長軍
前
言
隨著基于PLD的EDA技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的擴大和深入,EDA技術(shù)在電子信息、通信、自動控制及計算機應(yīng)用領(lǐng)域的重要性日益提高。
作為現(xiàn)在的大學(xué)生應(yīng)熟練掌握這門技術(shù),為以后的發(fā)展打下良好的基礎(chǔ),本實驗設(shè)計是應(yīng)用QuartusII環(huán)境及VHDL語言設(shè)計一個時間可調(diào)的數(shù)字時鐘。使自己熟練使用QuartusII環(huán)境來進行設(shè)計,掌握VHDL語言的設(shè)計方法。要注重理論與實踐之間的不同,培養(yǎng)自己的實踐能力!
目錄
一、課程設(shè)計任務(wù)及要求............................................................................................3
1.1實驗?zāi)康?.........................................................................................................3 1.2功能設(shè)計..........................................................................................................3
二、整體設(shè)計思想........................................................................................................3
2.1性能指標(biāo)及功能設(shè)計......................................................................................3 2.2總體方框圖......................................................................................................4
三、詳細(xì)設(shè)計................................................................................................................4
3.1數(shù)字鐘的基本工作原理:..............................................................................4
3.1.1時基T 產(chǎn)生電路..................................................................................4 3.1.2調(diào)時、調(diào)分信號的產(chǎn)生......................................................................4 3.1.3計數(shù)顯示電路.......................................................................................5 3.2設(shè)計思路..........................................................................................................5 3.3設(shè)計步驟..........................................................................................................6
3.3.1工程建立及存盤...................................................................................6 3.3.2工程項目的編譯...................................................................................7 3.3.3目標(biāo)芯片的選擇...................................................................................7 3.3.4時序仿真...............................................................................................8 3.3.5引腳鎖定.............................................................................................10 3.3.6硬件測試.............................................................................................11 3.3.7實驗結(jié)果.............................................................................................11
四、設(shè)計總結(jié)..............................................................................................................12
五、附錄......................................................................................................................12
5.1 VHDL源程序..................................................................................................12 5.2配置符號圖....................................................................................................17
一、課程設(shè)計任務(wù)及要求
1.1實驗?zāi)康?/p>
1)掌握VHDL語言的基本運用
2)掌握QuartusII的簡單操作并會使用EDA實驗箱 3)掌握一個基本EDA課程設(shè)計的操作
1.2功能設(shè)計
1)有時、分、秒計數(shù)顯示功能,小時為24進制,分鐘和秒為60進制以24小時循環(huán)計時
2)設(shè)置復(fù)位、清零等功能
3)有校時功能,可以分別對時及分進行單獨校時,使其校正到標(biāo)準(zhǔn)時間 4)時鐘計數(shù)顯示時有LED燈顯示
二、整體設(shè)計思想
2.1性能指標(biāo)及功能設(shè)計
1)時、分、秒計時器
時計時器為一個24進制計數(shù)器,分、秒計時器均為60進制計數(shù)器。當(dāng)秒計時器接受到一個秒脈沖時,秒計數(shù)器開始從1計數(shù)到60,此時秒顯示器將顯示00、01、02、...、59、00;每當(dāng)秒計數(shù)器數(shù)到00時,就會產(chǎn)生一個脈沖輸出送至分計時器,此時分計數(shù)器數(shù)值在原有基礎(chǔ)上加1,其顯示器將顯示00、01、02、...、59、00;每當(dāng)分計數(shù)器數(shù)到00時,就會產(chǎn)生一個脈沖輸出送至?xí)r計時器,此時時計數(shù)器數(shù)值在原有基礎(chǔ)上加1,其顯示器將顯示00、01、02、...、23、00。即當(dāng)數(shù)字鐘運行到23點59分59秒時,當(dāng)秒計時器在接受一個秒脈沖,數(shù)字鐘將自動顯示00點00分00秒。2)校時電路
當(dāng)開關(guān)撥至校時檔時,電子鐘秒計時工作,通過時、分校時開關(guān)分別對時、分進行校對,開關(guān)每按1次,與開關(guān)對應(yīng)的時或分計數(shù)器加1,當(dāng)調(diào)至需要的時與分時,撥動reset開關(guān),電子鐘從設(shè)置的時間開始往后計時。2.2總體方框圖
三、詳細(xì)設(shè)計
3.1數(shù)字鐘的基本工作原理:
3.1.1時基T 產(chǎn)生電路
數(shù)字鐘以其顯示時間的直觀性、走時準(zhǔn)確性作為一種計時工具,數(shù)字鐘的基本組成部分離不開計數(shù)器,在控制邏輯電路的控制下完成預(yù)定的各項功能。
由晶振產(chǎn)生的頻率非常穩(wěn)定的脈沖,經(jīng)整形、穩(wěn)定電路后,產(chǎn)生一個頻率為1Hz的、非常穩(wěn)定的計數(shù)時鐘脈沖。
3.1.2調(diào)時、調(diào)分信號的產(chǎn)生
由計數(shù)器的計數(shù)過程可知,正常計數(shù)時,當(dāng)秒計數(shù)器(60進制)計數(shù)到59 時,再來一個脈沖,則秒計數(shù)器清零,重新開始新一輪的計數(shù),而進位則作為分計數(shù)器的計數(shù)脈沖,使分計數(shù)器計數(shù)加1?,F(xiàn)在我們把電路稍做變動:把秒計數(shù)器的進位脈沖和一個頻率為2Hz的脈沖信號同時接到一個2選1數(shù)據(jù)選擇器的兩個數(shù)據(jù)輸入端,而位選信號則接一個脈沖按鍵開關(guān),當(dāng)按鍵開關(guān)不按下去時(即為0),則數(shù)據(jù)選擇器將秒計數(shù)器的進位脈沖送到分計數(shù)器,此時,數(shù)字鐘正常工作;當(dāng)按鍵開關(guān)按下去時(即為1),則數(shù)據(jù)選擇器將另外一個2Hz 的信號作為分計數(shù) 器的計數(shù)脈沖,使其計數(shù)頻率加快,當(dāng)達(dá)到正確時間時,松開按鍵開關(guān),從而達(dá)到調(diào)時的目的。調(diào)節(jié)小時的時間也一樣的實現(xiàn)。
3.1.3計數(shù)顯示電路
由計數(shù)部分、數(shù)據(jù)選擇器、譯碼器組成,是時鐘的關(guān)鍵部分。
1、計數(shù)部分:由兩個60進制計數(shù)器和一個24 進制計數(shù)器組成,其中60 進制計數(shù)器可用6 進制計數(shù)器和10 進制計數(shù)器構(gòu)成;24 進制的小時計數(shù)同樣可用6 進制計數(shù)器和10 進制計數(shù)器得到:當(dāng)計數(shù)器計數(shù)到24 時,“2”和“4”同時進行清零,則可實現(xiàn)24 進制計數(shù)。
2、數(shù)據(jù)選擇器:84 輸入14 輸出的多路數(shù)據(jù)選擇器,因為本實驗用到了8個數(shù)碼管(有兩個用來產(chǎn)生隔離符號‘—’)。
3、譯碼器:七段譯碼器。譯碼器必須能譯出‘—’,由實驗二中譯碼器真值表可得:字母F 的8421BCD 碼為“1111”,譯碼后為“1000111”,現(xiàn)在如果只譯出‘—’,即字母F的中間一橫,則譯碼后應(yīng)為“0000001”,這樣,在數(shù)碼管上顯示的就為‘—’。
3.2設(shè)計思路
根據(jù)系統(tǒng)設(shè)計要求,系統(tǒng)設(shè)計采用自頂向下設(shè)計方法,由時鐘分頻部分、計時部分、按鍵部分調(diào)時部分和顯示部分五個部分組成。這些模塊都放在一個頂層文件中。
1)時鐘計數(shù):
首先下載程序進行復(fù)位清零操作,電子鐘從00:00:00計時開始。sethour可以調(diào)整時鐘的小時部分, setmin可以調(diào)整分鐘,步進為1。
由于電子鐘的最小計時單位是1s,因此提供給系統(tǒng)的內(nèi)部的時鐘頻率應(yīng)該大于1Hz,這里取100Hz。CLK端連接外部10Hz的時鐘輸入信號clk。對clk進行計數(shù),當(dāng)clk=10時,秒加1,當(dāng)秒加到60時,分加1;當(dāng)分加到60時,時加1;當(dāng)時加到24時,全部清0,從新計時。
用6位數(shù)碼管分別顯示“時”、“分”、“秒”,通過OUTPUT(6 DOWNTO 0)上的信號來點亮指定的LED七段顯示數(shù)碼管。
2)時間設(shè)置:
手動調(diào)節(jié)分鐘、小時,可以對所設(shè)計的時鐘任意調(diào)時間,這樣使數(shù)字鐘真正具有使用功能。我們可以通過實驗板上的鍵7和鍵4進行任意的調(diào)整,因為我們用的時鐘信號均是1HZ的,所以每LED燈變化一次就來一個脈沖,即計數(shù)一次。3)清零功能: reset為復(fù)位鍵,低電平時實現(xiàn)清零功能,高電平時正常計數(shù)??梢愿鶕?jù)我們自己任意時間的復(fù)位。
3.3設(shè)計步驟
3.3.1工程建立及存盤
1.打開 QuartusⅡ,單擊“File”菜單,選擇 File→New Project Wizard,對話框如下:分別輸入項目的工作路徑、項目名和實體名,單擊Finish。
2.單擊“File”菜單,選擇New,彈出小對話框,雙擊“VHDL File“,即選中了文本編輯方式。在出現(xiàn)的“Vhdl1.vhd”文本編輯窗中鍵入VHDL程序,輸入完畢后,選擇File→Save As,即出現(xiàn)“Save As”對話框。選擇自己建立好的存放本文件的目錄,然后在文件名框中鍵入文件名,按“Save”按鈕。
3.建立工程項目,在保存VHDL文件時會彈出是否建立項目的小窗口,點擊“Yes”確定。即出現(xiàn)建立工程項目的導(dǎo)航窗口,點擊“Next”,最后在出現(xiàn)的屏幕中分別鍵入新項目的工作路徑、項目名和實體名。注意,原理圖輸入設(shè)計方法中,存盤的原理圖文件名可以是任意的,但VHDL程序文本存盤的文件名必須與文件的實體名一致,輸入后,單擊“Finish”按鈕。3.3.2工程項目的編譯
單擊工具條上的編譯符號開始編譯,并隨著進度不斷變化屏幕,編譯完成后的屏幕如圖所示:
3.3.3目標(biāo)芯片的選擇
選擇菜單 Assignments 選項的下拉菜單中選擇器件 Device ?,如圖所示: 在彈出的對話框中的 Family(器件序列欄)對應(yīng)的序列名,EP1C3 對應(yīng)的是 Cyclone 系列。在 Available Devices里選擇 EP1C3T144-C8(有時需要把 Show advanced devices的勾消去,以便顯示出所有速度級別的器件)。注意:所選器件必須與目標(biāo)板的器件型號完全一致。
在圖中,單擊“Device and Pin Options?”,在彈出的“Device and Pin Options?”窗口中,單擊“Unused Pins”標(biāo)簽。選擇“As output driving an unspecified signal ”(由于學(xué)習(xí)機的“FPGA”具有很多功能,為了避免使用引腳對其它器件造成影響,保證本系統(tǒng)可靠工作,將未使用引腳設(shè)定為輸出不定狀態(tài))后,單擊確定后,無誤后單擊“OK”。
3.3.4時序仿真
建立波形文件:選擇 File→New,在New窗中選中“Other File”標(biāo)簽。在出現(xiàn)的屏幕中選擇“Vector Waveform File”項出現(xiàn)一新的屏幕。在出現(xiàn)的新屏幕中,雙擊“Name”下方的空白處,彈出“Insert Nod or Bus”對話框,單擊該對話框的“Node Finder??”。在屏幕中的 Filter 中選擇 Pins,單擊“List”。而后,單擊“>>”,所有輸入/輸出都被拷貝到右邊的一側(cè),這些正是我們希望的各個引腳,也可以只選其中的的一部分,根據(jù)實際情況決定。然后單擊屏幕右上腳的 “OK”。在出現(xiàn)的小屏幕上單擊“OK”。
設(shè)定仿真時間寬度。選擇 Edit → End time?選項,在End time選擇窗中選擇適當(dāng)?shù)姆抡鏁r間域,以便有足夠長的觀察時間。
波形文件存盤。選擇File→Save as 選項,直接存盤即可。運行仿真器。在菜單中選擇項,直到出現(xiàn),仿真結(jié)束。
未曾編輯的仿真波形
仿真波形 3.3.5引腳鎖定
將設(shè)計編程下載進選定的目標(biāo)器件中,如EPF10K10,作進一步的硬件測試,將設(shè)計的所有輸入輸出引腳分別與目標(biāo)器件的EPF10K10的部分引腳相接,操作如下:
1.選擇 Assignments → Assignments Editor ,即進入 Assignments Editor編輯器。在Category 欄選擇 Pin,或直接單擊右上側(cè)的 Pin 按鈕。
2.雙擊 TO 欄的《new》,在出現(xiàn)的的下拉欄中選擇對應(yīng)的端口信號名(如 D[0]);然后雙擊對應(yīng)的欄的《new》,在出現(xiàn)的下拉欄中選擇對應(yīng)的端口信號名的期間引腳號。
3.最后存儲這些引腳鎖定信息后,必須再編譯(啟動)一次,才能將引腳鎖定信息編譯進編程下載文件中。此后就可以準(zhǔn)備將編譯好的 SOF 文件下載到試驗系統(tǒng)的FPGA中去了。
引腳鎖定 3.3.6硬件測試
1.首先將下載線把計算機的打印機口與目標(biāo)板(如開發(fā)板或?qū)嶒灠澹┻B接好,打開電源,選擇模式7。
2.打開編輯窗和配置文件。選擇,彈出一個編輯窗。在Mode欄中選擇JTAG,并在選項下的小方框打勾。注意核對下載文件路徑與文件名。如果文件沒有出現(xiàn)或者出錯,單擊左Add file側(cè)按鈕,手動選擇配置文件 clock.sof。
3.最后單擊下載標(biāo)符Start,即進入對目標(biāo)器件 FPGA 的配置下載操作。當(dāng) Progress 顯示100%,以及在底部的處理欄中出現(xiàn) Configuration Succeeded 時,表示編程成功,如圖所示。注意,如果必要時,可再次單擊 Start,直至編程成功。
4.下載完成后,通過硬件測試進一步確定設(shè)計是否達(dá)到所有的技術(shù)指標(biāo),如未達(dá)到,可逐步檢查,哪部分出現(xiàn)問題。如果是代碼出現(xiàn)問題,須修改代碼;若是時序波形圖有問題,須重新設(shè)置。
3.3.7實驗結(jié)果
實驗箱使用模式7,鍵8為復(fù)位按鍵,鍵8為1時正常工作。鍵4設(shè)置小時,鍵7設(shè)置分鐘。
下載成功后,按下鍵8,及使六個LED復(fù)位清零,顯示數(shù)秒的自動計時,可以通過4鍵設(shè)置小時數(shù),7鍵設(shè)置分鐘數(shù)。當(dāng)秒數(shù)滿60則進一位,分鐘數(shù)滿60進一位,當(dāng)顯示為23:59:59時,秒數(shù)在加一則顯示00:00:00,之后從新計時。
四、設(shè)計總結(jié)
通過這次課程設(shè)計,我進一步加深了對電子設(shè)計自動化的了解。并進一步熟練了對QuartusII軟件的操作。在編寫程序的過程中,遇到了很多問題,使我發(fā)現(xiàn)自己以前學(xué)習(xí)上存在的不足。通過與同學(xué)探討和請教老師,終于把問題都解決了,并加深了對數(shù)字時鐘原理和設(shè)計思路的了解。
同時也掌握了做課程設(shè)計的一般流程,為以后的設(shè)計積累了一定的經(jīng)驗。做課程設(shè)計時,先查閱相關(guān)知識,把原理吃透,確定一個大的設(shè)計方向,在按照這個方向分模塊的把要實現(xiàn)的功能用流程圖的形式展示。最后參照每個模塊把輸入和輸出引腳設(shè)定,運用我們所學(xué)的VHDL語言進行編程。總之,通過這次的設(shè)計,進一步了解了EDA技術(shù),收獲很大,對軟件編程、排錯調(diào)試、相關(guān)儀器設(shè)備的使用技能等方面得到較全面的鍛煉和提高。
在此,也感謝康老師的悉心指導(dǎo),使自己學(xué)到了很多東西!
五、附錄
5.1 VHDL源程序
Alert模塊
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY alert IS
PORT(clk:IN STD_LOGIC;
dain:IN STD_LOGIC_VECTOR(6 DOWNTO 0);
speak:OUT STD_LOGIC;
lamp:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END alert;ARCHITECTURE fun OF alert IS
SIGNAL count:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL count1:STD_LOGIC_VECTOR(1 DOWNTO 0);
BEGIN speaker:PROCESS(clk)
BEGIN
--speak<=count1(1);
IF(clk'event and clk='1')THEN
IF(dain=”0000000“)THEN
speak<=count1(1);
IF(count1>=”10“)THEN
count1<=”00“;--count1為三進制加法計數(shù)器
ELSE
count1<=count1+1;--speak<=count1(0);
END IF;
END IF;
END IF;
END PROCESS speaker;lamper:PROCESS(clk)
BEGIN
IF(rising_edge(clk))THEN
IF(count<=”10“)THEN
IF(count=”00“)THEN
lamp<=”001“;--循環(huán)點亮三只燈
ELSIF(count=”01“)THEN
lamp<=”010“;
ELSIF(count=”10“)THEN
lamp<=”100“;
END IF;
count<=count+1;
ELSE
count<=”00“;
END IF;
END IF;
END PROCESS lamper;END fun;Hour模塊
LIBRARY IEEE;use IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY hour IS
PORT(clk,reset:IN STD_LOGIC;
daout:out STD_LOGIC_VECTOR(5 DOWNTO 0));END ENTITY hour;ARCHITECTURE fun OF hour IS SIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0);
BEGIN
daout<=count;
PROCESS(clk,reset)
BEGIN
IF(reset='0')THEN count<=”000000“;--若reset=0,則異步清零
ELSIF(clk'event and clk='1')THEN
--否則,若clk上升沿到
IF(count(3 DOWNTO 0)=”1001“)THEN--若個位計時恰好到”1001“即9
IF(count<16#23#)THEN
--23進制
count<=count+7;
--若到23D則
else
count<=”000000“;
--復(fù)0
END IF;
ELSIF(count<16#23#)THEN
--若未到23D,則count進1
count<=count+1;
ELSE
--否則清零
count<=”000000“;
END IF;
--END IF(count(3 DOWNTO 0)=”1001“)
END IF;
--END IF(reset='0')
END PROCESS;END fun;Minute模塊
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY minute IS
PORT(clk,clk1,reset,sethour:IN STD_LOGIC;
enhour:OUT STD_LOGIC;
daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END ENTITY minute;ARCHITECTURE fun OF minute IS SIGNAL count :STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL enhour_1, enhour_2: STD_LOGIC;--enmin_1為59分時的進位信號 BEGIN
--enmin_2由clk調(diào)制后的手動調(diào)時脈沖信號串
daout<=count;
enhour_2<=(sethour and clk1);--sethour為手動調(diào)時控制信號,高電平有效
enhour<=(enhour_1 or enhour_2);PROCESS(clk,reset,sethour)
BEGIN
IF(reset='0')THEN--若reset為0,則異步清零
count<=”0000000“;
ELSIF(clk'event and clk='1')THEN--否則,若clk上升沿到
IF(count(3 DOWNTO 0)=”1001“)THEN--若個位計時恰好到”1001“即9
IF(count <16#60#)THEN--又若count小于16#60#,即60
IF(count=”1011001“)THEN--又若已到59D
enhour_1<='1';--則置進位為1
count<=”0000000“;--count復(fù)0
ELSE
count<=count+7;--若count未到59D,則加7,即作”加6校正“
END IF;--使前面的16#60#的個位轉(zhuǎn)變?yōu)?421BCD的容量
ELSE
count<=”0000000“;--count復(fù)0(有此句,則對無效狀態(tài)電路可自啟動)
END IF;
--END IF(count<16#60#)
ELSIF(count <16#60#)THEN
count<=count+1;--若count<16#60#則count加1
enhour_1<='0' after 100 ns;--沒有發(fā)生進位
ELSE
count<=”0000000“;--否則,若count不小于16#60# count復(fù)0
END IF;--END IF(count(3 DOWNTO 0)=”1001“)
END IF;--END IF(reset='0')
END process;END fun;Second模塊
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY second IS PORT(clk,reset,setmin:STD_LOGIC;
enmin:OUT STD_LOGIC;
daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END ENTITY second;ARCHITECTURE fun OF second IS SIGNAL count:STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL enmin_1,enmin_2:STD_LOGIC;
--enmin_1為59秒時的進位信號
BEGIN
--enmin_2由clk調(diào)制后的手動調(diào)分脈沖信號串
daout<=count;
enmin_2<=(setmin and clk);--setmin為手動調(diào)分控制信號,高電平有效
enmin<=(enmin_1 or enmin_2);--enmin為向分進位信號
PROCESS(clk,reset,setmin)
BEGIN
IF(reset='0')THEN count<=”0000000“;--若reset為0,則異步清零
ELSIF(clk 'event and clk='1')then--否則,若clk上升沿到
IF(count(3 downto 0)=”1001“)then
--若個位計時恰好到”1001“即9
IF(count<16#60#)then--又若count小于16#60#,即60H IF(count=”1011001“)then
--又若已到59D
enmin_1<='1';count<=”0000000“;--則置進位為1及count復(fù)0
ELSE
--未到59D
count<=count+7;--則加7,而+7=+1+6,即作”加6校正“
END IF;
ELSE
--若count不小于16#60#(即count等于或大于16#60#)
count<=”0000000“;
--count復(fù)0
END IF;
--END IF(count<16#60#)
ELSIF(count<16#60#)then--若個位計數(shù)未到”1001“則轉(zhuǎn)此句再判
count<=count+1;
--若count<16#60#則count加1
enmin_1<='0'after 100 ns;--沒有發(fā)生進位
ELSE
--否則,若count不小于16#60#
count<=”0000000“;
--則count復(fù)0
END IF;
--END IF(count(3 DOWNTO 0)=”1001")
END IF;
--END IF(reset='0')END PROCESS;END fun;5.2配置符號圖
第四篇:EDA課程設(shè)計時鐘
EDA
課程設(shè)計
姓名:
學(xué)號:
班級:自動化
設(shè)計題目
多功能數(shù)字鐘電路設(shè)計
設(shè)計任務(wù)及要求
多功能數(shù)字鐘應(yīng)該具有的功能有:顯示時—分—秒、小時和分鐘可調(diào)等基本功能。整個鐘表的工作應(yīng)該是在1Hz信號的作用下進行,這樣每來一個時鐘信號,秒增加1秒,當(dāng)秒從59秒跳轉(zhuǎn)到00秒時,分鐘增加1分,同時當(dāng)分鐘從59分跳轉(zhuǎn)到00分時,小時增加1小時,小時的范圍為0~23時。
在實驗中為了顯示的方便,由于分鐘和秒鐘顯示的范圍都是從0~59,所以可以用一個3位的二進制碼顯示十位,用一個四位的二進制碼(BCD碼)顯示個位,對于小時因為他的范圍是從0~23,所以可以用一個2位的二進制碼顯示十位,用一個4位的二進制碼(BCD碼)顯示個位。
實驗中由于七段碼管是掃描的方式
顯示,所以雖然時鐘需要的是1Hz時鐘信號,但是掃描需要一個比較高頻率的信號,因此為了得到準(zhǔn)確的1Hz信號,必須對輸入的系統(tǒng)時鐘50Mhz進行分頻。
調(diào)整時間的按鍵用按鍵模塊的S1和S2,S1調(diào)節(jié)小時,每按下一次,小時增加一個小時;S2調(diào)整分鐘,每按下一次,分鐘增加一分鐘。另外用S8按鍵作為系統(tǒng)時鐘復(fù)位,復(fù)位后全部顯示00—00—00。
三.基于Verilog
HDL語言的電路設(shè)計、仿真與綜合(一)頂層模塊
本程序采用結(jié)構(gòu)化設(shè)計方法,將其分為彼此獨立又有一定聯(lián)系的三個模塊,如圖1所示:
圖1:頂層結(jié)構(gòu)框圖
(二)子模塊
1.分頻器
分頻器的作用是對50Mhz的系統(tǒng)時鐘信號進行分頻,得到頻率為1000hz的信號,作為顯示器的輸入信號。
源程序如下:
module
fenpin(input
CP,output
CPout);
reg
CPout;
reg
[31:0]
Cout;
reg
CP_En;
always
@(posedge
CP)
//將50MHz分頻為1kHz
begin
Cout
<=
(Cout
==
32'd50000)
?
32'd0
:
(Cout
+
32'd1);
CP_En
<=
(Cout
==
32'd50000)
?
1'd1
:
1'd0;
CPout
<=
CP_En;
end
endmodule
功能仿真波形如圖2所示(以五分頻為例):
2.控制器和計數(shù)器
控制器的作用是,調(diào)整小時和分鐘的值,并能實現(xiàn)清零功能。計數(shù)器的作用是實現(xiàn)分鐘和秒鐘滿60進1,小時則由23跳到00。當(dāng)?shù)竭_(dá)59分55秒的時候,LED燈會閃爍來進行報時。因為控制器和計數(shù)器的驅(qū)動信號頻率均為1Hz,故從分頻器輸出的信號進入控制器后,要進行二次分頻,由1Khz變?yōu)?Hz。
if(Clk_En)
begin
if(R1==1)
begin
if(Hour<24)
Hour=Hour+1;
if(Hour==24)
begin
Hour=0;
end
R1=0;
end
if(R2==1)
begin
if(Minute<60)
Minute=Minute+1;
if(Minute==60)
begin
Minute=0;
if(Hour<24)
Hour=Hour+1;
if(Hour==24)
begin
Hour=0;
End
end
R2=0;
end
if(Second<60)
Second=Second+1;
if(Second==60)
begin
Second=0;
if(Minute<60)
Minute=Minute+1;
源程序如下:
module
kongzhiqi(CPout,S1,S2,RET,Hour,Minute,Second,LED);
input
CPout,S1,S2,RET;
output
[5:0]
Hour;
output
[5:0]
Minute;
output
[5:0]
Second;
output
LED;
reg
[5:0]
Hour;
reg
[5:0]
Minute;
reg
[5:0]
Second;
reg
R1;
reg
R2,R8,LED;
reg
[10:0]
Cout;
reg
Clk_En;
always@(posedge
CPout)
begin
if(S1==0)
begin
R1=1;
end
if(S2==0)
begin
R2=1;
end
if(RET==0)
begin
R8=1;
end
Cout=(Cout==32'd1000)?32'd0:(Cout
+
32'd1);
Clk_En=(Cout==32'd1000)?1'd1:1'd0;
LED=1;
end
else
LED=0;
if(R8==1)//清零
begin
Hour=0;
Minute=0;
Second=0;
R8=0;
end
end
end
endmod
if(Minute==60)
begin
Minute=0;
if(Hour<24)
Hour=Hour+1;
if(Hour==24)
begin
Hour=0;
end
end
end
if((Minute==59)&&(Second>55))
begin
if(LED==1)
LED=0;
else
功能仿真波形如圖3所示:
3.顯示器
顯示器的作用是將時—分—秒的值在數(shù)碼管上依次顯示出來。從分頻器輸出的1Khz的信號作為數(shù)碼管的掃描信號。SEL
表示三個數(shù)碼管選擇位,它的取值表示八個數(shù)碼管,從左至右依次是111~000。LEDGA表示七段數(shù)碼管,它的取值決定特定位數(shù)上顯示的數(shù)字。
源程序如下:
4'b0000:
Led
=
7'b0111_111;
4'b0001:
Led
=
7'b0000_110;
4'b0010:
Led
=
7'b1011_011;
4'b0011:
Led
=
7'b1001_111;
4'b0100:
Led
=
7'b1100_110;
4'b0101:
Led
=
7'b1101_101;
4'b0110:
Led
=
7'b1111_101;
4'b0111:
Led
=
7'b0000_111;
4'b1000:
Led
=
7'b1111_111;
4'b1001:
Led
=
7'b1101_111;
default:
Led
=
7'b0000_000;
endcase
if(SEL==3'b100)
Led=7'b1000_000;
if(SEL==3'b011)
case(shiwei2)
4'b0000:
Led
=
7'b0111_111;
4'b0001:
Led
=
7'b0000_110;
4'b0010:
Led
=
7'b1011_011;
4'b0011:
Led
=
7'b1001_111;
4'b0100:
Led
=
7'b1100_110;
module
xianshi(CPout,Hour,Minute,Second,SEL,LEDAG);
input
CPout;
input
Hour,Minute,Second;
output
SEL,LEDAG;
reg
[2:0]
SEL;
reg
[6:0]
Led;
reg
[3:0]
shi1,ge1,shi2,ge2,shi3,ge3;
always
@(posedge
CPout)
begin
shiwei1=Hour/10;
gewei1=Hour%10;
shiwei2=Minute/10;
gewei2=Minute%10;
shiwei3=Second/10;
gewei3=Second%10;
if(SEL==3'b110)
case(shiwei1)
4'b0000:
Led
=
7'b0111_111;
4'b0001:
Led
=
7'b0000_110;
4'b0010:
Led
=
7'b1011_011;
4'b0011:
Led
=
7'b1001_111;
4'b0100:
Led
=
7'b1100_110;
4'b0101:
Led
=
7'b1101_101;
4'b0110:
Led
=
7'b1111_101;
4'b0111:
Led
=
7'b0000_111;
4'b1000:
Led
=
7'b1111_111;
4'b1001:
Led
=
7'b1101_111;
default:
Led
=
7'b0000_000;
endcase
if(SEL==3'b101)
case(gewei1)
default:
Led
=
7'b0000_000;
endcase
if(SEL==3'b111)
case(gewei3)
4'b0000:
Led
=
7'b0111_111;
4'b0001:
Led
=
7'b0000_110;
4'b0010:
Led
=
7'b1011_011;
4'b0011:
Led
=
7'b1001_111;
4'b0100:
Led
=
7'b1100_110;
4'b0101:
Led
=
7'b1101_101;
4'b0110:
Led
=
7'b1111_101;
4'b0111:
Led
=
7'b0000_111;
4'b1000:
Led
=
7'b1111_111;
4'b1001:
Led
=
7'b1101_111;
default:
Led
=
7'b0000_000;
endcase
SEL
=
SEL
+
3'd1;
end
assign
LEDAG=Led;
endmodule
4'b0101:
Led
=
7'b1101_101;
4'b0110:
Led
=
7'b1111_101;
4'b0111:
Led
=
7'b0000_111;
4'b1000:
Led
=
7'b1111_111;
4'b1001:
Led
=
7'b1101_111;
default:
Led
=
7'b0000_000;
endcase
if(SEL==3'b010)
case(gewei2)
4'b0000:
Led
=
7'b0111_111;
4'b0001:
Led
=
7'b0000_110;
4'b0010:
Led
=
7'b1011_011;
4'b0011:
Led
=
7'b1001_111;
4'b0100:
Led
=
7'b1100_110;
4'b0101:
Led
=
7'b1101_101;
4'b0110:
Led
=
7'b1111_101;
4'b0111:
Led
=
7'b0000_111;
4'b1000:
Led
=
7'b1111_111;
4'b1001:
Led
=
7'b1101_111;
default:
Led
=
7'b0000_000;
endcase
if(SEL==3'b001)
Led=7'b1000_000;
if(SEL==3'b000)
case(shiwei3)
4'b0000:
Led
=
7'b0111_111;
4'b0001:
Led
=
7'b0000_110;
4'b0010:
Led
=
7'b1011_011;
4'b0011:
Led
=
7'b1001_111;
4'b0100:
Led
=
7'b1100_110;
4'b0101:
Led
=
7'b1101_101;
4'b0110:
Led
=
7'b1111_101;
4'b0111:
Led
=
7'b0000_111;
4'b1000:
Led
=
7'b1111_111;
4'b1001:
Led
=
7'b1101_111;
總結(jié)體會
這次課程設(shè)計雖然只有短短的四天,但我的收獲卻很大。通過這次實習(xí),我掌握了EDA設(shè)計的基本流程(即設(shè)計輸入—編譯—調(diào)試—仿真—下載),領(lǐng)會了自頂而下結(jié)構(gòu)化設(shè)計的優(yōu)點,并具備了初步的EDA程序設(shè)計能力。
我感覺,這個程序最難的地方在于頂層模塊的設(shè)計,因為頂層模塊需要將各個子模塊按照電路原理有機地結(jié)合起來,這需要扎實的理論功底,而這正是我所欠缺的。相比而言,子模塊的設(shè)計就容易多了,因為Verilog語言和C語言有很多相似之處,只要明白了實驗原理,就不難完成,水平的高下只體現(xiàn)在程序的簡潔與否。Verilog源程序的編寫很容易出現(xiàn)錯誤,這就需要耐心的調(diào)試。因為很多情況下,一長串的錯誤往往是由一個不經(jīng)意的小錯誤引起的。當(dāng)程序?qū)艺{(diào)屢錯的時候,最好和其他同學(xué)溝通交流一下,他們不經(jīng)意的一句話,就可能給我啟發(fā),使問題迎刃而解。
這次實習(xí),給我感觸最深的還是行為態(tài)度問題。人的能力有大有小,但只要端正態(tài)度,不拋棄,不放棄,任何人都能取得令自己滿意的成績。在此,我由衷的感謝在這次課程設(shè)計中給了我巨大幫助的老師和同學(xué)們!
第五篇:數(shù)字時鐘課程設(shè)計
數(shù)字電子技術(shù)課程設(shè)計報告
一、設(shè)計目的
數(shù)字鐘是一種用數(shù)字電路技術(shù)實現(xiàn)時、分、秒計時的裝置,與機械式時鐘相比具有更高的準(zhǔn)確性和直觀性,且無機械裝置,具有更更長的使用壽命,因此得到了廣泛的使用。數(shù)字鐘從原理上講是一種典型的數(shù)字電路,其中包括了組合邏輯電路和時序電路。
因此,我們此次設(shè)計與制做數(shù)字鐘就是為了了解數(shù)字鐘的原理,從而學(xué)會制作數(shù)字鐘.而且通過數(shù)字鐘的制作進一步的了解各種在制作中用到的中小規(guī)模集成電路的作用及實用方法.且由于數(shù)字鐘包括組合邏輯電路和時敘電路.通過它可以進一步學(xué)習(xí)與掌握各種組合邏輯電路與時序電路的原理與使用方法.二、設(shè)計要求
(1)設(shè)計指標(biāo)
① 時間以12小時為一個周期; ② 顯示時、分、秒;
③ 具有校時功能,可以分別對時及分進行單獨校時,使其校正到標(biāo)準(zhǔn)時間; ④ 計時過程具有報時功能,當(dāng)時間到達(dá)整點前10秒進行蜂鳴報時; ⑤ 為了保證計時的穩(wěn)定及準(zhǔn)確須由晶體振蕩器提供表針時間基準(zhǔn)信號。(2)設(shè)計要求
① 畫出電路原理圖(或仿真電路圖); ② 元器件及參數(shù)選擇; ③ 電路仿真與調(diào)試;
④ PCB文件生成與打印輸出。
(3)制作要求
自行裝配和調(diào)試,并能發(fā)現(xiàn)問題和解決問題。
(4)編寫設(shè)計報告
寫出設(shè)計與制作的全過程,附上有關(guān)資料和圖紙,有心得體會。
三、原理框圖
1.?dāng)?shù)字鐘的構(gòu)成
數(shù)字鐘實際上是一個對標(biāo)準(zhǔn)頻率(1HZ)進行計數(shù)的計數(shù)電路。由于計數(shù)的起始時間不可能與標(biāo)準(zhǔn)時間(如北京時間)一致,故需要在電路上加一個校時電路,同時標(biāo)準(zhǔn)的1HZ時間信號必須做到準(zhǔn)確穩(wěn)定。通常使用石英晶體振蕩器電路構(gòu)成數(shù)字鐘。
0 / 12
(a)數(shù)字鐘組成框圖
2.晶體振蕩器電路
晶體振蕩器電路給數(shù)字鐘提供一個頻率穩(wěn)定準(zhǔn)確的32768Hz的方波信號,可保證數(shù)字鐘的走時準(zhǔn)確及穩(wěn)定。不管是指針式的電子鐘還是數(shù)字顯示的電子鐘都使用了晶體振蕩器電路。一般輸出為方波的數(shù)字式晶體振蕩器電路通常有兩類,一類是用TTL門電路構(gòu)成;另一類是通過CMOS非門構(gòu)成的電路,本次設(shè)計采用了后一種。如圖(b)所示,由CMOS非門U1與晶體、電容和電阻構(gòu)成晶體振蕩器電路,U2實現(xiàn)整形功能,將振蕩器輸出的近似于正弦波的波形轉(zhuǎn)換為較理想的方波。輸出反饋電阻R1為非門提供偏置,使電路工作于放大區(qū)域,即非門的功能近似于一個高增益的反相放大器。電容C1、C2與晶體構(gòu)成一個諧振型網(wǎng)絡(luò),完成對振蕩頻率的控制功能,同時提供了一個180度相移,從而和非門構(gòu)成一個正反饋網(wǎng)絡(luò),實現(xiàn)了振蕩器的功能。由于晶體具有較高的頻率穩(wěn)定性及準(zhǔn)確性,從而保證了輸出頻率的穩(wěn)定和準(zhǔn)確。
(b)CMOS 晶體振蕩器(仿真電路)/ 12 3.時間記數(shù)電路
一般采用10進制計數(shù)器如74HC290、74HC390等來實現(xiàn)時間計數(shù)單元的計數(shù)功能。本次設(shè)計中選擇74HC390。由其內(nèi)部邏輯框圖可知,其為雙2-5-10異步計數(shù)器,并每一計數(shù)器均有一個異步清零端(高電平有效)。
秒個位計數(shù)單元為10進制計數(shù)器,無需進制轉(zhuǎn)換,只需將QA與CPB(下降沿有效)相連即可。CPA(下降沒效)與1HZ秒輸入信號相連,Q3可作為向上的進位信號與十位計數(shù)單元的CPA相連。
秒十位計數(shù)單元為6進制計數(shù)器,需要進制轉(zhuǎn)換。將10進制計數(shù)器轉(zhuǎn)換為6進制計數(shù)器的電路連接方法如圖 2.4所示,其中Q2可作為向上的進位信號與分個位的計數(shù)單元的CPA相連。
十進制-六進制轉(zhuǎn)換電路
分個位和分十位計數(shù)單元電路結(jié)構(gòu)分別與秒個位和秒十位計數(shù)單元完全相同,只不過分個位計數(shù)單元的Q3作為向上的進位信號應(yīng)與分十位計數(shù)單元的CPA相連,分十位計數(shù)單元的Q2作為向上的進位信號應(yīng)與時個位計數(shù)單元的CPA相連。
時個位計數(shù)單元電路結(jié)構(gòu)仍與秒或個位計數(shù)單元相同,但是要求,整個時計數(shù)單元應(yīng)為12進制計數(shù)器,不是10的整數(shù)倍,因此需將個位和十位計數(shù)單元合并為一個整體才能進行12進制轉(zhuǎn)換。利用1片74HC390實現(xiàn)12進制計數(shù)功能的電路如圖(d)所示。
(d)十二進制電路
另外,圖(d)所示電路中,尚余-2進制計數(shù)單元,正好可作為分頻器2HZ輸出信號轉(zhuǎn)化為1HZ信號之用。
4.譯碼驅(qū)動及顯示單元電路
選擇CD4511作為顯示譯碼電路;選擇LED數(shù)碼管作為顯示單元電路。由CD4511把輸進來的二進制信號翻譯成十進制數(shù)字,再由數(shù)碼管顯示出來。這里的LED數(shù)碼管是采用共陰的方法連接的。
計數(shù)器實現(xiàn)了對時間的累計并以8421BCD碼的形式輸送到CD4511芯片,再由451/ 12 芯片把BCD碼轉(zhuǎn)變?yōu)槭M制數(shù)碼送到數(shù)碼管中顯示出來。
5.校時電路
數(shù)字鐘應(yīng)具有分校正和時校正功能,因此,應(yīng)截斷分個位和時個位的直接計數(shù)通路,并采用正常計時信號與校正信號可以隨時切換的電路接入其中。即為用COMS與或非門實現(xiàn)的時或分校時電路,In1端與低位的進位信號相連;In2端與校正信號相連,校正信號可直接取自分頻器產(chǎn)生的1HZ或2HZ(不可太高或太低)信號;輸出端則與分或時個位計時輸入端相連。當(dāng)開關(guān)打向下時,因為校正信號和0相與的輸出為0,而開關(guān)的另一端接高電平,正常輸入信號可以順利通過與或門,故校時電路處于正常計時狀態(tài);當(dāng)開關(guān)打向上時,情況正好與上述相反,這時校時電路處于校時狀態(tài)。
實際使用時,因為電路開關(guān)存在抖動問題,所以一般會接一個RS觸發(fā)器構(gòu)成開關(guān)消抖動電路,所以整個較時電路就如圖(f)。
(f)帶有消抖電路的校正電路
6.整點報時電路
電路應(yīng)在整點前10秒鐘內(nèi)開始整點報時,即當(dāng)時間在59分50秒到59分59秒期間時,報時電路報時控制信號。
當(dāng)時間在59分50秒到59分59秒期間時,分十位、分個位和秒十位均保持不變,分別為5、9和5,因此可將分計數(shù)器十位的QC和QA、個位的QD和QA及秒計數(shù)器十位的QC和QA相與,從而產(chǎn)生報時控制信號。
報時電路可選74HC30來構(gòu)成。74HC30為8輸入與非門。/ 12 說明:當(dāng)時間在59分50秒到59分59秒期間時 分十位、分個 位和秒十位均保持不變,分別為5,9和5;因此,可以將分計數(shù)器十位的Qc和QA,個位的QD和QA及秒計數(shù)器十位的QC和QA相與,從而產(chǎn)生報時控制信號。IO1分計數(shù)器十位的Qc和QAIO2U11VCCIO35VVCCX182345V分計數(shù)器個位的QD和QAIO456114V_0.5WIO512秒計數(shù)器十位的QC和QAIO674HC30D數(shù)字鐘設(shè)計-整點報時電路部分
四、元器件
1.四連面包板1塊(編號A45)2.鑷子1把 3.剪刀1把
4.共陰八段數(shù)碼管6個 5.網(wǎng)絡(luò)線2米/人 6.CD4511集成塊6塊 7.CD4060集成塊1塊 8.74HC390集成塊3塊 9.74HC51集成塊1塊 10.74HC00集成塊4塊 11.74HC30集成塊1塊 12.10MΩ電阻5個 13.500Ω電阻14個 14.30p電容2個
15.32.768k時鐘晶體1個 16.蜂鳴器10個(每班)1)芯片連接圖
1)74HC00D
2)CD4511 / 12
3)74HC390D
4)74HC51D
2.面包板的介紹
面包板一塊總共由五部分組成,一豎四橫,面包板本身就是一種免焊電板。面包板的樣式是:
/ 12 面包板的注意事項:
1. 面包板旁一般附有香蕉插座,用來輸入電壓、信號及接地。2. 上圖中連著的黑線表示插孔是相通的。
3. 拉線時,盡量將線緊貼面包板,把線成直角,避免交叉,也不要跨越元件。4. 面包板使用久后,有時插孔間連接銅線會發(fā)生脫落現(xiàn)象,此時要將此排插孔做記號。并不再使用。
五、各功能塊電路圖
數(shù)字鐘從原理上講是一種典型的數(shù)字電路,可以由許多中小規(guī)模集成電路組成,所以可以分成許多獨立的電路。
(一)六進制電路
由74HC390、7400、數(shù)碼管與4511組成,電路如圖一。
U1A3123U2A12Com74HC00D74HC00DU5SEVEN_SEG_COM_KABCDEFGU3AV1 32Hz 5V141INA1INB21CLR31QA1QB1QC1QD5677126U413DADBDCDD5OAOBOCODOE1211109151474HC390D43~ELOF~BI~LTOGVCC5V4511BD將十進制計數(shù)器轉(zhuǎn)換為六進制的連接方法
(二)十進制電路
由74HC390、7400、數(shù)碼管與4511組成,電路如圖二。/ 12 U4A3126U4B4574HC00D74HC00DComU3SEVEN_SEG_COM_KU1AV1 60Hz 5V141INA1INB21CLR31QA1QB1QC1QD5677126U213DADBDCDD5OAOBOCODOE12111091514ABCDEFGVCC5V74HC390D43~ELOF~BIOG~LT4511BD十進制接法測試仿真電路
(三)六十進制電路
由兩個數(shù)碼管、兩4511、一個74HC390與一個7400芯片組成,電路如圖三。
(四)雙六十進制電路
由2個六十進制連接而成,把分個位的輸入信號與秒十位的Qc相連,使其產(chǎn)生進位,電路圖如圖四。/ 12
ComComSEVEN_SEG_COM_KU1B6453U1A12U4SEVEN_SEG_COM_KU7U11BABCDEFG64513DADBDCDD5OAOBOCODOE~ELOF~BI~LTOG1211109151421CLR141INA1INB3U10A12ABCDEFG74HC00D74HC00DU3B15122INA2INB142CLR132QA2QB2QC2QD11109U2712674HC00D74HC00DU8A31QA1QB1QC1QD5677126U913DADBDCDD5OAOBOCODOE12111091514VCC5V74HC390D43U1C891011U1D12134511BD74HC390DComVCCU643~ELOF~BI~LTOG5VSEVEN_SEG_COM_K74HC00D74HC00DABCDEFG84511BDComU15C91011U16DSEVEN_SEG_COM_K1213U14U3A131INA1INB21CLR1QA1QB1QC1QD5677126U513DADBDCDD5OAOBOCODOE1211109151474HC00D74HC00DU12B15122INA2INB142CLR132QA2QB2QC2QD111097126U13DADBDCDD5OAOBOCODOEABCDEFG***14V1 100kHz 5V474HC390D43~ELOF~BI~LTOGVCC74HC390D5V43~ELOF~BI~LTOG4511BD4511BD
(五)時間計數(shù)電路
由1個十二進制電路、2個六十進制電路組成,因上面已有一個雙六十電路,只要把它與十二進制電路相連即可,詳細(xì)電路見圖五。
ComComComComComComU1SEVEN_SEG_COM_KU2SEVEN_SEG_COM_KU4SEVEN_SEG_COM_KU3SEVEN_SEG_COM_KU5SEVEN_SEG_COM_KU6SEVEN_SEG_COM_KABCDEFGABCDEFGABCDEFGVCCVCCABCDEFGABCDEFGABCDEFG5V***45VVCCVCC***49***45V***3121110***01514145V9VCCOG995V99OAOBODOAOBODOAOBODOEOEOCOCOCOFOFOEOGOAOBODOAOBODOAOBODOEOEOCOCOCOFOFOEOGOG~LT~LT~EL~EL~BI~BI~ELDADCDDDADCDDDADC~LT~LT~LTDBDB~EL~EL~EL~BI~BIDADCDDDADCDDDADCDBDB3DBDD~BI5V73DBDD4511BD54511BD******12643U23CU25A74HC00D***8U21A74HC00D13111038U20C74HC00D3U19A74HC00D131110974HC00D9356356772QB1QD2QD2QD1QB1QC2QB2QC2QB2QC1QB1QA2QA2QA1QA1QC1QD2QA2QC2QD61QB2INA1CLR2CLR2CLR1INA1INB2INA2INB2INA2INB1INA1INA1INB74HC00D161CLR74HC390D6151INB74HC00D111CLRU26B74HC390D74HC390N1174HC390N74HC390DU20B1574HC00D1262INB74HC00D74HC00D***242V1 1000Hz 5V時,分,秒計時電路圖
(六)校正電路
由74CH51D、74HC00D與電阻組成,校正電路有分校正和時校正兩部分,電路如圖六。/ 12
142CLRU13AU16B1QA1QC1QDU24DU22BU14AU17BU20DU15AU18B74HC390N43~BI~LT4511BDOGU7U8OFU10VCC4511BDOGU9U114511BDOFU124511BD1010921921254***254IO1VCC正常輸入信號5V校正信號IO2R1U2C9108小時校正電路J110Mohm74HC00D注意:分校時時,不會進位到小時。U11111213910U2DKey = A12R210MohmIO313U2A8123時計數(shù)器IO574HC00D1123674HC00D正常輸入信號校正信號IO4R3U3A10Mohm12U2B456分計數(shù)器IO64574HC00D74HC51D3J274HC00DKey = B分鐘校正電路分校正時鎖定小時信號輸入R410MohmU3B456圖中采用基本RS觸發(fā)器構(gòu)成開關(guān)消抖動電路,其中與非門選用74HC00;對J1和J2,因為校正信號與0相與為0,而開關(guān)的另一端接高電平,正常輸入信號可以順利通過與或門,故校時電路處于正常計時狀態(tài),當(dāng)開關(guān)打向上時,情況正好與上述相反,這時電路處于校時狀態(tài)。74HC00D數(shù)字鐘設(shè)計-校時電路部分
(七)晶體振蕩電路
由晶體與2個30pF電容、1個4060、一個10兆的電阻組成,芯片3腳輸出2Hz的方波信號,電路如圖七。
(八)整點報時電路
由74HC30D和蜂鳴器組成,當(dāng)時間在59:50到59:59時,蜂鳴報時,電路如圖八。/ 12 說明:當(dāng)時間在59分50秒到59分59秒期間時 分十位、分個 位和秒十位均保持不變,分別為5,9和5;因此,可以將分計數(shù)器十位的Qc和QA,個位的QD和QA及秒計數(shù)器十位的QC和QA相與,從而產(chǎn)生報時控制信號。IO1分計數(shù)器十位的Qc和QAIO2U11VCCIO35VVCCX182345V分計數(shù)器個位的QD和QAIO456114V_0.5WIO512秒計數(shù)器十位的QC和QAIO674HC30D數(shù)字鐘設(shè)計-整點報時電路部分
六、總接線元件布局簡圖
整個數(shù)字鐘由時間計數(shù)電路、晶體振蕩電路、校正電路、整點報時電路組成。
其中以校正電路代替時間計數(shù)電路中的時、分、秒之間的進位,當(dāng)校時電路處于正常輸入信號時,時間計數(shù)電路正常計時,但當(dāng)分校正時,其不會產(chǎn)生向時進位,而分與時的校位是分開的,而校正電路也是一個獨立的電路。
電路的信號輸入由晶振電路產(chǎn)生,并輸入各電路。簡圖如圖九。
七、芯片連接總圖
因仿真與實際元件上的差異,所以在原有的簡圖的基礎(chǔ)上,又按實際布局畫了這張按實際芯片布局的接線圖,如圖十。
八、總結(jié)
1. 實驗過程中遇到的問題及解決方法
① 面包板測試
測試面包板各觸點是否接通。
② 七段顯示器與七段譯碼器的測量 / 12 把顯示器與CD4511相連,第一次接時,數(shù)碼管完全沒有顯示數(shù)字,檢查后發(fā)現(xiàn)是數(shù)碼管未接地而造成的,接地后發(fā)現(xiàn)還是無法正確顯示數(shù)字,用萬用表檢測后,發(fā)現(xiàn)是因芯片引腳有些接觸不良而造成的,所以確認(rèn)芯片是否接觸良好是非常重要的一件事。
③ 時間計數(shù)電路的連接與測試
六進制、十進制都沒有什么大的問題,只是芯片引腳的老問題,只要重新插過芯片就可以解決了。但在六十進制時,按圖接線后發(fā)現(xiàn),顯示器上的數(shù)字總是100進制的,而不是六十進制,檢測后發(fā)現(xiàn)無論是線路的連通還是芯片的接觸都沒有問題。最后,在重對連線時發(fā)現(xiàn)是線路接錯引腳造成的,改過之后,顯示就正常了。
④ 校正電路
因上面程因引腳接錯而造成錯誤,所以校正電路是完全按照仿真圖所連的,在測試時,開始進行時校時時,沒有出現(xiàn)問題,但當(dāng)進行到分校時時,發(fā)現(xiàn)計數(shù)電路的秒電路開始亂跳出錯。因此,電路一定是有地方出錯了,在反復(fù)對照后,發(fā)現(xiàn)是因為在接入校正電路時忘了把秒十位和分個位之間的連線拿掉而造成的,因此,在接線時一定要注意把不要的多余的線拿掉。
2. 設(shè)計體會
通過這次對數(shù)字鐘的設(shè)計與制作,讓我了解了設(shè)計電路的程序,也讓我了解了關(guān)于數(shù)字鐘的原理與設(shè)計理念,要設(shè)計一個電路總要先用仿真仿真成功之后才實際接線的。但是最后的成品卻不一定與仿真時完全一樣,因為,再實際接線中有著各種各樣的條件制約著。而且,在仿真中無法成功的電路接法,在實際中因為芯片本身的特性而能夠成功。所以,在設(shè)計時應(yīng)考慮兩者的差異,從中找出最適合的設(shè)計方法。通過這次學(xué)習(xí),讓我對各種電路都有了大概的了解,所以說,坐而言不如立而行,對于這些電路還是應(yīng)該自己動手實際操作才會有深刻理解。
3. 對設(shè)計的建議
我希望老師在我們動手制作之前應(yīng)先告訴我們一些關(guān)于所做電路的資料、原理,以及如何檢測電路的方法,還有關(guān)于檢測芯片的方法。這樣會有助于我們進一步的進入狀況,完成設(shè)計 / 12