fpga數(shù)字鐘課程設(shè)計(jì)報(bào)告.doc
《fpga數(shù)字鐘課程設(shè)計(jì)報(bào)告.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《fpga數(shù)字鐘課程設(shè)計(jì)報(bào)告.doc(25頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
課程設(shè)計(jì)報(bào)告 設(shè)計(jì)題目:基于FPGA的數(shù)字鐘設(shè)計(jì) 班級(jí):電子信息工程1301 學(xué)號(hào):20133638 姓名:王一丁 指導(dǎo)教師:李世平 設(shè)計(jì)時(shí)間:2016年1月 摘要 EDA(Electronic Design Automation)電子設(shè)計(jì)自動(dòng)化,是以大規(guī)??删幊唐骷樵O(shè)計(jì)載體,以硬件描述語(yǔ)言為系統(tǒng)邏輯描述的主要表達(dá)方式,通過(guò)相關(guān)的軟件,自動(dòng)完成軟件方式設(shè)計(jì)得電子系統(tǒng)到硬件系統(tǒng),最終形成集成電子系統(tǒng)或?qū)S眉尚酒?。本次課程設(shè)計(jì)利用Quartus II 為設(shè)計(jì)軟件,VHDL為硬件描述語(yǔ)言,結(jié)合所學(xué)知識(shí)設(shè)計(jì)一個(gè)多功能時(shí)鐘,具有顯示年、月、日、時(shí)、分、秒顯示,計(jì)時(shí),整點(diǎn)報(bào)時(shí),設(shè)定時(shí)間等功能。利用硬件描述語(yǔ)言VHDL 對(duì)設(shè)計(jì)系統(tǒng)的各個(gè)子模塊進(jìn)行邏輯描述,采用模塊化的思想完成頂層模塊的設(shè)計(jì),通過(guò)軟件編譯、邏輯化簡(jiǎn)、邏輯綜合優(yōu)化、邏輯仿真、最終完成本次課程設(shè)計(jì)的任務(wù)。 關(guān)鍵詞:EDA VHDL語(yǔ)言 數(shù)字鐘 目 錄 摘要 1 課程設(shè)計(jì)目的 2 課程設(shè)計(jì)內(nèi)容及要求 2.1 設(shè)計(jì)任務(wù) 2.2 設(shè)計(jì)要求 3 VHDL程序設(shè)計(jì) 3.1方案論證 3.2 系統(tǒng)結(jié)構(gòu)框圖 3.3設(shè)計(jì)思路與方法 3.3.1 狀態(tài)控制模塊 3.3.2 時(shí)分秒模塊 3.3.3 年月日模塊 3.3.4 顯示模塊 3.3.5脈沖產(chǎn)生模塊 3.3.6 揚(yáng)聲器與鬧鐘模塊 3.4 RTL整體電路 4 系統(tǒng)仿真與分析 5 課程設(shè)計(jì)總結(jié),包括.收獲、體會(huì)和建議 6 參考文獻(xiàn) 1 課程設(shè)計(jì)目的 (1)通過(guò)設(shè)計(jì)數(shù)字鐘熟練掌握EDA軟件(QUARTUS II)的使用方法,熟練進(jìn)行設(shè)計(jì)、編譯,為以后實(shí)際工程問(wèn)題打下設(shè)計(jì)基礎(chǔ)。 (2)熟悉VHDL 硬件描述語(yǔ)言,提升分析、尋找和排除電子設(shè)計(jì)中常見(jiàn)故障的能力。 (3)通過(guò)課程設(shè)計(jì),鍛煉書(shū)寫(xiě)有理論根據(jù)的、實(shí)事求是的、文理通順的課程設(shè)計(jì)報(bào)告。 2 課程設(shè)計(jì)內(nèi)容及要求 2.1 設(shè)計(jì)任務(wù) (1)6個(gè)數(shù)字顯示器顯示時(shí)分秒,setpin按鍵產(chǎn)生一個(gè)脈沖,顯示切換為年月日。 (2)第二個(gè)脈沖可預(yù)置年份,第三個(gè)脈沖可以預(yù)置月份,依次第四、 五、六、七個(gè)脈沖到來(lái)時(shí)分別可以預(yù)置時(shí)期、時(shí)、分、秒,第八個(gè)脈沖到來(lái)后預(yù)置結(jié)束正常從左顯示時(shí)分秒。 (3)up為高時(shí),upclk有脈沖到達(dá)時(shí),預(yù)置位加一,否則減一。 2.2 設(shè)計(jì)要求 (1)在基本功能的基礎(chǔ)上,鬧鐘在整點(diǎn)進(jìn)行報(bào)時(shí),產(chǎn)生一定時(shí)長(zhǎng)的高電平。 (2)實(shí)現(xiàn)鬧鐘功能,可對(duì)鬧鐘時(shí)間進(jìn)行預(yù)置,當(dāng)達(dá)到預(yù)置時(shí)間時(shí)進(jìn)行報(bào)時(shí)。 3 VHDL程序設(shè)計(jì) 3.1方案論證 該數(shù)字鐘可以實(shí)現(xiàn):計(jì)時(shí)功能、整點(diǎn)報(bào)時(shí)、鬧鐘和預(yù)置時(shí)間功能,因此時(shí)鐘系統(tǒng)可分為5個(gè)模塊:功能選擇模塊、時(shí)分秒計(jì)數(shù)模塊、年月日計(jì)數(shù)模塊、顯示模塊、揚(yáng)聲器模塊、脈沖產(chǎn)生模塊。 (1) 功能選擇模塊是有狀態(tài)機(jī)構(gòu)成的,功能為依次進(jìn)行、設(shè)置時(shí)間、設(shè)置鬧鐘時(shí)間。 調(diào)整工作狀態(tài):數(shù)字鐘的初始狀態(tài)顯示時(shí)分秒,在setpin按鍵產(chǎn)生一個(gè)脈沖,顯示切換為年月日。 設(shè)置時(shí)間:第二個(gè)脈沖可預(yù)置年份,第三個(gè)脈沖可以預(yù)置月份,依次第四、 五、六、七個(gè)脈沖到來(lái)時(shí)分別可以預(yù)置時(shí)期、時(shí)、分、秒。第八個(gè)脈沖到來(lái)后,預(yù)置結(jié)束恢復(fù)初始狀態(tài),正常顯示時(shí)分秒。 設(shè)置鬧鐘時(shí)間:鬧鐘在setpin1按鍵產(chǎn)生第一個(gè)脈沖時(shí)設(shè)定鬧鐘的時(shí),第二個(gè)脈沖設(shè)定分,第三個(gè)脈沖設(shè)定秒,第四個(gè)脈沖恢復(fù)顯示時(shí)分秒。 (2)時(shí)分秒計(jì)數(shù)模塊包括正常計(jì)時(shí)、鬧鐘、整點(diǎn)報(bào)時(shí)三個(gè)功能。 正常計(jì)時(shí)功能通過(guò)軟件編寫(xiě),60進(jìn)制的秒計(jì)數(shù)器,60進(jìn)制的分計(jì)數(shù)器,24進(jìn)制的時(shí)計(jì)數(shù)器。時(shí)分秒的計(jì)數(shù)器具有清0、置數(shù)、進(jìn)位和計(jì)數(shù)功能。其中reset為清0信號(hào),當(dāng)reset為0時(shí),時(shí)分秒的計(jì)數(shù)器清0。當(dāng)set產(chǎn)生第四個(gè)脈沖后,連續(xù)產(chǎn)生的set信號(hào)使分秒計(jì)數(shù)器依次進(jìn)行置數(shù)。以u(píng)pclk為時(shí)鐘,通過(guò)up對(duì)預(yù)置位進(jìn)行控制,當(dāng)up為高時(shí)且upclk有脈沖到來(lái)時(shí),預(yù)置位加一,否則減一。當(dāng)set產(chǎn)生第八個(gè)脈沖時(shí),數(shù)字鐘恢復(fù)時(shí)分秒的顯示。 鬧鐘功能是在正常計(jì)數(shù)功能上拓展,分為鬧鐘時(shí)間預(yù)置和鬧鐘響應(yīng)兩個(gè)部分。鬧鐘時(shí)間預(yù)置功能:當(dāng)set1連續(xù)產(chǎn)生脈沖時(shí),依次對(duì)鬧鐘的時(shí)分秒位進(jìn)行預(yù)置。以u(píng)pclk為時(shí)鐘,通過(guò)up對(duì)預(yù)置位進(jìn)行控制,當(dāng)up為高時(shí)且upclk有脈沖到來(lái)時(shí),預(yù)置位加一,否則減一。當(dāng)set1產(chǎn)生第四個(gè)脈沖時(shí),數(shù)字鐘恢復(fù)時(shí)分秒的顯示。與此同時(shí)在程序中增添變量時(shí)計(jì)時(shí)功能可以持續(xù)運(yùn)行。鬧鐘響應(yīng)功能:通過(guò)預(yù)置后,儲(chǔ)存的變量與計(jì)時(shí)器模塊的時(shí)、分、秒進(jìn)行比對(duì),當(dāng)時(shí)、分、秒相同時(shí),模塊產(chǎn)生一個(gè)一段時(shí)間的高電平,傳輸給鬧鐘響應(yīng)模塊。 整點(diǎn)報(bào)時(shí)功能:當(dāng)計(jì)數(shù)器中的分位等于59,秒位等于59時(shí),模塊產(chǎn)生一段高電平,輸出給揚(yáng)聲器模塊進(jìn)行報(bào)時(shí)。 (3) 年月日計(jì)數(shù)模塊分為年月日計(jì)數(shù)功能,年月日預(yù)置數(shù)功能。 年月日計(jì)數(shù)功能:以時(shí)位的進(jìn)位脈沖為計(jì)時(shí)脈沖,閏年二月份為29天,普通年二月份為28天。一月、三月、五月、七月、八月、十月、十二月為31天,四月、六月、九月、十一月為30天。 年月日預(yù)置數(shù)功能:當(dāng)set產(chǎn)生第一個(gè)脈沖后,依次進(jìn)行年月日數(shù)器置數(shù)。以u(píng)pclk為時(shí)鐘,通過(guò)up對(duì)預(yù)置位進(jìn)行控制,當(dāng)up為高時(shí)且upclk有脈沖到來(lái)時(shí),預(yù)置位加一,否則減一。 (4) 顯示模塊:以時(shí)分秒,年月日模塊的輸出、狀態(tài)標(biāo)志為輸入信號(hào),通過(guò)狀態(tài)控制模塊產(chǎn)生的狀態(tài)標(biāo)志對(duì)顯示模塊進(jìn)行控制,顯示計(jì)時(shí)、預(yù)置時(shí)的不同狀態(tài)。 (5)揚(yáng)聲器模塊:輸入信號(hào)為分位、秒位和狀態(tài)信號(hào),當(dāng)計(jì)時(shí)時(shí)鐘到達(dá)整點(diǎn)是輸出高電平,其他時(shí)刻輸出低電平。 (6)脈沖產(chǎn)生模塊:對(duì)輸入的信號(hào)進(jìn)行1000分頻,產(chǎn)生周期為一秒的時(shí)鐘信號(hào),用于數(shù)字鐘的時(shí)鐘輸入。 3.2系統(tǒng)結(jié)構(gòu)框圖 3.3設(shè)計(jì)思路與方法 3.3.1 狀態(tài)控制模塊 狀態(tài)控制模塊實(shí)現(xiàn)對(duì)各個(gè)功能模塊的整體設(shè)計(jì),包括對(duì)時(shí)間與日期的顯示與調(diào)整,鬧鐘的顯示與調(diào)整等控制操作。狀態(tài)機(jī)的輸入為setpin,setpin1,upclk。狀態(tài)機(jī)的狀態(tài)有11種狀態(tài)。:鬧鐘設(shè)置時(shí)位; :鬧鐘設(shè)置分位; :鬧鐘設(shè)置秒位; :時(shí)鐘顯示時(shí)分秒;:時(shí)鐘顯示年月日; :鐘設(shè)置年; :時(shí)鐘設(shè)置月; :時(shí)鐘設(shè)置日; :時(shí)鐘設(shè)置時(shí); :時(shí)鐘設(shè)置分; :設(shè)置秒 在產(chǎn)生如上狀態(tài)的同時(shí)產(chǎn)生Tlock,flag狀態(tài)標(biāo)志,此標(biāo)志用來(lái)進(jìn)行時(shí)鐘設(shè)置、鬧鐘設(shè)置與顯示控制。 RTL 電路圖 實(shí)現(xiàn)代碼如下: process(upclk) begin if (upclk=1 and upclkLAST_VALUE=0)then state<=next_state; -- 實(shí)現(xiàn)狀態(tài)變換 end if; end process; process(state,setpin,setpin1) begin next_state<=state; case(state) is when s0 => Tlock<="0000"; flag<=1; if(setpin1=1 and setpin1LAST_VALUE=0)then next_state<=g0; end if; if(setpin=1 and setpinLAST_VALUE=0) then next_state<=s1; end if; when s1=> Tlock<="0001"; flag<=1; if(setpin1=1 and setpin1LAST_VALUE=0)then next_state<=g0;end if; if(setpin=1 and setpinLAST_VALUE=0) then next_state<=s2;end if; when s2=> Tlock<="0010"; flag<=1; if(setpin1=1 and setpin1LAST_VALUE=0)then next_state<=g0;end if; if(setpin=1 and setpinLAST_VALUE=0) then next_state<=s3;end if; when s3=> Tlock<="0011"; flag<=1; if(setpin1=1 and setpin1LAST_VALUE=0)then next_state<=g0;end if; if(setpin=1 and setpinLAST_VALUE=0) then next_state<=s4;end if; when s4=> Tlock<="0100"; flag<=1; if(setpin1=1 and setpin1LAST_VALUE=0)then next_state<=g0;end if; if(setpin=1 and setpinLAST_VALUE=0) then next_state<=s5;end if; when s5=> Tlock<="0101"; flag<=1; if(setpin1=1 and setpin1LAST_VALUE=0)then next_state<=g0;end if; if(setpin=1 and setpinLAST_VALUE=0) then next_state<=s6; end if; when s6=> Tlock<="0110"; flag<=1; if(setpin1=1 and setpin1LAST_VALUE=0)then next_state<=g0;end if; if(setpin=1 and setpinLAST_VALUE=0) then next_state<=s7;end if; when s7=> Tlock<="0111"; flag<=1; if(setpin1=1 and setpin1LAST_VALUE=0)then next_state<=g0;end if; if(setpin=1 and setpinLAST_VALUE=0) then next_state<=s0; end if; when g0=> Tlock<="1000"; flag<=0; if(setpin1=1 and setpin1LAST_VALUE=0)then next_state<=g1;end if; if(setpin=1 and setpinLAST_VALUE=0) then next_state<=s0;end if; when g1=> Tlock<="1001"; flag<=0; if(setpin1=1 and setpin1LAST_VALUE=0)then next_state<=g2;end if; if(setpin=1 and setpinLAST_VALUE=0) then next_state<=s0; end if; when g2=> Tlock<="1010"; flag<=0; if(setpin1=1 and setpin1LAST_VALUE=0)then next_state<=s0;end if; if(setpin=1 and setpinLAST_VALUE=0) then next_state<=s0;end if; when others=> next_state<=s0; end case; end process; 3.3.2 時(shí)分秒模塊 時(shí)分秒模塊的輸入為ce(使能端),clk0(系統(tǒng)輸入時(shí)鐘),clk1(upclk時(shí)鐘),flag(標(biāo)志位),lock(狀態(tài)位),up(預(yù)置位增減控制),ov(進(jìn)位位),op(鬧鐘與揚(yáng)聲器響應(yīng))。 時(shí)分秒模塊的RTL電路圖 時(shí)鐘選擇方式:在初始狀態(tài)和顯示年月日的狀態(tài)下,時(shí)分秒模塊的時(shí)鐘輸入為系統(tǒng)時(shí)鐘輸入(clk0),在其他狀態(tài)下,時(shí)分秒模塊的時(shí)鐘輸入為(upclk時(shí)鐘)用來(lái)進(jìn)行置位。 實(shí)現(xiàn)代碼入下: process(lock,clk0,clk1) begin if(lock="0000" or lock="0001")then clk<=clk0; --正常計(jì)數(shù)時(shí)選擇clk0 else clk<=clk1; --預(yù)置的時(shí)候clk1 end if; end process; 時(shí)鐘計(jì)時(shí)功能,在顯示年月日,時(shí)分秒的狀態(tài)時(shí),時(shí)鐘正常計(jì)數(shù)。當(dāng)數(shù)字鐘處于置數(shù)狀態(tài)時(shí),年、月、日、時(shí)、分、秒時(shí)鐘停止計(jì)時(shí),各個(gè)位顯示預(yù)置數(shù)。在鬧鐘的預(yù)置功能實(shí)現(xiàn)的同時(shí),通過(guò)增添變量,在設(shè)置鬧鐘的同時(shí)保證時(shí)鐘的正常計(jì)數(shù),在鬧鐘預(yù)置結(jié)束后,恢復(fù)到初始的時(shí)鐘顯示。 3.2.3 年月日模塊 年月日模塊分為日期增加和日期減小兩個(gè)部分,日期增加:在顯示時(shí)分秒,顯示年月日和設(shè)置完秒位的狀態(tài)下,如果是二月,通過(guò)函數(shù)判斷是否為閏年,其他月份對(duì)大小月進(jìn)行判斷,大月為31天,小月為30天,代碼如下: if(clkevent and clk=1)then if(ce=1)then if(lock="0000")or(lock="0001")or(lock="0100"and up=1)then if(mon0="0010"and mon1="0000") then Feb_add_day(Td0,Td1,tempy0,tempy1,date0,date1); elsif((mon0="0001"and mon0="0000")or(mon0="0011")or(mon0="0101") or(mon0="0111")or(mon0="1000")or(mon0="0000"and mon1="0001")or(mon0="0010"and mon1="0001"))then oddmonth_add_day(Td0,Td1,date0,date1); else evenmonth_add_day(Td0,Td1,date0,date1); end if; end if; 日期減少同理,代碼如下: if(lock="0100"and up=0)then if(mon0="0010"and mon1="0000")then Feb_add_day(Td0,Td1,tempy0,tempy1,date0,date1); elsif((mon0="0001"and mon1="0000")or(mon0="0011")or(mon0="0101") or(mon0="0111")or(mon0="1000")or(mon0="0000"and mon1="0001") or(mon0="0010"and mon1="0001"))then oddmonth_sub_day(Td0,Td1,date0,date1); else evenmonth_sub_day(Td0,Td1,date0,date1); END IF; end if; end if; end if; 當(dāng)以日位的進(jìn)位為輸入,當(dāng)存在輸入脈沖時(shí),通過(guò)函數(shù)對(duì)月份進(jìn)行加減,代碼如下: begin if(clkevent and clk=1)then if(ce=1)then if(lock="0000")or (lock="0001")or (lock="0011"and up=1)then add_month(Tm0,Tm1,mon0,mon1); end if; if(lock="0011"and up=0)then sub_month(Tm0,Tm1,mon0,mon1); end if; if (lock="0000")or (lock="0001") then if(mon0="0010"and mon1="0001")then sub_year(Ty0,Ty1,year0,year1); end if; end if; if(lock="0010"and up=1)then add_year(Ty0,Ty1,year0,year1); end if; if(lock="0010"and up=0)then sub_year(Ty0,Ty1,year0,year1); end if; end if; end if; 3.2.4 顯示模塊 顯示模塊的輸入為年、月、日、時(shí)、分、秒、lock(狀態(tài)標(biāo)志),通過(guò)if語(yǔ)句,狀態(tài)機(jī)一共提供11鐘狀態(tài)。在不同狀態(tài)下,給顯示模塊的年月日時(shí)分秒不同的輸入,從而得到要求的顯示。 顯示電路的RTL電路 代碼如下: process(lock,sec0,sec1,min1,min0,hour1,hour0,date0,date1,mon0,mon1,year0,year1) begin if(lock="0000")then a0<=sec0;a1<=sec1;b0<=min0;b1<=min1;c0<=hour0;c1<=hour1; end if; if(lock="0001")then a0<=date0;a1<=date1;b0<=mon0;b1<=mon1;c0<=year0;c1<=year1; end if; if(lock="0101")or(lock="1000")then a0<="1111";a1<="1111";b0<="1111";b1<="1111";c0<=hour0;c1<=hour1; end if; if(lock="0110")or(lock="1001")then a0<="1111";a1<="1111";b0<=min0;b1<=min1;c0<="1111";c1<="1111"; end if; if(lock="0111")or(lock="1010")then a0<=sec0;a1<=sec1;b0<="1111";b1<="1111";c0<="1111";c1<="1111"; end if; if(lock="0010")then a0<="1111";a1<="1111";b0<="1111";b1<="1111";c0<=year0;c1<=year1; end if; if(lock="0011")then a0<="1111";a1<="1111";b0<=mon0;b1<=mon1;c0<="1111";c1<="1111"; end if; if(lock="0100")then a0<=date0;a1<=date1;b0<="1111";b1<="1111";c0<="1111";c1<="1111"; end if; end process; end led_disp_arc; 3.2.5脈沖發(fā)生模塊(分頻電路) 脈沖發(fā)生電路將提供的1000hz頻率分頻成1hz(供系統(tǒng)時(shí)鐘)。f1000為1000hz輸入,second_wave為分頻輸出。 分頻器的RTL電路 代碼如下: process(f1000,cnt) begin if(f1000event and f1000=1)then if(cnt="00000011")then cnt<="000000000";second_wave<=not second_wave; else cnt<=cnt+1; end if; end if; end process; end second_wave_arc; 3.2.6 揚(yáng)聲器模塊 模塊的輸入為clk(系統(tǒng)時(shí)鐘),op(響應(yīng)信號(hào)),vcc(鬧鐘使能端),ala(高電平輸出)。當(dāng)vcc為高時(shí),且當(dāng)op有響應(yīng)信號(hào)輸入(高),鬧鐘產(chǎn)生一定時(shí)長(zhǎng)的高電平。 鬧鐘的RTL電路 代碼如下: signal temp1:std_logic_vector(3 downto 0); begin process(op,vcc,clk) begin if clkevent and clk=1 then if(vcc=1)then if(temp1="1111")then ala<=not ala; else temp1<=temp1+1; ala<=1; end if; end if; end if; end process; end alarm_arc; 3.3整體RTL電路 4 系統(tǒng)仿真與分析 4.1對(duì)基本要求的仿真 初態(tài)設(shè)置:setpin1=0;up=0;setpin置連續(xù)8個(gè)脈沖,f1000為頻率為1000hz的方波。 分析:在setpin第一次脈沖到來(lái)時(shí),顯示年月日,因?yàn)閿?shù)字鐘是初始狀態(tài)所以年月日均為0。Setpin。第二次脈沖到來(lái)時(shí)對(duì)時(shí)進(jìn)行預(yù)置數(shù),因?yàn)閡p=0,所以設(shè)置時(shí)位,時(shí)位在不斷地減小,在后面各位預(yù)置的過(guò)程中,每一位的預(yù)置過(guò)程都是減小。第三次脈沖來(lái)到是對(duì)分位進(jìn)行預(yù)置,第四次脈沖到來(lái)時(shí)對(duì)秒位進(jìn)行預(yù)置。第四次脈沖到來(lái)時(shí)對(duì)年進(jìn)行預(yù)置,第五次脈沖到來(lái)時(shí)對(duì)月進(jìn)行預(yù)置,第六次脈沖到來(lái)時(shí)對(duì)日進(jìn)行預(yù)置。第七次脈沖到來(lái)時(shí),數(shù)字鐘顯示時(shí)分秒,從仿真結(jié)果可以看出來(lái),此時(shí)時(shí)鐘是從預(yù)置的時(shí)間開(kāi)始計(jì)時(shí)的,第八次脈沖到來(lái)時(shí),此時(shí)時(shí)鐘顯示的是年月日,此時(shí)顯示的年月日為預(yù)置的年月日。 從上述分析可以看出,經(jīng)過(guò)仿真的程序基本達(dá)到數(shù)字鐘的基本要求,系統(tǒng)可靠。 4.2對(duì)鬧鐘狀態(tài)轉(zhuǎn)換的仿真 初始設(shè)置:初態(tài)設(shè)置:setpin1設(shè)計(jì)一個(gè)脈沖;up=0;setpin置連續(xù)2個(gè)脈沖,f1000為頻率為1000hz的方波。 當(dāng)?shù)谝粋€(gè)setpin脈沖到來(lái)時(shí),顯示年月日,第二個(gè)setpin脈沖來(lái)臨時(shí)時(shí)鐘對(duì)年進(jìn)行預(yù)置,此后setpin1的第一個(gè)脈沖到來(lái),時(shí)鐘的狀態(tài)轉(zhuǎn)為對(duì)鬧鐘時(shí)間的設(shè)置,達(dá)到實(shí)驗(yàn)要求。 4.3對(duì)鬧鐘功能的仿真 初始設(shè)置:初態(tài)設(shè)置:setpin1設(shè)計(jì)三個(gè)脈沖;up=0;f1000為頻率為1000hz的方波。 數(shù)字鐘的原狀態(tài)顯示時(shí)分秒,由于未進(jìn)行初始化,所以時(shí)分秒從0開(kāi)始計(jì)時(shí),當(dāng)setpin1第一個(gè)脈沖到來(lái)時(shí),數(shù)字鐘對(duì)鬧鐘的時(shí)刻的時(shí)位進(jìn)行預(yù)置,當(dāng)setpin1第二個(gè)脈沖到來(lái)時(shí),數(shù)字鐘對(duì)鬧鐘的時(shí)刻的分位進(jìn)行預(yù)置,當(dāng)setpin1第三個(gè)脈沖到來(lái)時(shí),數(shù)字鐘對(duì)鬧鐘的時(shí)刻的秒位進(jìn)行預(yù)置,當(dāng)?shù)谒膫€(gè)脈沖到來(lái)是恢復(fù)顯示時(shí)分秒,此時(shí)的時(shí)分秒已經(jīng)計(jì)數(shù)到51秒,符合預(yù)期,在設(shè)置鬧鐘的同時(shí),時(shí)鐘依舊計(jì)數(shù),達(dá)到要求。 同時(shí)從初始時(shí)刻,鬧鐘的揚(yáng)聲器產(chǎn)生一定時(shí)長(zhǎng)高電平可以看出整點(diǎn)報(bào)時(shí)功能良好,達(dá)到設(shè)計(jì)要求。 5 課程設(shè)計(jì)總結(jié)(收獲、體會(huì)和建議) 本次VHDL設(shè)計(jì)的數(shù)字鐘定義了三種類型的端口,分別是in、out、buffer。In和out端口使用簡(jiǎn)單,buffer端口具有回讀功能,因?yàn)閎uffer類型的端口不能連接到其他類型的端口上,因此不利于子模塊原件例化,不利于大型設(shè)計(jì)。 進(jìn)程(Process)是VHDL中最為重要的部分,在本次設(shè)計(jì)中。我出現(xiàn)了對(duì)于時(shí)鐘引入,輸出多驅(qū)動(dòng),一個(gè)進(jìn)程中不允許出現(xiàn)兩個(gè)時(shí)鐘沿觸發(fā)的錯(cuò)誤,這些錯(cuò)誤在未來(lái)的設(shè)計(jì)中都是應(yīng)該避免的。順序語(yǔ)句如IF語(yǔ)句、CASE語(yǔ)句、LOOP語(yǔ)句、變量賦值語(yǔ)句等必須出現(xiàn)在進(jìn)程、函數(shù)或子程序內(nèi)部,而不能單獨(dú)出現(xiàn)在進(jìn)程之外。 本次實(shí)驗(yàn)讓我對(duì)VHDL 語(yǔ)言有了更深的認(rèn)識(shí),對(duì)語(yǔ)言的運(yùn)用更加熟悉,為未來(lái)的實(shí)際應(yīng)用打下了良好的基礎(chǔ)。因?yàn)閷?shí)驗(yàn)室的條件限制,并沒(méi)有將程序下載到實(shí)際器件中觀察現(xiàn)象,只是通過(guò)軟件對(duì)系統(tǒng)進(jìn)行仿真,希望以后可以機(jī)會(huì)接觸并使用實(shí)際器件。 6 參考文獻(xiàn) 1. 吳廷鑫. 基于FPGA的多功能數(shù)字鐘設(shè)計(jì)[J]. 科技經(jīng)濟(jì)市場(chǎng), 2015, (5): 1-5 2.徐大詔. 基于FPGA實(shí)現(xiàn)的數(shù)字鐘設(shè)計(jì)[J]. 信息技術(shù), 2009, (12): 101-104 3.張子剛, 盧戈, 田鵬. 基于VHDL的數(shù)字時(shí)鐘的設(shè)計(jì)[J]. 氣象水文海洋儀器, 2008, (2): 10-14 4.樊永寧, 張曉麗. 基于VHDL的多功能數(shù)字鐘的設(shè)計(jì)[J]. 工礦自動(dòng)化, 2006, (3): 92-94 5.江翠云 基于CPLD和VHDL的數(shù)字鐘的設(shè)計(jì)[期刊論文]-硅谷2010(2)- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- fpga 數(shù)字 課程設(shè)計(jì) 報(bào)告
鏈接地址:http://kudomayuko.com/p-6549854.html