




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、數(shù)字電路實訓基于cpld實驗板的多功能數(shù)字鐘設計姓 名 學 號 班 級: 指導教師: 基于cpld實驗板的多功能數(shù)字鐘設計實訓報告一、實訓目的: 1、掌握數(shù)字電路系統(tǒng)的設計方法和技巧; 2、掌握數(shù)字電子鐘的分頻器、計時器等的設計及應用; 3、掌握vhdl源程序的設計、編譯和錯誤修改; 4、掌握的測試向量文件建立,仿真; 5、掌握硬件測試的方法和步驟; 6、掌握器件適配的方法,設計的下載,功能測試。 7、掌握團隊協(xié)作和分工的技巧。二、實訓要求1、 能進行正常的時、分、秒計時功能,分別由6個數(shù)碼管顯示24小時、60分鐘、60秒鐘的計數(shù)器顯示;2、能利用實驗系統(tǒng)上的按鍵實現(xiàn)計時狀態(tài)下的“校時”與“校
2、分”功能;3、能利用蜂鳴器做整點報時;4、完成電路設計后,用實驗系統(tǒng)下載驗證。附加功能:1、 能進行鬧鐘的時、分的設置,分別由6個數(shù)碼管顯示24小時、60分鐘、60秒鐘的鬧鐘顯示;2、 能用實驗系統(tǒng)上的按鍵實現(xiàn)鬧鐘下的“校時”與“校分”功能;3、能利用蜂鳴器做鬧鐘報時。三、實訓過程1、數(shù)字時鐘系統(tǒng)的設計思路利用vhdl語言編程設計數(shù)字時鐘,要實現(xiàn)計時、調時、定時和顯示功能,應首先設計一個分頻器,將實驗板上所提供的50mhz分成1hz和10000hz兩個不同的頻率,其中1hz用來驅動計數(shù)器計時,調時和定時器的定時,10000hz用來驅動動態(tài)掃描器。然后分別設計控制器,計時器,定時器,動態(tài)顯示器和
3、報時器。(在此次實訓中,李祖均主要負責的是動態(tài)顯示器和控制器的設計并對整個實驗進行編譯、仿真驗證、修改錯誤;徐接勛負責的定時器和報時器的設計并對整個實驗硬件測試;徐國健負責的是分頻器和計數(shù)器的設計,還有編寫實訓報告。)2、各個模塊的設計原理(vhdl語言)(1)分頻器設計思路:利用翻轉將實驗板上所提供的50mhz頻率分成占空比為50%,分別為1hz和10000hz兩個不同的頻率,其中1hz用來驅動計數(shù)器計時,調時和定時器的定時,10000hz用來驅動動態(tài)掃描器。library ieee;use ieee.std_logic_1164.all;entity clk_div isport(clk:
4、in std_logic; f10000,f1:out std_logic);end clk_div;architecture one of clk_div is signal q0:integer range 0 to 2500; signal a0:std_logic:=0; signal q3:integer range 0 to 25000000; signal a3:std_logic:=0;begin process(clk,q0) begin if(clkevent and clk=1) then if(q0=2499) then q0=0; a0=not ;a0; f10000
5、=a0; else q0=q0+1;f10000=a0; end if; end if; end process; process(clk,q3) begin if(clkevent and clk=1) then if(q3=24999999) then q3=0; a3=not a3; f1=a3; else q3=q3+1;f1clkclknull; end case; end process m2to1h; m24:process(clk) begin if (rising_edge(clk) then if (en=0 or (q0=3 and q1=2) then q0=0; q1
6、=0; elsif(q0=9) then q0=0; q1=q1+1; else q0=q0+1; end if; end if; h2= conv_std_logic_vector(q0,4); h1clk1clk1null; end case; end process m2to1m;m60m:process(clk1) begin if (rising_edge(clk1) then if (en=0 or (q2=9 and q3=5) then q2=0; q3=0; xm=1; elsif(q2=9) then q2=0; q3=q3+1; else q2=q2+1;xm=0; en
7、d if; end if; m2= conv_std_logic_vector(q2,4); m1= conv_std_logic_vector(q3,4); end process m60m;m60s:process(f1clk) begin if (rising_edge(f1clk) then if (en=0 or (q4=9 and q5=5) then q4=0; q5=0; xs=1; elsif(q4=9) then q4=0; q5=q5+1; else q4=q4+1;xs=0; end if; end if; s2= conv_std_logic_vector(q4,4)
8、; s1= conv_std_logic_vector(q5,4); end process m60s;end one; 計時器有4個輸入端和6個輸出端,各個端口的作用為: 輸入端:(cht:調時間的時,高電平有效; ,cmt:調時間的分,高電平有效; f1clk:1hz的頻率輸入,驅動計時; en:計數(shù)器清零端,低電頻有效; 輸出端 h1:小時的十位; h2:小時的個位; m1:分鐘的十位; m2:分鐘的個位; s1:秒鐘的十位; s2:秒鐘的個位;(3)報時器設計思路:報時器有整點報時和鬧鐘功能。對于整點報時,我們要對分和秒進行比對,當分鐘59m時,蜂鳴器從51s開始每隔兩秒報一次時,一共
9、報五次時;對于鬧鐘,則需要對設定的時和分與正常計時進行比對,相同時蜂鳴器則以每秒一次的頻率報時,共60s。library ieee;use ieee.std_logic_1164.all;entity bijiao isport(bell:out std_logic; f1:in std_logic; th1,th2,tm1,tm2,h1,h2,m1,m2,s1,s2:in std_logic_vector(3 downto 0); bh1,bh2,bm1,bm2:out std_logic_vector(3 downto 0);end bijiao;architecture one of b
10、ijiao is signal comput:std_logic; signal m:std_logic_vector(15 downto 0);begin m=m2&m1&s2&s1;bijiao:process(th1,th2,tm1,tm2,h1,h2,m1,m2) begin if(th1=h1 and th2=h2 and tm1=m1 and m2=tm2)then comput=1; bh1= th1; bh2= th2; bm1= tm1; bm2= tm2; else comput=0; bh1= th1; bh2= th2; bm1= tm1; bm2bellbellbel
11、lbellbellnull; end case; case(comput)is when1=bellnull; end case; end process naozhong_baoshi;end one;報時器有11個輸入端和5個輸出端,各個端口的作用為: 輸入端:f1:1hz頻率輸入端,用來整點報時和鬧鈴; th1:定時器的小時的個位; th2:定時器的小時的十位; tm1:定時器的分鐘的個位; tm2:定時器的分鐘的十位; h1:計時器的小時的個位; h2:計時器的小時的十位; m1:計時器的分鐘的個位; m2:計時器的分鐘的十位;s1:計時器的秒鐘的個位; s2:計時器的秒鐘的十位; 輸
12、出端:bh1:定時器的小時的個位; bh2:定時器的小時的十位; bm1:定時器的分鐘的個位; bm2:定時器的分鐘的十位; bell:蜂鳴器信號。(4)定時器設計思路:定時器是定鬧鐘的時和分,相當于一個分鐘模60計數(shù)器和一個時鐘模24計數(shù)器,它們由兩個端口控制,且互不影響。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity dingshiqi isport(f1,cha,cma: in std_logic; h2,h1:out std_logic_vector(3 downto 0); m2
13、,m1:out std_logic_vector(3 downto 0);end dingshiqi;architecture one of dingshiqi is signal q0,q1:integer range 0 to 15; signal q2,q3:integer range 0 to 15; signal clk:std_logic; signal clk1:std_logic;beginm24:process(cha) begin case(cha)is when0=clkclknull; end case; end process m24;m24a:process(clk
14、) begin if (rising_edge(clk) then if (q0=3 and q1=2) then q0=0; q1=0; elsif(q0=9) then q0=0; q1=q1+1; else q0=q0+1; end if; end if;h2= conv_std_logic_vector(q0,4); h1clk1clk1null; end case; end process m60m;m60ma:process(clk1) begin if (rising_edge(clk1) then if (q2=9 and q3=5) then q2=0; q3=0; elsi
15、f(q2=9) then q2=0; q3=q3+1; else q2=q2+1; end if; end if; m2= conv_std_logic_vector(q2,4); m1= conv_std_logic_vector(q3,4); end process m60ma;end one;定時器有3個輸入端和4個輸出端,各個端口的作用為: 輸入端:f1:1hz的頻率輸入,驅動定時; cha:定時間的時,高電平有效; cma:定時間的分,高電平有效; 輸出端:h1:小時的十位; h2:小時的個位; m1:分鐘的十位; m2:分鐘的個位; (5)控制器設計思路:控制器是對校時、定時和顯示
16、的控制,考慮到實驗板的輸入端口,用兩個端口分別控制校時器的時和分,同時還控制顯示器顯示定時時間;另外再用兩個端口控制計時器的校時、校分和控制顯示器顯示計時時間。library ieee;use ieee.std_logic_1164.all;entity kzq isport(k:in std_logic; set:in std_logic; k1:in std_logic; set1:in std_logic; cht,cmt:out std_logic; cha,cma:out std_logic; en:out std_logic; sel:out std_logic);end kzq;
17、architecture one of kzq is signal mi:std_logic_vector(1 downto 0); signal si:std_logic_vector(1 downto 0); signal sel_show:std_logic; signal sel_show1:std_logic; signal c:std_logic;begin mi=k&set; sisel_show=1;cht=0;cmt=0;ensel_show=1;cht=1;cmt=0;ensel_show=1;cmt=1;cht=0;ensel_show=1;cht=0;cmt=0;enn
18、ull; end case; end process ;dingshi:process (si) begin case si is when11=sel_show1=0;cha=0;cma=0;csel_show1=0;cha=1;cma=0;csel_show1=0;cma=1;cha=0;csel_show1=0;cma=0;cha=0;cnull; end case; end process ;m2to1:process(c) begin if(c=0)then sel=sel_show; else sel=sel_show1; end if; end process m2to1;end
19、 one;控制器有4個輸入端和6個輸出端,各個端口的作用為:輸入端:k:控制校時的時;set:控制校時的分;k1:控制定時的時;set1:控制定時的分;輸出端:cht:調時間的時,高電平有效;cmt:調時間的分,高電平有效;cha:定時間的時,高電平有效;cma:定時間的分,高電平有效;en:清零信號,低電平有效;sel:鬧鐘和計時時間的選擇信號。(6)動態(tài)顯示器設計思路:動態(tài)顯示器是對計時時間和定時時間的動態(tài)顯示,要對輸進來的計時時間和定時時間進行選擇,即需要一個二選一的數(shù)字選擇器,動態(tài)顯示器顯示時需要對七段數(shù)碼管進行段選和位選,則需要一個多路數(shù)字選擇器和一個七段顯示譯碼器,組合起來就是一個
20、動態(tài)顯示器。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity dtxs isport(clk:in std_logic; h1,h2,m1,m2,s1,s2,ah1,ah2,am1,am2,as1,as2:in std_logic_vector(3 downto 0); sel:in std_logic; weixuan:out std_logic_vector(7 downto 0); duanxuan:out std_logic_vector(7 downto 0);end dtxs;a
21、rchitecture one of dtxs is signal qq:std_logic_vector(3 downto 0); signal clk1: std_logic_vector(5 downto 0); signal q0:integer range 0 to 10; signal d0,d1,d2,d3,d4,d5,d6,d7: std_logic_vector(3 downto 0); signal xian:std_logic_vector( 3 downto 0);beginm8:process(clk) begin if (clkevent and clk=1) th
22、en if (q0=7) then q0=0; else q0=q0+1; end if; end if; clk1weixuanweixuanweixuanweixuanweixuanweixuanweixuanweixuan null; end case; end process weixuan38;duanxuanyima:process(qq) begin case qq is when0000=duanxuanduanxuanduanxuanduanxuanduanxuanduanxuanduanxuanduanxuanduanxuanduanxuanduanxuannull; en
23、d case; end process duanxuanyima;m8to1:process(clk1) begin case clk1 is when000000=qqqqqqqqqqqqqqqqnull; end case; end process m8to1;xianshi:process(h1,h2,m1,m2,s1,s2,ah1,ah2,am1,am2,as1,as2) begin if(sel=1 )then d0=s1; d1=s2; d3=m1; d4=m2; d6=h1; d7=h2; else d0=as1; d1=as2; d3=am1; d4=am2; d6=ah1;
24、d7=ah2; end if; xian=1110; d2=xian; d5=xian; end process xianshi; end one; 動態(tài)顯示器有14個輸入端和2個輸出端,各個端口的作用為: 輸入端:clk:10000hz輸入端,用來驅動動態(tài)顯示器; h1:計時器的小時的個位; h2:計時器的小時的十位; m1:計時器的分鐘的個位; m2:計時器的分鐘的十位; s1:計時器的秒鐘的個位; s2:計時器的秒鐘的十位; ah1:報時器的bh1輸端; ah2:報時器的bh2輸出端; am1:報時器的bm1輸出端; am2:報時器的bm2輸出端; as1:計時器的秒鐘的個位; as2:
25、計時器的秒鐘的十位; sel控制器的sel輸出端; 輸出端:duanxuan:驅動七段顯示數(shù)碼管; weixuan:驅動8個數(shù)碼管;3、下載測試(1)、編輯電路并進行全程編譯(2)、引腳鎖定編譯;(3)、下載于cpld實驗板進行功能測試;4、數(shù)字鐘設計的改進我們在實驗板進行數(shù)字鐘功能測試時,發(fā)現(xiàn)在校時和定時時很難設定自己想要設置的時間,幾乎每一次在控制端口閉合和斷開時,時間就會發(fā)生劇烈的跳變,這對于我們的校時和定時是非常不利的;開始時我們認為這是程序的問題,但當我們分別對各模塊的程序進行排查后,我們發(fā)現(xiàn)程序并沒有問題,因此,我們暫時放下了這個問題。后來我們從網(wǎng)上看到相關的論文才了解到這是開關在
26、閉合和斷開時產生的干擾信號,所以我們決定在控制器的輸入端口分別加入一個消抖電路,如下圖所示: 轉化為元件和改進后的總圖如下圖所示: 改進555、實訓的心得體會xxx實訓心得體會:我覺得這次實訓對我來說,就是對我在過去一個學期里所學知識的一個總的考核。一個數(shù)字鐘的設計是一個系統(tǒng)的設計,它需要我們從系統(tǒng)出發(fā)進行設計,需要一定的邏輯思維;因為這次實訓我們是以分組的形式進行,所以組員之間如何協(xié)作也是我們必須要考慮的問題。剛開始的時候,我和我的組員一樣,都會有一種無從下手的感覺,但慢慢的通過指導書和一些常識,我對數(shù)字鐘的設計有了一個大概輪廓,對數(shù)字鐘所需要的一些功能也進行了大概的歸納和分類;我們通過討論
27、決定以分模塊的形式來實現(xiàn)數(shù)字鐘的功能,這樣不僅可以使數(shù)字鐘的設計簡單化,還可以方便我們組員的分工,我主要是負責控制器和動態(tài)顯示器的設計。在對控制器和動態(tài)顯示器的設計中,我覺得自己的收獲是很大的,它不僅使我對vhdl語言有了進一步的認識,還使我對書本知識有了更深的掌握,也學到了很多沒學過的知識,所以我覺得這一次的實訓是非常有意義的。xxx的實訓心得體會: 這次的實訓對于我來說是一次挑戰(zhàn),同時也讓我對數(shù)電產生了興趣,這次的實訓不但需要用到學習了的知識,而且需要許多的擴展的知識;需要我不斷的利用學習的知識不斷的容納與吸收。 剛開始我們是根據(jù)指導書的內容,了解設計理念及思路。由于老師沒有告訴我們方法,
28、所以剛開始的時候我們是無從下手的,經(jīng)過在網(wǎng)上查找?guī)追N不同的數(shù)字時鐘的程序,尋找他們的理念,在與所學的知識進行比對,因為所學有限,所以進度比較慢,需要不斷的進行程序的修改與測試,這個過程對于我來說是非常困難的,一個程序有可能只是小小的;就可能使程序失敗,一個程序的功能弄錯就讓我們的整個的功能得不到表達、或錯誤。而且程序還有許多沒有學習的語句,只能一點點慢慢的理解或請教。這讓我學會了很多不懂得知識 本次的實訓,讓我了解了很多,從簡單的到復雜的過程,讓我學會了很多不懂得知識,也讓我知道了做事要細心,要不然很難做成功一件事情,這可能讓我以后可以少走許多的彎路,細心、堅持是我本次實訓的最大的收獲。 基于
29、本次實訓是合作制的,故我們是進行分工合作的,我負責的是定時器和報時器主要是調試報時的時間差,即根據(jù)程序的理想時間與下載的后的時間差進行對比,然后再進行修改、調節(jié)。xxx的實訓心得體會:本次實訓,我主要負責是分頻器和計時器的設計。通過這次數(shù)字時鐘的設計,我加深了對vhdl語言的理解和應用,同時也深深感受到,除了理論知識的學習之外,還必須掌握更深一步的動手能力,這樣才能把知識真正的知識掌握在手中。所以,這次實訓的真正讓我把知識運用到實踐中去,遠比死記硬背的理論知識更有意義。ut2apodfxxc02gybkskcww97mrqqwhoj5tl15zt6jipyytycummtarp3v1n5lui
30、zi3xh3bhwyreko8d9g7nmzqowpjetldrw08gvs8dsdqqygc3ce7moo2tlf0jf1gk74iuxybmtivr97ckrfvqult5fn2t6mpjr6rbzvpsortzvij5nb5ndvvsr4iwr1twlfkglspzuhrjq3cmzu98euouijdlszqpmvrw9zkupxf8wfug9l2g9277g2rtipa1ypczeuqxpkbhtvdcooqozxuz3vjrzmocijym62zchmeootyes8ebmm932tbz2yo09rtszeys8zrd2yktj8l6jeazvajnfbtrylvsm6ofbfto
31、xvrffn7owiygjlamkunxjybz5rrb7r4vsur9zpfzfmfsjhcfca37lnw2vvlrkn7r8psz1bn6oric5hu5z6hcxayqynpog8duybawqsl20csg06dh2sm8hltgpkicskrgopdpuhbj1lmpk7lydvc6nnmwl3fwhzftfvyaary7lhssxj10v3ph3y19bxyr77ib7cpzsu2tijqe3hkqkkau9kskcphkxuikvvyjzpg2yijrkqfbggovyqkuxnwi9omnjtt6qilzxtyrf7d20fbmabcfiixrqkusvnxbppfuxyq1fjskfsubkgs2duvqc9sz4jkbgn4qqv66pyoarjurnfj3txyfclzieeptwfjthpheipdfnqnr2hjqkv2dzwtmpdjqkbcxmovdsjqctjagjmdlskpgad2s0h0vmzgaht36gyuez7umank1ndreubeqdgrx0venqgnsyib2ilq3siqrnl4m56t7z8y8da5k0kupn5nzg4jvjdtffhyt82aogqkxo4vblmleiy2p7hthbho07rcfttxodydppdtqso7wxd0j6fkklgm4wodzplh
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度建筑工程款撥付與節(jié)能減排協(xié)議
- 2025年度個人創(chuàng)業(yè)貸款中介代理服務合同(含政策咨詢)
- 旅游景區(qū)設施居間銷售合同
- 2025年度房屋贈與及智能家居系統(tǒng)安裝合同
- 2025年度房屋代購與智能家居系統(tǒng)集成協(xié)議
- 2025年度拆遷安置房抵押貸款服務合同
- 2025年度電動自行車貸款抵押服務協(xié)議
- 2025年個人投資入股文化創(chuàng)意產業(yè)合作協(xié)議
- 2025年度土地個人承包經(jīng)營權委托管理合同
- 2025年度企業(yè)退休項目經(jīng)理再聘用服務協(xié)議
- 2022版ISO27001信息安全管理體系基礎培訓課件
- 新版高中物理必做實驗目錄及器材-(電子版)
- 售后服務部部門組織架構
- 《實變函數(shù)》電子教案
- (正式版)SHT 3551-2024 石油化工儀表工程施工及驗收規(guī)范
- 機械基礎 第2版全書電子教案
- 藍色卡通風格研學旅行報告PPT講座學習
- 熱軋無縫鋼管缺陷及產生原因
- 正村一中反恐防暴隱患臺賬
- 攔污柵重量計算
- iShow高級班文本
評論
0/150
提交評論