久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

EDA數字秒表的設計

時間:2019-05-12 03:43:32下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《EDA數字秒表的設計》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《EDA數字秒表的設計》。

第一篇:EDA數字秒表的設計

設 計 報 告——數字秒表的設計

EDA 一 設計目的

1.根據設計要求,完成對數字秒表的設計。

2.進一步加強對QuartusⅡ的應用和對Verilog HDL語言的使用。

二 設計內容和要求

1.計時精度應大于1/100S,計時器能顯示1/100S的時間,提供給計時器內部定時的時鐘頻率應大于100Hz,這里選用KHz。

2.計時器的最大計時時間為1小時,為此需要6位的顯示器,顯示的最長時間為59分59.99秒。

3.設置有復位和起/停開關,復位開關用來使計數器清零,做好計時準備。起停開關的使用方法與傳統的機械式計數器相同,即按一下,啟動計時器開始計時,再按一下計時終止。

三 系統設計方案

自頂向下的設計自頂向下的設計方法是數字系統設計中最常用的設計方法.也是基于芯片的系統設計的主要方法。

自頂向下的設計方法利用功能分割手段將設計由上到下 進行層次話和模塊化,及分層次、分模塊進行設計和仿真。功能分割時,將系統功能分解為功能塊,功能塊再分解為邏輯塊,邏輯塊再分解為更少的邏輯塊和電路。如此分割,逐步的將系統細化,將功能逐步的具體化,模塊化。高層次設計進行功能和接口描述,說明模塊的功能和接口,模塊功能的更詳細描述在下一設計層次說明,最底層的設計才涉及具體寄存器和邏輯門電路等實現方式的描述。四 模塊設計 1.分頻模塊

將輸入1KHZ的系統時鐘經過十分頻分為100HZ的單位時鐘。編程原理跟計數器原理相似。

2.定時模塊

采用2個60進制、1個100進制的BCD碼全加器作為定時器,分為分,秒,百分秒,輸入時鐘信號為分頻器輸出信號100HZ時鐘,外界兩個撥碼開關作為清零按鈕和暫停按鈕。

3.位選發生器:

根據顯示的數據位和人眼暫留效應,設計顯示分為分、秒、百分秒位,每位需要2個數碼管進行顯示,因此變化頻率至少為300HZ,為了方便則采用1KHZ,循環碼則從000循環到101。

4.多路選擇器

根據位選信號,輸出對應位顯示的數據。

5.譯碼器

將多路選擇器輸出端的數據對應的轉換為七段二進制數,送給顯示器。

五 頂層原理圖

以上所描述的模塊的程序編寫均在同一工程下,由程序生成的元件也在該工程下,所以可以在該工程下再建一原理圖作為頂層,將所需要的元件按照要求進行連線,加入輸入輸出處端口并改名。包層原理圖,并將原理圖置為頂層文件。

由于我們的程序是寫在一起的,所以本設計的整體原理圖如圖1所示:

qweclkINPUTVCCclkrstkey2instout_wei[7..0]out_duan[7..0]OUTPUTout_wei[7..0]rstINPUTVCCOUTPUTout_duan[7..0]key2INPUTVCC圖1.實驗原理圖

六 系統仿真與引腳分配

本實驗結果的仿真圖與引腳分配如下圖2

引腳分配

實驗原理圖

圖2.實驗結果仿真圖與引腳分配

七 器件編程與硬件下載

1.在Quartus軟件中為頂層文件選擇好芯片類型,選擇引腳后進行編譯。

2.將實驗箱端口與計算機相應端口連接,檢測試驗箱是否可以使用,經檢測無誤后,關閉試驗箱,將主芯片標號對應頂層文件相應引腳標號連線到相應器件處。即輸入時鐘信號端接試驗箱時鐘發生電路CLK輸出端(用50MHz信號),啟動新號段與歸零信號端分別接兩個撥碼開關,輸出端count[2..0]分別接3/8譯碼器的SEL2—SEL0端,輸出a,b,c,d,e,f,g,h端接顯示譯碼器的相應輸入端,連接好線后打開試驗箱電源,將設計好的程序下載到試驗箱的芯片上即可測試功能。八 總結及心得

1.總結

通過這次課程設計讓我對EDA這門課有了更深刻的了解,對設計過程中困難重重現總結如: 在程序編寫時,先要在心中規劃一個大概流程,然后編寫,經過與其他同學多次合作修改最終編譯而成,在如何編寫程序方面收獲頗多;

在往開發板上導程序的時候,雖然出現了幾次錯誤,但是只要有耐心,就能獲得成功。2.心得體會

這次EDA課程設計,可以說是苦多于甜,但是可以學的到很多很多的東西,同時不僅可以鞏固以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次設計,進一步加深了對EDA的了解,讓我對它有了更加濃厚的興趣。特別是當程序編寫調試成功時,心里特別的開心。但在編寫時,有錯誤,在細心的檢查下,終于找出了錯誤和警告,排除困難后,程序編譯就通過了,心里終于舒了一口氣。在波形仿真時,也遇到了一點困難,想要的結果不能在波形上得到正確的顯示。

通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時在設計的過程中發現了自己的不足之處,對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。

總的來說,這次設計的數字秒表還是比較成功的,在設計中遇到了很多問題,最后在同學的幫助下,終于游逆而解,有點小小的成就感,終于覺得平時所學的知識有了實用的價值,達到了理論與實際相結合的目的,不僅學到了不少知識,而且鍛煉了自己的能力,使自己對以后的路有了更加清楚的認識,同時,對未來有了更多的信心。最后,對給過我幫助的所有同學再次表示忠心的感謝!九 設計程序如下:

module qwe(clk,out_wei,out_duan,rst,key2);//key2==27pin input rst;input clk;input key2;output [7:0]out_wei;output [7:0]out_duan;reg [7:0]out_wei=8'b00000000;reg [7:0]out_duan=8'b00000011;//a b c d e f g dp reg [4:0]count;reg [3:0]count1;reg [14:0]count2;reg [7:0]sec_l=8'b00000011;reg [7:0]sec_h=8'b00000011;reg [7:0]fen_l=8'b00000011;reg [7:0]fen_h=8'b00000011;reg [7:0]msec_l=8'b00000011;reg [7:0]msec_h=8'b00000011;reg [3:0]s_1=0;reg [3:0]s_2=0;reg [3:0]s_3=0;reg [3:0]s_4=0;reg [3:0]s_5=0;reg [3:0]s_6=0;reg clk_out;reg pause;//信號

always@(posedge clk)begin if(count2==25000)

count2<=0;

clk_out<=~clk_out;end else count2<=count2+1;end always@(posedge clk_out)begin count<=count+1'b1;case(count)

:begin

end

3:begin

end

6:begin

//zero at first //fenpin begin //one of thousand secend 25000

//scan

out_wei<=8'b11111110;

out_duan<=msec_l;

//out_wei<=8'b11111011;//out_duan<=8'b00000100;//out_wei<=8'b11011111;//out_duan<=8'b00000100;out_wei<=8'b11111101;out_duan<=msec_h;

//out_wei<=8'b11111011;//out_duan<=8'b00000100;//out_wei<=8'b11011111;//out_duan<=8'b00000100;

out_wei<=8'b11110111;out_duan<=sec_l;

//out_wei<=8'b11111011;//out_duan<=8'b00000100;//out_wei<=8'b11011111;//out_duan<=8'b00000100;

end

9:begin

out_wei<=8'b11101111;

out_duan<=sec_h;

//out_wei<=8'b11111011;

//out_duan<=8'b00000100;

//out_wei<=8'b11011111;

//out_duan<=8'b00000100;

end

12:begin

out_wei<=8'b10111111;

out_duan<=fen_l;

//out_wei<=8'b11111011;

//out_duan<=8'b00000100;

//out_wei<=8'b11011111;

//out_duan<=8'b00000100;

end

15:begin

out_wei<=8'b01111111;

out_duan<=fen_h;

//out_wei<=8'b11111011;

//out_duan<=8'b00000100;

//out_wei<=8'b11011111;

//out_duan<=8'b00000100;

end

18:count<=0;endcase end

always@(negedge key2)begin

pause<=~pause;end

always@(posedge clk_out or negedge rst)begin //minite secend if(!rst)begin

s_1<=0;

s_2<=0;

s_3<=0;

s_4<=0;

s_5<=0;

s_6<=0;end else if(count1==10)begin //if 1s l+1

count1<=0;

if(s_6==9)begin

s_6<=0;

if(s_5==9)begin

s_5<=0;

if(s_1==9)begin

s_1<=0;

if(s_2==5)begin

s_2<=0;

if(s_3==9)begin

s_3<=0;

if(s_4==5)

s_4<=0;

else s_4<=s_4+1;

end else s_3<=s_3+1;

end else s_2<=s_2+1;

end else s_1<=s_1+1;

end else s_5<=s_5+1;

end else s_6<=s_6+1;

end

else if(pause==1)begin

count1<=count1+1;

end end //這下面全部是掃描顯示用的。

always@(s_1 or s_2 or s_3 or s_4 or s_5 or s_6)begin

case(s_1)

0:sec_l=8'b11000000;

1:sec_l=8'b11111001;

2:sec_l=8'b10100100;

3:sec_l=8'b10110000;

4:sec_l=8'b10011001;

5:sec_l=8'b10010010;

6:sec_l=8'b10000010;

7:sec_l=8'b11111000;

8:sec_l=8'b10000000;

9:sec_l=8'b10010000;

default:sec_l=1'bx;

endcase

case(s_2)

0:sec_h=8'b11000000;

1:sec_h=8'b11111001;

2:sec_h=8'b10100100;

3:sec_h=8'b10110000;

4:sec_h=8'b10011001;

5:sec_h=8'b10010010;

6:sec_h=8'b10000010;

default:sec_h=1'bx;

endcase

case(s_3)

0:fen_l=8'b11000000;

1:fen_l=8'b11111001;

2:fen_l=8'b10100100;

3:fen_l=8'b10110000;

4:fen_l=8'b10011001;

5:fen_l=8'b01001001;

6:fen_l=8'b10010010;

7:fen_l=8'b10000010;

8:fen_l=8'b10000000;

9:fen_l=8'b10010000;

default:fen_l=1'bx;

endcase

case(s_4)

0:fen_h=8'b11000000;

1:fen_h=8'b11111001;

2:fen_h=8'b10100100;

3:fen_h=8'b10110000;

4:fen_h=8'b10011001;

5:fen_h=8'b01001001;

6:fen_h=8'b10010010;

default:fen_h=1'bx;

endcase

case(s_6)

0:msec_l=8'b11000000;

1:msec_l=8'b11111001;

2:msec_l=8'b10100100;

3:msec_l=8'b10110000;

4:msec_l=8'b10011001;

5:msec_l=8'b10011001;

6:msec_l=8'b10010010;

7:msec_l=8'b10000010;

8:msec_l=8'b10000000;

9:msec_l=8'b10010000;

default:msec_l=1'bx;

endcase

case(s_5)

0:msec_h=8'b11000000;

1:msec_h=8'b11111001;

2:msec_h=8'b10100100;

3:msec_h=8'b10110000;

4:msec_h=8'b10011001;

5:msec_h=8'b10011001;

6:msec_h=8'b10010010;

7:msec_h=8'b10000010;

8:msec_h=8'b10000000;

9:msec_h=8'b10010000;

default:msec_h=1'bx;

endcase end endmodule

第二篇:EDA課程設計 數字時鐘

EDA

課程設計報告

一·設計任務

使用硬件描述語言,在CPLD/FPGA上實現一個多功能數字鐘。

二·設計要求

除按鍵、LED、揚聲器、時鐘信號外,整個數字鐘的功能要求在一塊芯片上實現。

a)具有時,分,秒,計數顯示功能,以24小時循環計時; b)具有時間清零功能;

c)具有小時、分鐘和秒鐘調整功能(個位和十位分開調或合起來調)。

d)具有鬧鐘功能,能預設鬧鐘時間,精確到秒。

整個數字鐘只設一個時鐘輸入端口,所需不同頻率信

號在內部分頻實現。(LED掃描頻率設為50Hz以上)。

三·設計方案

設計采用模塊方式,分別為分頻模塊:產生1Hz的脈沖作為秒的輸入,和產生1kHz的脈沖作為數碼管顯示的動態掃描。計時模塊:秒模塊,分模塊,時模塊。鬧鐘模塊,顯示模塊,控制模塊。

四·模塊端口設置

1.分頻模塊

輸入:clkin :

本實驗輸入為50MHz晶振

輸出:clk : 為顯示模塊及始終調節提供1KHz脈沖

clkt: 為計數器模塊提供1Hz脈沖

2.計時模塊

m 是模式按鍵,當m=0 時,進入計時模式,在計時模式下可以進行時間調整。num3,num4 產生加速調整時間,當其值為1 時,可以快速調整時間,該調整時間的頻率由clk 提

供。counta,count1 是手動調節時間。Turn 接按鍵,可以改變當前調節的是小時還是分鐘,長按turn 鍵還可以使秒鐘信號清零。sec1,min1,hour1 輸出的是計時的秒,分,時。

3.鬧鐘模塊

原理:num1,num2 產生加速調整時間,當其值為1 時,可以快速調整時間,該調整時間的

頻率由clk 提供。countb,count2 是手動調節鬧鐘時間。amin,ahour 是輸出的鬧鐘的分鐘和 小時 4.控制模塊

m 是模式按鍵,當m=0 時,指當前輸出的是計時功能;當m=1 時,指當前調整的是

鬧鐘時間;當m=2 時,指當前調整的是計時時間;當m=3 時,此時turn 按鍵可用于跑表的

暫停與開始。change 接按鍵,手動調整時,每按一次,計數器加1;如果長按,則連續快

速加1,用于快速調時和定時;turn 接按鍵,在手動校時功能時,選擇是調整小時,還是分

鐘;若長時間按住該鍵,還可使秒信號清零,用于精確調時。count1,count2,counta,countb 分

別是用來調節計時時間和鬧鐘時間。LD_min,LD_hour,指示當前調節的是分鐘還是小時。5 顯示模塊

輸入:clk--1kHz時鐘,提供高頻掃描

in0、in1…in5--分別為時、分、秒的個位與十位信號

輸出:a、b…g--數碼管輸入

d0、d1…d5--數碼管選通

五.程序。

分頻模塊

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 信號控制系統在三種功能間轉換 begin if(m==4)m<=0;else m<=m+1;end /////秒鐘計時模塊////// always @(posedge clkt)

if((sec1==8'h59)|turn&(!m))///////若長時間按住該鍵,還可使秒信號清零,用于精確調時。begin sec1<=0;//按住“turn”按鍵一段時間,秒信號可清零,該功能用于手動精確調時

if(!(turn&(!m)))minclk<=1;///產生進位 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 產生進位或校正改變 assign ct1=(num3&clk)|(!num3&m_clk);//ct1 用于計時、校時中的分鐘計數

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 產生進位或校正改變 assign cta=(num4&clk)|(!num4&h_clk);//cta 用于計時、校時中的小時計數

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 用于定時狀態下調整分鐘信號

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 用于定時狀態調節小時信號 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 信號控制系統在三種功能間轉換 begin if(m==4)m<=0;else m<=m+1;end always @(posedge turn)//////////接按鍵,在手動校時功能時,選擇是調整小時,還是分鐘; begin fm<=~fm;end

always @(m or fm or change)begin case(m)2: begin ////////2:調節時間功能; if(fm)begin count1<=change;{LD_min,LD_hour}<=2;end//////指示當前調整的是分鐘

Else

begin counta<=change;{LD_min,LD_hour}<=1;end/////指示當前調整的是小時 {count2,countb}<=0;end 1: begin //////1:調節鬧鐘功能 if(fm)begin count2<=change;{LD_min,LD_hour}<=2;end/////指示當前調整的是分 else begin countb<=change;{LD_min,LD_hour}<=1;end/////指示當前調整的是小時 {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 信號控制系統在三種功能間轉換

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

實驗分析 七

實驗總結

八、參考資料

1、《EDA技術實用教程》

2、實驗箱使用說明;

第三篇:EDA課程設計——數字時鐘

Hefei University

EDA課程綜述

論文題目: EDA課程綜述

專 業: 09通信(2)班

姓 名: 唐吉祥

學 號: 0905072035 指導老師: 查長軍

隨著基于PLD的EDA技術的發展和應用領域的擴大和深入,EDA技術在電子信息、通信、自動控制及計算機應用領域的重要性日益提高。

作為現在的大學生應熟練掌握這門技術,為以后的發展打下良好的基礎,本實驗設計是應用QuartusII環境及VHDL語言設計一個時間可調的數字時鐘。使自己熟練使用QuartusII環境來進行設計,掌握VHDL語言的設計方法。要注重理論與實踐之間的不同,培養自己的實踐能力!

目錄

一、課程設計任務及要求............................................................................................3

1.1實驗目的..........................................................................................................3 1.2功能設計..........................................................................................................3

二、整體設計思想........................................................................................................3

2.1性能指標及功能設計......................................................................................3 2.2總體方框圖......................................................................................................4

三、詳細設計................................................................................................................4

3.1數字鐘的基本工作原理:..............................................................................4

3.1.1時基T 產生電路..................................................................................4 3.1.2調時、調分信號的產生......................................................................4 3.1.3計數顯示電路.......................................................................................5 3.2設計思路..........................................................................................................5 3.3設計步驟..........................................................................................................6

3.3.1工程建立及存盤...................................................................................6 3.3.2工程項目的編譯...................................................................................7 3.3.3目標芯片的選擇...................................................................................7 3.3.4時序仿真...............................................................................................8 3.3.5引腳鎖定.............................................................................................10 3.3.6硬件測試.............................................................................................11 3.3.7實驗結果.............................................................................................11

四、設計總結..............................................................................................................12

五、附錄......................................................................................................................12

5.1 VHDL源程序..................................................................................................12 5.2配置符號圖....................................................................................................17

一、課程設計任務及要求

1.1實驗目的

1)掌握VHDL語言的基本運用

2)掌握QuartusII的簡單操作并會使用EDA實驗箱 3)掌握一個基本EDA課程設計的操作

1.2功能設計

1)有時、分、秒計數顯示功能,小時為24進制,分鐘和秒為60進制以24小時循環計時

2)設置復位、清零等功能

3)有校時功能,可以分別對時及分進行單獨校時,使其校正到標準時間 4)時鐘計數顯示時有LED燈顯示

二、整體設計思想

2.1性能指標及功能設計

1)時、分、秒計時器

時計時器為一個24進制計數器,分、秒計時器均為60進制計數器。當秒計時器接受到一個秒脈沖時,秒計數器開始從1計數到60,此時秒顯示器將顯示00、01、02、...、59、00;每當秒計數器數到00時,就會產生一個脈沖輸出送至分計時器,此時分計數器數值在原有基礎上加1,其顯示器將顯示00、01、02、...、59、00;每當分計數器數到00時,就會產生一個脈沖輸出送至時計時器,此時時計數器數值在原有基礎上加1,其顯示器將顯示00、01、02、...、23、00。即當數字鐘運行到23點59分59秒時,當秒計時器在接受一個秒脈沖,數字鐘將自動顯示00點00分00秒。2)校時電路

當開關撥至校時檔時,電子鐘秒計時工作,通過時、分校時開關分別對時、分進行校對,開關每按1次,與開關對應的時或分計數器加1,當調至需要的時與分時,撥動reset開關,電子鐘從設置的時間開始往后計時。2.2總體方框圖

三、詳細設計

3.1數字鐘的基本工作原理:

3.1.1時基T 產生電路

數字鐘以其顯示時間的直觀性、走時準確性作為一種計時工具,數字鐘的基本組成部分離不開計數器,在控制邏輯電路的控制下完成預定的各項功能。

由晶振產生的頻率非常穩定的脈沖,經整形、穩定電路后,產生一個頻率為1Hz的、非常穩定的計數時鐘脈沖。

3.1.2調時、調分信號的產生

由計數器的計數過程可知,正常計數時,當秒計數器(60進制)計數到59 時,再來一個脈沖,則秒計數器清零,重新開始新一輪的計數,而進位則作為分計數器的計數脈沖,使分計數器計數加1。現在我們把電路稍做變動:把秒計數器的進位脈沖和一個頻率為2Hz的脈沖信號同時接到一個2選1數據選擇器的兩個數據輸入端,而位選信號則接一個脈沖按鍵開關,當按鍵開關不按下去時(即為0),則數據選擇器將秒計數器的進位脈沖送到分計數器,此時,數字鐘正常工作;當按鍵開關按下去時(即為1),則數據選擇器將另外一個2Hz 的信號作為分計數 器的計數脈沖,使其計數頻率加快,當達到正確時間時,松開按鍵開關,從而達到調時的目的。調節小時的時間也一樣的實現。

3.1.3計數顯示電路

由計數部分、數據選擇器、譯碼器組成,是時鐘的關鍵部分。

1、計數部分:由兩個60進制計數器和一個24 進制計數器組成,其中60 進制計數器可用6 進制計數器和10 進制計數器構成;24 進制的小時計數同樣可用6 進制計數器和10 進制計數器得到:當計數器計數到24 時,“2”和“4”同時進行清零,則可實現24 進制計數。

2、數據選擇器:84 輸入14 輸出的多路數據選擇器,因為本實驗用到了8個數碼管(有兩個用來產生隔離符號‘—’)。

3、譯碼器:七段譯碼器。譯碼器必須能譯出‘—’,由實驗二中譯碼器真值表可得:字母F 的8421BCD 碼為“1111”,譯碼后為“1000111”,現在如果只譯出‘—’,即字母F的中間一橫,則譯碼后應為“0000001”,這樣,在數碼管上顯示的就為‘—’。

3.2設計思路

根據系統設計要求,系統設計采用自頂向下設計方法,由時鐘分頻部分、計時部分、按鍵部分調時部分和顯示部分五個部分組成。這些模塊都放在一個頂層文件中。

1)時鐘計數:

首先下載程序進行復位清零操作,電子鐘從00:00:00計時開始。sethour可以調整時鐘的小時部分, setmin可以調整分鐘,步進為1。

由于電子鐘的最小計時單位是1s,因此提供給系統的內部的時鐘頻率應該大于1Hz,這里取100Hz。CLK端連接外部10Hz的時鐘輸入信號clk。對clk進行計數,當clk=10時,秒加1,當秒加到60時,分加1;當分加到60時,時加1;當時加到24時,全部清0,從新計時。

用6位數碼管分別顯示“時”、“分”、“秒”,通過OUTPUT(6 DOWNTO 0)上的信號來點亮指定的LED七段顯示數碼管。

2)時間設置:

手動調節分鐘、小時,可以對所設計的時鐘任意調時間,這樣使數字鐘真正具有使用功能。我們可以通過實驗板上的鍵7和鍵4進行任意的調整,因為我們用的時鐘信號均是1HZ的,所以每LED燈變化一次就來一個脈沖,即計數一次。3)清零功能: reset為復位鍵,低電平時實現清零功能,高電平時正常計數。可以根據我們自己任意時間的復位。

3.3設計步驟

3.3.1工程建立及存盤

1.打開 QuartusⅡ,單擊“File”菜單,選擇 File→New Project Wizard,對話框如下:分別輸入項目的工作路徑、項目名和實體名,單擊Finish。

2.單擊“File”菜單,選擇New,彈出小對話框,雙擊“VHDL File“,即選中了文本編輯方式。在出現的“Vhdl1.vhd”文本編輯窗中鍵入VHDL程序,輸入完畢后,選擇File→Save As,即出現“Save As”對話框。選擇自己建立好的存放本文件的目錄,然后在文件名框中鍵入文件名,按“Save”按鈕。

3.建立工程項目,在保存VHDL文件時會彈出是否建立項目的小窗口,點擊“Yes”確定。即出現建立工程項目的導航窗口,點擊“Next”,最后在出現的屏幕中分別鍵入新項目的工作路徑、項目名和實體名。注意,原理圖輸入設計方法中,存盤的原理圖文件名可以是任意的,但VHDL程序文本存盤的文件名必須與文件的實體名一致,輸入后,單擊“Finish”按鈕。3.3.2工程項目的編譯

單擊工具條上的編譯符號開始編譯,并隨著進度不斷變化屏幕,編譯完成后的屏幕如圖所示:

3.3.3目標芯片的選擇

選擇菜單 Assignments 選項的下拉菜單中選擇器件 Device ?,如圖所示: 在彈出的對話框中的 Family(器件序列欄)對應的序列名,EP1C3 對應的是 Cyclone 系列。在 Available Devices里選擇 EP1C3T144-C8(有時需要把 Show advanced devices的勾消去,以便顯示出所有速度級別的器件)。注意:所選器件必須與目標板的器件型號完全一致。

在圖中,單擊“Device and Pin Options?”,在彈出的“Device and Pin Options?”窗口中,單擊“Unused Pins”標簽。選擇“As output driving an unspecified signal ”(由于學習機的“FPGA”具有很多功能,為了避免使用引腳對其它器件造成影響,保證本系統可靠工作,將未使用引腳設定為輸出不定狀態)后,單擊確定后,無誤后單擊“OK”。

3.3.4時序仿真

建立波形文件:選擇 File→New,在New窗中選中“Other File”標簽。在出現的屏幕中選擇“Vector Waveform File”項出現一新的屏幕。在出現的新屏幕中,雙擊“Name”下方的空白處,彈出“Insert Nod or Bus”對話框,單擊該對話框的“Node Finder??”。在屏幕中的 Filter 中選擇 Pins,單擊“List”。而后,單擊“>>”,所有輸入/輸出都被拷貝到右邊的一側,這些正是我們希望的各個引腳,也可以只選其中的的一部分,根據實際情況決定。然后單擊屏幕右上腳的 “OK”。在出現的小屏幕上單擊“OK”。

設定仿真時間寬度。選擇 Edit → End time?選項,在End time選擇窗中選擇適當的仿真時間域,以便有足夠長的觀察時間。

波形文件存盤。選擇File→Save as 選項,直接存盤即可。運行仿真器。在菜單中選擇項,直到出現,仿真結束。

未曾編輯的仿真波形

仿真波形 3.3.5引腳鎖定

將設計編程下載進選定的目標器件中,如EPF10K10,作進一步的硬件測試,將設計的所有輸入輸出引腳分別與目標器件的EPF10K10的部分引腳相接,操作如下:

1.選擇 Assignments → Assignments Editor ,即進入 Assignments Editor編輯器。在Category 欄選擇 Pin,或直接單擊右上側的 Pin 按鈕。

2.雙擊 TO 欄的《new》,在出現的的下拉欄中選擇對應的端口信號名(如 D[0]);然后雙擊對應的欄的《new》,在出現的下拉欄中選擇對應的端口信號名的期間引腳號。

3.最后存儲這些引腳鎖定信息后,必須再編譯(啟動)一次,才能將引腳鎖定信息編譯進編程下載文件中。此后就可以準備將編譯好的 SOF 文件下載到試驗系統的FPGA中去了。

引腳鎖定 3.3.6硬件測試

1.首先將下載線把計算機的打印機口與目標板(如開發板或實驗板)連接好,打開電源,選擇模式7。

2.打開編輯窗和配置文件。選擇,彈出一個編輯窗。在Mode欄中選擇JTAG,并在選項下的小方框打勾。注意核對下載文件路徑與文件名。如果文件沒有出現或者出錯,單擊左Add file側按鈕,手動選擇配置文件 clock.sof。

3.最后單擊下載標符Start,即進入對目標器件 FPGA 的配置下載操作。當 Progress 顯示100%,以及在底部的處理欄中出現 Configuration Succeeded 時,表示編程成功,如圖所示。注意,如果必要時,可再次單擊 Start,直至編程成功。

4.下載完成后,通過硬件測試進一步確定設計是否達到所有的技術指標,如未達到,可逐步檢查,哪部分出現問題。如果是代碼出現問題,須修改代碼;若是時序波形圖有問題,須重新設置。

3.3.7實驗結果

實驗箱使用模式7,鍵8為復位按鍵,鍵8為1時正常工作。鍵4設置小時,鍵7設置分鐘。

下載成功后,按下鍵8,及使六個LED復位清零,顯示數秒的自動計時,可以通過4鍵設置小時數,7鍵設置分鐘數。當秒數滿60則進一位,分鐘數滿60進一位,當顯示為23:59:59時,秒數在加一則顯示00:00:00,之后從新計時。

四、設計總結

通過這次課程設計,我進一步加深了對電子設計自動化的了解。并進一步熟練了對QuartusII軟件的操作。在編寫程序的過程中,遇到了很多問題,使我發現自己以前學習上存在的不足。通過與同學探討和請教老師,終于把問題都解決了,并加深了對數字時鐘原理和設計思路的了解。

同時也掌握了做課程設計的一般流程,為以后的設計積累了一定的經驗。做課程設計時,先查閱相關知識,把原理吃透,確定一個大的設計方向,在按照這個方向分模塊的把要實現的功能用流程圖的形式展示。最后參照每個模塊把輸入和輸出引腳設定,運用我們所學的VHDL語言進行編程。總之,通過這次的設計,進一步了解了EDA技術,收獲很大,對軟件編程、排錯調試、相關儀器設備的使用技能等方面得到較全面的鍛煉和提高。

在此,也感謝康老師的悉心指導,使自己學到了很多東西!

五、附錄

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為三進制加法計數器

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“;--循環點亮三只燈

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“;

--復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調制后的手動調時脈沖信號串

daout<=count;

enhour_2<=(sethour and clk1);--sethour為手動調時控制信號,高電平有效

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復0

ELSE

count<=count+7;--若count未到59D,則加7,即作”加6校正“

END IF;--使前面的16#60#的個位轉變為8421BCD的容量

ELSE

count<=”0000000“;--count復0(有此句,則對無效狀態電路可自啟動)

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;--沒有發生進位

ELSE

count<=”0000000“;--否則,若count不小于16#60# count復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調制后的手動調分脈沖信號串

daout<=count;

enmin_2<=(setmin and clk);--setmin為手動調分控制信號,高電平有效

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復0

ELSE

--未到59D

count<=count+7;--則加7,而+7=+1+6,即作”加6校正“

END IF;

ELSE

--若count不小于16#60#(即count等于或大于16#60#)

count<=”0000000“;

--count復0

END IF;

--END IF(count<16#60#)

ELSIF(count<16#60#)then--若個位計數未到”1001“則轉此句再判

count<=count+1;

--若count<16#60#則count加1

enmin_1<='0'after 100 ns;--沒有發生進位

ELSE

--否則,若count不小于16#60#

count<=”0000000“;

--則count復0

END IF;

--END IF(count(3 DOWNTO 0)=”1001")

END IF;

--END IF(reset='0')END PROCESS;END fun;5.2配置符號圖

第四篇:基于EDA技術的數字時鐘設計 最終版范文

物理與電子學院

《》 課程考核論文

論文作者姓名:

者 學 號:

學 專 業:

理科

物理方向

課 教 師:

高偉

成 時 間:

2015年6月

基于EDA技術的數字時鐘設計

目錄

摘要··················································································2 一.緒論·············································································3 1.課題的研究背景·································································3 2.數字電子鐘的發展簡況·························································3 二.系統設計········································································4 1.整體規劃·········································································4 2.時基信號產生電路·······························································5 3.調時、調分信號的產生電路····················································5 4.計數顯示電路····································································6 三.基本功能實現···································································6 1.時鐘計數··········································································7 2.校時設置··········································································7 3.清零功能··········································································8 4.定時、報時功能··································································9 四.系統軟件實現···································································9 1.詳細模塊描述·····································································9 2.總體設計及引腳設置·····························································9 五.系統仿真及分析································································10 1.各模塊時序仿真·································································10 2.總體時序仿真····································································11 3.實驗結果·········································································11 六.設計總結········································································12 ·參考文獻···········································································12 附錄:參考程序······································································13

摘要

隨著基于PLD的EDA技術的發展和應用領域的擴大與深入,EDA技術在電子信息、通信、自動控制及計算機應用等領域的重要性日益突出。本文詳細介紹EDA課程設計任務——數字鐘的設計的詳細設計過程及結果,并總結出心得體會。

主體:主要涉及模60與模24計數器、動態顯示控制電路、分頻器主要整點報時電路,這些電路都是以模塊封裝好的,以便其他電路調用。以計數器構成計時部件,通過分頻器分出的1HZ脈沖計時,調用動態顯示電路顯示,通過整點報時電路控制蜂鳴器。在計數器級聯時采用內部同步外部異步的方式,但通過簡單的改變達到了同步的效果而且比同步還可靠。顯示控制時為了節約資源采用動態原理。

關鍵字 多功能數字時鐘

整點報時 EDA技術 VHDL語言

Abstract

This article is based on the QuartusII software and the corresponding experimental platform to complete a multi-function digital timer experiment, so that we clearly understand to us digital table function is how to achieve.Used in the design of the level design thought, function decreases progressively step by step.The experiment mainly includes the mainbody-the basic functions of the circuit of clock.Subject: mainly relates to mode 60and mode 24counter, dynamicdisplay of control circuit, the primary divider the whole point timekeeping circuit, the circuit is in module a good package, so that other circuit calls.To counter through a frequency divider which timing components, from1HZ pulse timing,called dynamic display circuit displays, through the wholepoint timekeeping circuit control buzzer.In counter cascade usesinternal synchronous external asynchronous manner, but bysimplychanging the synchronization effect and is more reliable thansynchronous.Display control in order to save resources by the dynamic principle.Key word: Level design Multifunctional digital clock Synchronization The whole point timekeeping The language of VHDL

一.緒論

1.課題的研究背景

當面對這樣一個信息爆炸的時代,時間變得越來越寶貴,人們無疑需要一個良好的計劃時間表,而這就需要一個系統完善成熟的定時系統來及時提醒人們。然而在這個新技術、新產品不斷涌現,各類產品功能日益強大,這就需要我們帶著戰略性眼光選擇。多功能數字電子鐘無意是人們最好的選擇之一,多功能數字時鐘小巧、價格低廉,外觀造型日益精美、精確度高、功能齊全、使用方便,不僅僅可以顯示鐘表的功能也具備計時、測溫、定鬧鐘、顯示日歷、語音報表等功能,其集成化高而受到廣大人們群眾喜愛。在人們不斷的要求下,多功能數字鐘已經成為現代設計時鐘研究生產的主導方向。

2.數字電子鐘的發展簡況

在國外,公元以前,人們也是主要利用天文現象來計時,比如觀察太陽日出日落、星相的轉移,此后當在德國的亨萊思創造了小型機械鐘開始,國外的鐘表行業逐漸掀起,到了19世紀,鐘表制造業已經成為人們必不可少的一個行業,鐘表制造業也逐漸的實現了工業化生產,在20世紀,隨著電子潮流的飛速發展,鐘表行業也出現了翻天覆地的變化,由單一的機械表轉向多元式的鐘表,有電池驅動鐘、電機械表、指針式電子鐘表、數字式電子鐘表等種類,并且功能不斷的增多如現在出現的多功能數字電子鐘,它采用的是數字電路來顯示分秒,它的作用早已不僅限于計時的功能,它還可以顯示日歷、定鬧、報時、測溫等功能。它人性化的設計給人們的生活帶來了很多的方便,成為人們日常生活的必需品。

二.系統設計

1.整體規劃

數字電子時鐘主干電路系統由秒信號發生器、“時、分、秒”計數器、譯碼器及顯示器、校時電路、整點報時電路組成。將標準秒信號送入“秒計數器”,“秒計數器”采用60進制計數器,每累計60秒發出一個“分脈沖”信號,該信號將作為“分計數器”的時鐘脈沖。“分計數器”也采用60進制計數器,每累計60分鐘,發出一個“時脈沖”信號,該信號將被送到“時計數器”。“時計數器”采用12進制計時器,可實現12小時的累計。通過六個LED顯示器顯示出來。整點報時電路根據計時系統的輸出狀態產生一脈沖信號,然后去觸發一音頻發生器實現報時。校時電路用來對“時”、“分”、“秒”顯示數字進行校對調整。

電子時鐘系統總體規劃如圖1所示:

(1)根據電路特點,用層次設計概念,將此設計任務分成若干模塊,規定每一模塊的功能和各模塊之間的接口,同時加深層次化設計概念。

(2)軟件的元件管理深層含義,以及模塊元件之間的連接概念,對于不同目錄下的同一設計,如何融合。

(3)適配劃分前后的仿真內容有何不同概念,仿真信號對象有何不同,有更深一步了解。

(4)按適配劃分后的引腳鎖定,同相關功能模塊硬件電路的接口連線。(5)所有模塊采用VHDL硬件描述語言設計。

圖1 總體方案框圖

2.時基信號產生電路

數字鐘以其顯示時間的直觀性、走時準確性作為一種計時工具,數字鐘的基本組成部分離不開計數器,在控制邏輯電路的控制下完成預定的各項功能。由晶振產生的頻率非常穩定的脈沖,經整形、穩定電路后,產生一個頻率為1Hz的、非常穩定的計數時鐘脈沖。

3.調時、調分信號的產生電路

由計數器的計數過程可知,正常計數時,當秒計數器(60進制)計數到59 時,再來一個脈沖,則秒計數器清零,重新開始新一輪的計數,而進位則作為分計數器的計數脈沖,使分計數器計數加1。把秒計數器的進位脈沖和一個頻率為2Hz的脈沖信號同時接到一個2選1數據選擇器的兩個數據輸入端,而位選信號則接一個脈沖按鍵開關,當按鍵開關不按下去時(即為0),則數據選擇器將秒計數器的進位脈沖送到分計數器,此時,數字鐘正常工作;當按鍵開關按下去時(即為1),則數據選擇器將另外一個2Hz 的信號作為分計數器的計數脈沖,使其計數頻率加快,當達到正確時間時,松開按鍵開關,從而達到調時的目的。調節小時的時間也一樣的實現。

4.計數顯示電路

由計數部分、數據選擇器、譯碼器組成,是時鐘的關鍵部分。

1、計數部分:由兩個60進制計數器和一個24 進制計數器組成,其中60 進制計數器可用6 進制計數器和10 進制計數器構成;24 進制的小時計數同樣可用6 進制計數器和10 進制計數器得到:當計數器計數到24 時,“2”和“4”同時進行清零,則可實現24 進制計數。

2、數據選擇器:84 輸入14 輸出的多路數據選擇器,因為本實驗用到了8個數碼管(有兩個用來產生隔離符號‘—’)。

3、譯碼器:七段譯碼器。譯碼器必須能譯出‘—’,由實驗二中譯碼器真值表可得:字母F 的8421BCD 碼為“1111”,譯碼后為“1000111”,現在如果只譯出‘—’,即字母F的中間一橫,則譯碼后應為“0000001”,這樣,在數碼管上顯示的就為‘—’。

三.基本功能實現

1.時鐘計數:

首先下載程序進行復位清零操作,電子鐘從00:00:00計時開始。sethour可以調整時鐘的小時部分, setmin可以調整分鐘,步進為1。

由于電子鐘的最小計時單位是1s,因此提供給系統的內部的時鐘頻率應該大于1Hz,這里取100Hz。CLK端連接外部10Hz的時鐘輸入信號clk。對clk進行計

數,當clk=10時,秒加1,當秒加到60時,分加1;當分加到60時,時加1;當時加到24時,全部清0,從新計時。

用6位數碼管分別顯示“時”、“分”、“秒”,通過OUTPUT(6 DOWNTO 0)上的信號來點亮指定的LED七段顯示數碼管。

2.校時設置:

手動調節分鐘、小時,可以對所設計的時鐘任意調時間,這樣使數字鐘真正具有使用功能。我們可以通過實驗板進行任意的調整,因為我們用的時鐘信號均是1HZ的,所以每LED燈變化一次就來一個脈沖,即計數一次。

通過一個開關的兩種電平,來打開個關閉一個二輸入與非門,另一個輸入端接1Hz的信號。因此這個開關實現了1Hz信號是否加入電路的作用,開關打在高電平上,1Hz信號通過與非門,開關打在低電平上,與非門輸出為高電平。把與非門的輸出信號,和時鐘正常走時所需要的時鐘信號,一起通過與門,加給分個位時鐘信號的輸入端即可,這樣分校時開關打在高電平上,分個位以1Hz的頻率跳動起來,分校時開關打在低電平上時,正常走時。同理小時校準與此相同。

3.清零功能:

reset為復位鍵,低電平時實現清零功能,高電平時正常計數。可以根據我們自己任意時間的復位。

清零電路設計的關鍵就是要解決好同步問題,在發出清零信號時,所有計數器的時鐘信號是一致的,而且處于有效的邊沿。為此可以設計當清零信號有效時,很高頻率的信號同時加入個計數器的時鐘端,而當清零信號無效時,各計數器上時鐘端加的是正常走時所需要的時鐘信號。也可以用與門,或門和非門實現上述的功能。當清零信號為低時,清零信號經過一個非門變為高電平信號,將與門打開,高頻信號通過與門,在與秒各位計數器的時鐘端上的信號相或,與其他各位計數器時鐘輸入端上的信號相與。這樣,當清零信號有效時,每一位計數器上的時鐘輸入端實現了同步的功能,實現了同步清零的功能。當清零信號無效時,時鐘正常走時。

4.定時、報時功能:

整點報時電路根據計時系統的輸出狀態產生一脈沖信號,然后去觸發一音頻發生器實現報時。它通過對定時和計時的比較來完成報時,由兩個計數器組成,計數器由兩個開關控制,用來對定時的分鐘和時鐘設定,當開關都打到不送脈沖的狀態,兩個計數器都保持,從而達到存儲的目的。比較電路用來比較定時時間和計時時間,當它們一致時,輸出為1,這樣可以驅動報時模塊。最后,利用顯示電路將定的時間設定輸出。要使定時起到提醒作用,還要有鈴聲,這里用1hz脈沖作為蜂鳴器的信號源。

四.系統軟件實現

1.詳細模塊描述

(1)Second模塊為秒計數模塊。Clk作為秒脈沖,reset復位,setmin用于調整分鐘,接按鍵,enmin是當秒計數記到59后產生分脈沖,秒計數重新從0開始計數。Daout為秒計數。

(2)Minute模塊為分計數模塊。Clk作為分脈沖,接second模塊的enmin,reset用于復位,sethour用于調整小時,接按鍵,enhour是當分計數記到59后產生時脈沖,分計數重新從0開始計數。Daout為分計數。

(3)Hour模塊為時計數模塊,clk為時脈沖,接minute模塊的enhour,reset復位,daout為時計數。

(4)Alert模塊為整點報時模塊。其中clk1用于在其上升沿判斷是否為整點時刻,若是則加clk秒脈沖從speak端口輸出到揚聲器作為聲音信號,報時10秒。Stop為停止報時控制,接按鍵,按動按鍵時若在報時則報時停止。Reset復位端。dainsh和dianm分別接分計數和秒計數,用于判斷整點和報時。

2.總體設計及引腳設置

在軟件中設置后頂層原理圖顯示為

設計思想,利用脈沖時鐘產生一個1Hz的信號來實現一秒鐘的控制,要產生1Hz的信號就要用到分頻器,實驗中用三個百分頻器把1MHz的信號變成1Hz。然后信號進入控制秒的計數器,當 的仿真時間域以便有足夠長的觀察時間。波形文件存盤后運行仿真器,直到出現仿真結果。

24進制的時控制模塊中當clk為上升沿時,hour1輸出由9變為0,并且hour1都是由0到9循環,hour2輸出由2變為0,并且hour2都是由0到2循環。

60進制的分控制模塊中當clk和carry為上升沿時,min1輸出由9變為0,并且min1都是由0到9循環,min2輸出由5變為0,并且min2都是由0到5循環。

60進制的秒控制模塊中當clk和carry為上升沿時,sec1輸出由9變為0,并且sec1都是由0到9循環,sec2輸出由5變為0,并且sec2都是由0到5循環。

仿真波形

3.實驗結果

首先,由石英晶體振蕩器輸出穩定的脈沖信號,經過振蕩器輸出標準的秒脈沖信號,秒計數電路為六十進制計數器,秒計數電路將振蕩器產生的秒脈沖信號作為輸入信號,進行計數,并通過秒顯示器顯示秒;其次,當秒計數器完成60個秒計數后,秒計時電路清零,輸出一個“分計時信號”,分計時電路收到秒計時電路產生的信號后,開始計數并顯示分;再次,當分計時電路完成60個分計數后,分計數器清零,輸出一個“時計時信號”,時計時電路收到分計時電路產生的信號后,開始計數并顯示時;最后,時計時電路完成24個時計數后,清零。完成電子鐘基本功能仿真結果。

六.設計總結

通過畢業論文設計,我進一步加深了對電子設計的認識,進一步熟練了對QuartusII軟件的操作。在編寫程序的過程中,遇到了很多問題,使我發現自己以前學習上存在的不足。通過同學探討和請教老師的方式,終于把問題都解決了。對數字時鐘原理和設計思路的更詳細的了解,掌握了做畢業設計的一般流程,為以后的電路設計積累了一定的經驗。做畢業設計時,我先查閱了相關知識,把原理吃透,確定一個大的設計方向,在按照這個方向分模塊的把要實現的功能用流程圖的形式展示。最后參照每個模塊把輸入和輸出引腳設定,運用我們所學的VHDL語言進行編程。通過這次的設計,我深入了解了EDA技術,收獲很大,對軟件編程、排錯調試、相關儀器設備的使用技能等方面得到較全面的鍛煉和提高。

經過這次的畢業設計我學到的也不止是一些新的理論知識和具體的動手實踐。更重要的是一種思路,大的問提可以轉換成小的問題解決,困難的問題通過轉換成簡單的問題解決。相信這將會對我今后的學習工作帶來幫助。設計論文過程中我認識到我專業知識缺少的還很多,實踐經驗也相當匱乏。因此在今后我還需要不斷的去學習新的知識,不斷的充實自身。

在此,再次感謝梁勇老師的悉心指導,您讓使我學到了很多很多!

·參考文獻

1.EDA技術實用教程----vhdl版(carry:out std_logic);end second;architecture rt1 of second is signal sec1_t,sec2_t:std_logic_vector(3 downto 0);begin process(clk,reset)begin if reset='1'then sec1_t<=“0000”;sec2_t<=“0000”;elsif clk'event and clk='1'then if sec1_t=“1001”then sec1_t<=“0000”;if sec2_t=“0101”then sec2_t<=“0000”;else sec2_t<=sec2_t+1;end if;else sec1_t<=sec1_t+1;end if;if sec1_t=“1001” and sec2_t=“0101”then carry<='1';else carry<='0';end if;end if;end process;sec1<=sec1_t;sec2<=sec2_t;end rt1;

分模塊 程序如下:

library ieee;

use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minute is port(clk,reset:in std_logic;min1,min2:out std_logic_vector(3 downto 0);carry:out std_logic);end minute;architecture rt1 of minute is signal min1_t,min2_t:std_logic_vector(3 downto 0);begin process(clk,reset)begin if reset='1'then min1_t<=“0000”;min2_t<=“0000”;elsif clk'event and clk='1'then if min1_t=“1001”then min1_t<=“0000”;if min2_t=“0101”then min2_t<=“0000”;else min2_t<=min2_t+1;end if;else min1_t<=min1_t+1;end if;if min1_t=“1001” and min2_t=“0101”then carry<='1';else carry<='0';end if;end if;end process;min1<=min1_t;min2<=min2_t;end rt1;

時模塊

程序如下:

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hour is port(clk,reset:in std_logic;hour1,hour2:out std_logic_vector(3 downto 0));end hour;architecture rt1 of hour is signal hour1_t,hour2_t:std_logic_vector(3 downto 0);begin process(clk,reset)begin if reset='1'then hour1_t<=“0000”;hour2_t<=“0000”;elsif clk'event and clk='1'then if hour1_t=“0011” and hour2_t=“0010”then hour1_t<=“0000”;hour2_t<=“0000”;else if hour1_t=“1001”then hour1_t<=“0000”;if hour2_t=“0010”then hour2_t<=“0000”;else hour2_t<=hour2_t+1;end if;else hour1_t<=hour1_t+1;end if;end if;end if;end process;hour1<=hour1_t;

hour2<=hour2_t;end rt1;譯碼顯示模塊 程序如下: library ieee;use ieee.std_logic_1164.all;entity segment7 is port(data:in std_logic_vector(3 downto 0);dout:out std_logic_vector(6 downto 0));end segment7;architecture behav of segment7 is begin process(data)begin case data is when “0000”=>dout<=“0111111”;when “0001”=>dout<=“0000110”;when “0010”=>dout<=“1011011”;when “0011”=>dout<=“1001111”;when “0100”=>dout<=“1100110”;when “0101”=>dout<=“1101101”;when “0110”=>dout<=“1111101”;when “0111”=>dout<=“0100111”;when “1000”=>dout<=“1111111”;when “1001”=>dout<=“1101111”;when others=>dout<=“0000000”;end case;end process;end behav;

第五篇:數字電路EDA課程設計數字跑表

EDA課程設計報告書

題目: 數字跑表

姓名: 班級: 學號: 成績:

一、設計題目及要求 設計題目:數字跑表

要求:1 具有暫停,啟動功能。

具有重新開始功能。用六個數碼管分別顯示百分秒,秒和分鐘。

二、設計過程及內容

拿到題目后,我在圖書館進行了相關書籍的查閱,首先明確了題目中設計項目要實現的功能,再進一步確定實現其功能的組成部分和使用器件,對于本次設計的總體思路,首先是設計一個控制模塊,可以使跑表具有啟動、暫停及重新開始的功能;然后,利用一個分頻模塊即15進制計數器得到100HZ的時鐘脈沖,接入到一個100*60*60三個計數器的模塊中,完成對時間的計時工作和對選時模塊的輸出工作,使選時模塊得到對應的時間,其次將選時模塊與顯示模塊連接,使數碼管顯示選中的當前時間,從而完成了這次課程設計的設計工作,進入到實現過程中去。

根據課程設計要求將設計分為5個模塊:

1、控制模塊,使跑表具有啟動、暫停及重新開始的功能;

2、分頻模塊,用于得到頻率為100HZ的時鐘脈沖;

3、計時模塊,進行時間的計時,同時將當前時間輸出給選時模塊;

4、選時模塊,從計時器得到當前時間輸出給顯示模塊;

5、顯示模塊,進行時間的顯示。總圖如下: 第一個模塊:控制器模塊

與門可控制時鐘信號的輸出與否,當跑表為START狀態時CLK端為高電平,QA為1,時鐘信號輸出,當跑表為STOP狀態時CLK端為低電平,QA為0,時鐘信號不輸出,從而實現開始和暫停的功能。REST是清零按鈕,REST接到控制模塊和總計時器模塊的清零端,當REST為高電平時,控制模塊和總計數器模塊清零,跑表重新開始工作。

第二個模塊:分頻器模塊

將74161接成15進制計數器,將1465HZ的時鐘頻率轉換成近似于100HZ的時鐘信號即所需的輸入時鐘信號,從而實現分頻功能。將得到的時鐘信號輸入到總計數器模塊中去。第三個模塊:計時模塊

計時模塊

本模塊由兩個60進制計數器和一個100進制計數器構成,從而實現百分秒向秒、秒向分的計數功能需求。60進制計數器及100進制計數器均采用兩個74LS160,采用整體置數方式接成。從60進制計數器和100進制計數器這三個輸出端分別印出八個端口(秒、分、時的個位及十位分別由四個二進制代碼表示),將當前時間編碼傳送給選時模塊,實現時間的選擇和顯示。(秒個位:S0A,S0B,S0C,S0D;秒十位:S1A,S1B,S1C,S1D;分個位:M0A,M0B,M0C,M0D;分十位:M1A,M1B,M1C,M1D;百分秒個位:H0A,H0B,H0C,H0D;百分秒十位:H1A,H1B,H1C,H1D.)

100進制計數器

60進制計數器

第四個模塊:選時模塊

本模塊由四個八選一數據選擇器74LS151和地址選擇器74LS161構成。

地址選擇器74LS161接入一個1465 HZ的時鐘信號,使能端和清零端接高電平,使其循環工作,產生一組循環地址碼A、B、C,接到數碼管的地址端,使其循環顯示數字。同時,地址選擇器74LS161產生的一組循環地址碼接入到四個八選一數據選擇器74LS151上,使其對地址相同的一組數據進行選擇,產生四個二進制數A0,A1,A2,A3,即為數碼管所要顯示的數字的編碼。

第一個74LS151上的輸入端為秒、分、百分秒個位及十位的四位二進制的最低位(S0A,S1A, M0A, M1A, H0A, H1A), 第二個74LS151上的輸入端為秒、分、百分秒個位及十位的四位二進制的次低位(S0B,S1B,M0B,M1B,H0B,H1B), 第三個74LS151上的輸入端為秒、分、百分秒個位及十位的四位二進制的第二位(S0C,S1C,M0C,M1C,H0C,H1C), 第四個74LS151上的輸入端為秒、分、百分秒個位及十位的四位二進制的第一位(S0D,S1D,M0D,M1D,H0D,H1D),通過這四個八位二進制數比較器74LS151選出同一組數(秒個位:S0A,S0B,S0C,S0D;秒十位:S1A,S1B,S1C,S1D;分個位:M0A,M0B,M0C,M0D;分十位:M1A,M1B,M1C,M1D;百分秒個位:H0A,H0B,H0C,H0D;百分秒十位:H1A,H1B,H1C,H1D.)作為輸出A0,A1,A2,A3,接到顯示模塊輸入端。

選時模塊

第五個模塊:顯示模塊

本模塊采用BCD—七段顯示譯碼器7448對實驗板上數碼管進行驅動。由選時模塊輸出的顯示數字編碼A0,A1,A2,A3接至輸入端A,B,C,D,使輸出端產生七位譯碼連接到實驗箱公共數據輸入端ABCDEDG,從而進行數據的顯示。

顯示模塊

三、設計結論

兩周的課程設計很快就結束了,雖然時間很短,但是收獲頗豐。通過這次課程設計,我學到了許多關于EDA的知識,認識到了EDA的強大功能,更重要的是增強了我的實踐動手能力,使我深刻地認識到僅僅學習課本上的知識是遠遠不夠的,必須要多多動手,多多實踐,才能真正理解并掌握所學的知識,達到學以致用的目的。同時我也深深地感受到嚴謹的態度對于科學研究的重要性。由于在設計的過程中,一點點的馬虎都可能造成整個系統的癱瘓,所以每一個細節都要認真思考,認真操作,不能有絲 百分的大意。這使我認識到要想做一個科研工作者是多么的不易!自己身上的缺點還有很多,要靠以后艱苦的努力來克服!

這次的EDA課程設計給了我一次非常重要也非常難得的實踐機會,使我可以將平時課本上學習的理論知識應用于實際操作。設計的過程是十分艱苦的,由于從未接觸過類似的領域,所以剛開始的時候一片茫然,不知道該干些什么。隨著研究的逐漸深入,自己漸漸的摸出頭緒,掌握了一些規律和方法,設計的成果也逐步成型,最終按照要求完成了設計。在實際操作的過程中,碰到了許多的困難,但最終在老師的耐心指導和同學的熱情幫助下,按時完成了任務。在此對老師和同學們表示衷心的感謝!

最后感謝老師給與我這次寶貴的實踐機會!

下載EDA數字秒表的設計word格式文檔
下載EDA數字秒表的設計.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    北航eda實驗報告數字部分

    Verilog數字電路設計 實驗報告 院系: 組員: 年月日 Verilog實驗報告 目錄 分組概況 ........................................................................................

    EDA課程設計 數字時鐘(鬧鐘)

    課 程 設 計 說 明 書 題目: 鬧鐘 學院(系): 年級專業: 學 號: 學生姓名: 指導教師: 教師職稱: 共 16 頁第 1 頁 目 錄 第1章 摘要……………………………………………………………......

    燕山大學EDA課程設計數字跑表

    一、設計題目及要求 設計題目:數字跑表 要求:1 具有暫停,啟動功能; 2 具有重新開始功能; 3 用六個數碼管分別顯示百分秒,秒和分鐘。 二、設計過程及內容 總體設計: 第一,對于要實現......

    數字電子EDA課程設計八音電子琴

    燕山大學EDA課程設計 實驗報告院系:信息科學與工程學院姓名: 班級: 學號: 日期: [實驗名稱] 八音電子琴 [實驗要求] 1.能發出1.2.3.4.5.6.7.i八個音2.用按鍵作為鍵盤......

    EDA數字鐘設計

    數字鐘 一、實驗目的 1、掌握多位計數器相連的設計方法。 2、掌握十進制,六進制,二十四進制計數器的設計方法。 3、掌握揚聲器的驅動及報時的設計。 4、LED燈的花樣顯示。 5、......

    EDA設計報告

    EDA 多 功 能 數 字 時 鐘 專業:11級應用電子技術 班級:二班 學號:110372021307 姓名:賀成林 指導老師:祝宏 日期:2012年6月29日 一、實驗目的 1、課程設計是一實踐教學環節,是......

    EDA設計論文

    EDA課程設計報告書 交通燈設計 設 計 者: 邱春華 呂云蘭 指導老師: 李 敏 學 號: 09387105 09387114 專業班級:通信工程0911班 摘要…………………………………………………......

    實習報告-單片機秒表設計

    目 錄 第1章 單片機系統硬件電路 ................................................................................. 1 1.1 實習目的 ......................................

主站蜘蛛池模板: 四川发廊丰满老熟妇| 国产福利在线永久视频| 欧美z0zo人禽交欧美人禽交| 亚洲熟妇中文字幕五十中出| 日韩精品一区二区三区色欲av| 看黄a大片日本真人视频直播| 久久亚洲精品中文字幕无码| 国产又色又爽又黄的网站在线| 久久久久国产精品嫩草影院| 久久本道综合久久伊人| 国内精品久久久久影院网站| 亚洲国产专区校园欧美| 亚洲精品无码国模| 亚洲国产av无码精品色午夜| 男男车车的车车网站w98免费| 亚洲av成人无码久久精品老人| 国产av无码专区亚洲av蜜芽| 欧美乱妇高清免费96欧美乱妇高清| 午夜精品久久久久久毛片| 久久久久人妻一区精品色| 色老头精品午夜福利视频| 国产精品毛片av在线看| 亚洲中文字幕一二三四区苍井空| 国产欧美日本亚洲精品一5区| 中文字幕久久综合伊人| 人妻人人澡人人添人人爽人人玩| 欧美最猛黑A片黑人猛交蜜桃视频| 97国产精华最好的产品在线| 久久国产中文娱乐网| 欲妇荡岳丰满少妇岳| av无码播放一区二区三区| 成人免费区一区二区三区| 亚洲高清毛片一区二区| 亚洲欧美综合精品成人网站| 亚洲国产精品无码久久一区二区| 亚洲国产精品久久久天堂不卡海量| 人妻丰满熟妇无码区免费| 影音先锋无码a∨男人资源站| 未发育成型小奶头毛片av| 在线播放亚洲第一字幕| 国产香蕉国产精品偷在线|