第一篇:EDA設計論文
EDA課程設計報告書
交通燈設計
設 計 者: 邱春華 呂云蘭
指導老師: 李 敏
學 號: 09387105 09387114 專業(yè)班級:通信工程0911班
摘要………………………………………………………………………………3
1、設計任務………………………………………………………………………4
2、方案選擇與論證………………………………………………………4
3、實現方案原理及說明…………………………………………………………5
4、系統(tǒng)設計詳述…………………………………………………………………6 a、分頻器的設計……………………………………………………………………6 b、控制器的設計……………………………………………………………………7 c、計數器的設計……………………………………………………………………7 d、分位譯碼電路的設計……………………………………………………………8 e、數碼管驅動的設計——綠燈和紅燈驅動………………………………………9 f、數碼管驅動的設計--黃燈驅動……………………………………………9
5、程序設計………………………………………………………………………10 5.1 分頻器的設計…………………………………………………………………10 5.2 控制器的設計…………………………………………………………………10 5.3 計數器的設計…………………………………………………………………11 5.4 分位譯碼電路的設計…………………………………………………………14 5.5數碼管驅動的設計……………………………………………………………15
6、整個系統(tǒng)的構成及仿真圖……………………………………………………17
7、心得體會………………………………………………………………………18
8、參考文獻………………………………………………………………………18
語言實現交通燈的設計
作者:邱春華、呂云蘭
指導老師:李 敏(湖北文理學院理工學院 襄陽 230036)
【摘要】:伴隨著社會的發(fā)展以及人類生活水平的提高,汽車的數量在EDA技術的發(fā)展和應用領域的擴大與深入,EDA 技術在電子信息、通信、自動控制及計算機應用等領域的重要性日益突出。隨著技術市場與人才市場對DEA 的不斷的增加,交通的問題日益突出,單單依靠人力來指揮交通已經不可行了。所以,設計交通燈來完成這個需求就顯的越加迫切。
【關鍵字】:EDA技術、VHDL語言、交通燈
QuartusII 設計軟件為用戶提供完整的多平臺設計環(huán)境,它可以輕易滿足特定設計的需要。它是單芯片可編程系統(tǒng)(SOPC)設計的綜合性環(huán)境,EDA技術作為現代電子設計技術的核心,它依賴強大的計算機,在EDA工具軟件平臺上,對以硬件描述語言VHDL為系統(tǒng)邏輯描述手段完成的設計文件,自動地完成邏輯編譯、邏輯簡化、邏輯分割、邏輯綜合,以及邏輯優(yōu)化和仿真測試,直至實現既定的電子線路系統(tǒng)功能。下面詳細介紹在QUARTUS II軟件環(huán)境下開發(fā)基于VHDL語言交通燈的設計。、設計任務
a、設計內容
設計一個十字路口的交通燈控制系統(tǒng),用實驗平臺上的LED 發(fā)光二極管顯示車輛通過的方向(甲車道和乙車道各一組),用數碼管顯示該方向的亮燈時間。
b、設計要求:
交通燈按正常狀態(tài)依次點亮紅、黃、綠燈,交警可以根據路口車流量的情況分別設置紅、綠、黃燈持續(xù)點亮的時間。在紅、綠燈點亮時,能夠顯示其點亮持續(xù)的時間。
2、方案選擇與論證
本次實驗設計交通燈設計采用自頂向下、由粗到細, 逐步分解的設計方法, 最頂層電路是指系統(tǒng)的整體要求, 最下層是具體的邏輯電路的實現。自頂向下的設計方法將一個復雜的系統(tǒng)逐漸分解成若干功能模塊, 從而進行設計描述, 并且應用EDA 軟件平臺自動完成各功能模塊的邏輯綜合與優(yōu)化, 門級電路的布局, 再下載到硬件中實現設計。對于交通燈來說首先是分頻器、控制器、計數器、分位譯碼電路及數碼管驅動的設計,然后能在LED中顯示紅、綠、黃燈的轉化,并帶有數碼管計時功能。通過參考EDA課程設計指導書,有以下方案:
(1)、頂層文件輸入端口:時鐘脈沖信號、復位按鍵及綠燈計數器的計數范圍輸入端t1;輸出端口:兩個車道的紅、綠、黃輸出,及其所對應各燈所輸出時間計數共16個。
(2)、底層文件分為:a.分頻模塊、b.計數器模塊、c.控制器模塊、d.分位譯碼模塊、e.數碼管驅動模塊。
、實現方案原理及說明
從題目中計數值與交通燈的亮滅的關系如圖(1)所示:
圖(1)
交通燈控制器系統(tǒng)框圖如圖2 所示:
圖(2)考慮到黃燈的作用是警示已過停車線的司機盡快離開路口,而路口總寬度不變,因此將其固定為5 秒,而紅燈亮的時間等于綠燈亮的時間加上黃燈亮的時間,因此緊對綠燈點亮時間進行設置就可以同時改變紅燈亮的時間,這里將綠燈所能設置的最長時間設置為40 秒即(0 4、系統(tǒng)設計詳述 其輸入及輸出端口有: clkin——輸入的高頻時鐘脈沖; reset——復位端,高電平有效; t1——綠燈計數器的計數范圍輸入端; r1、g1、y1——分別為第一車道紅、綠、黃燈輸出; r1A、r1B、g1A、g1B、y1A——分別為第一車道紅、綠、黃燈對應的數碼管計數輸出; r2、g2、y2——分別為第二車道紅、綠、黃燈輸出; r2A、r2B、g2A、g2B、y2A——分別為第二車道紅、綠、黃燈對應的數碼管計數輸出; a、分頻器的設計 分頻器實現的是將高頻時鐘信號轉換成低頻的時鐘信號,用于觸發(fā)控制器和計數器。該分頻器實現的是一千分頻,將一千赫茲的時鐘信號分頻成一赫茲的時鐘信號。生成的Symbol 文件如圖 圖(3)3 和仿真波形如圖4 所示。 圖(4) b、控制器的設計 控制器的作用是根據計數器的計數值及t1 的輸入數據控制發(fā)光二極管的亮、滅,以及輸出正計時數值給七段數碼管的分位譯碼電路。本控制器是利用時鐘沿的下降沿讀取前級計數器的計數值,然后作出反應;生成的實體模塊如圖5 和仿真波形如圖6 所 圖(5)示。 圖(6) c、計數器的設計 計數器rcounter的計數范圍為由t1引腳輸入。計到t1 后,下一個時鐘沿恢復到0,開始下一輪計數。仿真波形如圖當t1 取7 時,計數器計數到7 后清零。實體模塊如圖7 和仿真波形如圖8。計數器grounter和計數器ycounter的實體模塊如圖9 和圖10 所示。 圖(7)圖(9)圖(10) 圖(8) d、分位譯碼電路的設計 由于控制器輸出的正計時數值可能是1 位或者2 位十進制數,因此在七段數碼管的譯碼電路前要加上分位電路(即將其分成2 個1 位的十進制數,如40 分成4 和0,5分為0 和5)。與控制器一樣,分位電路同樣可以由時鐘驅動,也可以設計成純組合邏輯電路??刂破髦?,引入了寄 圖(11)存器。本電路中分位電路使用組合邏輯電路實現。生成的實體模塊如圖11 及仿真波形如圖12。 圖(12) e、數碼管驅動的設計——綠燈和紅燈驅動 要求數碼管共陽極連接(共陽極的公共端為低電平時,LED 不亮),在設計中為每個數碼管都添加了一個驅動電路,在使用時通過調用模塊來實現。本模塊設計為時序邏 圖(14) 輯電路,采用下降沿觸發(fā)。實體模塊如圖14 和仿真波形如圖15。 圖(15) f、數碼管驅動的設計——黃燈驅動 由于黃燈固定時間是5 秒,因此變化范圍是0 至5 秒,七段數碼管只要能顯示0-5 的數就行了,所以單獨用一個數碼管驅動。實體模塊如圖16和仿真波形如圖17。圖(16) 圖(17) 、程序設計 5.1 分頻器的設計 library ieee;use ieee.std_logic_1164.all;entity fredevider is port(clkin:in std_logic;clkout:out std_logic);end;architecture devider of fredevider is constant N:integer:=499;signal counter:integer range 0 to N;signal clk:std_logic;begin process(clkin)begin if rising_edge(clkin)then if counter=N then counter<=0;clk<=not clk;else counter<=counter+1;end if;end if;end process;clkout<=clk;end;5.2 控制器的設計 library ieee;use ieee.std_logic_1164.all;entity control is port(clk :in std_logic;c1,c2,c3:out std_logic;w1,w2,w3:in std_logic;r1,r2 :out std_logic;y1,y2 :out std_logic;g1,g2 :out std_logic;reset :in std_logic);end control;architecture a of control is type state_space is(s3,s2,s1,s0); begin process(clk)begin if reset='1' then state<=s0;else if(clk'event and clk='1')then case state is when s0=> if w1='1' then state<=s1;end if;when s1=> if w2='1' then state<=s2;end if;when s2=> if w3='1' then state<=s3;end if;when s3=> if w2='1' then state<=s0;end if;end case;end if;end if;end process;c1<='1'when state =s0 else '0';c2<='1'when state =s1 or state =s3 else '0';c3<='1'when state =s2 else '0';r1<='1'when state =s1 or state =s0 else '0';y1<='1'when state =s3 else '0';g1<='1'when state =s2 else '0';r2<='1'when state =s2 or state =s3 else '0';y2<='1'when state =s1 else '0';g2<='1'when state =s0 else '0';end a;5.3 計數器的設計 5.3.1 綠燈計數器 library ieee;use ieee.std_logic_1164.all; port(clk :in std_logic;enable :in std_logic;t1 :in integer range 0 to 40;c1 :out std_logic;m1 :out integer range 0 to 5);end gcounter;architecture a of gcounter is begin process(clk)variable cnt : integer range 0 to 40;begin if(clk'event and clk='1')then if enable='1'and cnt library ieee;use ieee.std_logic_1164.all;entity rcounter is port(clk :in std_logic;enable :in std_logic;t1 :in integer range 0 to 40;c2 :out std_logic;m2:out integer range 0 to 32);end rcounter;architecture a of rcounter is constant y:Integer:=5;signal t2: integer range 0 to 45;begin process(clk)variable cnt : integer range 0 to 45; t2<=t1+y;if(clk'event and clk='1')then if enable='1'and cnt library ieee;use ieee.std_logic_1164.all;entity ycounter is port(clk :in std_logic;enable :in std_logic;c3 :out std_logic;m3 :out integer range 0 to 5);end ycounter;architecture a of ycounter is begin process(clk)variable cnt : integer range 0 to 5;begin if(clk'event and clk='1')then if enable='1'and cnt<5 then cnt:=cnt+1;else cnt:=0;end if;if cnt=5 then c3<='1';else c3<='0';end if;end if; end process;end a;5.4 分位譯碼電路設計 5.4.1分位器-1 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY fenwei1 IS PORT(Numin:IN integer RANGE 0 TO 45;NumA,NumB:OUT Integer RANGE 0 to 9);END;ARCHITECTURE behavior OF fenwei1 IS BEGIN process(Numin)BEGIN IF Numin>=40 THEN NumA<=4;NumB<=Numin-40;ELSIF Numin>=30 THEN NumA<=3;NumB<=Numin-30;ELSIF Numin>=20 THEN NumA<=2;NumB<=Numin-20;ELSIF Numin>=10 THEN NumA<=1;NumB<=Numin-10;ELSE NumA<=0;NumB<=Numin;END IF;END PROCESS;END;5.4.2分位器-2 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY fenwei2 IS PORT(Numin:IN integer RANGE 0 TO 45;);END;ARCHITECTURE behavior OF fenwei2 IS BEGIN process(Numin)BEGIN IF Numin>=40 THEN NumC<=4;NumD<=Numin-40;ELSIF Numin>=30 THEN NumC<=3;NumD<=Numin-30;ELSIF Numin>=20 THEN NumC<=2;NumD<=Numin-20;ELSIF Numin>=10 THEN NumC<=1;NumD<=Numin-10;ELSE NumC<=0;NumD<=Numin;END IF;END PROCESS;END;5.5數碼管驅動的設計 5.5.1 紅綠燈驅動 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ygqudong IS PORT(clk:in STD_LOGIC;enable :in std_logic;data:IN integer RANGE 0 TO 9;segout: out STD_LOGIC_VECTOR(6 downto 0));END;ARCHITECTURE behavior OF ygqudong IS BEGIN process(Clk,data)BEGIN IF falling_edge(Clk)and enable='1' then case data is when 1=>segout<=“0110000”;when 2=>segout<=“1101101”;when 3=>segout<=“1111001”;when 4=>segout<=“0110011”;when 5=>segout<=“1011011”;when 6=>segout<=“0011111”;when 7=>segout<=“1110000”;when 8=>segout<=“1111111”;when 9=>segout<=“1110011”;when others =>null;END CASE;END IF;END PROCESS;END;5.5.2 黃燈驅動 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY hqudong IS PORT(clk:in STD_LOGIC;enable :in std_logic;data:IN integer RANGE 0 TO 5;segout: out STD_LOGIC_VECTOR(6 downto 0));END;ARCHITECTURE behavior OF hqudong IS BEGIN process(Clk,data)BEGIN IF falling_edge(Clk)and enable='1' then case data is when 0=>segout<=“1111110”;when 1=>segout<=“0110000”;when 2=>segout<=“1101101”;when 3=>segout<=“1111001”;when 4=>segout<=“0110011”;when 5=>segout<=“1011011”;when others =>null;END CASE;END IF;END PROCESS;END; 、整個系統(tǒng)的構成及仿真圖 圖(18) 圖(19) 結果說明:在圖18 中,綠燈計數器直接接分位譯碼器1,紅燈計數器直接接分位譯碼器2,每個譯碼器分別接兩個驅動電路,然后接輸出。左邊5 個驅動器接的數碼管顯示的是甲車道各個燈亮的時間,右邊5 個驅動器接的數碼管顯示的是乙車道各個燈亮的時間。在19 圖中可以看出甲車道綠燈亮的時間加上黃燈亮 乙車道紅燈亮的時間,乙車道綠燈亮的時間加上黃燈亮的時間等于甲車道紅燈亮的時間。與此同時具有燈亮時間計數顯示,可以看出該系統(tǒng)滿足我們所需的要求。 7、心得體會 一段時間的EDA課程設計,使我們學到了很多,本次課程設計的交通燈所需底層模塊很多,其實現的VHDL語言程序較多,整個過程中調試程序是很重要的,要有很好的耐心,開始編譯時總是會有很多錯誤,比如輸入錯誤、語法錯誤等,發(fā)現錯誤之后再一遍一遍的仔細查錯,直到沒有錯誤,然后進行波型仿真?,F在,對EDA 的認識有了很大的提高,能夠熟練的使用QuartsII,能夠用VHDL 語言編寫簡單的、實用的小程序,這次EDA 課程設計重點學習了交通燈部分程序的編寫、調試、還有硬件下載、操作等過程。在整個課程設計的過程中,我們查閱了大量的關于EDA 的資料,特別是在網上和圖書館我找到了大量的關于硬件編程的資料。在李敏老師平時認真的授課及嚴格的治學態(tài)度下,讓我有了一定的基礎,同時還得感謝老師在實驗課上的細心指導,讓我們學到了很多,受益終生。 【參考文獻】 [1] 潘松, 黃繼業(yè).EDA 技術實用教程[M] 第2版 北京: 科學出版社, 2006 [2] 曹昕燕,周鳳臣,聶春燕.EDA技術實驗與課程設計 北京:清華大學出版社,2006.5 目錄 一、摘要 二、概述 2.1目的與要求 2.2實驗儀器與設備 2.3實驗注意事項 2.4設計環(huán)境 三、實驗內容 四、4位加法器設計實現過程 4.1元件選擇 4.2編輯半加器的原理圖 4.3編譯設計圖形文件 4.4生成元件符號 4.5功能仿真設計文件 ① 建立波形文件 ② 輸入信號節(jié)點 ③ 設置波形參量 ④ 設定仿真時間寬度 ⑤ 加入輸入信號 ⑥ 波形文件存盤 ⑦ 進行仿真 4.6 1位全加器的實現過程 4.7 四位加法器實現過程 五、收獲與心得體會 一、摘要 隨著電子技術和計算機技術的飛速發(fā)展,電子線路的設計工作也日益顯得重要。經過人工設計、制作實驗板、調試再修改的多次循環(huán)才定型的傳統(tǒng)產品設計方法必然被計算機輔助設計所取代,因為這種費時費力又費資源的設計調試方法既增加了產品開發(fā)的成本,又受到實驗工作場地及儀器設備的限制。 20世紀90年代,國際上電子和計算機技術較先進的國家,一直在積極探索新的電子電路設計方法,并在設計方法、工具等方面進行了徹底的變革,取得了巨大成功。在電子技術設計領域,可編程邏輯器件(如CPLD、FPGA)的應用,已得到廣泛的普及,這些器件為數字系統(tǒng)的設計帶來了極大的靈活性。這些器件可以通過軟件編程而對其硬件結構和工作方式進行重構,從而使得硬件的設計可以如同軟件設計那樣方便快捷。這一切極大地改變了傳統(tǒng)的數字系統(tǒng)設計方法、設計過程和設計觀念,促進了EDA技術的迅速發(fā)展。 EDA技術就是以計算機為工具,設計者在EDA軟件平臺上,用硬件描述語言VHDL完成設計文件,然后由計算機自動地完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局、布線和仿真,直至對于特定目標芯片的適配編譯、邏輯映射和編程下載等工作。EDA技術的出現,極大地提高了電路設計的效率和可操作性,減輕了設計者的勞動強度。 利用EDA工具,電子設計師可以從概念、算法、協(xié)議等開始設計電子系統(tǒng),大量工作可以通過計算機完成,并可以將電子產品從電路設計、性能分析到設計出IC版圖或PCB版圖的整個過程的計算機上自動處理完成。 現在對EDA的概念或范疇用得很寬。包括在機械、電子、通信、航空航天、化工、礦產、生物、醫(yī)學、軍事等各個領域,都有EDA的應用。目前EDA技術已在各大公司、企事業(yè)單位和科研教學部門廣泛使用。例如在飛機制造過程中,從設計、性能測試及特性分析直到飛行模擬,都可能涉及到EDA技術。 二、概述 2.1目的與要求 1、學習MAX+plusⅡ工具軟件的基本功能和使用方法。 2、學習使用原理圖輸入法設計半加器,掌握原理圖輸入法的操作步驟。 3、初步掌握設計電路原理圖的編輯、編譯、仿真等操作方法。每次實驗前,學生須仔細閱讀本實驗指導書的相關內容: 1)明確實驗目的和實驗內容; 2)明確實驗原理與步驟; 3)復習與實驗內容有關的理論知識; 4)預習儀器設備的使用方法、操作規(guī)程及注意事項。 2.2實驗儀器與設備 1、PC機 2、MAX+plus II 軟件 2.3實驗注意事項 1.實驗開始前,應先檢查本人的計算機是否安裝相關軟件,了解其軟件的使用方法和要求。 2.實驗時每個同學應單獨設計程序、操作、記錄實驗結果等,使每個同學受到全面訓練。 3.測量數據或觀察現象要認真細致,實事求是。使用計算機要符合操作規(guī)程,切勿隨便重啟頻繁開關計算機。 4.未經許可,不得動用其它人的儀器設備或計算機等物。 5.實驗結束后,實驗記錄交指導教師查看并認為無誤后,離開機房。最后,應清理計算機,備份編寫程序。 6.愛護公物,發(fā)生儀器設備等損壞事故時,應及時報告指導教師,按有關實驗管理規(guī)定處理。 7.自覺遵守學校和實驗室管理的其它有關規(guī)定。 2.4設計環(huán)境 QuartusII design 是 最 高 級 和 復 雜的,用 于system-on-a-programmable-chip(SOPC)的設計環(huán)境。QuartusII design 提 供完善的 timing closure 和 LogicLock? 基于塊的設計流程。QuartusII design是唯一一個包括以timing closure 和 基于塊的設計流為基本特征的programmable logic device(PLD)的軟件。Quartus II 設計軟件改進了性能、提升了功能性、解決了潛在的設計延遲等,在工業(yè)領域率先提供FPGA與mask-programmed devices開發(fā)的統(tǒng)一工作流程。 Altera Quartus II 作為一種可編程邏輯的設計環(huán)境, 由于其強大的設計能力和直觀易用的接口,越來越受到數字系統(tǒng)設計者的歡迎。 三、實驗內容 以Altera公司的MAX+plus II為工具軟件,采用原理圖輸入法設計半加器h_adder,生成元件符號,并仿真驗證設計結果。 四、4位加法器設計實現過程 4.1元件選擇 在MAX+plus II工具軟件的元件庫中已經有與門、或門、與非門和異或門等元件,在設計中可直接調用這些元件,實現電路設計。 圖1 半加器原理圖 在元件選擇對話框的符號庫“Symbol Libraries”欄目中,用鼠標雙擊基本元件庫文件夾“d:maxplus2max2libprim”后,在符號文件“Symbol Files”欄目中列出了該庫的基本元件的元件名,例如and2(二輸入端的與門)、xor(異或門)、VCC(電源)、input(輸入)和output(輸出)等。在元件選擇對話框的符號名“Symbol Name”欄目內直接輸入xor,或者在“Symbol Files”欄目中,用 鼠標雙擊“xor”元件名,即可得到異或門的元件符號。用上述同樣的方法也可以得到其他元件符號。 4.2編輯半加器的原理圖 半加器邏輯電路圖如圖1所示,它由1個異或門和1個與門構成,a、b是輸入端,SO是和輸出端,CO是向高位的進位輸出端。 在元件選擇對話框的符號名“Symbol Name”欄目內直接輸入xor,或者在“Symbol Files”欄目中,用鼠標雙擊“xor”元件名,即可得到異或門的元件符號。用上述同樣的方法也可以得到與門及輸入端和輸出端的元件符號。用鼠標雙擊輸入或輸出元件中原來的名稱,使其變黑后就可以進行名稱修改,用這種方法把兩個輸入端的名稱分別更改為“a”和“b”,把兩個輸出端的名稱分別更改為“SO”和“CO”,然后按照圖1所示的半加器邏輯電路的連接方式,用鼠標將相應的輸入端和輸出端及電路內部連線連接好,并以“h_adder.gdf”(注意后綴是.gdf)為文件名,存在自己建立的工程目錄d:myedamygdf內。進行存盤操作時,系統(tǒng)在彈出的存盤操作對話框中,自動保留了上一次存盤時的文件名和文件目錄,不要隨意單擊“OK”按鈕結束存盤,一定要填入正確的文件名并選擇正確的工程目錄后,才能單擊“OK”按鈕存盤,這是上機實驗時最容易忽略和出錯的地方。 4.3編譯設計圖形文件 設計好的圖形文件一定要通過MAX+plus II的編譯。在MAX+plus II集成環(huán)境下,執(zhí)行“MAX+plus”菜單下的“Compiler”命令,在彈出的編譯對話框中單擊“Start”按鈕,即可對h_adder.gdf文件進行編譯。 在編譯中,MAX+plus II自動完成編譯網表提取(Compiler Netlist Extractor)、數據庫建立(Database Builder)、邏輯綜合(Logic Synthesizer)、邏輯分割(Partitioner)、適配(Fitter)、延時網表提取(Timing SNF Extractor)和編程文件匯編(Assembler)等操作,并檢查設計文件是否正確。存在錯誤的設計文件是不能將編譯過程進行到底的,此時計算機會中斷編譯,并在編譯(Compiler)對話框中指出錯誤類型和個數。 4.4生成元件符號 在MAX+plus II集成環(huán)境下,執(zhí)行“File”菜單下的“Create Default Symbol” 命令,將通過編譯的GDF文件生成一個元件符號,并保存在工程目錄中。這個元件符號可以被其他圖形設計文件調用,實現多層次的系統(tǒng)電路設計。 4.5功能仿真設計文件 仿真,也稱為模擬(Simulation);是對電路設計的一種間接的檢測方法。對電路設計的邏輯行為和功能進行模擬檢測,可以獲得許多設計錯誤及改進方面的信息。對于大型系統(tǒng)的設計,能進行可靠、快速、全面的仿真尤為重要。 ① 建立波形文件 進行仿真時需要先建立仿真文件。在Max+p1us II環(huán)境執(zhí)行“File”的“New”命令,再選擇彈出的對話框中的Waveform Editor fi1e項,波形編輯窗口即被打開。 ② 輸入信號節(jié)點 在波形編輯方式下,執(zhí)行“Node”的“Nodes from SNF”命令,彈出輸入節(jié)點“Enter Nodes from SNF”對話框,在對話框中首先單擊“List”按鈕,這時在對話框左邊的“Available Nodes&Groups”(可利用的節(jié)點與組)框中將列出該設計項目的全部信號節(jié)點。若在仿真中只需要觀察部分信號的波形,則首先用鼠標將選中的信號名點黑,然后單擊對話框中間的“=>”按鈕,選中的信號即進入到對話框右邊的“Selected Nodes&Groups”(被選擇的節(jié)點與組)框中。如果需要刪除“被選擇的節(jié)點與組”框中的節(jié)點信號,也可以用鼠標將其名稱點黑,然后單擊對話框中間的“<="按鈕。節(jié)點信號選擇完畢后,單擊“OK”按鈕即可。 ③ 設置波形參量 在波形編輯對話框中調入了半加器的所有節(jié)點信號后,還需要為半加器輸入信號a和b設定必要的測試電平等相關的仿真參數。如果希望能夠任意設置輸入電平位置或設置輸入時鐘信號的周期,可以在Options選項中,取消網格對齊Snap to Grid的選擇(取消鉤)。 ④ 設定仿真時間寬度 在仿真對話框,默認的仿真時間域是1μS。如果希望有足夠長的時間觀察仿真結果,可以選擇“File”命令菜單中的“End Time”選項,在彈出的“End Time”對證框中,填入適當的仿真時間域(如5μS)即可。 ⑤ 加入輸入信號 為輸入信號a和b設定測試電平的方法及相關操作如教材圖2.1.3所示,利用必要的功能鍵為a和b加上適當的電平,以便仿真后能測試so和co輸出信號。 ⑥ 波形文件存盤 以“h_adder.scf”(注意后綴是.scf)為文件名,存在自己建立的工程目錄d:myedamygdf內。在波形文件存盤時,系統(tǒng)將本設計電路的波形文件名自動設置為“h_adder.scf”,因此可以直接單擊確定按鈕。 ⑦ 進行仿真 4.6 1位全加器的實現過程 1位全加器可以用兩個半加器及一個或門連接而成。其原理圖如圖2所示。在Quartus7.2圖形編輯方式下,在用戶目錄中找到自己設計的半加器元件h_adder,并把它調入原理圖編輯框中(調入兩個),另外從d:maxplus2max2libprim元件庫中調出一個兩輸入端的或門,并加入相應的輸入和輸出元件,按照圖1所示電路連線,得到1位全加器電路的設計結果。電路中的a和b是兩個1位二進制加數輸入,cin是低位來的進位輸入,sum是和輸出,cout是向高位進位輸出。 圖2 1位全加器原理圖 按以上步驟進行仿真,仿真圖如下: 1位全加器仿真圖 4.7 四位加法器實現過程 在一位全加器的基礎上設計四位全加器,其原理圖如圖所示 圖3 四位加法器原理圖 按以上操作進行仿真,仿真圖如: 五、收獲與心得體會 本次的EDA課程設計歷時一星期,時間雖短,但通過一個星期的實踐,使我對EDA技術有了更進一步的了解。同時,大致懂得了一個課題制作的具體流程和實施方法。另外,課程設計對QuartusⅡ軟件的使用要求較高,從而使我能較為熟練的運用此軟件。在設計時,采用模塊化的設計思路使得問題變的簡單明了,大大縮短了時間,降低了發(fā)生錯誤的機侓,也便于修改和更新。 課程設計中,需要找很多資料,在當今的信息化環(huán)境中,雖然資料很多,但需要仔細斟酌才能找到所要的。這次的課程設計很好的鍛煉了這種能力。此外,與同學和老師的交流必不可少,我從中也學到了不少東西。 課程設計是一次很好的鍛煉機會,我從中學的很多知識對將來的學習和工作都有很大的幫助,十分感謝學校能提供這樣一個機會。 數字鐘 一、實驗目的 1、掌握多位計數器相連的設計方法。 2、掌握十進制,六進制,二十四進制計數器的設計方法。 3、掌握揚聲器的驅動及報時的設計。 4、LED燈的花樣顯示。 5、掌握CPLD技術的層次化設計方法。 二、實驗器材 1、主芯片Altera EPF10K10LC84-4。2、8個LED燈。 3、揚聲器。4、4位數碼顯示管。5、8個按鍵開關(清零,調小時,調分鐘)。 三、實驗內容 根據電路特點,運用層次設計概念設計。將此設計任務分成若干模塊,規(guī)定每一模塊的功能和各模塊之間的接口。 1、時計時程序: library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity hour is port(reset,clk : in std_logic; daout : out std_logic_vector(7 downto 0));end hour; architecture behav of hour is signal count : std_logic_vector(3 downto 0);signal counter : std_logic_vector(3 downto 0);begin p1: process(reset,clk) begin if reset='0' then count<=“0000”; counter<=“0000”; elsif(clk'event and clk='1')then if(counter<2)then if(count=9)then count<=“0000”; counter<=counter + 1; else count<=count+1; end if; else if(count=3) then counter<=“0000”; else count<=count+1; count<=“0000”; end if; end if; end if; end process; daout(7 downto 4)<=counter;daout(3 downto 0)<=count; end behav; 2、分計時程序: library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity minute is port(reset,clk,sethour: in std_logic; daout : out std_logic_vector(7 downto 0); enhour : out std_logic);end minute; architecture behav of minute is signal count : std_logic_vector(3 downto 0);signal counter : std_logic_vector(3 downto 0);signal carry_out1 : std_logic;signal carry_out2 : std_logic;begin p1: process(reset,clk)begin if reset='0' then count<=“0000”; counter<=“0000”; elsif(clk'event and clk='1')then if(counter<5)then if(count=9)then count<=“0000”; counter<=counter + 1; else count<=count+1; end if; carry_out1<='0'; else if(count=9)then count<=“0000”; counter<=“0000”; carry_out1<='1'; else count<=count+1; carry_out1<='0'; end if; end if;end if;end process; p2: process(clk)begin if(clk'event and clk='0')then if(counter=0)then if(count=0)then carry_out2<='0'; end if; else carry_out2<='1'; end if;end if;end process; daout(7 downto 4)<=counter;daout(3 downto 0)<=count;enhour<=(carry_out1 and carry_out2)or sethour;end behav; 3、秒計時程序: library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity second is port(reset,clk,setmin : in std_logic; daout : out std_logic_vector(7 downto 0); enmin : out std_logic);end second; architecture behav of second is signal count : std_logic_vector(3 downto 0);signal counter : std_logic_vector(3 downto 0);signal carry_out1 : std_logic;signal carry_out2 : std_logic;begin p1: process(reset,clk)begin if reset='0' then count<=“0000”; counter<=“0000”; elsif(clk'event and clk='1')then if(counter<5) then if (count=9) then count<=“0000”; counter<=counter + 1; else count<=count+1; end if; carry_out1<='0'; else if(count=9) then count<=“0000”; counter<=“0000”; carry_out1<='1'; else count<=count+1; carry_out1<='0'; end if; end if;end if;end process;daout(7 downto 4)<=counter; daout(3 downto 0)<=count;enmin<=carry_out1 or setmin;end behav;6 4、alert程序: library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity alert is port(clkspk : in std_logic; second : in std_logic_vector(7 downto 0); minute : in std_logic_vector(7 downto 0); speak : out std_logic; lamp : out std_logic_vector(8 downto 0));end alert; architecture behav of alert is signal divclkspk2 : std_logic;begin p1: process(clkspk)begin if(clkspk'event and clkspk='1')then divclkspk2<=not divclkspk2; end if;end process;p2: process(second,minute)begin if(minute=“01011001”)then case second is when “01010001”=>lamp<=“000000001”;speak<=divclkspk2;when “01010010”=>lamp<=“000000010”;speak<='0';when “01010011”=>lamp<=“000000100”;speak<=divclkspk2;when “01010100”=>lamp<=“000001000”;speak<='0';when “01010101”=>lamp<=“000010000”;speak<=divclkspk2;when “01010110”=>lamp<=“000100000”;speak<='0';when “01010111”=>lamp<=“001000000”;speak<=divclkspk2;when “01011000”=>lamp<=“010000000”;speak<='0';when “01011001”=>lamp<=“100000000”;speak<=clkspk;when others=>lamp<=“000000000”;end case;end if;end process;end behav;8 5、seltime程序 library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all; entity seltime is port(ckdsp : in std_logic; reset : in std_logic; second : in std_logic_vector(7 downto 0); minute : in std_logic_vector(7 downto 0); hour : in std_logic_vector(7 downto 0); daout : out std_logic_vector(3 downto 0); sel : out std_logic_vector(2 downto 0));end seltime; architecture behav of seltime is signal sec : std_logic_vector(2 downto 0);begin process(reset,ckdsp)begin if(reset='0')then sec<=“000”; elsif(ckdsp'event and ckdsp='1')then sec<=“000”;else sec<=sec+1;end if;end if;end process; process(sec,second,minute,hour)begin case sec is when “000”=>daout<=second(3 downto 0);when “001”=>daout<=second(7 downto 4);when “011”=>daout<=minute(3 downto 0);when “100”=>daout<=minute(7 downto 4);when “110”=>daout<=hour(3 downto 0);when “111”=>daout<=hour(7 downto 4);when others=>daout<=“1111”;end case;end process; if(sec=“111”)then sel<=sec;end behav; 6、deled程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_unsigned.all; ENTITY deled IS PORT(S: IN STD_LOGIC_VECTOR(3 DOWNTO 0); A,B,C,D,E,F,G,H: OUT STD_LOGIC);END deled; ARCHITECTURE BEHAV OF deled IS SIGNAL DATA:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL DOUT:STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN DATA<=S;PROCESS(DATA)BEGIN CASE DATA IS WHEN “0000”=>DOUT<=“00111111”;WHEN “0001”=>DOUT<=“00000110”;WHEN “0010”=>DOUT<=“01011011”;WHEN “0011”=>DOUT<=“01001111”;WHEN “0100”=>DOUT<=“01100110”;WHEN “0101”=>DOUT<=“01101101”;WHEN “0110”=>DOUT<=“01111101”;WHEN “0111”=>DOUT<=“00000111”;WHEN “1000”=>DOUT<=“01111111”;WHEN “1001”=>DOUT<=“01101111”;WHEN “1010”=>DOUT<=“01110111”;WHEN “1011”=>DOUT<=“01111100”;WHEN “1100”=>DOUT<=“00111001”;WHEN “1101”=>DOUT<=“01011110”;WHEN “1110”=>DOUT<=“01111001”;WHEN “1111”=>DOUT<=“01000000”;WHEN OTHERS=>DOUT<=“00000000”;END CASE;END PROCESS;H<=DOUT(7); G<=DOUT(6); F<=DOUT(5); E<=DOUT(4);D<=DOUT(3);C<=DOUT(2);B<=DOUT(1);A<=DOUT(0);END BEHAV; 7、頂層原理圖: 四、實驗結果 頂層原理圖仿真波形: 五、心得體會 1、系統(tǒng)設計進要行充分的方案論證,不可盲目就動手去做; 2、實驗中對每一個細節(jié)部分都要全面思考,要對特殊情況進行處理; 3、對于數字系統(tǒng),要考慮同步、異步問題; 4、數字電路的理論分析要結合時序圖; 5、遇到問題,要順藤摸瓜,分析清楚,不可胡亂改動,每做一次改變都要有充分的理由; 6、模塊化設計方法的優(yōu)點在于其簡潔性,但是在實驗設計中也發(fā)現,在實驗最終電路確定之前,要盡量減少模塊重疊嵌套,因為在總的電路敲定之前,電路還不成熟,很多地方需要改進,如果在開始時就進行多層模塊化,里層模塊電路的修改將影響其外層的全部電路,這樣就是牽一發(fā)動全身,很顯然,這樣將導致電 數字鐘課程設計 電路設計的低效,所以在設計過程中,一定要盡量減少超過兩層的模塊; 7、遇到問題花了很長時間沒有解決掉,要學會想他人請教,別人的不經意一點,可能就能把自己帶出思維死區(qū)。 EDA 多 功 能 數 字 時 鐘 專業(yè):11級應用電子技術 班級:二班 學號:110372021307 姓名:賀成林 指導老師:祝宏 日期:2012年6月29日 一、實驗目的 1、課程設計是一實踐教學環(huán)節(jié),是針對《數字電子技術》課程的要求,結合實踐對學生進行綜合設計性訓練,在自學和實踐訓練中培養(yǎng)學生理論聯系實踐和實踐動手能力,獨立地解決實際問題能力。 2、通過課程設計是使學生熟悉和了解可編程專用數字邏輯電路的設計、開發(fā)流程,熟悉和了解現代EDA設計工具,掌握數字電子系統(tǒng)層次化的設計方法。 已知條件:MAX+Plus軟件 基本功能: 1、以數字形式顯示時、分、秒的時間; 2、小時計數器為24進制; 3、分秒計數器為60進制。 二、實驗要求、綜合應用《數字電子技術基礎》課程中的理論知識去獨立地完成一個設計課題; 2、熟悉和了解現代EDA設計、編程、編譯、仿真及下載技術的全過程。 三、EDA 技術介紹 1、EDA 技術概況 EDA 是電子設計自動化(Electronic Design Automation)的縮寫,在 20 世 紀 90 年代初從計算機輔助設計(CAD)、計算機輔助制造(CAM)、計算機輔助測試(CAT)和計算機輔助工程(CAE)的概念發(fā)展而來的。EDA 技術就是以計算機為工 具,設計者在 EDA 軟件平臺上,用硬件描述語言 HDL 完成設計文件,然后由計算機 自動地完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局、布線和仿真,直至對于特 定目標芯片的適配編譯、邏輯映射和編程下載等工作。EDA 技術的出現,極大地提 高了電路設計的效率和可*性,減輕了設計者的勞動強度。 2、ALTERA QUARTUS II 軟件介紹 Quartus II 是 Altera 公司的綜合性 PLD 開發(fā)軟件,支持原理圖、VHDL、VerilogHDL 以及 AHDL(Altera Hardware Description Language)等多種 設計輸入形式,內嵌自有的綜合器以及仿真器,可以完成從設計輸入到硬件 配置的完整 PLD 設計流程。 四、關鍵詞 數字計數器、動態(tài)顯示、快速校分、整點報時、時段控制。 五、實驗步驟 1、秒計數器是60進制的。當下面的74161到9時等下一個脈沖來是向上面的74161計數,到5時將兩個74161共同預置。從而實現00—59秒的計數功能。 電路圖如下: 進行編譯及波形仿真,如下圖: 將上述文件保存并打包,如圖: 2、分計數器是60進制的。功能如秒計數器。其電路圖如下: 波形圖仿真及打包圖如下: 3、小時計數器是24進制的。當下面的74161到9時等下一個脈沖來是向上面的74161計數。但是等到上面的記到2時下面的將不能超過4,所以等上面的記到2,下面的記到4時就將兩個74161共同預置。從而實現00—24秒的計數功能。 原理圖如下: 仿真的波形圖及打包的文件圖如下: 4、校時。校時是通過加快時分的計數速度來快速校準時間的。實際上我們把秒脈沖cps加到分計數和時計數上,是他們加快計數速度。所以其中我們需要通過開關來選擇。 原理圖及打包圖如下: 5、時段控制:時段控制是通過7485集成電路的數據比較來控制的。 原理圖及打包圖如下: 6、整點報時:整點報時是通過整點時的二進制數據規(guī)律來報時的。 原理圖及打包圖如下: 7、將時分秒打包文件連成多功能數字電路圖如下: 8、多功能數字鐘硬件測試原理圖如下: 9、部分制作過程圖,如下: 六、實驗工具 裝有QuartusⅡ軟件的電腦,EDA開發(fā)板,相關EDA設計方面的書籍。 七、設計中遇到問題及解決方法 1、實驗后期的引腳分配及下載方法不當,實驗所用電腦沒有 quartus11.0 的 驅動。耗費時間較多。解決方法:參閱西安電子科技大學出版社出版的《數字電路設計及 Verilog HDL 實現》第 394 頁關于引腳分配和下載驗證的介紹; 2、下載驗證過程中時段控制部分有錯誤,原代碼在軟件上仿真沒有錯誤,但是下載到實驗板驗證時,出現錯誤。解決方法:通過去請教同學及查閱相關資料得到解決。 八、特點和實用性 利用 QuartusII 軟件,結合所學的數字電路的知識設計一個 24 時多功能數 字鐘,具有正常分、秒計時,動態(tài)顯示、快速校分、整點報時、時段控制的功能。分析整個電路的工作原理,分別說明各子模塊的設計原理和調試、仿真、編 程下載的過程,并對最終結果進行總結,最后提出在實驗過程中出現的問題和解 決的方案。通過實驗掌握一些邏輯組合器件的基本功能和用法,同時體會利用軟件設計 電路的方便快捷,避免硬件布線的繁瑣,提高效率。 九、心得體會 1、設計必須要有整體概念,提前熟悉軟件。剛開始時沒頭緒,不知道該怎 樣分塊,進度很慢,加上對軟件不是很熟悉,比如:封裝要注意哪些,哪些不能 運行,哪些是不正確的操作等等,走了很多冤枉路。 2、設計的模塊要分塊調試,免得等所有都完工了再調試出錯,那樣的話很 難確定是什么出錯,更加沒頭緒。有必要的話做一部分后就送到平臺上調試,這 樣會大大減少出錯率。 3、沒有硬件軟件化的概念,開始設計時沒有總體的規(guī)劃,不知道什么是可行 的,什么是封裝,怎樣使搭配組合最優(yōu)化。 4、遇到問題先自己摸索,查閱資料要有技巧,避免沒有目的和思路。明白 自己要解決什么問題。同時請教老師,和同學交流。良好的溝通很重要。針對本次的畢業(yè)設計,用我國著名的數學家的話概括一下我的感受: “科學上沒有平坦的大道,真理長河中有無數礁石險灘。只有不為畏攀登的采藥者,只有不怕 巨浪的弄潮兒,才能登上高峰采得仙草,深入水底覓得驪珠?!?/p> 十、參閱教材及文獻 1、蔣立平編著《數字電路》.南京理工大學翻?。?/p> 2、南京理工大學電子技術中心編著.《EDA 設計實驗指導書》 南京理工大學,2008 年; 3、譚會生,張昌凡.《EDA 技術及應用》.西安電子科技大學出版社,2001年; 4、《數字電路設計及 Verilog HDL 實現》 西安電子科技大學出版社出版; 5、《電子線路實驗設計與仿真講義》。 EDA技術應用報告 ——微波爐控制器的應用實例 院(系、部): 姓 名: 學 號: 年 級: 專 業(yè): 任課教師: 信息工程學院 安 蕊 080719 大學本科三年級 計算機科學與技術 李 洋 2010 年 11月 9 日·北京 目 錄 一、EDA技術的發(fā)展及應用..................................1 1.EDA簡介..............................................1 2.EDA發(fā)展史............................................1 3.EDA技術的發(fā)展趨勢....................................2 二、EDA技術的工程應用實例................................3 1.設計的基本要求與內容.................................3 2.系統(tǒng)的分析設計方案...................................3 3.系統(tǒng)仿真結果.........................................6 4.設計技巧分析.........................................7 5.系統(tǒng)擴展思路.........................................7 三、心得體會.............................................8 四、參考文獻.............................................9 一、EDA技術的發(fā)展及應用 1.EDA簡介 EDA在通信行業(yè)(電信)里的另一個解釋是企業(yè)數據架構,EDA給出了一個企業(yè)級的數據架構的總體視圖,并按照電信企業(yè)的特征,進行了框架和層級的劃分。EDA是電子設計自動化(Electronic Design Automation)的縮寫,在20世紀60年代中期從計算機輔助設計(CAD)、計算機輔助制造(CAM)、計算機輔助測試(CAT)和計算機輔助工程(CAE)的概念發(fā)展而來的。由于它是一門剛剛發(fā)展起來的新技術,涉及面廣,內容 豐富,理解各異,所以目前尚無一個確切的定義。但從EDA技術的幾個主要方面的內容來看,可以理解為:EDA技術是以大規(guī)??删幊踢壿嬈骷樵O計載體,以硬件描述語言為系統(tǒng)邏輯描述的主要表達方式,以 計算 機、大規(guī)??删幊踢壿嬈骷拈_發(fā)軟件及實驗開發(fā)系統(tǒng)為設計工具,通過有關的開發(fā)軟件,自動完成用軟件的方式設計電子系統(tǒng)到硬件系統(tǒng)的一門新技術??梢詫崿F邏輯編譯、邏輯化簡、邏輯分割、邏輯綜合及優(yōu)化,邏輯布局布線、邏輯仿真。完成對于特定目標芯片的適配編譯、邏輯映射、編程下載等工作,最終形成集成電子系統(tǒng)或專用集成芯片。 20世紀90年代,國際上電子和計算機技術較先進的國家,一直在積極探索新的電子電路設計方法,并在設計方法、工具等方面進行了徹底的變革,取得了巨大成功。在電子技術設計領域,可編程邏輯器件(如CPLD、FPGA)的應用,已得到廣泛的普及,這些器件為數字系統(tǒng)的設計帶來了極大的靈活性。這些器件可以通過軟件編程而對其硬件結構和工作方式進行重構,從而使得硬件的設計可以如同軟件設計那樣方便快捷。這一切極大地改變了傳統(tǒng)的數字系統(tǒng)設計方法、設計過程和設計觀念,促進了EDA技術的迅速發(fā)展。 EDA技術就是以計算機為工具,設計者在EDA軟件平臺上,用硬件描述語言HDL完成設計文件,然后由計算機自動地完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局、布線和仿真,直至對于特定目標芯片的適配編譯、邏輯映射和編程下載等工作。EDA技術的出現,極大地提高了電路設計的效率和可操作性,減輕了設計者的勞動強度。 利用EDA工具,電子設計師可以從概念、算法、協(xié)議等開始設計電子系統(tǒng),大量工作可以通過計算機完成,并可以將電子產品從電路設計、性能分析到設計出IC版圖或PCB版圖的整個過程的計算機上自動處理完成。 現在對EDA的概念或范疇用得很寬。包括在機械、電子、通信、航空航天、化工、礦產、生物、醫(yī)學、軍事等各個領域,都有EDA的應用。目前EDA技術已在各大公司、企事業(yè)單位和科研教學部門廣泛使用。例如在飛機制造過程中,從設計、性能測試及特性分析直到飛行模擬,都可能涉及到EDA技術。 2.EDA發(fā)展史 EDA技術是伴隨著計算機、集成電路、電子系統(tǒng)的設計發(fā)展起來的,至今已有30多年的歷程。大致可以分為三個發(fā)展階段。 20世紀70年代的CAD(計算機輔助設計)階段:這一階段的主要特征是利用計算機輔助進行電路原理圖編輯,PCB布同布線,使得設計師從傳統(tǒng)高度重復繁雜的繪圖勞動中解脫出來。20世紀80年代的CAE(計算機輔助工程設計)階段:這一階段的主要特征是以邏輯摸擬、定時分析、故障仿真、自動布局布線為核心,重點解決電路設計的功能檢測等問題,使設計而能在產品制作之前預知產品的功能與性能。 20世紀90年代是EDA(電子設計自動化)階段:這一階段的主要特征是以高級描述語言,系統(tǒng)級仿真和綜合技術為特點,采用“自頂向下”的設計理念,將設計前期的許多高層次設計由EDA工具來完成。 EDA是電子技術設計自動化,也就是能夠幫助人們設計電子電路或系統(tǒng)的軟件工具。該工具可以在電子產品的各個設計階段發(fā)揮作用,使設計更復雜的電路和系統(tǒng)成為可能。在原理圖設計階段,可以使用EDA中的仿真工具論證設計的正確性;在芯片設計階段,可以使用EDA中的芯片設計工具設計制作芯片的版圖:在電路板設計階段,可以使用EDA中電路板設計工具設計多層電路板。特別是支持硬件描述語言的EDA工具的出現,使復雜數字系統(tǒng)設計自動化成為可能,只要用硬件描述語言將數字系統(tǒng)的行為描述正確,就可以進行該數字系統(tǒng)的芯片設計與制造。有專家認為,21世紀將是四A技術的高速發(fā)展期,EDA技術將是對21世紀產生重大 影響 的十大技術之一。 3.EDA技術的發(fā)展趨勢 面對當今飛速發(fā)展的電子產品市場,設計師需要更加實用、快捷的EDA工具,使用統(tǒng)一的集成化設計環(huán)境,改變傳統(tǒng)設計思路,將精力集中到設計構思、方案比較和尋找優(yōu)化設計等方面,需要以最快的速度,開發(fā)出性能優(yōu)良、質量一流的電子產品,對EDA技術提出了更高的要求。未來的EDA技術將在仿真、時序分析、集成電路自動測試、高速印刷電路板設計及開發(fā)操作平臺的擴展等方面取得新的突破,向著功能強大、簡單易學、使用方便的方向發(fā)展。 (1)可編程邏輯器件發(fā)展趨勢 可編程邏輯器件已經成為當今世界上最富吸引力的半導體器件,在現代電子系統(tǒng)設計中扮演著越來越重要的角色。過去的幾年里,可編程器件市場的增長主要來自大容量的可編程邏輯器件CPLD和FPGA,其未來的發(fā)展趨勢如下: 1)向高密度、高速度、寬頻帶方向發(fā)展 2)向在系統(tǒng)可編程方向發(fā)展 3)向可預測延時方向發(fā)展 4)向混合可編程技術方向發(fā)展 5)向低電壓、低功耗方面發(fā)展 (2)開發(fā)工具的發(fā)展趨勢 面對當今飛速發(fā)展的電子產品市場,電子設計人員需要更加實用、快捷的開發(fā)工具,使用統(tǒng)一的集成化設計環(huán)境,改變優(yōu)先考慮具體物理實現方式的傳統(tǒng)設計思路,將精力集中到設計構思、方案比較和尋找優(yōu)化設計等方面,以最快的速度開發(fā)出性能優(yōu)良、質量一流的電子產品。開發(fā)工具的發(fā)展趨勢如下: 1)具有混合信號處理能力 2)高效的仿真工具 3)理想的邏輯綜合、優(yōu)化工具 (3)系統(tǒng)描述方式的發(fā)展趨勢 1)描述方式簡便化 2)描述方式高效化和統(tǒng)一化 二、EDA技術的工程應用實例 ——微波爐控制器的設計與分析 1.設計的基本要求與內容: 現需設計一個微波爐控制器WBLKZQ,其外部接口如圖1所示。通過該控制器再配以4個七段數碼二極管完成微波爐的定時及信息顯示。 圖1 微波爐控制器外部接口符號圖 其中圖1中的各信號的功能及要求如下: CLK是秒時鐘脈沖輸入,它接收每秒一個時鐘脈沖的節(jié)拍信號。RESET為復位信號,高電平有效,用于芯片的復位功能。TEST為測試信號,高電平有效,用于測試4個七段數碼二極管工作是否正常。 2.系統(tǒng)的分析設計方案: (1)微波爐控制器的總體設計方案 根據該微波爐控制器的功能設計要求,本系統(tǒng)可由以下4個模塊組成:① 狀態(tài)控制器KZQ;② 數據裝載器ZZQ;③ 烹調計時器JSQ;④ 顯示譯碼器YMQ47。其內部組成原理圖如圖2所示。 圖2 微波爐控制器WBLKZQ的內部組成原理圖 1)狀態(tài)控制器KZQ的功能是控制微波爐工作過程中的狀態(tài)轉換,并發(fā)出有關控制信息;輸入信號為CLK、TEST、START、SET_T、RESET和DONE,輸出信號為LD_DONE、LD_CLK、LD_8888和COOK信號。 2)數據裝載器ZZQ的功能是根據KZQ發(fā)出的控制信號選擇定時時間、測試數據或烹調完成信息的裝入。 3)計時器JSQ的功能是負責烹調過程中的時間遞減計數,并提供烹調完成時的狀態(tài)信號供KZQ產生烹調完成信號。 4)顯示譯碼器YMQ47的功能就是負責將各種顯示信息的BCD轉換成七段數碼管顯示的驅動信息編碼。需要譯碼的信息有:數字0~9,字母d、o、n、E。 (2)狀態(tài)控制器KZQ的設計 狀態(tài)控制器KZQ的功能是控制微波爐工作過程中的狀態(tài)轉換,并發(fā)出有關控制信息,因此我們可用一個狀態(tài)機來實現它。經過對微波爐工作過程中的狀態(tài)轉換條件及輸出信號進行分析,我們可得到其狀態(tài)轉換圖如圖3所示,其輸入、輸出端口如圖4所示。 圖3 KZQ的狀態(tài)轉換圖 圖4 KZQ的輸入、輸出端口圖 (3)數據裝載器ZZQ的設計 ZZQ的輸入、輸出端口如圖5所示,根據其應完成的邏輯功能,它本質上就是一個三選一數據選擇器。本設計采用一個進程來完成,但由于三個被選擇的數據只有一個來自輸入端口,因此另兩個被選擇的數據則通過在進程的說明部分定義兩個常數來產生。 圖5 ZZQ的輸入、輸出端口圖 (4)烹調計時器JSQ的設計 烹調計時器JSQ為減數計數器,其最大計時時間為59:59。因此我們可用兩個減計數十進制計數器DCNT10和兩個減計數六進制計數器DCNT6級聯構成。JSQ的內部組成原理如圖6所示。 圖6 JSQ的內部組成原理圖 (5)顯示譯碼器YMQ47的設計 本顯示譯碼器YMQ47不但要對數字0~9進行顯示譯碼,還要對字母d、o、n、E進行顯示譯碼,其譯碼對照表如表1所示。 表1 YMQ47的譯碼對照表 3.系統(tǒng)仿真結果 (1)系統(tǒng)的有關仿真 狀態(tài)控制器KZQ、數據裝載器ZZQ和烹調計時器JSQ的仿真分別如圖 7、圖8和圖9所示。 圖7 狀態(tài)控制器KZQ的仿真圖 圖8 數據裝載器ZZQ的仿真圖 圖9 烹調計時器JSQ的仿真圖 4.設計技巧分析 (1)在狀態(tài)控制器KZQ中,利用狀態(tài)機的設計方法簡化了設計。 (2)在數據裝載器ZZQ的設計中,利用三個裝載信號的組合LD_8888 & LD_DONE & LD_CLK賦給變量TEMP,巧妙地解決了裝載數據的選擇問題。 (3)在烹調計時器JSQ的設計中,利用兩個減法十進制計數器和兩個減法六進制計數器的串級組合,非常簡便地實現了59′59″數之間的計時和初始數據的裝載。 5.系統(tǒng)擴展思路 (1)本微波爐控制器要求系統(tǒng)時鐘CLK固定為1 Hz,而預置時間數據輸入總線DATA0位數太多(為16位),因此我們可對該系統(tǒng)進行改進,增加一個分頻電路FPQ和一個“虛擬式”按鍵預置數據輸入電路YZDL(如圖10所示),以使系統(tǒng)的通用性更好寫。 (2)設計外圍電路:系統(tǒng)用方波信號源,直流工作電源。 圖10 微波爐控制器WBLKZQ擴充后的內部組成原理圖 三、心得體會 這學期EDA課程歷經了10周,在這半學期的日子里,付出了很多,流了不少汗水,但真的學到了很多很多的東西,不僅是課本上所講過的知識,更有很多在書本上所沒有學到過的知識。通過一次次的實驗和這次論文,我在一步步加深對EDA的了解,讓我對它也有了更加濃厚的興趣。特別是在實驗操作過程中,每一個子模塊編寫調試成功時,心里都特別的開心。但是在編寫一些其他的程序時,也遇到了不少問題,出現很多錯誤,在老師的幫助以及自己的細心的檢查下,終于找出了錯誤和警告,排除困難后,程序編譯就通過了,心里也終于舒了一口氣。 通過這學期的EDA課程使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正的學為所用,從而提高自己的實際動手能力和獨立思考的能力。在實踐的過程中會遇到問題,也會發(fā)現了自己的不足之處——對以前所學過的知識理解得不夠深刻,掌握得不夠牢固。 對于本次的論文,我同樣是受益匪淺,查閱資料過程中進一步了解到了關于EDA技術的歷史,更了解了EDA技術幾十年來它的發(fā)展經歷和作用,以及今后的發(fā)展方向和趨勢,同時也再一次體會到了要將學到的知識與生活中的事物聯系起來。通過對智力搶答器基本工作原理的理解與實際操作,我還基本掌握了EDA相關軟件的使用方法。在整個過程中我雖然碰到了許多的問題,但是通過課上老師的詳細講解以及在網上搜集的資料,最后都得到了解決,可以說是取得了基本滿意的成果。 在論文的最后,感謝李老師一學期的辛勞付出,為我們帶來了生動的課堂知識,感謝周老師的耐心與幫助,使我們的實驗能夠圓滿完成,在此,謝謝老師們了?。?/p> 四、參考文獻 1、李 洋《EDA技術實用教程》(第2版)機械工業(yè)出版社2009.8 201-280 2、章彬宏《EDA應用技術》 北京 高等教育出版社 2007 76-93 3、包 明《EDA技術與可編程器件的應用》北京航天航空大學出版社 2007 58-72 4、潘松 王國棟《VHDL實用教程》(修訂版)電子科技大學出版社 2001.7 13-24 5、朱力恒《電子技術仿真實驗教程》北京 電子工業(yè)出版社 2003 23-29第二篇:EDA課程設計論文
第三篇:EDA數字鐘設計
第四篇:EDA設計報告
第五篇:EDA結課論文