第一篇:EDA數(shù)字秒表的設(shè)計(jì)
設(shè) 計(jì) 報(bào) 告——數(shù)字秒表的設(shè)計(jì)
EDA 一 設(shè)計(jì)目的
1.根據(jù)設(shè)計(jì)要求,完成對數(shù)字秒表的設(shè)計(jì)。
2.進(jìn)一步加強(qiáng)對QuartusⅡ的應(yīng)用和對Verilog HDL語言的使用。
二 設(shè)計(jì)內(nèi)容和要求
1.計(jì)時(shí)精度應(yīng)大于1/100S,計(jì)時(shí)器能顯示1/100S的時(shí)間,提供給計(jì)時(shí)器內(nèi)部定時(shí)的時(shí)鐘頻率應(yīng)大于100Hz,這里選用KHz。
2.計(jì)時(shí)器的最大計(jì)時(shí)時(shí)間為1小時(shí),為此需要6位的顯示器,顯示的最長時(shí)間為59分59.99秒。
3.設(shè)置有復(fù)位和起/停開關(guān),復(fù)位開關(guān)用來使計(jì)數(shù)器清零,做好計(jì)時(shí)準(zhǔn)備。起停開關(guān)的使用方法與傳統(tǒng)的機(jī)械式計(jì)數(shù)器相同,即按一下,啟動計(jì)時(shí)器開始計(jì)時(shí),再按一下計(jì)時(shí)終止。
三 系統(tǒng)設(shè)計(jì)方案
自頂向下的設(shè)計(jì)自頂向下的設(shè)計(jì)方法是數(shù)字系統(tǒng)設(shè)計(jì)中最常用的設(shè)計(jì)方法.也是基于芯片的系統(tǒng)設(shè)計(jì)的主要方法。
自頂向下的設(shè)計(jì)方法利用功能分割手段將設(shè)計(jì)由上到下 進(jìn)行層次話和模塊化,及分層次、分模塊進(jìn)行設(shè)計(jì)和仿真。功能分割時(shí),將系統(tǒng)功能分解為功能塊,功能塊再分解為邏輯塊,邏輯塊再分解為更少的邏輯塊和電路。如此分割,逐步的將系統(tǒng)細(xì)化,將功能逐步的具體化,模塊化。高層次設(shè)計(jì)進(jìn)行功能和接口描述,說明模塊的功能和接口,模塊功能的更詳細(xì)描述在下一設(shè)計(jì)層次說明,最底層的設(shè)計(jì)才涉及具體寄存器和邏輯門電路等實(shí)現(xiàn)方式的描述。四 模塊設(shè)計(jì) 1.分頻模塊
將輸入1KHZ的系統(tǒng)時(shí)鐘經(jīng)過十分頻分為100HZ的單位時(shí)鐘。編程原理跟計(jì)數(shù)器原理相似。
2.定時(shí)模塊
采用2個(gè)60進(jìn)制、1個(gè)100進(jìn)制的BCD碼全加器作為定時(shí)器,分為分,秒,百分秒,輸入時(shí)鐘信號為分頻器輸出信號100HZ時(shí)鐘,外界兩個(gè)撥碼開關(guān)作為清零按鈕和暫停按鈕。
3.位選發(fā)生器:
根據(jù)顯示的數(shù)據(jù)位和人眼暫留效應(yīng),設(shè)計(jì)顯示分為分、秒、百分秒位,每位需要2個(gè)數(shù)碼管進(jìn)行顯示,因此變化頻率至少為300HZ,為了方便則采用1KHZ,循環(huán)碼則從000循環(huán)到101。
4.多路選擇器
根據(jù)位選信號,輸出對應(yīng)位顯示的數(shù)據(jù)。
5.譯碼器
將多路選擇器輸出端的數(shù)據(jù)對應(yīng)的轉(zhuǎn)換為七段二進(jìn)制數(shù),送給顯示器。
五 頂層原理圖
以上所描述的模塊的程序編寫均在同一工程下,由程序生成的元件也在該工程下,所以可以在該工程下再建一原理圖作為頂層,將所需要的元件按照要求進(jìn)行連線,加入輸入輸出處端口并改名。包層原理圖,并將原理圖置為頂層文件。
由于我們的程序是寫在一起的,所以本設(shè)計(jì)的整體原理圖如圖1所示:
qweclkINPUTVCCclkrstkey2instout_wei[7..0]out_duan[7..0]OUTPUTout_wei[7..0]rstINPUTVCCOUTPUTout_duan[7..0]key2INPUTVCC圖1.實(shí)驗(yàn)原理圖
六 系統(tǒng)仿真與引腳分配
本實(shí)驗(yàn)結(jié)果的仿真圖與引腳分配如下圖2
引腳分配
實(shí)驗(yàn)原理圖
圖2.實(shí)驗(yàn)結(jié)果仿真圖與引腳分配
七 器件編程與硬件下載
1.在Quartus軟件中為頂層文件選擇好芯片類型,選擇引腳后進(jìn)行編譯。
2.將實(shí)驗(yàn)箱端口與計(jì)算機(jī)相應(yīng)端口連接,檢測試驗(yàn)箱是否可以使用,經(jīng)檢測無誤后,關(guān)閉試驗(yàn)箱,將主芯片標(biāo)號對應(yīng)頂層文件相應(yīng)引腳標(biāo)號連線到相應(yīng)器件處。即輸入時(shí)鐘信號端接試驗(yàn)箱時(shí)鐘發(fā)生電路CLK輸出端(用50MHz信號),啟動新號段與歸零信號端分別接兩個(gè)撥碼開關(guān),輸出端count[2..0]分別接3/8譯碼器的SEL2—SEL0端,輸出a,b,c,d,e,f,g,h端接顯示譯碼器的相應(yīng)輸入端,連接好線后打開試驗(yàn)箱電源,將設(shè)計(jì)好的程序下載到試驗(yàn)箱的芯片上即可測試功能。八 總結(jié)及心得
1.總結(jié)
通過這次課程設(shè)計(jì)讓我對EDA這門課有了更深刻的了解,對設(shè)計(jì)過程中困難重重現(xiàn)總結(jié)如: 在程序編寫時(shí),先要在心中規(guī)劃一個(gè)大概流程,然后編寫,經(jīng)過與其他同學(xué)多次合作修改最終編譯而成,在如何編寫程序方面收獲頗多;
在往開發(fā)板上導(dǎo)程序的時(shí)候,雖然出現(xiàn)了幾次錯誤,但是只要有耐心,就能獲得成功。2.心得體會
這次EDA課程設(shè)計(jì),可以說是苦多于甜,但是可以學(xué)的到很多很多的東西,同時(shí)不僅可以鞏固以前所學(xué)過的知識,而且學(xué)到了很多在書本上所沒有學(xué)到過的知識。通過這次設(shè)計(jì),進(jìn)一步加深了對EDA的了解,讓我對它有了更加濃厚的興趣。特別是當(dāng)程序編寫調(diào)試成功時(shí),心里特別的開心。但在編寫時(shí),有錯誤,在細(xì)心的檢查下,終于找出了錯誤和警告,排除困難后,程序編譯就通過了,心里終于舒了一口氣。在波形仿真時(shí),也遇到了一點(diǎn)困難,想要的結(jié)果不能在波形上得到正確的顯示。
通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識與實(shí)踐相結(jié)合起來,從理論中得出結(jié)論,才能真正為社會服務(wù),從而提高自己的實(shí)際動手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,這畢竟第一次做的,難免會遇到過各種各樣的問題,同時(shí)在設(shè)計(jì)的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學(xué)過的知識理解得不夠深刻,掌握得不夠牢固。
總的來說,這次設(shè)計(jì)的數(shù)字秒表還是比較成功的,在設(shè)計(jì)中遇到了很多問題,最后在同學(xué)的幫助下,終于游逆而解,有點(diǎn)小小的成就感,終于覺得平時(shí)所學(xué)的知識有了實(shí)用的價(jià)值,達(dá)到了理論與實(shí)際相結(jié)合的目的,不僅學(xué)到了不少知識,而且鍛煉了自己的能力,使自己對以后的路有了更加清楚的認(rèn)識,同時(shí),對未來有了更多的信心。最后,對給過我?guī)椭乃型瑢W(xué)再次表示忠心的感謝!九 設(shè)計(jì)程序如下:
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課程設(shè)計(jì) 數(shù)字時(shí)鐘
EDA
課程設(shè)計(jì)報(bào)告
一·設(shè)計(jì)任務(wù)
使用硬件描述語言,在CPLD/FPGA上實(shí)現(xiàn)一個(gè)多功能數(shù)字鐘。
二·設(shè)計(jì)要求
除按鍵、LED、揚(yáng)聲器、時(shí)鐘信號外,整個(gè)數(shù)字鐘的功能要求在一塊芯片上實(shí)現(xiàn)。
a)具有時(shí),分,秒,計(jì)數(shù)顯示功能,以24小時(shí)循環(huán)計(jì)時(shí); b)具有時(shí)間清零功能;
c)具有小時(shí)、分鐘和秒鐘調(diào)整功能(個(gè)位和十位分開調(diào)或合起來調(diào))。
d)具有鬧鐘功能,能預(yù)設(shè)鬧鐘時(shí)間,精確到秒。
整個(gè)數(shù)字鐘只設(shè)一個(gè)時(shí)鐘輸入端口,所需不同頻率信
號在內(nèi)部分頻實(shí)現(xiàn)。(LED掃描頻率設(shè)為50Hz以上)。
三·設(shè)計(jì)方案
設(shè)計(jì)采用模塊方式,分別為分頻模塊:產(chǎn)生1Hz的脈沖作為秒的輸入,和產(chǎn)生1kHz的脈沖作為數(shù)碼管顯示的動態(tài)掃描。計(jì)時(shí)模塊:秒模塊,分模塊,時(shí)模塊。鬧鐘模塊,顯示模塊,控制模塊。
四·模塊端口設(shè)置
1.分頻模塊
輸入:clkin :
本實(shí)驗(yàn)輸入為50MHz晶振
輸出:clk : 為顯示模塊及始終調(diào)節(jié)提供1KHz脈沖
clkt: 為計(jì)數(shù)器模塊提供1Hz脈沖
2.計(jì)時(shí)模塊
m 是模式按鍵,當(dāng)m=0 時(shí),進(jìn)入計(jì)時(shí)模式,在計(jì)時(shí)模式下可以進(jìn)行時(shí)間調(diào)整。num3,num4 產(chǎn)生加速調(diào)整時(shí)間,當(dāng)其值為1 時(shí),可以快速調(diào)整時(shí)間,該調(diào)整時(shí)間的頻率由clk 提
供。counta,count1 是手動調(diào)節(jié)時(shí)間。Turn 接按鍵,可以改變當(dāng)前調(diào)節(jié)的是小時(shí)還是分鐘,長按turn 鍵還可以使秒鐘信號清零。sec1,min1,hour1 輸出的是計(jì)時(shí)的秒,分,時(shí)。
3.鬧鐘模塊
原理:num1,num2 產(chǎn)生加速調(diào)整時(shí)間,當(dāng)其值為1 時(shí),可以快速調(diào)整時(shí)間,該調(diào)整時(shí)間的
頻率由clk 提供。countb,count2 是手動調(diào)節(jié)鬧鐘時(shí)間。amin,ahour 是輸出的鬧鐘的分鐘和 小時(shí) 4.控制模塊
m 是模式按鍵,當(dāng)m=0 時(shí),指當(dāng)前輸出的是計(jì)時(shí)功能;當(dāng)m=1 時(shí),指當(dāng)前調(diào)整的是
鬧鐘時(shí)間;當(dāng)m=2 時(shí),指當(dāng)前調(diào)整的是計(jì)時(shí)時(shí)間;當(dāng)m=3 時(shí),此時(shí)turn 按鍵可用于跑表的
暫停與開始。change 接按鍵,手動調(diào)整時(shí),每按一次,計(jì)數(shù)器加1;如果長按,則連續(xù)快
速加1,用于快速調(diào)時(shí)和定時(shí);turn 接按鍵,在手動校時(shí)功能時(shí),選擇是調(diào)整小時(shí),還是分
鐘;若長時(shí)間按住該鍵,還可使秒信號清零,用于精確調(diào)時(shí)。count1,count2,counta,countb 分
別是用來調(diào)節(jié)計(jì)時(shí)時(shí)間和鬧鐘時(shí)間。LD_min,LD_hour,指示當(dāng)前調(diào)節(jié)的是分鐘還是小時(shí)。5 顯示模塊
輸入:clk--1kHz時(shí)鐘,提供高頻掃描
in0、in1…in5--分別為時(shí)、分、秒的個(gè)位與十位信號
輸出: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
計(jì)時(shí)模塊 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 /////秒鐘計(jì)時(shí)模塊////// always @(posedge clkt)
if((sec1==8'h59)|turn&(!m))///////若長時(shí)間按住該鍵,還可使秒信號清零,用于精確調(diào)時(shí)。begin sec1<=0;//按住“turn”按鍵一段時(shí)間,秒信號可清零,該功能用于手動精確調(diào)時(shí)
if(!(turn&(!m)))minclk<=1;///產(chǎn)生進(jì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 ////////分鐘計(jì)時(shí)模?/// assign m_clk=minclk||count1;/////m_clk 產(chǎn)生進(jìn)位或校正改變 assign ct1=(num3&clk)|(!num3&m_clk);//ct1 用于計(jì)時(shí)、校時(shí)中的分鐘計(jì)數(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 ////////小時(shí)計(jì)時(shí)模塊/// assign h_clk=hclk||counta;//////h_clk 產(chǎn)生進(jìn)位或校正改變 assign cta=(num4&clk)|(!num4&h_clk);//cta 用于計(jì)時(shí)、校時(shí)中的小時(shí)計(jì)數(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 用于定時(shí)狀態(tài)下調(diào)整分鐘信號
assign LD_alert=(ahour|amin)?1:0;//指示是否進(jìn)行了鬧鈴定時(shí) 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 用于定時(shí)狀態(tài)調(diào)節(jié)小時(shí)信號 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)//////////接按鍵,在手動校時(shí)功能時(shí),選擇是調(diào)整小時(shí),還是分鐘; begin fm<=~fm;end
always @(m or fm or change)begin case(m)2: begin ////////2:調(diào)節(jié)時(shí)間功能; 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)整的是小時(shí) {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)整的是小時(shí) {count1,counta}<=0;end
0: begin {count1,count2,counta,countb,LD_min,LD_hour}<=0;end ////0:計(jì)時(shí)功能 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
六
實(shí)驗(yàn)分析 七
實(shí)驗(yàn)總結(jié)
八、參考資料
1、《EDA技術(shù)實(shí)用教程》
2、實(shí)驗(yàn)箱使用說明;
第三篇:EDA課程設(shè)計(jì)——數(shù)字時(shí)鐘
Hefei University
EDA課程綜述
論文題目: EDA課程綜述
專 業(yè): 09通信(2)班
姓 名: 唐吉祥
學(xué) 號: 0905072035 指導(dǎo)老師: 查長軍
前
言
隨著基于PLD的EDA技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的擴(kuò)大和深入,EDA技術(shù)在電子信息、通信、自動控制及計(jì)算機(jī)應(yīng)用領(lǐng)域的重要性日益提高。
作為現(xiàn)在的大學(xué)生應(yīng)熟練掌握這門技術(shù),為以后的發(fā)展打下良好的基礎(chǔ),本實(shí)驗(yàn)設(shè)計(jì)是應(yīng)用QuartusII環(huán)境及VHDL語言設(shè)計(jì)一個(gè)時(shí)間可調(diào)的數(shù)字時(shí)鐘。使自己熟練使用QuartusII環(huán)境來進(jìn)行設(shè)計(jì),掌握VHDL語言的設(shè)計(jì)方法。要注重理論與實(shí)踐之間的不同,培養(yǎng)自己的實(shí)踐能力!
目錄
一、課程設(shè)計(jì)任務(wù)及要求............................................................................................3
1.1實(shí)驗(yàn)?zāi)康?.........................................................................................................3 1.2功能設(shè)計(jì)..........................................................................................................3
二、整體設(shè)計(jì)思想........................................................................................................3
2.1性能指標(biāo)及功能設(shè)計(jì)......................................................................................3 2.2總體方框圖......................................................................................................4
三、詳細(xì)設(shè)計(jì)................................................................................................................4
3.1數(shù)字鐘的基本工作原理:..............................................................................4
3.1.1時(shí)基T 產(chǎn)生電路..................................................................................4 3.1.2調(diào)時(shí)、調(diào)分信號的產(chǎn)生......................................................................4 3.1.3計(jì)數(shù)顯示電路.......................................................................................5 3.2設(shè)計(jì)思路..........................................................................................................5 3.3設(shè)計(jì)步驟..........................................................................................................6
3.3.1工程建立及存盤...................................................................................6 3.3.2工程項(xiàng)目的編譯...................................................................................7 3.3.3目標(biāo)芯片的選擇...................................................................................7 3.3.4時(shí)序仿真...............................................................................................8 3.3.5引腳鎖定.............................................................................................10 3.3.6硬件測試.............................................................................................11 3.3.7實(shí)驗(yàn)結(jié)果.............................................................................................11
四、設(shè)計(jì)總結(jié)..............................................................................................................12
五、附錄......................................................................................................................12
5.1 VHDL源程序..................................................................................................12 5.2配置符號圖....................................................................................................17
一、課程設(shè)計(jì)任務(wù)及要求
1.1實(shí)驗(yàn)?zāi)康?/p>
1)掌握VHDL語言的基本運(yùn)用
2)掌握QuartusII的簡單操作并會使用EDA實(shí)驗(yàn)箱 3)掌握一個(gè)基本EDA課程設(shè)計(jì)的操作
1.2功能設(shè)計(jì)
1)有時(shí)、分、秒計(jì)數(shù)顯示功能,小時(shí)為24進(jìn)制,分鐘和秒為60進(jìn)制以24小時(shí)循環(huán)計(jì)時(shí)
2)設(shè)置復(fù)位、清零等功能
3)有校時(shí)功能,可以分別對時(shí)及分進(jìn)行單獨(dú)校時(shí),使其校正到標(biāo)準(zhǔn)時(shí)間 4)時(shí)鐘計(jì)數(shù)顯示時(shí)有LED燈顯示
二、整體設(shè)計(jì)思想
2.1性能指標(biāo)及功能設(shè)計(jì)
1)時(shí)、分、秒計(jì)時(shí)器
時(shí)計(jì)時(shí)器為一個(gè)24進(jìn)制計(jì)數(shù)器,分、秒計(jì)時(shí)器均為60進(jìn)制計(jì)數(shù)器。當(dāng)秒計(jì)時(shí)器接受到一個(gè)秒脈沖時(shí),秒計(jì)數(shù)器開始從1計(jì)數(shù)到60,此時(shí)秒顯示器將顯示00、01、02、...、59、00;每當(dāng)秒計(jì)數(shù)器數(shù)到00時(shí),就會產(chǎn)生一個(gè)脈沖輸出送至分計(jì)時(shí)器,此時(shí)分計(jì)數(shù)器數(shù)值在原有基礎(chǔ)上加1,其顯示器將顯示00、01、02、...、59、00;每當(dāng)分計(jì)數(shù)器數(shù)到00時(shí),就會產(chǎn)生一個(gè)脈沖輸出送至?xí)r計(jì)時(shí)器,此時(shí)時(shí)計(jì)數(shù)器數(shù)值在原有基礎(chǔ)上加1,其顯示器將顯示00、01、02、...、23、00。即當(dāng)數(shù)字鐘運(yùn)行到23點(diǎn)59分59秒時(shí),當(dāng)秒計(jì)時(shí)器在接受一個(gè)秒脈沖,數(shù)字鐘將自動顯示00點(diǎn)00分00秒。2)校時(shí)電路
當(dāng)開關(guān)撥至校時(shí)檔時(shí),電子鐘秒計(jì)時(shí)工作,通過時(shí)、分校時(shí)開關(guān)分別對時(shí)、分進(jìn)行校對,開關(guān)每按1次,與開關(guān)對應(yīng)的時(shí)或分計(jì)數(shù)器加1,當(dāng)調(diào)至需要的時(shí)與分時(shí),撥動reset開關(guān),電子鐘從設(shè)置的時(shí)間開始往后計(jì)時(shí)。2.2總體方框圖
三、詳細(xì)設(shè)計(jì)
3.1數(shù)字鐘的基本工作原理:
3.1.1時(shí)基T 產(chǎn)生電路
數(shù)字鐘以其顯示時(shí)間的直觀性、走時(shí)準(zhǔn)確性作為一種計(jì)時(shí)工具,數(shù)字鐘的基本組成部分離不開計(jì)數(shù)器,在控制邏輯電路的控制下完成預(yù)定的各項(xiàng)功能。
由晶振產(chǎn)生的頻率非常穩(wěn)定的脈沖,經(jīng)整形、穩(wěn)定電路后,產(chǎn)生一個(gè)頻率為1Hz的、非常穩(wěn)定的計(jì)數(shù)時(shí)鐘脈沖。
3.1.2調(diào)時(shí)、調(diào)分信號的產(chǎn)生
由計(jì)數(shù)器的計(jì)數(shù)過程可知,正常計(jì)數(shù)時(shí),當(dāng)秒計(jì)數(shù)器(60進(jìn)制)計(jì)數(shù)到59 時(shí),再來一個(gè)脈沖,則秒計(jì)數(shù)器清零,重新開始新一輪的計(jì)數(shù),而進(jìn)位則作為分計(jì)數(shù)器的計(jì)數(shù)脈沖,使分計(jì)數(shù)器計(jì)數(shù)加1?,F(xiàn)在我們把電路稍做變動:把秒計(jì)數(shù)器的進(jìn)位脈沖和一個(gè)頻率為2Hz的脈沖信號同時(shí)接到一個(gè)2選1數(shù)據(jù)選擇器的兩個(gè)數(shù)據(jù)輸入端,而位選信號則接一個(gè)脈沖按鍵開關(guān),當(dāng)按鍵開關(guān)不按下去時(shí)(即為0),則數(shù)據(jù)選擇器將秒計(jì)數(shù)器的進(jìn)位脈沖送到分計(jì)數(shù)器,此時(shí),數(shù)字鐘正常工作;當(dāng)按鍵開關(guān)按下去時(shí)(即為1),則數(shù)據(jù)選擇器將另外一個(gè)2Hz 的信號作為分計(jì)數(shù) 器的計(jì)數(shù)脈沖,使其計(jì)數(shù)頻率加快,當(dāng)達(dá)到正確時(shí)間時(shí),松開按鍵開關(guān),從而達(dá)到調(diào)時(shí)的目的。調(diào)節(jié)小時(shí)的時(shí)間也一樣的實(shí)現(xiàn)。
3.1.3計(jì)數(shù)顯示電路
由計(jì)數(shù)部分、數(shù)據(jù)選擇器、譯碼器組成,是時(shí)鐘的關(guān)鍵部分。
1、計(jì)數(shù)部分:由兩個(gè)60進(jìn)制計(jì)數(shù)器和一個(gè)24 進(jìn)制計(jì)數(shù)器組成,其中60 進(jìn)制計(jì)數(shù)器可用6 進(jìn)制計(jì)數(shù)器和10 進(jìn)制計(jì)數(shù)器構(gòu)成;24 進(jìn)制的小時(shí)計(jì)數(shù)同樣可用6 進(jìn)制計(jì)數(shù)器和10 進(jìn)制計(jì)數(shù)器得到:當(dāng)計(jì)數(shù)器計(jì)數(shù)到24 時(shí),“2”和“4”同時(shí)進(jìn)行清零,則可實(shí)現(xiàn)24 進(jìn)制計(jì)數(shù)。
2、數(shù)據(jù)選擇器:84 輸入14 輸出的多路數(shù)據(jù)選擇器,因?yàn)楸緦?shí)驗(yàn)用到了8個(gè)數(shù)碼管(有兩個(gè)用來產(chǎn)生隔離符號‘—’)。
3、譯碼器:七段譯碼器。譯碼器必須能譯出‘—’,由實(shí)驗(yàn)二中譯碼器真值表可得:字母F 的8421BCD 碼為“1111”,譯碼后為“1000111”,現(xiàn)在如果只譯出‘—’,即字母F的中間一橫,則譯碼后應(yīng)為“0000001”,這樣,在數(shù)碼管上顯示的就為‘—’。
3.2設(shè)計(jì)思路
根據(jù)系統(tǒng)設(shè)計(jì)要求,系統(tǒng)設(shè)計(jì)采用自頂向下設(shè)計(jì)方法,由時(shí)鐘分頻部分、計(jì)時(shí)部分、按鍵部分調(diào)時(shí)部分和顯示部分五個(gè)部分組成。這些模塊都放在一個(gè)頂層文件中。
1)時(shí)鐘計(jì)數(shù):
首先下載程序進(jìn)行復(fù)位清零操作,電子鐘從00:00:00計(jì)時(shí)開始。sethour可以調(diào)整時(shí)鐘的小時(shí)部分, setmin可以調(diào)整分鐘,步進(jìn)為1。
由于電子鐘的最小計(jì)時(shí)單位是1s,因此提供給系統(tǒng)的內(nèi)部的時(shí)鐘頻率應(yīng)該大于1Hz,這里取100Hz。CLK端連接外部10Hz的時(shí)鐘輸入信號clk。對clk進(jìn)行計(jì)數(shù),當(dāng)clk=10時(shí),秒加1,當(dāng)秒加到60時(shí),分加1;當(dāng)分加到60時(shí),時(shí)加1;當(dāng)時(shí)加到24時(shí),全部清0,從新計(jì)時(shí)。
用6位數(shù)碼管分別顯示“時(shí)”、“分”、“秒”,通過OUTPUT(6 DOWNTO 0)上的信號來點(diǎn)亮指定的LED七段顯示數(shù)碼管。
2)時(shí)間設(shè)置:
手動調(diào)節(jié)分鐘、小時(shí),可以對所設(shè)計(jì)的時(shí)鐘任意調(diào)時(shí)間,這樣使數(shù)字鐘真正具有使用功能。我們可以通過實(shí)驗(yàn)板上的鍵7和鍵4進(jìn)行任意的調(diào)整,因?yàn)槲覀冇玫臅r(shí)鐘信號均是1HZ的,所以每LED燈變化一次就來一個(gè)脈沖,即計(jì)數(shù)一次。3)清零功能: reset為復(fù)位鍵,低電平時(shí)實(shí)現(xiàn)清零功能,高電平時(shí)正常計(jì)數(shù)??梢愿鶕?jù)我們自己任意時(shí)間的復(fù)位。
3.3設(shè)計(jì)步驟
3.3.1工程建立及存盤
1.打開 QuartusⅡ,單擊“File”菜單,選擇 File→New Project Wizard,對話框如下:分別輸入項(xiàng)目的工作路徑、項(xiàng)目名和實(shí)體名,單擊Finish。
2.單擊“File”菜單,選擇New,彈出小對話框,雙擊“VHDL File“,即選中了文本編輯方式。在出現(xiàn)的“Vhdl1.vhd”文本編輯窗中鍵入VHDL程序,輸入完畢后,選擇File→Save As,即出現(xiàn)“Save As”對話框。選擇自己建立好的存放本文件的目錄,然后在文件名框中鍵入文件名,按“Save”按鈕。
3.建立工程項(xiàng)目,在保存VHDL文件時(shí)會彈出是否建立項(xiàng)目的小窗口,點(diǎn)擊“Yes”確定。即出現(xiàn)建立工程項(xiàng)目的導(dǎo)航窗口,點(diǎn)擊“Next”,最后在出現(xiàn)的屏幕中分別鍵入新項(xiàng)目的工作路徑、項(xiàng)目名和實(shí)體名。注意,原理圖輸入設(shè)計(jì)方法中,存盤的原理圖文件名可以是任意的,但VHDL程序文本存盤的文件名必須與文件的實(shí)體名一致,輸入后,單擊“Finish”按鈕。3.3.2工程項(xiàng)目的編譯
單擊工具條上的編譯符號開始編譯,并隨著進(jìn)度不斷變化屏幕,編譯完成后的屏幕如圖所示:
3.3.3目標(biāo)芯片的選擇
選擇菜單 Assignments 選項(xiàng)的下拉菜單中選擇器件 Device ?,如圖所示: 在彈出的對話框中的 Family(器件序列欄)對應(yīng)的序列名,EP1C3 對應(yīng)的是 Cyclone 系列。在 Available Devices里選擇 EP1C3T144-C8(有時(shí)需要把 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í)機(jī)的“FPGA”具有很多功能,為了避免使用引腳對其它器件造成影響,保證本系統(tǒng)可靠工作,將未使用引腳設(shè)定為輸出不定狀態(tài))后,單擊確定后,無誤后單擊“OK”。
3.3.4時(shí)序仿真
建立波形文件:選擇 File→New,在New窗中選中“Other File”標(biāo)簽。在出現(xiàn)的屏幕中選擇“Vector Waveform File”項(xiàng)出現(xiàn)一新的屏幕。在出現(xiàn)的新屏幕中,雙擊“Name”下方的空白處,彈出“Insert Nod or Bus”對話框,單擊該對話框的“Node Finder??”。在屏幕中的 Filter 中選擇 Pins,單擊“List”。而后,單擊“>>”,所有輸入/輸出都被拷貝到右邊的一側(cè),這些正是我們希望的各個(gè)引腳,也可以只選其中的的一部分,根據(jù)實(shí)際情況決定。然后單擊屏幕右上腳的 “OK”。在出現(xiàn)的小屏幕上單擊“OK”。
設(shè)定仿真時(shí)間寬度。選擇 Edit → End time?選項(xiàng),在End time選擇窗中選擇適當(dāng)?shù)姆抡鏁r(shí)間域,以便有足夠長的觀察時(shí)間。
波形文件存盤。選擇File→Save as 選項(xiàng),直接存盤即可。運(yùn)行仿真器。在菜單中選擇項(xiàng),直到出現(xiàn),仿真結(jié)束。
未曾編輯的仿真波形
仿真波形 3.3.5引腳鎖定
將設(shè)計(jì)編程下載進(jìn)選定的目標(biāo)器件中,如EPF10K10,作進(jìn)一步的硬件測試,將設(shè)計(jì)的所有輸入輸出引腳分別與目標(biāo)器件的EPF10K10的部分引腳相接,操作如下:
1.選擇 Assignments → Assignments Editor ,即進(jìn)入 Assignments Editor編輯器。在Category 欄選擇 Pin,或直接單擊右上側(cè)的 Pin 按鈕。
2.雙擊 TO 欄的《new》,在出現(xiàn)的的下拉欄中選擇對應(yīng)的端口信號名(如 D[0]);然后雙擊對應(yīng)的欄的《new》,在出現(xiàn)的下拉欄中選擇對應(yīng)的端口信號名的期間引腳號。
3.最后存儲這些引腳鎖定信息后,必須再編譯(啟動)一次,才能將引腳鎖定信息編譯進(jìn)編程下載文件中。此后就可以準(zhǔn)備將編譯好的 SOF 文件下載到試驗(yàn)系統(tǒng)的FPGA中去了。
引腳鎖定 3.3.6硬件測試
1.首先將下載線把計(jì)算機(jī)的打印機(jī)口與目標(biāo)板(如開發(fā)板或?qū)嶒?yàn)板)連接好,打開電源,選擇模式7。
2.打開編輯窗和配置文件。選擇,彈出一個(gè)編輯窗。在Mode欄中選擇JTAG,并在選項(xiàng)下的小方框打勾。注意核對下載文件路徑與文件名。如果文件沒有出現(xiàn)或者出錯,單擊左Add file側(cè)按鈕,手動選擇配置文件 clock.sof。
3.最后單擊下載標(biāo)符Start,即進(jìn)入對目標(biāo)器件 FPGA 的配置下載操作。當(dāng) Progress 顯示100%,以及在底部的處理欄中出現(xiàn) Configuration Succeeded 時(shí),表示編程成功,如圖所示。注意,如果必要時(shí),可再次單擊 Start,直至編程成功。
4.下載完成后,通過硬件測試進(jìn)一步確定設(shè)計(jì)是否達(dá)到所有的技術(shù)指標(biāo),如未達(dá)到,可逐步檢查,哪部分出現(xiàn)問題。如果是代碼出現(xiàn)問題,須修改代碼;若是時(shí)序波形圖有問題,須重新設(shè)置。
3.3.7實(shí)驗(yàn)結(jié)果
實(shí)驗(yàn)箱使用模式7,鍵8為復(fù)位按鍵,鍵8為1時(shí)正常工作。鍵4設(shè)置小時(shí),鍵7設(shè)置分鐘。
下載成功后,按下鍵8,及使六個(gè)LED復(fù)位清零,顯示數(shù)秒的自動計(jì)時(shí),可以通過4鍵設(shè)置小時(shí)數(shù),7鍵設(shè)置分鐘數(shù)。當(dāng)秒數(shù)滿60則進(jìn)一位,分鐘數(shù)滿60進(jìn)一位,當(dāng)顯示為23:59:59時(shí),秒數(shù)在加一則顯示00:00:00,之后從新計(jì)時(shí)。
四、設(shè)計(jì)總結(jié)
通過這次課程設(shè)計(jì),我進(jìn)一步加深了對電子設(shè)計(jì)自動化的了解。并進(jìn)一步熟練了對QuartusII軟件的操作。在編寫程序的過程中,遇到了很多問題,使我發(fā)現(xiàn)自己以前學(xué)習(xí)上存在的不足。通過與同學(xué)探討和請教老師,終于把問題都解決了,并加深了對數(shù)字時(shí)鐘原理和設(shè)計(jì)思路的了解。
同時(shí)也掌握了做課程設(shè)計(jì)的一般流程,為以后的設(shè)計(jì)積累了一定的經(jīng)驗(yàn)。做課程設(shè)計(jì)時(shí),先查閱相關(guān)知識,把原理吃透,確定一個(gè)大的設(shè)計(jì)方向,在按照這個(gè)方向分模塊的把要實(shí)現(xiàn)的功能用流程圖的形式展示。最后參照每個(gè)模塊把輸入和輸出引腳設(shè)定,運(yùn)用我們所學(xué)的VHDL語言進(jìn)行編程??傊?,通過這次的設(shè)計(jì),進(jìn)一步了解了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為三進(jìn)制加法計(jì)數(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)點(diǎ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--若個(gè)位計(jì)時(shí)恰好到”1001“即9
IF(count<16#23#)THEN
--23進(jìn)制
count<=count+7;
--若到23D則
else
count<=”000000“;
--復(fù)0
END IF;
ELSIF(count<16#23#)THEN
--若未到23D,則count進(jìn)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分時(shí)的進(jìn)位信號 BEGIN
--enmin_2由clk調(diào)制后的手動調(diào)時(shí)脈沖信號串
daout<=count;
enhour_2<=(sethour and clk1);--sethour為手動調(diào)時(shí)控制信號,高電平有效
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--若個(gè)位計(jì)時(shí)恰好到”1001“即9
IF(count <16#60#)THEN--又若count小于16#60#,即60
IF(count=”1011001“)THEN--又若已到59D
enhour_1<='1';--則置進(jìn)位為1
count<=”0000000“;--count復(fù)0
ELSE
count<=count+7;--若count未到59D,則加7,即作”加6校正“
END IF;--使前面的16#60#的個(gè)位轉(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ā)生進(jìn)位
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秒時(shí)的進(jìn)位信號
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為向分進(jìn)位信號
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
--若個(gè)位計(jì)時(shí)恰好到”1001“即9
IF(count<16#60#)then--又若count小于16#60#,即60H IF(count=”1011001“)then
--又若已到59D
enmin_1<='1';count<=”0000000“;--則置進(jìn)位為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--若個(gè)位計(jì)數(shù)未到”1001“則轉(zhuǎn)此句再判
count<=count+1;
--若count<16#60#則count加1
enmin_1<='0'after 100 ns;--沒有發(fā)生進(jìn)位
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ù)的數(shù)字時(shí)鐘設(shè)計(jì) 最終版范文
物理與電子學(xué)院
《》 課程考核論文
論文作者姓名:
作
者 學(xué) 號:
所
學(xué) 專 業(yè):
理科
物理方向
任
課 教 師:
高偉
完
成 時(shí) 間:
2015年6月
基于EDA技術(shù)的數(shù)字時(shí)鐘設(shè)計(jì)
目錄
摘要··················································································2 一.緒論·············································································3 1.課題的研究背景·································································3 2.數(shù)字電子鐘的發(fā)展簡況·························································3 二.系統(tǒng)設(shè)計(jì)········································································4 1.整體規(guī)劃·········································································4 2.時(shí)基信號產(chǎn)生電路·······························································5 3.調(diào)時(shí)、調(diào)分信號的產(chǎn)生電路····················································5 4.計(jì)數(shù)顯示電路····································································6 三.基本功能實(shí)現(xiàn)···································································6 1.時(shí)鐘計(jì)數(shù)··········································································7 2.校時(shí)設(shè)置··········································································7 3.清零功能··········································································8 4.定時(shí)、報(bào)時(shí)功能··································································9 四.系統(tǒng)軟件實(shí)現(xiàn)···································································9 1.詳細(xì)模塊描述·····································································9 2.總體設(shè)計(jì)及引腳設(shè)置·····························································9 五.系統(tǒng)仿真及分析································································10 1.各模塊時(shí)序仿真·································································10 2.總體時(shí)序仿真····································································11 3.實(shí)驗(yàn)結(jié)果·········································································11 六.設(shè)計(jì)總結(jié)········································································12 ·參考文獻(xiàn)···········································································12 附錄:參考程序······································································13
摘要
隨著基于PLD的EDA技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的擴(kuò)大與深入,EDA技術(shù)在電子信息、通信、自動控制及計(jì)算機(jī)應(yīng)用等領(lǐng)域的重要性日益突出。本文詳細(xì)介紹EDA課程設(shè)計(jì)任務(wù)——數(shù)字鐘的設(shè)計(jì)的詳細(xì)設(shè)計(jì)過程及結(jié)果,并總結(jié)出心得體會。
主體:主要涉及模60與模24計(jì)數(shù)器、動態(tài)顯示控制電路、分頻器主要整點(diǎn)報(bào)時(shí)電路,這些電路都是以模塊封裝好的,以便其他電路調(diào)用。以計(jì)數(shù)器構(gòu)成計(jì)時(shí)部件,通過分頻器分出的1HZ脈沖計(jì)時(shí),調(diào)用動態(tài)顯示電路顯示,通過整點(diǎn)報(bào)時(shí)電路控制蜂鳴器。在計(jì)數(shù)器級聯(lián)時(shí)采用內(nèi)部同步外部異步的方式,但通過簡單的改變達(dá)到了同步的效果而且比同步還可靠。顯示控制時(shí)為了節(jié)約資源采用動態(tài)原理。
關(guān)鍵字 多功能數(shù)字時(shí)鐘
整點(diǎn)報(bào)時(shí) EDA技術(shù) 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.課題的研究背景
當(dāng)面對這樣一個(gè)信息爆炸的時(shí)代,時(shí)間變得越來越寶貴,人們無疑需要一個(gè)良好的計(jì)劃時(shí)間表,而這就需要一個(gè)系統(tǒng)完善成熟的定時(shí)系統(tǒng)來及時(shí)提醒人們。然而在這個(gè)新技術(shù)、新產(chǎn)品不斷涌現(xiàn),各類產(chǎn)品功能日益強(qiáng)大,這就需要我們帶著戰(zhàn)略性眼光選擇。多功能數(shù)字電子鐘無意是人們最好的選擇之一,多功能數(shù)字時(shí)鐘小巧、價(jià)格低廉,外觀造型日益精美、精確度高、功能齊全、使用方便,不僅僅可以顯示鐘表的功能也具備計(jì)時(shí)、測溫、定鬧鐘、顯示日歷、語音報(bào)表等功能,其集成化高而受到廣大人們?nèi)罕娤矏?。在人們不斷的要求下,多功能?shù)字鐘已經(jīng)成為現(xiàn)代設(shè)計(jì)時(shí)鐘研究生產(chǎn)的主導(dǎo)方向。
2.數(shù)字電子鐘的發(fā)展簡況
在國外,公元以前,人們也是主要利用天文現(xiàn)象來計(jì)時(shí),比如觀察太陽日出日落、星相的轉(zhuǎn)移,此后當(dāng)在德國的亨萊思創(chuàng)造了小型機(jī)械鐘開始,國外的鐘表行業(yè)逐漸掀起,到了19世紀(jì),鐘表制造業(yè)已經(jīng)成為人們必不可少的一個(gè)行業(yè),鐘表制造業(yè)也逐漸的實(shí)現(xiàn)了工業(yè)化生產(chǎn),在20世紀(jì),隨著電子潮流的飛速發(fā)展,鐘表行業(yè)也出現(xiàn)了翻天覆地的變化,由單一的機(jī)械表轉(zhuǎn)向多元式的鐘表,有電池驅(qū)動鐘、電機(jī)械表、指針式電子鐘表、數(shù)字式電子鐘表等種類,并且功能不斷的增多如現(xiàn)在出現(xiàn)的多功能數(shù)字電子鐘,它采用的是數(shù)字電路來顯示分秒,它的作用早已不僅限于計(jì)時(shí)的功能,它還可以顯示日歷、定鬧、報(bào)時(shí)、測溫等功能。它人性化的設(shè)計(jì)給人們的生活帶來了很多的方便,成為人們?nèi)粘I畹谋匦杵贰?/p>
二.系統(tǒng)設(shè)計(jì)
1.整體規(guī)劃
數(shù)字電子時(shí)鐘主干電路系統(tǒng)由秒信號發(fā)生器、“時(shí)、分、秒”計(jì)數(shù)器、譯碼器及顯示器、校時(shí)電路、整點(diǎn)報(bào)時(shí)電路組成。將標(biāo)準(zhǔn)秒信號送入“秒計(jì)數(shù)器”,“秒計(jì)數(shù)器”采用60進(jìn)制計(jì)數(shù)器,每累計(jì)60秒發(fā)出一個(gè)“分脈沖”信號,該信號將作為“分計(jì)數(shù)器”的時(shí)鐘脈沖。“分計(jì)數(shù)器”也采用60進(jìn)制計(jì)數(shù)器,每累計(jì)60分鐘,發(fā)出一個(gè)“時(shí)脈沖”信號,該信號將被送到“時(shí)計(jì)數(shù)器”?!皶r(shí)計(jì)數(shù)器”采用12進(jìn)制計(jì)時(shí)器,可實(shí)現(xiàn)12小時(shí)的累計(jì)。通過六個(gè)LED顯示器顯示出來。整點(diǎn)報(bào)時(shí)電路根據(jù)計(jì)時(shí)系統(tǒng)的輸出狀態(tài)產(chǎn)生一脈沖信號,然后去觸發(fā)一音頻發(fā)生器實(shí)現(xiàn)報(bào)時(shí)。校時(shí)電路用來對“時(shí)”、“分”、“秒”顯示數(shù)字進(jìn)行校對調(diào)整。
電子時(shí)鐘系統(tǒng)總體規(guī)劃如圖1所示:
(1)根據(jù)電路特點(diǎn),用層次設(shè)計(jì)概念,將此設(shè)計(jì)任務(wù)分成若干模塊,規(guī)定每一模塊的功能和各模塊之間的接口,同時(shí)加深層次化設(shè)計(jì)概念。
(2)軟件的元件管理深層含義,以及模塊元件之間的連接概念,對于不同目錄下的同一設(shè)計(jì),如何融合。
(3)適配劃分前后的仿真內(nèi)容有何不同概念,仿真信號對象有何不同,有更深一步了解。
(4)按適配劃分后的引腳鎖定,同相關(guān)功能模塊硬件電路的接口連線。(5)所有模塊采用VHDL硬件描述語言設(shè)計(jì)。
圖1 總體方案框圖
2.時(shí)基信號產(chǎn)生電路
數(shù)字鐘以其顯示時(shí)間的直觀性、走時(shí)準(zhǔn)確性作為一種計(jì)時(shí)工具,數(shù)字鐘的基本組成部分離不開計(jì)數(shù)器,在控制邏輯電路的控制下完成預(yù)定的各項(xiàng)功能。由晶振產(chǎn)生的頻率非常穩(wěn)定的脈沖,經(jīng)整形、穩(wěn)定電路后,產(chǎn)生一個(gè)頻率為1Hz的、非常穩(wěn)定的計(jì)數(shù)時(shí)鐘脈沖。
3.調(diào)時(shí)、調(diào)分信號的產(chǎn)生電路
由計(jì)數(shù)器的計(jì)數(shù)過程可知,正常計(jì)數(shù)時(shí),當(dāng)秒計(jì)數(shù)器(60進(jìn)制)計(jì)數(shù)到59 時(shí),再來一個(gè)脈沖,則秒計(jì)數(shù)器清零,重新開始新一輪的計(jì)數(shù),而進(jìn)位則作為分計(jì)數(shù)器的計(jì)數(shù)脈沖,使分計(jì)數(shù)器計(jì)數(shù)加1。把秒計(jì)數(shù)器的進(jìn)位脈沖和一個(gè)頻率為2Hz的脈沖信號同時(shí)接到一個(gè)2選1數(shù)據(jù)選擇器的兩個(gè)數(shù)據(jù)輸入端,而位選信號則接一個(gè)脈沖按鍵開關(guān),當(dāng)按鍵開關(guān)不按下去時(shí)(即為0),則數(shù)據(jù)選擇器將秒計(jì)數(shù)器的進(jìn)位脈沖送到分計(jì)數(shù)器,此時(shí),數(shù)字鐘正常工作;當(dāng)按鍵開關(guān)按下去時(shí)(即為1),則數(shù)據(jù)選擇器將另外一個(gè)2Hz 的信號作為分計(jì)數(shù)器的計(jì)數(shù)脈沖,使其計(jì)數(shù)頻率加快,當(dāng)達(dá)到正確時(shí)間時(shí),松開按鍵開關(guān),從而達(dá)到調(diào)時(shí)的目的。調(diào)節(jié)小時(shí)的時(shí)間也一樣的實(shí)現(xiàn)。
4.計(jì)數(shù)顯示電路
由計(jì)數(shù)部分、數(shù)據(jù)選擇器、譯碼器組成,是時(shí)鐘的關(guān)鍵部分。
1、計(jì)數(shù)部分:由兩個(gè)60進(jìn)制計(jì)數(shù)器和一個(gè)24 進(jìn)制計(jì)數(shù)器組成,其中60 進(jìn)制計(jì)數(shù)器可用6 進(jìn)制計(jì)數(shù)器和10 進(jìn)制計(jì)數(shù)器構(gòu)成;24 進(jìn)制的小時(shí)計(jì)數(shù)同樣可用6 進(jìn)制計(jì)數(shù)器和10 進(jìn)制計(jì)數(shù)器得到:當(dāng)計(jì)數(shù)器計(jì)數(shù)到24 時(shí),“2”和“4”同時(shí)進(jìn)行清零,則可實(shí)現(xiàn)24 進(jìn)制計(jì)數(shù)。
2、數(shù)據(jù)選擇器:84 輸入14 輸出的多路數(shù)據(jù)選擇器,因?yàn)楸緦?shí)驗(yàn)用到了8個(gè)數(shù)碼管(有兩個(gè)用來產(chǎn)生隔離符號‘—’)。
3、譯碼器:七段譯碼器。譯碼器必須能譯出‘—’,由實(shí)驗(yàn)二中譯碼器真值表可得:字母F 的8421BCD 碼為“1111”,譯碼后為“1000111”,現(xiàn)在如果只譯出‘—’,即字母F的中間一橫,則譯碼后應(yīng)為“0000001”,這樣,在數(shù)碼管上顯示的就為‘—’。
三.基本功能實(shí)現(xiàn)
1.時(shí)鐘計(jì)數(shù):
首先下載程序進(jìn)行復(fù)位清零操作,電子鐘從00:00:00計(jì)時(shí)開始。sethour可以調(diào)整時(shí)鐘的小時(shí)部分, setmin可以調(diào)整分鐘,步進(jìn)為1。
由于電子鐘的最小計(jì)時(shí)單位是1s,因此提供給系統(tǒng)的內(nèi)部的時(shí)鐘頻率應(yīng)該大于1Hz,這里取100Hz。CLK端連接外部10Hz的時(shí)鐘輸入信號clk。對clk進(jìn)行計(jì)
數(shù),當(dāng)clk=10時(shí),秒加1,當(dāng)秒加到60時(shí),分加1;當(dāng)分加到60時(shí),時(shí)加1;當(dāng)時(shí)加到24時(shí),全部清0,從新計(jì)時(shí)。
用6位數(shù)碼管分別顯示“時(shí)”、“分”、“秒”,通過OUTPUT(6 DOWNTO 0)上的信號來點(diǎn)亮指定的LED七段顯示數(shù)碼管。
2.校時(shí)設(shè)置:
手動調(diào)節(jié)分鐘、小時(shí),可以對所設(shè)計(jì)的時(shí)鐘任意調(diào)時(shí)間,這樣使數(shù)字鐘真正具有使用功能。我們可以通過實(shí)驗(yàn)板進(jìn)行任意的調(diào)整,因?yàn)槲覀冇玫臅r(shí)鐘信號均是1HZ的,所以每LED燈變化一次就來一個(gè)脈沖,即計(jì)數(shù)一次。
通過一個(gè)開關(guān)的兩種電平,來打開個(gè)關(guān)閉一個(gè)二輸入與非門,另一個(gè)輸入端接1Hz的信號。因此這個(gè)開關(guān)實(shí)現(xiàn)了1Hz信號是否加入電路的作用,開關(guān)打在高電平上,1Hz信號通過與非門,開關(guān)打在低電平上,與非門輸出為高電平。把與非門的輸出信號,和時(shí)鐘正常走時(shí)所需要的時(shí)鐘信號,一起通過與門,加給分個(gè)位時(shí)鐘信號的輸入端即可,這樣分校時(shí)開關(guān)打在高電平上,分個(gè)位以1Hz的頻率跳動起來,分校時(shí)開關(guān)打在低電平上時(shí),正常走時(shí)。同理小時(shí)校準(zhǔn)與此相同。
3.清零功能:
reset為復(fù)位鍵,低電平時(shí)實(shí)現(xiàn)清零功能,高電平時(shí)正常計(jì)數(shù)??梢愿鶕?jù)我們自己任意時(shí)間的復(fù)位。
清零電路設(shè)計(jì)的關(guān)鍵就是要解決好同步問題,在發(fā)出清零信號時(shí),所有計(jì)數(shù)器的時(shí)鐘信號是一致的,而且處于有效的邊沿。為此可以設(shè)計(jì)當(dāng)清零信號有效時(shí),很高頻率的信號同時(shí)加入個(gè)計(jì)數(shù)器的時(shí)鐘端,而當(dāng)清零信號無效時(shí),各計(jì)數(shù)器上時(shí)鐘端加的是正常走時(shí)所需要的時(shí)鐘信號。也可以用與門,或門和非門實(shí)現(xiàn)上述的功能。當(dāng)清零信號為低時(shí),清零信號經(jīng)過一個(gè)非門變?yōu)楦唠娖叫盘?,將與門打開,高頻信號通過與門,在與秒各位計(jì)數(shù)器的時(shí)鐘端上的信號相或,與其他各位計(jì)數(shù)器時(shí)鐘輸入端上的信號相與。這樣,當(dāng)清零信號有效時(shí),每一位計(jì)數(shù)器上的時(shí)鐘輸入端實(shí)現(xiàn)了同步的功能,實(shí)現(xiàn)了同步清零的功能。當(dāng)清零信號無效時(shí),時(shí)鐘正常走時(shí)。
4.定時(shí)、報(bào)時(shí)功能:
整點(diǎn)報(bào)時(shí)電路根據(jù)計(jì)時(shí)系統(tǒng)的輸出狀態(tài)產(chǎn)生一脈沖信號,然后去觸發(fā)一音頻發(fā)生器實(shí)現(xiàn)報(bào)時(shí)。它通過對定時(shí)和計(jì)時(shí)的比較來完成報(bào)時(shí),由兩個(gè)計(jì)數(shù)器組成,計(jì)數(shù)器由兩個(gè)開關(guān)控制,用來對定時(shí)的分鐘和時(shí)鐘設(shè)定,當(dāng)開關(guān)都打到不送脈沖的狀態(tài),兩個(gè)計(jì)數(shù)器都保持,從而達(dá)到存儲的目的。比較電路用來比較定時(shí)時(shí)間和計(jì)時(shí)時(shí)間,當(dāng)它們一致時(shí),輸出為1,這樣可以驅(qū)動報(bào)時(shí)模塊。最后,利用顯示電路將定的時(shí)間設(shè)定輸出。要使定時(shí)起到提醒作用,還要有鈴聲,這里用1hz脈沖作為蜂鳴器的信號源。
四.系統(tǒng)軟件實(shí)現(xiàn)
1.詳細(xì)模塊描述
(1)Second模塊為秒計(jì)數(shù)模塊。Clk作為秒脈沖,reset復(fù)位,setmin用于調(diào)整分鐘,接按鍵,enmin是當(dāng)秒計(jì)數(shù)記到59后產(chǎn)生分脈沖,秒計(jì)數(shù)重新從0開始計(jì)數(shù)。Daout為秒計(jì)數(shù)。
(2)Minute模塊為分計(jì)數(shù)模塊。Clk作為分脈沖,接second模塊的enmin,reset用于復(fù)位,sethour用于調(diào)整小時(shí),接按鍵,enhour是當(dāng)分計(jì)數(shù)記到59后產(chǎn)生時(shí)脈沖,分計(jì)數(shù)重新從0開始計(jì)數(shù)。Daout為分計(jì)數(shù)。
(3)Hour模塊為時(shí)計(jì)數(shù)模塊,clk為時(shí)脈沖,接minute模塊的enhour,reset復(fù)位,daout為時(shí)計(jì)數(shù)。
(4)Alert模塊為整點(diǎn)報(bào)時(shí)模塊。其中clk1用于在其上升沿判斷是否為整點(diǎn)時(shí)刻,若是則加clk秒脈沖從speak端口輸出到揚(yáng)聲器作為聲音信號,報(bào)時(shí)10秒。Stop為停止報(bào)時(shí)控制,接按鍵,按動按鍵時(shí)若在報(bào)時(shí)則報(bào)時(shí)停止。Reset復(fù)位端。dainsh和dianm分別接分計(jì)數(shù)和秒計(jì)數(shù),用于判斷整點(diǎn)和報(bào)時(shí)。
2.總體設(shè)計(jì)及引腳設(shè)置
在軟件中設(shè)置后頂層原理圖顯示為
設(shè)計(jì)思想,利用脈沖時(shí)鐘產(chǎn)生一個(gè)1Hz的信號來實(shí)現(xiàn)一秒鐘的控制,要產(chǎn)生1Hz的信號就要用到分頻器,實(shí)驗(yàn)中用三個(gè)百分頻器把1MHz的信號變成1Hz。然后信號進(jìn)入控制秒的計(jì)數(shù)器,當(dāng) 的仿真時(shí)間域以便有足夠長的觀察時(shí)間。波形文件存盤后運(yùn)行仿真器,直到出現(xiàn)仿真結(jié)果。
24進(jìn)制的時(shí)控制模塊中當(dāng)clk為上升沿時(shí),hour1輸出由9變?yōu)?,并且hour1都是由0到9循環(huán),hour2輸出由2變?yōu)?,并且hour2都是由0到2循環(huán)。
60進(jìn)制的分控制模塊中當(dāng)clk和carry為上升沿時(shí),min1輸出由9變?yōu)?,并且min1都是由0到9循環(huán),min2輸出由5變?yōu)?,并且min2都是由0到5循環(huán)。
60進(jìn)制的秒控制模塊中當(dāng)clk和carry為上升沿時(shí),sec1輸出由9變?yōu)?,并且sec1都是由0到9循環(huán),sec2輸出由5變?yōu)?,并且sec2都是由0到5循環(huán)。
仿真波形
3.實(shí)驗(yàn)結(jié)果
首先,由石英晶體振蕩器輸出穩(wěn)定的脈沖信號,經(jīng)過振蕩器輸出標(biāo)準(zhǔn)的秒脈沖信號,秒計(jì)數(shù)電路為六十進(jìn)制計(jì)數(shù)器,秒計(jì)數(shù)電路將振蕩器產(chǎn)生的秒脈沖信號作為輸入信號,進(jìn)行計(jì)數(shù),并通過秒顯示器顯示秒;其次,當(dāng)秒計(jì)數(shù)器完成60個(gè)秒計(jì)數(shù)后,秒計(jì)時(shí)電路清零,輸出一個(gè)“分計(jì)時(shí)信號”,分計(jì)時(shí)電路收到秒計(jì)時(shí)電路產(chǎn)生的信號后,開始計(jì)數(shù)并顯示分;再次,當(dāng)分計(jì)時(shí)電路完成60個(gè)分計(jì)數(shù)后,分計(jì)數(shù)器清零,輸出一個(gè)“時(shí)計(jì)時(shí)信號”,時(shí)計(jì)時(shí)電路收到分計(jì)時(shí)電路產(chǎn)生的信號后,開始計(jì)數(shù)并顯示時(shí);最后,時(shí)計(jì)時(shí)電路完成24個(gè)時(shí)計(jì)數(shù)后,清零。完成電子鐘基本功能仿真結(jié)果。
六.設(shè)計(jì)總結(jié)
通過畢業(yè)論文設(shè)計(jì),我進(jìn)一步加深了對電子設(shè)計(jì)的認(rèn)識,進(jìn)一步熟練了對QuartusII軟件的操作。在編寫程序的過程中,遇到了很多問題,使我發(fā)現(xiàn)自己以前學(xué)習(xí)上存在的不足。通過同學(xué)探討和請教老師的方式,終于把問題都解決了。對數(shù)字時(shí)鐘原理和設(shè)計(jì)思路的更詳細(xì)的了解,掌握了做畢業(yè)設(shè)計(jì)的一般流程,為以后的電路設(shè)計(jì)積累了一定的經(jīng)驗(yàn)。做畢業(yè)設(shè)計(jì)時(shí),我先查閱了相關(guān)知識,把原理吃透,確定一個(gè)大的設(shè)計(jì)方向,在按照這個(gè)方向分模塊的把要實(shí)現(xiàn)的功能用流程圖的形式展示。最后參照每個(gè)模塊把輸入和輸出引腳設(shè)定,運(yùn)用我們所學(xué)的VHDL語言進(jìn)行編程。通過這次的設(shè)計(jì),我深入了解了EDA技術(shù),收獲很大,對軟件編程、排錯調(diào)試、相關(guān)儀器設(shè)備的使用技能等方面得到較全面的鍛煉和提高。
經(jīng)過這次的畢業(yè)設(shè)計(jì)我學(xué)到的也不止是一些新的理論知識和具體的動手實(shí)踐。更重要的是一種思路,大的問提可以轉(zhuǎn)換成小的問題解決,困難的問題通過轉(zhuǎn)換成簡單的問題解決。相信這將會對我今后的學(xué)習(xí)工作帶來幫助。設(shè)計(jì)論文過程中我認(rèn)識到我專業(yè)知識缺少的還很多,實(shí)踐經(jīng)驗(yàn)也相當(dāng)匱乏。因此在今后我還需要不斷的去學(xué)習(xí)新的知識,不斷的充實(shí)自身。
在此,再次感謝梁勇老師的悉心指導(dǎo),您讓使我學(xué)到了很多很多!
·參考文獻(xiàn)
1.EDA技術(shù)實(shí)用教程----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;
時(shí)模塊
程序如下:
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;
第五篇:數(shù)字電路EDA課程設(shè)計(jì)數(shù)字跑表
EDA課程設(shè)計(jì)報(bào)告書
題目: 數(shù)字跑表
姓名: 班級: 學(xué)號: 成績:
一、設(shè)計(jì)題目及要求 設(shè)計(jì)題目:數(shù)字跑表
要求:1 具有暫停,啟動功能。
具有重新開始功能。用六個(gè)數(shù)碼管分別顯示百分秒,秒和分鐘。
二、設(shè)計(jì)過程及內(nèi)容
拿到題目后,我在圖書館進(jìn)行了相關(guān)書籍的查閱,首先明確了題目中設(shè)計(jì)項(xiàng)目要實(shí)現(xiàn)的功能,再進(jìn)一步確定實(shí)現(xiàn)其功能的組成部分和使用器件,對于本次設(shè)計(jì)的總體思路,首先是設(shè)計(jì)一個(gè)控制模塊,可以使跑表具有啟動、暫停及重新開始的功能;然后,利用一個(gè)分頻模塊即15進(jìn)制計(jì)數(shù)器得到100HZ的時(shí)鐘脈沖,接入到一個(gè)100*60*60三個(gè)計(jì)數(shù)器的模塊中,完成對時(shí)間的計(jì)時(shí)工作和對選時(shí)模塊的輸出工作,使選時(shí)模塊得到對應(yīng)的時(shí)間,其次將選時(shí)模塊與顯示模塊連接,使數(shù)碼管顯示選中的當(dāng)前時(shí)間,從而完成了這次課程設(shè)計(jì)的設(shè)計(jì)工作,進(jìn)入到實(shí)現(xiàn)過程中去。
根據(jù)課程設(shè)計(jì)要求將設(shè)計(jì)分為5個(gè)模塊:
1、控制模塊,使跑表具有啟動、暫停及重新開始的功能;
2、分頻模塊,用于得到頻率為100HZ的時(shí)鐘脈沖;
3、計(jì)時(shí)模塊,進(jìn)行時(shí)間的計(jì)時(shí),同時(shí)將當(dāng)前時(shí)間輸出給選時(shí)模塊;
4、選時(shí)模塊,從計(jì)時(shí)器得到當(dāng)前時(shí)間輸出給顯示模塊;
5、顯示模塊,進(jìn)行時(shí)間的顯示??倛D如下: 第一個(gè)模塊:控制器模塊
與門可控制時(shí)鐘信號的輸出與否,當(dāng)跑表為START狀態(tài)時(shí)CLK端為高電平,QA為1,時(shí)鐘信號輸出,當(dāng)跑表為STOP狀態(tài)時(shí)CLK端為低電平,QA為0,時(shí)鐘信號不輸出,從而實(shí)現(xiàn)開始和暫停的功能。REST是清零按鈕,REST接到控制模塊和總計(jì)時(shí)器模塊的清零端,當(dāng)REST為高電平時(shí),控制模塊和總計(jì)數(shù)器模塊清零,跑表重新開始工作。
第二個(gè)模塊:分頻器模塊
將74161接成15進(jìn)制計(jì)數(shù)器,將1465HZ的時(shí)鐘頻率轉(zhuǎn)換成近似于100HZ的時(shí)鐘信號即所需的輸入時(shí)鐘信號,從而實(shí)現(xiàn)分頻功能。將得到的時(shí)鐘信號輸入到總計(jì)數(shù)器模塊中去。第三個(gè)模塊:計(jì)時(shí)模塊
計(jì)時(shí)模塊
本模塊由兩個(gè)60進(jìn)制計(jì)數(shù)器和一個(gè)100進(jìn)制計(jì)數(shù)器構(gòu)成,從而實(shí)現(xiàn)百分秒向秒、秒向分的計(jì)數(shù)功能需求。60進(jìn)制計(jì)數(shù)器及100進(jìn)制計(jì)數(shù)器均采用兩個(gè)74LS160,采用整體置數(shù)方式接成。從60進(jìn)制計(jì)數(shù)器和100進(jìn)制計(jì)數(shù)器這三個(gè)輸出端分別印出八個(gè)端口(秒、分、時(shí)的個(gè)位及十位分別由四個(gè)二進(jìn)制代碼表示),將當(dāng)前時(shí)間編碼傳送給選時(shí)模塊,實(shí)現(xiàn)時(shí)間的選擇和顯示。(秒個(gè)位:S0A,S0B,S0C,S0D;秒十位:S1A,S1B,S1C,S1D;分個(gè)位:M0A,M0B,M0C,M0D;分十位:M1A,M1B,M1C,M1D;百分秒個(gè)位:H0A,H0B,H0C,H0D;百分秒十位:H1A,H1B,H1C,H1D.)
100進(jìn)制計(jì)數(shù)器
60進(jìn)制計(jì)數(shù)器
第四個(gè)模塊:選時(shí)模塊
本模塊由四個(gè)八選一數(shù)據(jù)選擇器74LS151和地址選擇器74LS161構(gòu)成。
地址選擇器74LS161接入一個(gè)1465 HZ的時(shí)鐘信號,使能端和清零端接高電平,使其循環(huán)工作,產(chǎn)生一組循環(huán)地址碼A、B、C,接到數(shù)碼管的地址端,使其循環(huán)顯示數(shù)字。同時(shí),地址選擇器74LS161產(chǎn)生的一組循環(huán)地址碼接入到四個(gè)八選一數(shù)據(jù)選擇器74LS151上,使其對地址相同的一組數(shù)據(jù)進(jìn)行選擇,產(chǎn)生四個(gè)二進(jìn)制數(shù)A0,A1,A2,A3,即為數(shù)碼管所要顯示的數(shù)字的編碼。
第一個(gè)74LS151上的輸入端為秒、分、百分秒個(gè)位及十位的四位二進(jìn)制的最低位(S0A,S1A, M0A, M1A, H0A, H1A), 第二個(gè)74LS151上的輸入端為秒、分、百分秒個(gè)位及十位的四位二進(jìn)制的次低位(S0B,S1B,M0B,M1B,H0B,H1B), 第三個(gè)74LS151上的輸入端為秒、分、百分秒個(gè)位及十位的四位二進(jìn)制的第二位(S0C,S1C,M0C,M1C,H0C,H1C), 第四個(gè)74LS151上的輸入端為秒、分、百分秒個(gè)位及十位的四位二進(jìn)制的第一位(S0D,S1D,M0D,M1D,H0D,H1D),通過這四個(gè)八位二進(jìn)制數(shù)比較器74LS151選出同一組數(shù)(秒個(gè)位:S0A,S0B,S0C,S0D;秒十位:S1A,S1B,S1C,S1D;分個(gè)位:M0A,M0B,M0C,M0D;分十位:M1A,M1B,M1C,M1D;百分秒個(gè)位:H0A,H0B,H0C,H0D;百分秒十位:H1A,H1B,H1C,H1D.)作為輸出A0,A1,A2,A3,接到顯示模塊輸入端。
選時(shí)模塊
第五個(gè)模塊:顯示模塊
本模塊采用BCD—七段顯示譯碼器7448對實(shí)驗(yàn)板上數(shù)碼管進(jìn)行驅(qū)動。由選時(shí)模塊輸出的顯示數(shù)字編碼A0,A1,A2,A3接至輸入端A,B,C,D,使輸出端產(chǎn)生七位譯碼連接到實(shí)驗(yàn)箱公共數(shù)據(jù)輸入端ABCDEDG,從而進(jìn)行數(shù)據(jù)的顯示。
顯示模塊
三、設(shè)計(jì)結(jié)論
兩周的課程設(shè)計(jì)很快就結(jié)束了,雖然時(shí)間很短,但是收獲頗豐。通過這次課程設(shè)計(jì),我學(xué)到了許多關(guān)于EDA的知識,認(rèn)識到了EDA的強(qiáng)大功能,更重要的是增強(qiáng)了我的實(shí)踐動手能力,使我深刻地認(rèn)識到僅僅學(xué)習(xí)課本上的知識是遠(yuǎn)遠(yuǎn)不夠的,必須要多多動手,多多實(shí)踐,才能真正理解并掌握所學(xué)的知識,達(dá)到學(xué)以致用的目的。同時(shí)我也深深地感受到嚴(yán)謹(jǐn)?shù)膽B(tài)度對于科學(xué)研究的重要性。由于在設(shè)計(jì)的過程中,一點(diǎn)點(diǎn)的馬虎都可能造成整個(gè)系統(tǒng)的癱瘓,所以每一個(gè)細(xì)節(jié)都要認(rèn)真思考,認(rèn)真操作,不能有絲 百分的大意。這使我認(rèn)識到要想做一個(gè)科研工作者是多么的不易!自己身上的缺點(diǎn)還有很多,要靠以后艱苦的努力來克服!
這次的EDA課程設(shè)計(jì)給了我一次非常重要也非常難得的實(shí)踐機(jī)會,使我可以將平時(shí)課本上學(xué)習(xí)的理論知識應(yīng)用于實(shí)際操作。設(shè)計(jì)的過程是十分艱苦的,由于從未接觸過類似的領(lǐng)域,所以剛開始的時(shí)候一片茫然,不知道該干些什么。隨著研究的逐漸深入,自己漸漸的摸出頭緒,掌握了一些規(guī)律和方法,設(shè)計(jì)的成果也逐步成型,最終按照要求完成了設(shè)計(jì)。在實(shí)際操作的過程中,碰到了許多的困難,但最終在老師的耐心指導(dǎo)和同學(xué)的熱情幫助下,按時(shí)完成了任務(wù)。在此對老師和同學(xué)們表示衷心的感謝!
最后感謝老師給與我這次寶貴的實(shí)踐機(jī)會!