




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、CPLD及電子CAD 同組同學(xué):代磊一 EDA介紹EDA技術(shù)就是以計(jì)算機(jī)為工具,設(shè)計(jì)者在EDA軟件(MAX+plus II 或Quartus II )平臺(tái)上,用硬件描述語言VHDL或相關(guān)類似編程語言完成設(shè)計(jì)文件,然后由計(jì)算機(jī)自動(dòng)地完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局、布線和仿真,直至對于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。EDA技術(shù)的出現(xiàn),極大地提高了電路設(shè)計(jì)的效率和可操作性,減輕了設(shè)計(jì)者的勞動(dòng)強(qiáng)度。二 VHDL語言(1)VHDL語言介紹:VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式和描述風(fēng)格與句法是十分類似于一
2、般的計(jì)算機(jī)高級(jí)語言。(2)VHDL語言的基本知識(shí): (a)實(shí)體,構(gòu)造體Entity(實(shí)體)用來說明模型的外部輸入輸出特征; Architecture(構(gòu)造體)用來定義模型的內(nèi)容和功能每一個(gè)構(gòu)造體必須有一個(gè)實(shí)體與它相對應(yīng),所以兩者一般成對出現(xiàn) (b).順序語句和并行語句順序語句只能出現(xiàn)在進(jìn)程(Process)和子程序中,其中子程序包括函數(shù)(Function)和過程(Procedure). 順序語句種類有:進(jìn)程語句,賦值語句,流程控制語句,等待語句,子程序調(diào)用語句,返回語句,空操作語句。(具體例子見后面設(shè)計(jì)的系統(tǒng)示例中)。并行語句是VHDL區(qū)別于傳統(tǒng)軟件描述語言最顯著的一個(gè)方面.各種并行語句在結(jié)構(gòu)
3、體中是同時(shí)并發(fā)執(zhí)行的,也就是說,只要某個(gè)信號(hào)發(fā)生變化,都會(huì)引起相應(yīng)語句被執(zhí)行而產(chǎn)生相應(yīng)的輸出,其執(zhí)行順序與書寫順序沒有任何關(guān)系。但在一個(gè)結(jié)構(gòu)體內(nèi),各進(jìn)程外部的語句是并發(fā)執(zhí)行的,它們之間可以通過信號(hào)進(jìn)行通信,而每個(gè)進(jìn)程內(nèi)部的語句是順序執(zhí)行的。(相關(guān)例子也在后面列的設(shè)計(jì)例子中有)在實(shí)際編程時(shí),應(yīng)將并行語句和順序語句靈活運(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 順序語句end process*【進(jìn)程標(biāo)號(hào):】 process is 進(jìn)程申明部分; begin wait 語句; 順序語句en
4、d process* (d)信號(hào)與變量信號(hào)與變量的區(qū)別見下面圖表: (e)順序語句IF_THEN_ELSE語句只能在進(jìn)程內(nèi)使用,至少應(yīng)有一個(gè)條件句,條件句必須由布爾表達(dá)式構(gòu)成。語句形式:IF 條件句 Then 順序語句 ELSIF 條件句 Then 順序語句 ELSE 順序語句ENDIFCASE_WHEN語句表達(dá)式可以是一個(gè)整數(shù)類型或枚舉類型的值,也可以是由這些數(shù)據(jù)類型的值構(gòu)成的數(shù)組,條件句中的選擇值必在表達(dá)式的取值范圍內(nèi)。除非所有條件句中的選擇值能完整覆蓋CASE語句中表達(dá)式的取值,否則最末一個(gè)條件句中的選擇必須用“OTHERS”表示。CASE語句中每一條件句的選擇值只能出現(xiàn)一次,不能有相同
5、選擇值的條件語句出現(xiàn)。CASE語句執(zhí)行中必須選中,且只能選中所列條件語句中的一條。LOOP語句基本格式:LOOP標(biāo)號(hào):重復(fù)模式 LOOP順序語句;END LOOP LOOP標(biāo)號(hào)FOR IN LOOP順序語句END LOOP;WHILE LOOP順序語句END LOOP;LOOP標(biāo)號(hào): LOOP順序語句EXIT LOOP標(biāo)號(hào) ;END LOOP;NEXT LOOP標(biāo)號(hào) WHEN 語句2、并行語句VHDL語言與傳統(tǒng)軟件描述語言最大的不同,有多種語句格式,包括:并行信號(hào)賦值語句、進(jìn)程語句、塊語句、條件信號(hào)賦值語句、元件例化語句、生成語句、并行過程調(diào)用語句。各種并行語句在結(jié)構(gòu)體中的執(zhí)行是同步進(jìn)行的,或
6、者說是并行運(yùn)行的,其執(zhí)行方式與書寫的順序無關(guān)。在執(zhí)行中,并行語句之間可以有信息往來,也可以是互為獨(dú)立、互不相關(guān)、異步運(yùn)行的(如多時(shí)鐘情況)。每一并行語句內(nèi)部的語句運(yùn)行方式可以有兩種不同的方式,即并行執(zhí)行方式(如塊語句)和順序執(zhí)行方式(如進(jìn)程語句)With_Select_Then選擇信號(hào)語句所有的“WHEN”子句必須是互斥的。一般用 “When Others”來處理未考慮到的情況,只有一個(gè)參考信號(hào)和賦值符 (=),每一子句結(jié)尾是逗號(hào),最后一句是分號(hào)When_Else選擇信號(hào)語句根據(jù)指定條件對信號(hào)賦值,條件可以為任意表達(dá)式;根據(jù)條件的出現(xiàn)的先后次序隱含優(yōu)先權(quán);最后一個(gè) ELSE子句隱含了所有未列出
7、的條件。每一子句的結(jié)尾沒有標(biāo)點(diǎn),只有最后一句有分號(hào)3、進(jìn)程語句進(jìn)程語句是VHDL中最重要的語句,具有并行和順序行為的雙重性。進(jìn)程和進(jìn)程語句之間是并行關(guān)系,進(jìn)程內(nèi)部是一組連續(xù)執(zhí)行的順序語句,進(jìn)程語句與構(gòu)造體中的其余部分進(jìn)行信息交流是靠信號(hào)完成的?;靖袷剑哼M(jìn)程標(biāo)號(hào): PROCESS (信號(hào)敏感表) IS說明區(qū)BEGIN順序語句END PROCESS 進(jìn)程標(biāo)號(hào);信號(hào)敏感表進(jìn)程賴以啟動(dòng)的是敏感表。對于表中列出的任何信號(hào)的改變,都將啟動(dòng)進(jìn)程,執(zhí)行進(jìn)程內(nèi)相應(yīng)順序語句。一些VHDL綜合器,綜合后,對應(yīng)進(jìn)程的硬件系統(tǒng)對進(jìn)程中的所有輸入的信號(hào)都是敏感的,不論在源程序的進(jìn)程中是否把所有的信號(hào)都列人敏感表中。為了
8、使軟件仿真與綜合后的硬件仿真對應(yīng)起來,應(yīng)當(dāng)將進(jìn)程中的所有輸人信號(hào)都列入敏感表中雙向口雙口RAM的輸入和輸出是相互獨(dú)立的吧,他們的工作是分別由(輸入始能,輸入時(shí)鐘,輸入地址)和(輸出始能,輸出時(shí)鐘,輸出地址)控制了,只要注意,同時(shí)不對一個(gè)地址進(jìn)行讀寫操作,就應(yīng)該不會(huì)出問題。以下是課堂上雙向口示例程序: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ī)),簡單來講,就是給個(gè)條件,由這個(gè)狀態(tài)跳到下一個(gè),或者保持不變。在此過程中有可能有某些值得輸出。一個(gè)最簡單的狀態(tài)機(jī)例子:ABCA,每來一個(gè)時(shí)鐘,狀態(tài)改變一下。(a)狀態(tài)機(jī)的優(yōu)勢: 1、狀態(tài)機(jī)克服了純硬件數(shù)字系統(tǒng)順序方式控制不靈活的缺點(diǎn)。2、由于狀態(tài)機(jī)的結(jié)構(gòu)相對簡單,設(shè)計(jì)方案相對固定。3、狀態(tài)機(jī)容易構(gòu)成性能良好的同步時(shí)序邏輯模塊。4、高可靠性。5、在高速運(yùn)算和控制方面,狀態(tài)機(jī)更有其巨大的優(yōu)勢。6、狀態(tài)機(jī)的VHDL表述豐富多樣、有其獨(dú)到的好處。(后面數(shù)字時(shí)鐘設(shè)計(jì)中對數(shù)碼管的顯示切換就是用狀態(tài)機(jī)的設(shè)計(jì)原理完成的)(b)狀態(tài)機(jī)結(jié)構(gòu) 說明部分:定義枚舉型數(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)主要涉及到具體操作問題。下面就相關(guān)操作予以說明:1 選擇工具按鈕有效時(shí),在圖形編輯器窗口的空白處單擊鼠標(biāo)左鍵以確定輸入位置,然后選擇Enter Symbol,或雙擊鼠標(biāo)左鍵。2 將出現(xiàn)一個(gè)Enter Symbol 對話框,在symbol Librarie
12、s框中 選擇 “.maxplus2max2libprim” 。3 所有的Altera 圖元以列表方式顯示出來,選擇您想輸入的圖元,然后選擇 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;我們在秒表前面多加了兩位進(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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- pvc輕質(zhì)隔墻施工方案
- 的日記300字左右
- 2025年惠州城市職業(yè)學(xué)院單招職業(yè)傾向性測試題庫及參考答案
- 2025年共青團(tuán)知識(shí)競賽試題(附答案)
- 2025年江西司法警官職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫帶答案
- 2025年湖南理工職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫附答案
- 2025年泉州經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫新版
- 2025年青島港灣職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫參考答案
- 2024-2025學(xué)年高中化學(xué) 第二單元 化學(xué)與資源開發(fā)利用 2.3 石油、煤和天然氣的綜合利用教學(xué)實(shí)錄1 新人教版選修2
- 7火山噴發(fā)(教學(xué)設(shè)計(jì))-2023-2024學(xué)年科學(xué)六年級(jí)下冊人教鄂教版
- 超精密加工裝備及其關(guān)鍵部件課件
- 宮頸癌生活質(zhì)量評(píng)價(jià)表
- IQC員工技能矩陣圖
- 鋼材檢測報(bào)告
- 25項(xiàng)品質(zhì)保證展開計(jì)劃PPT課件
- 四年級(jí)下冊科學(xué)3保護(hù)土壤資源冀人版
- 南寧市存量房買賣合同范本
- 好書介紹愛德華的奇妙之旅PPT課件
- 環(huán)境違法行立案審批表
- 壓力容器涂敷工藝規(guī)程指導(dǎo)書
- 教研組工作總結(jié)PPT
評(píng)論
0/150
提交評(píng)論