基于FPGA的數(shù)字時(shí)鐘設(shè)計(jì)三峽大學(xué)電氣與新能源學(xué)院_第1頁(yè)
基于FPGA的數(shù)字時(shí)鐘設(shè)計(jì)三峽大學(xué)電氣與新能源學(xué)院_第2頁(yè)
基于FPGA的數(shù)字時(shí)鐘設(shè)計(jì)三峽大學(xué)電氣與新能源學(xué)院_第3頁(yè)
基于FPGA的數(shù)字時(shí)鐘設(shè)計(jì)三峽大學(xué)電氣與新能源學(xué)院_第4頁(yè)
基于FPGA的數(shù)字時(shí)鐘設(shè)計(jì)三峽大學(xué)電氣與新能源學(xué)院_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、CPLD及電子CAD 同組同學(xué):代磊一 EDA介紹EDA技術(shù)就是以計(jì)算機(jī)為工具,設(shè)計(jì)者在EDA軟件(MAX+plus II 或Quartus II )平臺(tái)上,用硬件描述語(yǔ)言VHDL或相關(guān)類似編程語(yǔ)言完成設(shè)計(jì)文件,然后由計(jì)算機(jī)自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合、優(yōu)化、布局、布線和仿真,直至對(duì)于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。EDA技術(shù)的出現(xiàn),極大地提高了電路設(shè)計(jì)的效率和可操作性,減輕了設(shè)計(jì)者的勞動(dòng)強(qiáng)度。二 VHDL語(yǔ)言(1)VHDL語(yǔ)言介紹:VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語(yǔ)句外,VHDL的語(yǔ)言形式和描述風(fēng)格與句法是十分類似于一

2、般的計(jì)算機(jī)高級(jí)語(yǔ)言。(2)VHDL語(yǔ)言的基本知識(shí): (a)實(shí)體,構(gòu)造體Entity(實(shí)體)用來(lái)說(shuō)明模型的外部輸入輸出特征; Architecture(構(gòu)造體)用來(lái)定義模型的內(nèi)容和功能每一個(gè)構(gòu)造體必須有一個(gè)實(shí)體與它相對(duì)應(yīng),所以兩者一般成對(duì)出現(xiàn) (b).順序語(yǔ)句和并行語(yǔ)句順序語(yǔ)句只能出現(xiàn)在進(jìn)程(Process)和子程序中,其中子程序包括函數(shù)(Function)和過(guò)程(Procedure). 順序語(yǔ)句種類有:進(jìn)程語(yǔ)句,賦值語(yǔ)句,流程控制語(yǔ)句,等待語(yǔ)句,子程序調(diào)用語(yǔ)句,返回語(yǔ)句,空操作語(yǔ)句。(具體例子見后面設(shè)計(jì)的系統(tǒng)示例中)。并行語(yǔ)句是VHDL區(qū)別于傳統(tǒng)軟件描述語(yǔ)言最顯著的一個(gè)方面.各種并行語(yǔ)句在結(jié)構(gòu)

3、體中是同時(shí)并發(fā)執(zhí)行的,也就是說(shuō),只要某個(gè)信號(hào)發(fā)生變化,都會(huì)引起相應(yīng)語(yǔ)句被執(zhí)行而產(chǎn)生相應(yīng)的輸出,其執(zhí)行順序與書寫順序沒(méi)有任何關(guān)系。但在一個(gè)結(jié)構(gòu)體內(nèi),各進(jìn)程外部的語(yǔ)句是并發(fā)執(zhí)行的,它們之間可以通過(guò)信號(hào)進(jìn)行通信,而每個(gè)進(jìn)程內(nèi)部的語(yǔ)句是順序執(zhí)行的。(相關(guān)例子也在后面列的設(shè)計(jì)例子中有)在實(shí)際編程時(shí),應(yīng)將并行語(yǔ)句和順序語(yǔ)句靈活運(yùn)用才符合VHDL的設(shè)計(jì)要求和硬件特點(diǎn)。(c)進(jìn)程兩種進(jìn)程設(shè)計(jì)方式:*【進(jìn)程標(biāo)號(hào):】 process 【(敏感參數(shù)列表)】is 進(jìn)程申明部分; begin 順序語(yǔ)句end process*【進(jìn)程標(biāo)號(hào):】 process is 進(jìn)程申明部分; begin wait 語(yǔ)句; 順序語(yǔ)句en

4、d process* (d)信號(hào)與變量信號(hào)與變量的區(qū)別見下面圖表: (e)順序語(yǔ)句IF_THEN_ELSE語(yǔ)句只能在進(jìn)程內(nèi)使用,至少應(yīng)有一個(gè)條件句,條件句必須由布爾表達(dá)式構(gòu)成。語(yǔ)句形式:IF 條件句 Then 順序語(yǔ)句 ELSIF 條件句 Then 順序語(yǔ)句 ELSE 順序語(yǔ)句ENDIFCASE_WHEN語(yǔ)句表達(dá)式可以是一個(gè)整數(shù)類型或枚舉類型的值,也可以是由這些數(shù)據(jù)類型的值構(gòu)成的數(shù)組,條件句中的選擇值必在表達(dá)式的取值范圍內(nèi)。除非所有條件句中的選擇值能完整覆蓋CASE語(yǔ)句中表達(dá)式的取值,否則最末一個(gè)條件句中的選擇必須用“OTHERS”表示。CASE語(yǔ)句中每一條件句的選擇值只能出現(xiàn)一次,不能有相同

5、選擇值的條件語(yǔ)句出現(xiàn)。CASE語(yǔ)句執(zhí)行中必須選中,且只能選中所列條件語(yǔ)句中的一條。LOOP語(yǔ)句基本格式:LOOP標(biāo)號(hào):重復(fù)模式 LOOP順序語(yǔ)句;END LOOP LOOP標(biāo)號(hào)FOR IN LOOP順序語(yǔ)句END LOOP;WHILE LOOP順序語(yǔ)句END LOOP;LOOP標(biāo)號(hào): LOOP順序語(yǔ)句EXIT LOOP標(biāo)號(hào) ;END LOOP;NEXT LOOP標(biāo)號(hào) WHEN 語(yǔ)句2、并行語(yǔ)句VHDL語(yǔ)言與傳統(tǒng)軟件描述語(yǔ)言最大的不同,有多種語(yǔ)句格式,包括:并行信號(hào)賦值語(yǔ)句、進(jìn)程語(yǔ)句、塊語(yǔ)句、條件信號(hào)賦值語(yǔ)句、元件例化語(yǔ)句、生成語(yǔ)句、并行過(guò)程調(diào)用語(yǔ)句。各種并行語(yǔ)句在結(jié)構(gòu)體中的執(zhí)行是同步進(jìn)行的,或

6、者說(shuō)是并行運(yùn)行的,其執(zhí)行方式與書寫的順序無(wú)關(guān)。在執(zhí)行中,并行語(yǔ)句之間可以有信息往來(lái),也可以是互為獨(dú)立、互不相關(guān)、異步運(yùn)行的(如多時(shí)鐘情況)。每一并行語(yǔ)句內(nèi)部的語(yǔ)句運(yùn)行方式可以有兩種不同的方式,即并行執(zhí)行方式(如塊語(yǔ)句)和順序執(zhí)行方式(如進(jìn)程語(yǔ)句)With_Select_Then選擇信號(hào)語(yǔ)句所有的“WHEN”子句必須是互斥的。一般用 “When Others”來(lái)處理未考慮到的情況,只有一個(gè)參考信號(hào)和賦值符 (=),每一子句結(jié)尾是逗號(hào),最后一句是分號(hào)When_Else選擇信號(hào)語(yǔ)句根據(jù)指定條件對(duì)信號(hào)賦值,條件可以為任意表達(dá)式;根據(jù)條件的出現(xiàn)的先后次序隱含優(yōu)先權(quán);最后一個(gè) ELSE子句隱含了所有未列出

7、的條件。每一子句的結(jié)尾沒(méi)有標(biāo)點(diǎn),只有最后一句有分號(hào)3、進(jìn)程語(yǔ)句進(jìn)程語(yǔ)句是VHDL中最重要的語(yǔ)句,具有并行和順序行為的雙重性。進(jìn)程和進(jìn)程語(yǔ)句之間是并行關(guān)系,進(jìn)程內(nèi)部是一組連續(xù)執(zhí)行的順序語(yǔ)句,進(jìn)程語(yǔ)句與構(gòu)造體中的其余部分進(jìn)行信息交流是靠信號(hào)完成的?;靖袷剑哼M(jìn)程標(biāo)號(hào): PROCESS (信號(hào)敏感表) IS說(shuō)明區(qū)BEGIN順序語(yǔ)句END PROCESS 進(jìn)程標(biāo)號(hào);信號(hào)敏感表進(jìn)程賴以啟動(dòng)的是敏感表。對(duì)于表中列出的任何信號(hào)的改變,都將啟動(dòng)進(jìn)程,執(zhí)行進(jìn)程內(nèi)相應(yīng)順序語(yǔ)句。一些VHDL綜合器,綜合后,對(duì)應(yīng)進(jìn)程的硬件系統(tǒng)對(duì)進(jìn)程中的所有輸入的信號(hào)都是敏感的,不論在源程序的進(jìn)程中是否把所有的信號(hào)都列人敏感表中。為了

8、使軟件仿真與綜合后的硬件仿真對(duì)應(yīng)起來(lái),應(yīng)當(dāng)將進(jìn)程中的所有輸人信號(hào)都列入敏感表中雙向口雙口RAM的輸入和輸出是相互獨(dú)立的吧,他們的工作是分別由(輸入始能,輸入時(shí)鐘,輸入地址)和(輸出始能,輸出時(shí)鐘,輸出地址)控制了,只要注意,同時(shí)不對(duì)一個(gè)地址進(jìn)行讀寫操作,就應(yīng)該不會(huì)出問(wèn)題。以下是課堂上雙向口示例程序:ENTITY ldcnt IS PORT (clk, ld, oe: IN std_logic;count: INOUT std_logic_vector(7 DOWNTO 0);END ldcnt; ARCHITECTURE archldcnt OF ldcnt ISSIGNAL int_coun

9、t: std_logic_vector(7 DOWNTO 0); BEGINcnt: PROCESS (clk)BEGINIF rising_edge(clk) THENIF ld=1 THEN int_count = count; ELSE int_count = int_count + 1;END IF;END IF;END PROCESS cnt ;outen: PROCESS (oe, int_count) BEGINIF oe = 1 THEN count = int_count ; ELSE count Z) ; END IF ;END PROCESS outen;END arch

10、ldcnt; 狀態(tài)機(jī)所謂狀態(tài)機(jī)(FSM有限狀態(tài)機(jī)),簡(jiǎn)單來(lái)講,就是給個(gè)條件,由這個(gè)狀態(tài)跳到下一個(gè),或者保持不變。在此過(guò)程中有可能有某些值得輸出。一個(gè)最簡(jiǎn)單的狀態(tài)機(jī)例子:ABCA,每來(lái)一個(gè)時(shí)鐘,狀態(tài)改變一下。(a)狀態(tài)機(jī)的優(yōu)勢(shì): 1、狀態(tài)機(jī)克服了純硬件數(shù)字系統(tǒng)順序方式控制不靈活的缺點(diǎn)。2、由于狀態(tài)機(jī)的結(jié)構(gòu)相對(duì)簡(jiǎn)單,設(shè)計(jì)方案相對(duì)固定。3、狀態(tài)機(jī)容易構(gòu)成性能良好的同步時(shí)序邏輯模塊。4、高可靠性。5、在高速運(yùn)算和控制方面,狀態(tài)機(jī)更有其巨大的優(yōu)勢(shì)。6、狀態(tài)機(jī)的VHDL表述豐富多樣、有其獨(dú)到的好處。(后面數(shù)字時(shí)鐘設(shè)計(jì)中對(duì)數(shù)碼管的顯示切換就是用狀態(tài)機(jī)的設(shè)計(jì)原理完成的)(b)狀態(tài)機(jī)結(jié)構(gòu) 說(shuō)明部分:定義枚舉型數(shù)

11、據(jù)類型,定義狀態(tài)變量。主控時(shí)序進(jìn)程:主控時(shí)序進(jìn)程主要負(fù)責(zé)狀態(tài)機(jī)運(yùn)轉(zhuǎn)和在時(shí)鐘驅(qū)動(dòng)下負(fù)責(zé)狀態(tài)的轉(zhuǎn)換。:主控組合進(jìn)程: 也稱為狀態(tài)譯碼進(jìn)程,其任務(wù)是根據(jù)外部輸入的控制信號(hào),或和當(dāng)前狀態(tài)的狀態(tài)值確定下一狀態(tài)的取向,以及確定相應(yīng)的輸出。輔助進(jìn)程: 用于配合狀態(tài)機(jī)工作的組合或時(shí)序進(jìn)程。元件例化 元件例化即生成在新圖形文件中能被應(yīng)用到的圖形設(shè)計(jì)文件。此次試驗(yàn)主要涉及到具體操作問(wèn)題。下面就相關(guān)操作予以說(shuō)明:1 選擇工具按鈕有效時(shí),在圖形編輯器窗口的空白處單擊鼠標(biāo)左鍵以確定輸入位置,然后選擇Enter Symbol,或雙擊鼠標(biāo)左鍵。2 將出現(xiàn)一個(gè)Enter Symbol 對(duì)話框,在symbol Librarie

12、s框中 選擇 “.maxplus2max2libprim” 。3 所有的Altera 圖元以列表方式顯示出來(lái),選擇您想輸入的圖元,然后選擇 OK(后面數(shù)字時(shí)鐘設(shè)計(jì)中的圖形文件的制作主要就是用此法,并連線才構(gòu)成一個(gè)最終的時(shí)鐘系統(tǒng))三.數(shù)字鐘綜合設(shè)計(jì)一 系統(tǒng)總體框圖時(shí)間模塊時(shí)間clk1或整點(diǎn)報(bào)時(shí)蜂鳴器位數(shù)碼管顯示秒表clkM秒表模塊定時(shí)模塊定時(shí)比較和顯示切換個(gè)數(shù)碼管以不同形式不同頻率閃爍分頻蜂鳴器clk分頻鬧鐘分段二 系統(tǒng)文件截圖三 各模塊部分介紹() 時(shí)鐘和調(diào)時(shí)部分,進(jìn)制計(jì)數(shù)()模塊截圖:()程序進(jìn)制:library ieee;use ieee.std_logic_1164.all;use ie

13、ee.std_logic_unsigned.all; entity ershisi_33_34 is port(clk,clr,en:in std_logic; carry :out std_logic; ge :out std_logic_vector( 3 downto 0); shi :out std_logic_vector( 3 downto 0); end ;architecture one of ershisi_33_34 issignal g,s :std_logic_vector(3 downto 0); beginprocess(clk,clr,en,g,s) begin

14、if clr=1then g=0000; s=0000; elsif clkevent and clk=1 then if en=0 then if g=0011 and s=0010 then g=0000; s=0000;carry=1; elsif g=1001 then g=0000;s=s+1; else g=g+1;carry=0; end if; end if; end if;end process;ge=g;shi=s;end;進(jìn)制:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;

15、 entity liushijinzhi_33_34 is port(clk,clr,en:in std_logic; carry :out std_logic; ge :out std_logic_vector( 3 downto 0); shi :out std_logic_vector( 3 downto 0); end ;architecture one of liushijinzhi_33_34 issignal g,s :std_logic_vector(3 downto 0); beginprocess(clk,clr,en,g,s) begin if clr=1then g=0

16、000; s=0000; elsif clkevent and clk=1 then if en=0 then if g=1001 and s=0101 then g=0000; s=0000;carry=1;elsif g=1001 then g=0000;s=s+1; else g=g+1;carry=0; end if; end if; end if;我們?cè)诿氡砬懊娑嗉恿藘晌贿M(jìn)制,這樣秒表更實(shí)用end process;ge=g;shi=s;end;() 秒表部分,進(jìn)制計(jì)數(shù)()模塊截圖:()100進(jìn)制計(jì)數(shù)程序部分和60進(jìn)制的差不多,就不列舉程序了鬧鐘分段模塊:前低沉,中間較清脆急促,最后急

17、促() 定時(shí)比較和顯示切換及鬧鐘分段基于狀態(tài)機(jī)編程設(shè)計(jì)()模塊截圖:()程序定時(shí)比較和顯示切換:LIBRARY ieee;USE ieee.std_logic_1164.ALL;ENTITY bijiaohexianshi IS PORT ( clk, clr: IN std_logic; turn: IN std_logic_vector(1 downto 0); mg,ms,fg,fs,sg,ss :in std_logic_vector(3 downto 0); ms_1g, ms_1s, ms_2g, ms_2s,ms_mg, ms_ms,ms_fg, ms_fs:in std_log

18、ic_vector(3 downto 0); d_fg,d_fs,d_sg,d_ss :in std_logic_vector(3 downto 0); g1,g2,g3,g4,g5,g6,g7,g8: out std_logic_vector(3 downto 0); speaker_dtime: out std_logic);END bijiaohexianshi;ARCHITECTURE arch_1 OF bijiaohexianshi ISTYPE clock_states IS (time, dtime,mtime,light); SIGNAL sm: clock_states;B

19、EGINfsm: PROCESS (clk, clr)BEGIN IF clr = 1 THEN sm IF turn=00 THEN sm IF turn=01 THEN sm IF turn=10 THEN sm sm = time; END CASE; END IF; END PROCESS fsm;g1= mg WHEN (sm = time) else ms_2g when (sm=mtime) ELSE d_fg when (sm=dtime);g2= ms WHEN (sm = time) else ms_2s when (sm=mtime) ELSE d_fs when (sm

20、=dtime);g3= fg WHEN (sm = time) else ms_1g when (sm=mtime) ELSE d_sg when (sm=dtime);g4= fs WHEN (sm = time) else ms_1s when (sm=mtime) ELSE d_ss when (sm=dtime); g5= sg WHEN (sm = time) else ms_mg when (sm=mtime) ELSE 0000;g6= ss WHEN (sm = time) else ms_ms when (sm=mtime) ELSE 0000; g7= 0000 WHEN

21、(sm = time) else ms_fg when (sm=mtime) ELSE 0000; g8= 0000 WHEN (sm = time) else ms_fg when (sm=mtime) ELSE 0000; speaker_dtime=1 when (ss=d_ss and sg=d_sg and fs=d_fs and fg=d_fg ) else 0;END arch_1;報(bào)時(shí)分段:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity baoshifenduan is port( clk1,clk2,clk3,speaker_dtime:in std_logic; ms:in std_logic_vector(3 downto 0); speaker :out std_logic);end ;architecture one of

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論