導航:首頁 > 源碼編譯 > cpldjed反編譯

cpldjed反編譯

發布時間:2023-05-01 14:40:35

① xilinx ise 中 cpld怎麼燒寫

CPLD和FPGA的燒寫文件後綴鉛基不一樣,CPLD的後綴一般激激此是.JED。
如果你使用JTAG口進行燒寫,明迅步驟與FPGA大致一樣,只是最後是直接使用JED文件燒寫進CPLD,而不是FPGA那種將BIT文件轉換成MCS後燒寫。

② 基於CPLD數據採集控制系統設計

第1章 概 述
21世紀人類將全面進入信息化社會,對微電子信息技術和微電子VLSI基礎技術將不斷提出更高的發展要求,微電子技術仍將繼續是21世紀若干年代中最為重要的和最有活力的高科技領域之一。而集成電路(IC)技術在微電子領域佔有重要的地位。伴隨著IC技術的發展,電子設計自動化(Electronic Design Automation EDA)己經逐漸成為重要設計手段,其廣泛應用於模擬與數字電路系統等許多領域。
VHDL是廣泛使用的設計輸人硬體語言,可用於數字電路與系統的描述、模擬和自動設計.CPLD/FPGA(復雜可編程邏輯器件/現場可編程門陣列)為數字系統的設計帶靈活性,兼有串!並行工作方式和高集成度!高速!高可靠性等明顯的特點,CPLD/FPGA的時鍾延遲可達納秒級,結合其並行工作方式,在超高速領域和實時測控方面有非常廣泛的應用。
本次設計的目的是使用可編程邏輯器件設計一個專用的A/D轉換器的控制器,取代常用的微控制器,用於數據採集。本文講述對A/D進行數據采樣控制。設計要求用一片CPLD/FPGA,模數轉換控制器ADC和LED顯示器構成一個數據採集系統,用CPLD/FPGA實現數據採集中對A/D 轉換,數據運算,及有關數據的顯示控制。課題除了學習相應的硬體知識外,還要學習如何使用VHDL語言設計可編程邏輯器件。
未來的EDA技術向廣度和深度兩個方向發展.
(1)在廣度上,EDA技術會日益普及.在過去,由於EDA軟體價格昂貴,對硬體環境要求高,其運行環境是工作站和UNIX操作系統.最近幾年,EDA軟體平台化進展迅速,這些PC平台上的EDA軟體具有整套的邏輯設計、模擬和綜合工具.隨著PC機性能的提高,PC平台上的軟體功能將會更加完善.
(2)在深度上,EDA技術發展的下一步肢圓是ESDA伍electronic System Design Automation電子系統設計自動化)和CE (Concurrent Engineering並行設計工程).目前的各種EDA工具,如系統模擬,PCB布線、邏輯綜合、DSP設計工具是彼此獨立的.隨著技術的發展,要求所有的系統工具在統一的資料庫及管理框架下工作,由此提出了ESDA和CE概念。

第2章 EDA的發展歷程及其應用
2.1電子設計自動化(EDA)發展概述
2.1.1什麼是電子設計自動化(EDA )
在電子設計技術領域,可編程邏輯器件(如PLD, GAL)的應用,已有了很好的普及。這些器件為數字系統的設計帶來極大的靈活性。由於這類器件可以通過軟體編程而對其硬體的結構和工作方式進行重構,使得硬體的設計可以如同軟體設計那樣方便快捷。這一切極大地改變了傳統的數字系統設計方法、設計過程、乃至設計觀念。
電子設計自動化(EDA)是一種實現電子系統或電子產品自動化設計的技術,它與電子技術、微電子技術的發展密切相關,吸收了計算機科學領域的大多數最新研究成果,以高性能的計算機作為工作平台,是20世紀90年代初從CAD(計算機輔助設計)、CAM(計算機輔助製造)、CAT(計算機輔助測試)和CAE(計算機輔助工程)的概念發展而來的。EDA技術就是以計算機為工具,在EDA軟體平台上,根據硬體描述語言HDL完成的設計文件,自動地完成邏輯編譯、化簡、分割、綜合及優化、布局線、模擬,直至對於特定目標晶元的適配編譯、邏輯映射和編程下載等工作。設計者的工作僅限於利用軟體的方式來完成對系統硬體功能的描述,在EDA工具的幫助下和應用相應的FPGA/CPLD器件,就可以得到最後的設計結果。盡管目標系統是硬體,但整個設計和修改過程如同完成軟體設計一樣方便和高效。當然,這里的所謂EDA主要是指數字系統的自動化設計,因為這一領域的軟硬體方面的技術已比較成熟,應用的普及程度也已比較大。而模擬電子系統的EDA正在進入實用,其初期的EDA工具不一定需要硬體描述語言。此外,從應用的廣度和深度來說,由於電子信息領域的全面數字含禪化,基於EDA的數字系統的設計技術具有更大的應用市場和更緊迫的需求性。
2.1.2 EDA的發展歷史
EDA技術的發展始於70年代,歷老塌至今經歷了三個階段。電子線路的CAD(計算機輔助設計)是EDA發展的初級階段,是高級EDA系統的重要組成部分。它利用計算機的圖形編輯、分析和存儲等能力,協助工程師設計電子系統的電路圖、印製電路板和集成電路板圖;採用二維圖形編輯與分析,主要解決電子線路設計後期的大量重復性工作,可以減少設計人員的繁瑣重復勞動,但自動化程度低,需要人工干預整個設計過程。這類專用軟體大多以微機為工作平台,易於學用,設計中小規模電子系統可靠有效,現仍有很多這類專用軟體被廣泛應用於工程設計。80年代初期,EDA技術開始技術設計過程的分析,推出了以模擬(邏輯模擬、定時分析和故障模擬)和自動布局與布線為核心的EDA產品,這一階段的EDA已把三維圖形技術、窗口技術、計算機操作系統、網路數據交換、資料庫與進程管理等一系列計算機學科的最新成果引入電子設計,形成了CAE—計算機輔助工程。也就是所謂的EDA技術中級階段。其主要特徵是具備了自動布局布線和電路的計算機模擬、分析和驗證功能。其作用已不僅僅是輔助設計,而且可以代替人進行某種思維。CAE這種以原理圖為基礎的EDA系統,雖然直觀,且易於理解,但對復雜的電子設計很難達到要求,也不宜於設計的優化。
所以,90年代出現了以自動綜合器和硬體描述語言為基礎,全面支持電子設計自動化的ESDA(電子系統設計自動化),即EDA階段、也就是目前常說的EDA.過去傳統的電子系統電子產品的設計方法是採用自底而上(Bottom_ Up)的程式,設計者先對系統結構分塊,直接進行電路級的設計。這種設計方式使設計者不能預測下一階段的問題,而且每一階段是否存在問題,往往在系統整機調試時才確定,也很難通過局部電路的調整使整個系統達到既定的功能和指標,不能保證設計一舉成功。EDA技術高級階段採用一種新的設計概念:自頂而下(Top_ Down)的設計程式和並行工程(Concurrent engineering)的設計方法,設計者的精力主要集中在所要電子產品的准確定義上,EDA系統去完成電子產品的系統級至物理級的設計。此階段EDA技術的主要特徵是支持高級語言對系統進行描述,高層次綜合(High Level Synthesis)理論得到了巨大的發展,可進行系統級的模擬和綜合。圖2-1給出了上述三個階段的示意圖。

圖2-1 EDA發展階段示意圖

2.1.3 EDA的應用
隨著大規模集成電路技術和計算機技術的不斷發展,在涉及通信、國防、航天、醫學、工業自動化、計算機應用、儀器儀表等領域的電子系統設計工作中,EDA技術的含量正以驚人的速度上升;電子類的高新技術項目的開發也依賴於EDA技術的應用。即使是普通的電子產品的開發,EDA技術常常使一些原來的技術瓶頸得以輕松突破,從而使產品的開發周期大為縮短、性能價格比大幅提高。不言而喻,EDA技術將迅速成為電子設計領域中的極其重要的組成部分。
電子設計專家認為,單片機時代已經結束,未來將是EDA的時代,這是極具深刻洞察力之言。隨著微電子技術的飛速進步,電子學進入了一個嶄新的時代。其特徵是電子技術的應用以空前規模和速度滲透到各行各業。各行業對自己專用集成電路(ASIC)的設計要求日趨迫切,現場可編程器件的廣泛應用,為各行業的電子系統設計工程師自行開發本行業專用的ASIC提供了技術和物質條件。與單片機系統開發相比,利用EDA技術對FPGA/CPLD的開發,通常是一種藉助於軟體方式的純硬體開發,可以通過這種途徑進行專用ASIC開發,而最終的ASIC晶元,可以是FPGA/CPLD,也可以是專制的門陣列掩模晶元,FPGA/ CPLD起到了硬體模擬ASIC晶元的作用。
2.2基於EDA的FPGA/ CPLD開發
我國的電子設計技術發展到今天,將面臨一次更大意義的突破,即FPGA/CPLD (Field Programmable Gate Array,現場可編程門陣列/Complex Programmable Logic Device,復雜可編程邏輯器件)在EDA基礎上的廣泛應用。從某種意義上說,新的電子系統運轉的物理機制又將回到原來的純數字電路結構,但卻是一種更高層次的循環,它在更高層次上容納了過去數字技術的優秀部分,對(Micro Chip Unit) MCU系統是一種揚棄,在電子設計的技術操作和系統構成的整體上發生了質的飛躍。如果說MCU在邏輯的實現上是無限的話,那麼FPGA/CPLD不但包括了MCU這一特點,而且可以觸及矽片電路的物理極限,並兼有串、並行工作方式,高速、高可靠性以及寬口徑適用性等諸多方面的特點。不但如此,隨著EDA技術的發展和FPGA/CPLD在深亞微米領域的進軍,它們與MCU, MPU, DSP, A/D, D/A, RAM和ROM等獨立器件間的物理與功能界限已日趨模糊。特別是軟/硬IP晶元(知識產權晶元;intelligence Property Core,一種已注冊產權的電路設計)產業的迅猛發展,嵌入式通用及標准FPGA器件的呼之欲出,片上系統(SOC)已經近在咫尺。FPGA/CPLD以其不可替代的地位及伴隨而來的極具知識經濟特徵的IP晶元產業的崛起,正越來越受到業內人士的密切關注。
2.2.1 FPGA/CPLD簡介
FPGA和CPLD都是高密度現場可編程邏輯晶元,都能夠將大量的邏輯功能集成於一個單片集成電路中,其集成度已發展到現在的幾百萬門。復雜可編程邏輯器件CPLD是由PAL (Programmable Array Logic,可編程陣列邏輯)或GAL (Generic Array Logic,通用陣列邏輯)發展而來的。它採用全局金屬互連導線,因而具有較大的延時可預測性,易於控制時序邏輯;但功耗比較大。現場可編程門陣列(FPGA)是由可編程門陣列(MPGA)和可編程邏輯器件二者演變而來的,並將它們的特性結合在一起,因此FPGA既有門陣列的高邏輯密度和通用性,又有可編程邏輯器件的用戶可編程特性。FPGA通常由布線資源分隔的可編程邏輯單元(或宏單元)構成陣列,又由可編程Ir0單元圍繞陣列構成整個晶元。其內部資源是分段互聯的,因而延時不可預測,只有編程完畢後才能實際測量。
CPLD和FPGA建立內部可編程邏輯連接關系的編程技術有三種:基於反熔絲技術的器件只允許對器件編程一次,編程後不能修改。其優點是集成度、工作頻率和可靠性都很高,適用於電磁輻射干擾較強的惡劣環境。基於EEPROM存儲器技術的可編程邏輯晶元能夠重復編程100次以上,系統掉電後編程信息也不會丟失。編程方法分為在編程器上編程和用下載電纜編程。用下載電纜編程的器件,只要先將器件裝焊在印刷電路板上,通過PC, SUN工作站、ATE(自動測試儀)或嵌入式微處理器系統,就能產生編程所用的標准5V, 3.3V或2.5V邏輯電平信號,也稱為ISP (In System Programmable)方式編程,其調試和維修也很方便。基於SRAM技術的器件編程數據存儲於器件的RAM區中,使之具有用戶設計的功能。在系統不加電時,編程數據存儲在EPROM、硬碟、或軟盤中。系統加電時將這些編程數據即時寫入可編程器件,從而實現板級或系統級的動態配置。
2.2.2基於EDA工具的FPGA/CPLD開發流程
FPGA/CPLD的開發流程:設計開始首先利用EDA工具的文本或圖形編輯器將設計者的設計意圖用文本方式(如VHDL, Verilog-HDL程序)或圖形方式(原理圖、狀態圖等)表達出來。完成設計描述後即可通過編譯器進行排錯編譯,變成特定的文本格式,為下一步的綜合準備。在此,對於多數EDA軟體來說,最初的設計究竟採用哪一種輸入形式是可選的,也可混合使用。一般原理圖輸入方式比較容易掌握,直觀方便,所畫的電路原理圖(請注意,這種原理圖與利用PROTEL畫的原理圖有本質的區別)與傳統的器件連接方式完全一樣,很容易為人接受,而且編輯器中有許多現成的單元器件可資利用,自己也可以根據需要設計元件(元件的功能可用HDL表達,也可仍用原理圖表達)。當然最一般化、最普適性的輸入方法是HDL程序的文本方式。這種方式最為通用。如果編譯後形成的文件是標准VHDL文件,在綜合前即可以對所描述的內容進行模擬,稱為行為模擬。即將設計源程序直接送到VHDL模擬器中模擬。因為此時的模擬只是根據VHDL的語義進行的,與具體電路沒有關系。在模擬中,可以充分發揮VHDL中的適用於模擬控制的語句,對於大型電路系統的設計,這一模擬過程是十分必要的,但一般情況下,可以略去這一步驟.

圖2-2 FPGA / CPLD開發流程
設計的第三步是綜合,將軟體設計與硬體的可實現性掛鉤,這是將軟體轉化為硬體電路的關鍵步驟。綜合器對源文件的綜合是針對某一FPGA/CPLD供應商的產品系列的,因此,綜合後的結果具有硬體可實現性。在綜合後,HDL綜合器一般可生成EDIF, XNF或VHDL等格式的網表文件,從門級來描述了最基本的門電路結構。有的EDA軟體,具有為設計者將網表文件畫成不同層次的電路圖的功能。綜合後,可利用產生的網表文件進行功能模擬,以便了解設計描述與設計意圖的一致性。功能模擬僅對設計描述的邏輯功能進行測試模擬,以了解其實現的功能是否滿足原設計的要求,模擬過程不涉及具體器件的硬體特性,如延遲特性。一般的設計,這一層次的模擬也可略去。綜合通過後必須利用FPGA/CPLD布局/布線適配器將綜合後的網表式文件針對某一具體的目標器件進行邏輯映射操作,其中包括底層器件配置、邏輯分割、邏輯優化、布局布線。適配完成後,EDA軟體將產生針對此項設計的多項結果:1適配報告:內容包括晶元內資源分配與利用、引腳鎖定、設計的布爾方程描述情況等;2時序模擬用網表文件;3下載文件,如JED或POF文件;4適配錯誤報告等。時序模擬是接近真實器件運行的模擬,模擬過程中己將器件硬體特性考慮進去了,因此模擬精度要高得多。時序模擬的網表式文件中包含了較為精確的延遲信息。如果以上的所有過程,包括編譯、綜合、布線/適配和行為模擬、功能模擬、時序模擬都沒有發現問題,即滿足原設計的要求,就可以將適配器產生的配置/下載文件通過FPGA/CPLD編程器或下載電纜載入目標晶元FPGA或CPLD中,然後進入如圖1-2所示的最後一個步驟:硬體模擬或測試,以便在更真實的環境中檢驗設計的運行情況。這里所謂的硬體模擬,是針對ASIC設計而言的。在ASIC設計中,比較常用的方法是利用FPGA對系統的設計進行功能檢測,通過後再將其VHDL設計以ASIC形式實現;而硬體測試則是針對FPGA或CPLD直接用於電路系統的檢測而言的。
2.2.3用FPGA/CPLD進行開發的優缺點
我們認為,基於EDA技術的FPGA/CPLD器件的開發應用可以從根本上解決MCU所遇到的問題。與MCU相比,FPGA/CPLD的優勢是多方面的和根本性的:
1.編程方式簡便、先進。FPGA/CPLD產品越來越多地採用了先進的IEEE 1149.1邊界掃描測試(BST)技術(由聯合測試行動小組,JTAG開發)和ISP(在系統配置編程方式)。在+5V工作電平下可隨時對正在工作的系統上的FPGA/CPLD進行全部或部分地在系統編程,並可進行所謂菊花鏈式多晶元串列編程,對於SRAM結構的FPGA,其下載編程次數幾乎沒有限制(如Altera公司的FLEXI 10K系列)。這種編程方式可輕易地實現紅外編程、超聲編程或無線編程,或通過電話線遠程在線編程。這些功能在工控、智能儀器儀表、通訊和軍事上有特殊用途。
2.高速。FPGA/CPLD的時鍾延遲可達納秒級,結合其並行工作方式,在超高速應用領域和實時測控方面有非常廣闊的應用前景。
3.高可靠性。在高可靠應用領域,MCU的缺憾為FPGA/CPLD的應用留下了很大的用武之地。除了不存在MCU所特有的復位不可靠與PC可能跑飛等固有缺陷外,FPGA/CPLD的高可靠性還表現在幾乎可將整個系統下載於同一晶元中,從而大大縮小了體積,易於管理和屏蔽。
4.開發工具和設計語言標准化,開發周期短。由於FPGA/CPLD的集成規模非常大,集成度可達數百萬門。因此,FPGA/ CPLD的設計開發必須利用功能強大的EDA工具,通過符合國際標準的硬體描述語言(如VHDL或Verilog-HDL)來進行電子系統設計和產品開發。由於開發工具的通用性、設計語言的標准化以及設計過程幾乎與所用的FPGA/ CPLD器件的硬體結構沒有關系.
所以設計成功的各類邏輯功能塊軟體有很好的兼容性和可移植性,它幾乎可用於任何型號的FPGA/ CPLD中,由此還可以知識產權的方式得到確認,並被注冊成為所謂的IP晶元,從而使得片上系統的產品設計效率大幅度提高。由於相應的EDA軟體功能完善而強大,模擬方式便捷而實時,開發過程形象而直觀,兼之硬體因素涉及甚少,因此可以在很短時間內完成十分復雜的系統設計,這正是產品快速進入市場的最寶貴的特徵。美國TI公司認為,一個ASIC 80%的功能可用IP晶元等現成邏輯合成。EDA專家預言,未來的大系統的FPGA/CPLD設計僅僅是各類再應用邏輯與IP晶元的拼裝,其設計周期最少僅數分鍾。
5.功能強大,應用廣闊。目前,FPGA/ CPLD可供選擇范圍很大,可根據不同的應用選用不同容量的晶元。利用它們可實現幾乎任何形式的數字電路或數字系統的設計。隨著這類器件的廣泛應用和成本的大幅度下降,FPGA/CPLD在系統中的直接應用率正直逼ASIC的開發。同時,FPGA/CPLD設計方法也有其局限性。這主要體現在以下幾點:
(1).FPGA/CPLD設計軟體一般需要對電路進行邏輯綜合優化((Logic段Synthesis & Optimization),以得到易於實現的結果,因此,最終設計和原始設計之間在邏輯實現和時延方面具有一定的差異。從而使傳統設計方法中經常採用的一些電路形式(特別是一些非同步時序電路)在FPGA/CPLD設計方法中並不適用。這就要求設計人員更加了解FPGA/CPLD設計軟體的特點,才能得到優化的設計;
(2).FPGA一般採用查找表(LUT)結構(Xilinx), AND-OR結構(Altera)或多路選擇器結構(Actel),這些結構的優點是可編程性,缺點是時延過大,造成原始設計中同步信號之間發生時序偏移。同時,如果電路較大,需要經過劃分才能實現,由於引出端的延遲時間,更加大了延遲時間和時序偏移。時延問題是ASIC設計當中常見的問題。要精確地控制電路的時延是非常困難的,特別是在像FPGA/CPLD這樣的可編程邏輯當中。
(3). FPGA/CPLD的容量和I/O數目都是有限的,因此,一個較大的電路,需經邏輯劃分((Logic Partition)才能用多個FPGA/CPLD晶元實現,劃分演算法的優劣直接影響設計的性能;
(4).由於目標系統的PCB板的修改代價很高,用戶一般希望能夠在固定的引 分配的前提下對電路進行修改。但在晶元利用率提高,或者晶元I/O引出端很多的情況下,微小的修改往往會降低晶元的流通率;
(5).早期的FPGA晶元不能實現存儲器、模擬電路等一些特殊形式的電路。最新的一些FPGA產品集成了通用的RAM結構。但這種結構要麼利用率不高,要麼不完全符合設計者的需要。這種矛盾來自於FPGA本身的結構局限性,短期內很難得到很好的解決。
6.盡管FPGA實現了ASIC設計的硬體模擬,但是由於FPGA和門陣列、標准單元等傳統ASIC形式的延時特性不盡相同,在將FPGA設計轉向其他ASIC設計時,仍然存在由於延時不匹配造成設計失敗的可能性。針對這個問題,國際上出現了用FPGA陣列對ASIC進行硬體模擬的系統(如Quicktum公司的硬體模擬系統)。這種專用的硬體模擬系統利用軟硬體結合的方法,用FPGA陣列實現了ASIC快速原型,接入系統進行測試。該系統可以接受指定的測試點,在FPGA陣列中可以直接觀測(就像軟體模擬中一樣),所以大大提高了模擬的准確性和效率。
2.3硬體描述語言(HDL)
硬體描述語言(HDL)是相對於一般的計算機軟體語言如C, Pascal而言的。HDL是用於設計硬體電子系統的計算機語言,它描述電子系統的邏輯功能、電路結構和連接方式。設計者可以利用HDL程序來描述所希望的電路系統,規定其結構特徵和電路的行為方式;然後利用綜合器和適配器將此程序變成能控制FPGA和CPLD內部結構、並實現相應邏輯功能的門級或更底層的結構網表文件和下載文件。硬體描述語言具有以下幾個優點:a.設計技術齊全,方法靈活,支持廣泛。b.加快了硬體電路的設計周期,降低了硬體電路的設計難度。c.採用系統早期模擬,在系統設計早期就可發現並排除存在的問題。d.語言設計可與工藝技術無關。e.語言標准,規范,易與共享和復用。就FPGA/CPLD開發來說,VHDL語言是最常用和流行的硬體描述語言之一。本次設計選用的就是VHDL語言,下面將主要對VHDL語言進行介紹。
2.3.1 VHDL語言簡介
VHDL是超高速集成電路硬體描述語言的英文字頭縮寫簡稱,其英文全名 是Very-High -Speed Integrated Circuit Hardware Description Language。它是在70- 80年代中由美國國防部資助的VHSIC(超高速集成電路)項目開發的產品,誕生於1982年。1987年底,VHDL被IEEE(The Institute of Electrical and產Electronics Engineers)確認為標准硬體描述語言。自IEEE公布了VHDL的標准版本((IEEE std 1076-1987標准)之後,各EDA公司相繼推出了自己的VHDL設計環境。此後,VHDL在電子設計領域受到了廣泛的接受,並逐步取代了原有的非標准HDL。1993年,IEEE對VHDL進行了修訂,從更高的抽象層次和系統描述能力上擴展VHDL的內容,公布了新版本的VHDL,即ANSI/IEEE std1076,1993版本。1996年IEEE 1076.3成為VHDL綜合標准。
VHDL主要用於描述數字系統的結構、行為、功能和介面,非常適用於可編程邏輯晶元的應用設計。與其它的HDL相比,VHDL具有更強的行為描述能力,從而決定了它成為系統設計領域最佳的硬體描述語言。強大的行為描述能力是避開具體的器件結構,從邏輯行為上描述和設計大規模電子系統的重要保證。就目前流行的EDA工具和VHDL綜合器而言,將基於抽象的行為描述風格的VHDL程序綜合成為具體的FPGA和CPLD等目標器件的網表文件己不成問題。
VHDL語言在硬體設計領域的作用將與C和C++在軟體設計領域的作用一樣,在大規模數字系統的設計中,它將逐步取代如邏輯狀態表和邏輯電路圖等級別較低的繁瑣的硬體描述方法,而成為主要的硬體描述工具,它將成為數字系統設計領域中所有技術人員必須掌握的一種語言。VHDL和可編程邏輯器件的結合作為一種強有力的設計方式,將為設計者的產品上市帶來創紀錄的速度
2.3.2 VHDL語言設計步驟
利用VHDL語言進行設計可分為以下幾個步驟:
1.設計要求的定義。在從事設計進行編寫VHDL代碼之前,必須先對你的設計目的和要求有一個明確的認識。例如,你要設計的功能是什麼?對所需的信號建立時間、時鍾/輸出時間、最大系統工作頻率、關鍵的路徑等這些要求,要有一個明確的定義,這將有助於你的設計,然後再選擇適當的設計方式和相應的器件結構,進行設計的綜合。
2.用VHDL語言進行設計描述。
(1)應決定設計方式,設計方式一般說來有三種:自頂向下設計,自底向上設計,平坦式設計。
前兩種方式包括設計階層的生成,而後一種方式將描述的電路當作單模塊電路來進行的。自頂向下的處理方式要求將你的設計劃分成不同的功能元件,每個元件具有專門定義的輸入和輸出,並執行專門的邏輯功能。首先生成一個由各功能元件相互連接形成的頂層模塊來做成一個網表,然後再設計其中的各個元件。而自底向上的處理方法正好相反。平坦式設計則是指所有功能元件均在同一層和同一圖中詳細進行的。
(2)編寫設計代碼。編寫VHDL語言的代碼與編寫其它計算機程序語言的代碼有很大的不同,你必須清醒地認識到你正在設計硬體,編寫的VHDL代碼必須能夠綜合到採用可編程邏輯器件來實現的數字邏輯之中。懂得EDA工具中模擬軟體和綜合軟體的大致工作過程,將有助於編寫出優秀的代碼。
3.用VHDL模擬器對VHDL原代碼進行功能模擬。對於大型設計,採用VHDL模擬軟體對其進行模擬可以節省時間,可以在設計的早期階段檢測到設計中的錯誤,從而進行修正,以便盡可能地減少對設計日程計劃的影響。因為對於大型設計,其綜合優化、配置往往要花費好幾個小時,在綜合之前對原代碼模擬,就可以大大減少設計重復和修正錯誤的次數和時間。但對於小型設計,則往往不需要先對VHDL原代碼進行模擬,即使做了,意義也不大。因為對於小型設計,其綜合優化、配置花費的時間不多,而且在綜合優化之後,你往往會發現為了實現性能目標,將需要修改你的設計。在這種情況下,用戶事先在原代碼模擬時所花費的時間是毫無意義的,因為一旦改變設計,還必須重新再做模擬。
4.利用VHDL綜合優化軟體對VHDL原代碼進行綜合優化處理。選擇目標器件、輸入約束條件後,VHDL綜合優化軟體工具將對VHDL原代碼進行處理,產生一個優化了的網路表,並可以進行粗略的時序模擬。綜合優化軟體工具大致的處理過程如下:首先檢測語法和語意錯誤;然後進行綜合處理,對CPLD器件而言,將得到一組工藝專用邏輯方程,對FPGA器件而言,將得到一個工藝專用網表;最後進行優化處理,對CPLD的優化通常包括將邏輯化簡為乘積項的最小和式,降低任何給定的表達式所需的邏輯塊輸入數,這些方程進一步通過器件專用優化來實現資源配置。對FPGA的優化通常也需要用乘積項的和式來表達邏輯,方程系統可基於器件專用資源和驅動優化目標指引來實現因式分解,分解的因子可用來對實現的有效性進行評估,其准則可用來決定是對方程序系統進行不同的因式分解還是保持現有的因子。准則通常是指分享共同因子的能力,即可以被暫存,以便於和任何新生成的因子相比較。
5.配置。將綜合優化處理後得到的優化了的網路表,安放到前面選定的CPLD或FPGA目標器件之中,這一過程稱為配置。在優化

③ 用於項目開發的可編程晶元。

第1章 概 述
21世紀人類將全面進入信息化社會,對微電子信息技術和微電子VLSI基礎技術將不斷提出更高的發展要求,微電子技術仍將繼續是21世紀若干年代中最為重要的和最有活力的高科技領域之一。而集成電路(IC)技術在微電子領域佔有重要的地位。伴隨著IC技術的發展,電子設計自動化(Electronic Design Automation EDA)己經逐漸成為重要設計手段,其廣泛應用於模擬與數字電路系統等許多領域。
VHDL是廣泛使用的設計輸人硬體語言,可用於數字電路與系統的描述、模擬和自動設計.CPLD/FPGA(復雜可編程邏輯器件/現場可編程門陣列)為數字系統的設計帶靈活性,兼有串!並行工作方式和高集成度!高速!高可靠性等明顯的特點,CPLD/FPGA的時鍾延遲可達納秒級,結合其並行工作方式,在超高速領域和實時測控方面有非常廣泛的應用。
本次設計的目的是使用可編程邏輯器件設計一個專用的A/D轉換器的控制器,取代常用的微控制器,用於數據採集。本文講述對A/D進行數據采樣控制。設計要求用一片CPLD/FPGA,模數轉換控制器ADC和LED顯示器構成一個數據採集系統,用CPLD/FPGA實現數據採集中對A/D 轉換,數據運算,及有關數據的顯示控制。課題除了學習相應的硬體知識外,還要學習如何使用VHDL語言設計可編程邏輯器件。
未來的EDA技術向廣度和深度兩個方向發展.
(1)在廣度上,EDA技術會日益普及.在過去,由於EDA軟體價格昂貴,對硬體環境要求高,其運行環境是工作站和UNIX操作系統.最近幾年,EDA軟體平台化進展迅速,這些PC平台上的EDA軟體具有整套的邏輯設計、模擬和綜合工具.隨著PC機性能的提高,PC平台上的軟體功能將會更加完善.
(2)在深度上,EDA技術發展的下一步是ESDA伍electronic System Design Automation電子系統設計自動化)和CE (Concurrent Engineering並行設計工程).目前的各種EDA工具,如系統模擬,PCB布線、邏輯綜合、DSP設計工具是彼此獨立的.隨著技術的發展,要求所有的系統工具在統一的資料庫及管理框架下工作,由此提出了ESDA和CE概念。

第2章 EDA的發展歷程及其應用
2.1電子設計自動化(EDA)發展概述
2.1.1什麼是電子設計自動化(EDA )
在電子設計技術領域,可編程邏輯器件(如PLD, GAL)的應用,已有了很好的普及。這些器件為數字系統的設計帶來極大的靈活性。由於這類器件可以通過軟體編程而對其硬體的結構和工作方式進行重構,使得硬體的設計可以如同軟體設計那樣方便快捷。這一切極大地改變了傳統的數字系統設計方法、設計過程、乃至設計觀念。
電子設計自動化(EDA)是一種實現電子系統或電子產品自動化設計的技術,它與電子技術、微電子技術的發展密切相關,吸收了計算機科學領域的大多數最新研究成果,以高性能的計算機作為工作平台,是20世紀90年代初從CAD(計算機輔助設計)、CAM(計算機輔助製造)、CAT(計算機輔助測試)和CAE(計算機輔助工程)的概念發展而來的。EDA技術就是以計算機為工具,在EDA軟體平台上,根據硬體描述語言HDL完成的設計文件,自動地完成邏輯編譯、化簡、分割、綜合及優化、布局線、模擬,直至對於特定目標晶元的適配編譯、邏輯映射和編程下載等工作。設計者的工作僅限於利用軟體的方式來完成對系統硬體功能的描述,在EDA工具的幫助下和應用相應的FPGA/CPLD器件,就可以得到最後的設計結果。盡管目標系統是硬體,但整個設計和修改過程如同完成軟體設計一樣方便和高效。當然,這里的所謂EDA主要是指數字系統的自動化設計,因為這一領域的軟硬體方面的技術已比較成熟,應用的普及程度也已比較大。而模擬電子系統的EDA正在進入實用,其初期的EDA工具不一定需要硬體描述語言。此外,從應用的廣度和深度來說,由於電子信息領域的全面數字化,基於EDA的數字系統的設計技術具有更大的應用市場和更緊迫的需求性。
2.1.2 EDA的發展歷史
EDA技術的發展始於70年代,至今經歷了三個階段。電子線路的CAD(計算機輔助設計)是EDA發展的初級階段,是高級EDA系統的重要組成部分。它利用計算機的圖形編輯、分析和存儲等能力,協助工程師設計電子系統的電路圖、印製電路板和集成電路板圖;採用二維圖形編輯與分析,主要解決電子線路設計後期的大量重復性工作,可以減少設計人員的繁瑣重復勞動,但自動化程度低,需要人工干預整個設計過程。這類專用軟體大多以微機為工作平台,易於學用,設計中小規模電子系統可靠有效,現仍有很多這類專用軟體被廣泛應用於工程設計。80年代初期,EDA技術開始技術設計過程的分析,推出了以模擬(邏輯模擬、定時分析和故障模擬)和自動布局與布線為核心的EDA產品,這一階段的EDA已把三維圖形技術、窗口技術、計算機操作系統、網路數據交換、資料庫與進程管理等一系列計算機學科的最新成果引入電子設計,形成了CAE—計算機輔助工程。也就是所謂的EDA技術中級階段。其主要特徵是具備了自動布局布線和電路的計算機模擬、分析和驗證功能。其作用已不僅僅是輔助設計,而且可以代替人進行某種思維。CAE這種以原理圖為基礎的EDA系統,雖然直觀,且易於理解,但對復雜的電子設計很難達到要求,也不宜於設計的優化。
所以,90年代出現了以自動綜合器和硬體描述語言為基礎,全面支持電子設計自動化的ESDA(電子系統設計自動化),即EDA階段、也就是目前常說的EDA.過去傳統的電子系統電子產品的設計方法是採用自底而上(Bottom_ Up)的程式,設計者先對系統結構分塊,直接進行電路級的設計。這種設計方式使設計者不能預測下一階段的問題,而且每一階段是否存在問題,往往在系統整機調試時才確定,也很難通過局部電路的調整使整個系統達到既定的功能和指標,不能保證設計一舉成功。EDA技術高級階段採用一種新的設計概念:自頂而下(Top_ Down)的設計程式和並行工程(Concurrent engineering)的設計方法,設計者的精力主要集中在所要電子產品的准確定義上,EDA系統去完成電子產品的系統級至物理級的設計。此階段EDA技術的主要特徵是支持高級語言對系統進行描述,高層次綜合(High Level Synthesis)理論得到了巨大的發展,可進行系統級的模擬和綜合。圖2-1給出了上述三個階段的示意圖。

圖2-1 EDA發展階段示意圖

2.1.3 EDA的應用
隨著大規模集成電路技術和計算機技術的不斷發展,在涉及通信、國防、航天、醫學、工業自動化、計算機應用、儀器儀表等領域的電子系統設計工作中,EDA技術的含量正以驚人的速度上升;電子類的高新技術項目的開發也依賴於EDA技術的應用。即使是普通的電子產品的開發,EDA技術常常使一些原來的技術瓶頸得以輕松突破,從而使產品的開發周期大為縮短、性能價格比大幅提高。不言而喻,EDA技術將迅速成為電子設計領域中的極其重要的組成部分。
電子設計專家認為,單片機時代已經結束,未來將是EDA的時代,這是極具深刻洞察力之言。隨著微電子技術的飛速進步,電子學進入了一個嶄新的時代。其特徵是電子技術的應用以空前規模和速度滲透到各行各業。各行業對自己專用集成電路(ASIC)的設計要求日趨迫切,現場可編程器件的廣泛應用,為各行業的電子系統設計工程師自行開發本行業專用的ASIC提供了技術和物質條件。與單片機系統開發相比,利用EDA技術對FPGA/CPLD的開發,通常是一種藉助於軟體方式的純硬體開發,可以通過這種途徑進行專用ASIC開發,而最終的ASIC晶元,可以是FPGA/CPLD,也可以是專制的門陣列掩模晶元,FPGA/ CPLD起到了硬體模擬ASIC晶元的作用。
2.2基於EDA的FPGA/ CPLD開發
我國的電子設計技術發展到今天,將面臨一次更大意義的突破,即FPGA/CPLD (Field Programmable Gate Array,現場可編程門陣列/Complex Programmable Logic Device,復雜可編程邏輯器件)在EDA基礎上的廣泛應用。從某種意義上說,新的電子系統運轉的物理機制又將回到原來的純數字電路結構,但卻是一種更高層次的循環,它在更高層次上容納了過去數字技術的優秀部分,對(Micro Chip Unit) MCU系統是一種揚棄,在電子設計的技術操作和系統構成的整體上發生了質的飛躍。如果說MCU在邏輯的實現上是無限的話,那麼FPGA/CPLD不但包括了MCU這一特點,而且可以觸及矽片電路的物理極限,並兼有串、並行工作方式,高速、高可靠性以及寬口徑適用性等諸多方面的特點。不但如此,隨著EDA技術的發展和FPGA/CPLD在深亞微米領域的進軍,它們與MCU, MPU, DSP, A/D, D/A, RAM和ROM等獨立器件間的物理與功能界限已日趨模糊。特別是軟/硬IP晶元(知識產權晶元;intelligence Property Core,一種已注冊產權的電路設計)產業的迅猛發展,嵌入式通用及標准FPGA器件的呼之欲出,片上系統(SOC)已經近在咫尺。FPGA/CPLD以其不可替代的地位及伴隨而來的極具知識經濟特徵的IP晶元產業的崛起,正越來越受到業內人士的密切關注。
2.2.1 FPGA/CPLD簡介
FPGA和CPLD都是高密度現場可編程邏輯晶元,都能夠將大量的邏輯功能集成於一個單片集成電路中,其集成度已發展到現在的幾百萬門。復雜可編程邏輯器件CPLD是由PAL (Programmable Array Logic,可編程陣列邏輯)或GAL (Generic Array Logic,通用陣列邏輯)發展而來的。它採用全局金屬互連導線,因而具有較大的延時可預測性,易於控制時序邏輯;但功耗比較大。現場可編程門陣列(FPGA)是由可編程門陣列(MPGA)和可編程邏輯器件二者演變而來的,並將它們的特性結合在一起,因此FPGA既有門陣列的高邏輯密度和通用性,又有可編程邏輯器件的用戶可編程特性。FPGA通常由布線資源分隔的可編程邏輯單元(或宏單元)構成陣列,又由可編程Ir0單元圍繞陣列構成整個晶元。其內部資源是分段互聯的,因而延時不可預測,只有編程完畢後才能實際測量。
CPLD和FPGA建立內部可編程邏輯連接關系的編程技術有三種:基於反熔絲技術的器件只允許對器件編程一次,編程後不能修改。其優點是集成度、工作頻率和可靠性都很高,適用於電磁輻射干擾較強的惡劣環境。基於EEPROM存儲器技術的可編程邏輯晶元能夠重復編程100次以上,系統掉電後編程信息也不會丟失。編程方法分為在編程器上編程和用下載電纜編程。用下載電纜編程的器件,只要先將器件裝焊在印刷電路板上,通過PC, SUN工作站、ATE(自動測試儀)或嵌入式微處理器系統,就能產生編程所用的標准5V, 3.3V或2.5V邏輯電平信號,也稱為ISP (In System Programmable)方式編程,其調試和維修也很方便。基於SRAM技術的器件編程數據存儲於器件的RAM區中,使之具有用戶設計的功能。在系統不加電時,編程數據存儲在EPROM、硬碟、或軟盤中。系統加電時將這些編程數據即時寫入可編程器件,從而實現板級或系統級的動態配置。
2.2.2基於EDA工具的FPGA/CPLD開發流程
FPGA/CPLD的開發流程:設計開始首先利用EDA工具的文本或圖形編輯器將設計者的設計意圖用文本方式(如VHDL, Verilog-HDL程序)或圖形方式(原理圖、狀態圖等)表達出來。完成設計描述後即可通過編譯器進行排錯編譯,變成特定的文本格式,為下一步的綜合準備。在此,對於多數EDA軟體來說,最初的設計究竟採用哪一種輸入形式是可選的,也可混合使用。一般原理圖輸入方式比較容易掌握,直觀方便,所畫的電路原理圖(請注意,這種原理圖與利用PROTEL畫的原理圖有本質的區別)與傳統的器件連接方式完全一樣,很容易為人接受,而且編輯器中有許多現成的單元器件可資利用,自己也可以根據需要設計元件(元件的功能可用HDL表達,也可仍用原理圖表達)。當然最一般化、最普適性的輸入方法是HDL程序的文本方式。這種方式最為通用。如果編譯後形成的文件是標准VHDL文件,在綜合前即可以對所描述的內容進行模擬,稱為行為模擬。即將設計源程序直接送到VHDL模擬器中模擬。因為此時的模擬只是根據VHDL的語義進行的,與具體電路沒有關系。在模擬中,可以充分發揮VHDL中的適用於模擬控制的語句,對於大型電路系統的設計,這一模擬過程是十分必要的,但一般情況下,可以略去這一步驟.

圖2-2 FPGA / CPLD開發流程
設計的第三步是綜合,將軟體設計與硬體的可實現性掛鉤,這是將軟體轉化為硬體電路的關鍵步驟。綜合器對源文件的綜合是針對某一FPGA/CPLD供應商的產品系列的,因此,綜合後的結果具有硬體可實現性。在綜合後,HDL綜合器一般可生成EDIF, XNF或VHDL等格式的網表文件,從門級來描述了最基本的門電路結構。有的EDA軟體,具有為設計者將網表文件畫成不同層次的電路圖的功能。綜合後,可利用產生的網表文件進行功能模擬,以便了解設計描述與設計意圖的一致性。功能模擬僅對設計描述的邏輯功能進行測試模擬,以了解其實現的功能是否滿足原設計的要求,模擬過程不涉及具體器件的硬體特性,如延遲特性。一般的設計,這一層次的模擬也可略去。綜合通過後必須利用FPGA/CPLD布局/布線適配器將綜合後的網表式文件針對某一具體的目標器件進行邏輯映射操作,其中包括底層器件配置、邏輯分割、邏輯優化、布局布線。適配完成後,EDA軟體將產生針對此項設計的多項結果:1適配報告:內容包括晶元內資源分配與利用、引腳鎖定、設計的布爾方程描述情況等;2時序模擬用網表文件;3下載文件,如JED或POF文件;4適配錯誤報告等。時序模擬是接近真實器件運行的模擬,模擬過程中己將器件硬體特性考慮進去了,因此模擬精度要高得多。時序模擬的網表式文件中包含了較為精確的延遲信息。如果以上的所有過程,包括編譯、綜合、布線/適配和行為模擬、功能模擬、時序模擬都沒有發現問題,即滿足原設計的要求,就可以將適配器產生的配置/下載文件通過FPGA/CPLD編程器或下載電纜載入目標晶元FPGA或CPLD中,然後進入如圖1-2所示的最後一個步驟:硬體模擬或測試,以便在更真實的環境中檢驗設計的運行情況。這里所謂的硬體模擬,是針對ASIC設計而言的。在ASIC設計中,比較常用的方法是利用FPGA對系統的設計進行功能檢測,通過後再將其VHDL設計以ASIC形式實現;而硬體測試則是針對FPGA或CPLD直接用於電路系統的檢測而言的。
2.2.3用FPGA/CPLD進行開發的優缺點
我們認為,基於EDA技術的FPGA/CPLD器件的開發應用可以從根本上解決MCU所遇到的問題。與MCU相比,FPGA/CPLD的優勢是多方面的和根本性的:
1.編程方式簡便、先進。FPGA/CPLD產品越來越多地採用了先進的IEEE 1149.1邊界掃描測試(BST)技術(由聯合測試行動小組,JTAG開發)和ISP(在系統配置編程方式)。在+5V工作電平下可隨時對正在工作的系統上的FPGA/CPLD進行全部或部分地在系統編程,並可進行所謂菊花鏈式多晶元串列編程,對於SRAM結構的FPGA,其下載編程次數幾乎沒有限制(如Altera公司的FLEXI 10K系列)。這種編程方式可輕易地實現紅外編程、超聲編程或無線編程,或通過電話線遠程在線編程。這些功能在工控、智能儀器儀表、通訊和軍事上有特殊用途。
2.高速。FPGA/CPLD的時鍾延遲可達納秒級,結合其並行工作方式,在超高速應用領域和實時測控方面有非常廣闊的應用前景。
3.高可靠性。在高可靠應用領域,MCU的缺憾為FPGA/CPLD的應用留下了很大的用武之地。除了不存在MCU所特有的復位不可靠與PC可能跑飛等固有缺陷外,FPGA/CPLD的高可靠性還表現在幾乎可將整個系統下載於同一晶元中,從而大大縮小了體積,易於管理和屏蔽。
4.開發工具和設計語言標准化,開發周期短。由於FPGA/CPLD的集成規模非常大,集成度可達數百萬門。因此,FPGA/ CPLD的設計開發必須利用功能強大的EDA工具,通過符合國際標準的硬體描述語言(如VHDL或Verilog-HDL)來進行電子系統設計和產品開發。由於開發工具的通用性、設計語言的標准化以及設計過程幾乎與所用的FPGA/ CPLD器件的硬體結構沒有關系.
所以設計成功的各類邏輯功能塊軟體有很好的兼容性和可移植性,它幾乎可用於任何型號的FPGA/ CPLD中,由此還可以知識產權的方式得到確認,並被注冊成為所謂的IP晶元,從而使得片上系統的產品設計效率大幅度提高。由於相應的EDA軟體功能完善而強大,模擬方式便捷而實時,開發過程形象而直觀,兼之硬體因素涉及甚少,因此可以在很短時間內完成十分復雜的系統設計,這正是產品快速進入市場的最寶貴的特徵。美國TI公司認為,一個ASIC 80%的功能可用IP晶元等現成邏輯合成。EDA專家預言,未來的大系統的FPGA/CPLD設計僅僅是各類再應用邏輯與IP晶元的拼裝,其設計周期最少僅數分鍾。
5.功能強大,應用廣闊。目前,FPGA/ CPLD可供選擇范圍很大,可根據不同的應用選用不同容量的晶元。利用它們可實現幾乎任何形式的數字電路或數字系統的設計。隨著這類器件的廣泛應用和成本的大幅度下降,FPGA/CPLD在系統中的直接應用率正直逼ASIC的開發。同時,FPGA/CPLD設計方法也有其局限性。這主要體現在以下幾點:
(1).FPGA/CPLD設計軟體一般需要對電路進行邏輯綜合優化((Logic段Synthesis & Optimization),以得到易於實現的結果,因此,最終設計和原始設計之間在邏輯實現和時延方面具有一定的差異。從而使傳統設計方法中經常採用的一些電路形式(特別是一些非同步時序電路)在FPGA/CPLD設計方法中並不適用。這就要求設計人員更加了解FPGA/CPLD設計軟體的特點,才能得到優化的設計;
(2).FPGA一般採用查找表(LUT)結構(Xilinx), AND-OR結構(Altera)或多路選擇器結構(Actel),這些結構的優點是可編程性,缺點是時延過大,造成原始設計中同步信號之間發生時序偏移。同時,如果電路較大,需要經過劃分才能實現,由於引出端的延遲時間,更加大了延遲時間和時序偏移。時延問題是ASIC設計當中常見的問題。要精確地控制電路的時延是非常困難的,特別是在像FPGA/CPLD這樣的可編程邏輯當中。
(3). FPGA/CPLD的容量和I/O數目都是有限的,因此,一個較大的電路,需經邏輯劃分((Logic Partition)才能用多個FPGA/CPLD晶元實現,劃分演算法的優劣直接影響設計的性能;
(4).由於目標系統的PCB板的修改代價很高,用戶一般希望能夠在固定的引 分配的前提下對電路進行修改。但在晶元利用率提高,或者晶元I/O引出端很多的情況下,微小的修改往往會降低晶元的流通率;
(5).早期的FPGA晶元不能實現存儲器、模擬電路等一些特殊形式的電路。最新的一些FPGA產品集成了通用的RAM結構。但這種結構要麼利用率不高,要麼不完全符合設計者的需要。這種矛盾來自於FPGA本身的結構局限性,短期內很難得到很好的解決。
6.盡管FPGA實現了ASIC設計的硬體模擬,但是由於FPGA和門陣列、標准單元等傳統ASIC形式的延時特性不盡相同,在將FPGA設計轉向其他ASIC設計時,仍然存在由於延時不匹配造成設計失敗的可能性。針對這個問題,國際上出現了用FPGA陣列對ASIC進行硬體模擬的系統(如Quicktum公司的硬體模擬系統)。這種專用的硬體模擬系統利用軟硬體結合的方法,用FPGA陣列實現了ASIC快速原型,接入系統進行測試。該系統可以接受指定的測試點,在FPGA陣列中可以直接觀測(就像軟體模擬中一樣),所以大大提高了模擬的准確性和效率。
2.3硬體描述語言(HDL)
硬體描述語言(HDL)是相對於一般的計算機軟體語言如C, Pascal而言的。HDL是用於設計硬體電子系統的計算機語言,它描述電子系統的邏輯功能、電路結構和連接方式。設計者可以利用HDL程序來描述所希望的電路系統,規定其結構特徵和電路的行為方式;然後利用綜合器和適配器將此程序變成能控制FPGA和CPLD內部結構、並實現相應邏輯功能的門級或更底層的結構網表文件和下載文件。硬體描述語言具有以下幾個優點:a.設計技術齊全,方法靈活,支持廣泛。b.加快了硬體電路的設計周期,降低了硬體電路的設計難度。c.採用系統早期模擬,在系統設計早期就可發現並排除存在的問題。d.語言設計可與工藝技術無關。e.語言標准,規范,易與共享和復用。就FPGA/CPLD開發來說,VHDL語言是最常用和流行的硬體描述語言之一。本次設計選用的就是VHDL語言,下面將主要對VHDL語言進行介紹。
2.3.1 VHDL語言簡介
VHDL是超高速集成電路硬體描述語言的英文字頭縮寫簡稱,其英文全名 是Very-High -Speed Integrated Circuit Hardware Description Language。它是在70- 80年代中由美國國防部資助的VHSIC(超高速集成電路)項目開發的產品,誕生於1982年。1987年底,VHDL被IEEE(The Institute of Electrical and產Electronics Engineers)確認為標准硬體描述語言。自IEEE公布了VHDL的標准版本((IEEE std 1076-1987標准)之後,各EDA公司相繼推出了自己的VHDL設計環境。此後,VHDL在電子設計領域受到了廣泛的接受,並逐步取代了原有的非標准HDL。1993年,IEEE對VHDL進行了修訂,從更高的抽象層次和系統描述能力上擴展VHDL的內容,公布了新版本的VHDL,即ANSI/IEEE std1076,1993版本。1996年IEEE 1076.3成為VHDL綜合標准。
VHDL主要用於描述數字系統的結構、行為、功能和介面,非常適用於可編程邏輯晶元的應用設計。與其它的HDL相比,VHDL具有更強的行為描述能力,從而決定了它成為系統設計領域最佳的硬體描述語言。強大的行為描述能力是避開具體的器件結構,從邏輯行為上描述和設計大規模電子系統的重要保證。就目前流行的EDA工具和VHDL綜合器而言,將基於抽象的行為描述風格的VHDL程序綜合成為具體的FPGA和CPLD等目標器件的網表文件己不成問題。
VHDL語言在硬體設計領域的作用將與C和C++在軟體設計領域的作用一樣,在大規模數字系統的設計中,它將逐步取代如邏輯狀態表和邏輯電路圖等級別較低的繁瑣的硬體描述方法,而成為主要的硬體描述工具,它將成為數字系統設計領域中所有技術人員必須掌握的一種語言。VHDL和可編程邏輯器件的結合作為一種強有力的設計方式,將為設計者的產品上市帶來創紀錄的速度
2.3.2 VHDL語言設計步驟
利用VHDL語言進行設計可分為以下幾個步驟:
1.設計要求的定義。在從事設計進行編寫VHDL代碼之前,必須先對你的設計目的和要求有一個明確的認識。例如,你要設計的功能是什麼?對所需的信號建立時間、時鍾/輸出時間、最大系統工作頻率、關鍵的路徑等這些要求,要有一個明確的定義,這將有助於你的設計,然後再選擇適當的設計方式和相應的器件結構,進行設計的綜合。
2.用VHDL語言進行設計描述。
(1)應決定設計方式,設計方式一般說來有三種:自頂向下設計,自底向上設計,平坦式設計。
前兩種方式包括設計階層的生成,而後一種方式將描述的電路當作單模塊電路來進行的。自頂向下的處理方式要求將你的設計劃分成不同的功能元件,每個元件具有專門定義的輸入和輸出,並執行專門的邏輯功能。首先生成一個由各功能元件相互連接形成的頂層模塊來做成一個網表,然後再設計其中的各個元件。而自底向上的處理方法正好相反。平坦式設計則是指所有功能元件均在同一層和同一圖中詳細進行的。
(2)編寫設計代碼。編寫VHDL語言的代碼與編寫其它計算機程序語言的代碼有很大的不同,你必須清醒地認識到你正在設計硬體,編寫的VHDL代碼必須能夠綜合到採用可編程邏輯器件來實現的數字邏輯之中。懂得EDA工具中模擬軟體和綜合軟體的大致工作過程,將有助於編寫出優秀的代碼。
3.用VHDL模擬器對VHDL原代碼進行功能模擬。對於大型設計,採用VHDL模擬軟體對其進行模擬可以節省時間,可以在設計的早期階段檢測到設計中的錯誤,從而進行修正,以便盡可能地減少對設計日程計劃的影響。因為對於大型設計,其綜合優化、配置往往要花費好幾個小時,在綜合之前對原代碼模擬,就可以大大減少設計重復和修正錯誤的次數和時間。但對於小型設計,則往往不需要先對VHDL原代碼進行模擬,即使做了,意義也不大。因為對於小型設計,其綜合優化、配置花費的時間不多,而且在綜合優化之後,你往往會發現為了實現性能目標,將需要修改你的設計。在這種情況下,用戶事先在原代碼模擬時所花費的時間是毫無意義的,因為一旦改變設計,還必須重新再做模擬。
4.利用VHDL綜合優化軟體對VHDL原代碼進行綜合優化處理。選擇目標器件、輸入約束條件後,VHDL綜合優化軟體工具將對VHDL原代碼進行處理,產生一個優化了的網路表,並可以進行粗略的時序模擬。綜合優化軟體工具大致的處理過程如下:首先檢測語法和語意錯誤;然後進行綜合處理,對CPLD器件而言,將得到一組工藝專用邏輯方程,對FPGA器件而言,將得到一個工藝專用網表;最後進行優化處理,對CPLD的優化通常包括將邏輯化簡為乘積項的最小和式,降低任何給定的表達式所需的邏輯塊輸入數,這些方程進一步通過器件專用優化來實現資源配置。對FPGA的優化通常也需要用乘積項的和式來表達邏輯,方程系統可基於器件專用資源和驅動優化目標指引來實現因式分解,分解的因子可用來對實現的有效性進行評估,其准則可用來決定是對方程序系統進行不同的因式分解還是保持現有的因子。准則通常是指分享共同因子的能力,即可以被暫存,以便於和任何新生成的因子相比較。
5.配置。將綜合優化處理後得到的優化了的網路表,安放到前面選定的CPLD或FPGA目標器件之中,這一過程稱為配置。在優化

④ 跪求電子系統設計方案

第1章 概 述
21世紀人類將全面進入信息化社會,對微電子信息技術和微電子VLSI基礎技術將不斷提出更高的發展要求,微電子技術仍將繼續是21世紀若干年代中最為重要的和最有活力的高科技領域之一。而集成電路(IC)技術在微電子領域佔有重要的地位。伴隨著IC技術的發展,電子設計自動化(Electronic Design Automation EDA)己經逐漸成為重要設計手段,其廣泛應用於模擬與數字電路系統等許多領域。
VHDL是廣泛使用的設計輸人硬體語言,可用於數字電路與系統的描述、模擬和自動設計.CPLD/FPGA(復雜可編程邏輯器件/現場可編程門陣列)為數字系統的設計帶靈活性,兼有串!並行工作方式和高集成度!高速!高可靠性等明顯的特點,CPLD/FPGA的時鍾延遲可達納秒級,結合其並行工作方式,在超高速領域和實時測控方面有非常廣泛的應用。
本次設計的目的是使用可編程邏輯器件設計一個專用的A/D轉換器的控制器,取代常用的微控制器,用於數據採集。本文講述對A/D進行數據采樣控制。設計要求用一片CPLD/FPGA,模數轉換控制器ADC和LED顯示器構成一個數據採集系統,用CPLD/FPGA實現數據採集中對A/D 轉換,數據運算,及有關數據的顯示控制。課題除了學習相應的硬體知識外,還要學習如何使用VHDL語言設計可編程邏輯器件。
未來的EDA技術向廣度和深度兩個方向發展.
(1)在廣度上,EDA技術會日益普及.在過去,由於EDA軟體價格昂貴,對硬體環境要求高,其運行環境是工作站和UNIX操作系統.最近幾年,EDA軟體平台化進展迅速,這些PC平台上的EDA軟體具有整套的邏輯設計、模擬和綜合工具.隨著PC機性能的提高,PC平台上的軟體功能將會更加完善.
(2)在深度上,EDA技術發展的下一步肢圓是ESDA伍electronic System Design Automation電子系統設計自動化)和CE (Concurrent Engineering並行設計工程).目前的各種EDA工具,如系統模擬,PCB布線、邏輯綜合、DSP設計工具是彼此獨立的.隨著技術的發展,要求所有的系統工具在統一的資料庫及管理框架下工作,由此提出了ESDA和CE概念。

第2章 EDA的發展歷程及其應用
2.1電子設計自動化(EDA)發展概述
2.1.1什麼是電子設計自動化(EDA )
在電子設計技術領域,可編程邏輯器件(如PLD, GAL)的應用,已有了很好的普及。這些器件為數字系統的設計帶來極大的靈活性。由於這類器件可以通過軟體編程而對其硬體的結構和工作方式進行重構,使得硬體的設計可以如同軟體設計那樣方便快捷。這一切極大地改變了傳統的數字系統設計方法、設計過程、乃至設計觀念。
電子設計自動化(EDA)是一種實現電子系統或電子產品自動化設計的技術,它與電子技術、微電子技術的發展密切相關,吸收了計算機科學領域的大多數最新研究成果,以高性能的計算機作為工作平台,是20世紀90年代初從CAD(計算機輔助設計)、CAM(計算機輔助製造)、CAT(計算機輔助測試)和CAE(計算機輔助工程)的概念發展而來的。EDA技術就是以計算機為工具,在EDA軟體平台上,根據硬體描述語言HDL完成的設計文件,自動地完成邏輯編譯、化簡、分割、綜合及優化、布局線、模擬,直至對於特定目標晶元的適配編譯、邏輯映射和編程下載等工作。設計者的工作僅限於利用軟體的方式來完成對系統硬體功能的描述,在EDA工具的幫助下和應用相應的FPGA/CPLD器件,就可以得到最後的設計結果。盡管目標系統是硬體,但整個設計和修改過程如同完成軟體設計一樣方便和高效。當然,這里的所謂EDA主要是指數字系統的自動化設計,因為這一領域的軟硬體方面的技術已比較成熟,應用的普及程度也已比較大。而模擬電子系統的EDA正在進入實用,其初期的EDA工具不一定需要硬體描述語言。此外,從應用的廣度和深度來說,由於電子信息領域的全面數字化,含禪基於EDA的數字系統的設計技術具有更大的應用市場和更緊迫的需求性。
2.1.2 EDA的發展歷史
EDA技術的發展始於70年代,至今歷老塌經歷了三個階段。電子線路的CAD(計算機輔助設計)是EDA發展的初級階段,是高級EDA系統的重要組成部分。它利用計算機的圖形編輯、分析和存儲等能力,協助工程師設計電子系統的電路圖、印製電路板和集成電路板圖;採用二維圖形編輯與分析,主要解決電子線路設計後期的大量重復性工作,可以減少設計人員的繁瑣重復勞動,但自動化程度低,需要人工干預整個設計過程。這類專用軟體大多以微機為工作平台,易於學用,設計中小規模電子系統可靠有效,現仍有很多這類專用軟體被廣泛應用於工程設計。80年代初期,EDA技術開始技術設計過程的分析,推出了以模擬(邏輯模擬、定時分析和故障模擬)和自動布局與布線為核心的EDA產品,這一階段的EDA已把三維圖形技術、窗口技術、計算機操作系統、網路數據交換、資料庫與進程管理等一系列計算機學科的最新成果引入電子設計,形成了CAE—計算機輔助工程。也就是所謂的EDA技術中級階段。其主要特徵是具備了自動布局布線和電路的計算機模擬、分析和驗證功能。其作用已不僅僅是輔助設計,而且可以代替人進行某種思維。CAE這種以原理圖為基礎的EDA系統,雖然直觀,且易於理解,但對復雜的電子設計很難達到要求,也不宜於設計的優化。
所以,90年代出現了以自動綜合器和硬體描述語言為基礎,全面支持電子設計自動化的ESDA(電子系統設計自動化),即EDA階段、也就是目前常說的EDA.過去傳統的電子系統電子產品的設計方法是採用自底而上(Bottom_ Up)的程式,設計者先對系統結構分塊,直接進行電路級的設計。這種設計方式使設計者不能預測下一階段的問題,而且每一階段是否存在問題,往往在系統整機調試時才確定,也很難通過局部電路的調整使整個系統達到既定的功能和指標,不能保證設計一舉成功。EDA技術高級階段採用一種新的設計概念:自頂而下(Top_ Down)的設計程式和並行工程(Concurrent engineering)的設計方法,設計者的精力主要集中在所要電子產品的准確定義上,EDA系統去完成電子產品的系統級至物理級的設計。此階段EDA技術的主要特徵是支持高級語言對系統進行描述,高層次綜合(High Level Synthesis)理論得到了巨大的發展,可進行系統級的模擬和綜合。圖2-1給出了上述三個階段的示意圖。

圖2-1 EDA發展階段示意圖

2.1.3 EDA的應用
隨著大規模集成電路技術和計算機技術的不斷發展,在涉及通信、國防、航天、醫學、工業自動化、計算機應用、儀器儀表等領域的電子系統設計工作中,EDA技術的含量正以驚人的速度上升;電子類的高新技術項目的開發也依賴於EDA技術的應用。即使是普通的電子產品的開發,EDA技術常常使一些原來的技術瓶頸得以輕松突破,從而使產品的開發周期大為縮短、性能價格比大幅提高。不言而喻,EDA技術將迅速成為電子設計領域中的極其重要的組成部分。
電子設計專家認為,單片機時代已經結束,未來將是EDA的時代,這是極具深刻洞察力之言。隨著微電子技術的飛速進步,電子學進入了一個嶄新的時代。其特徵是電子技術的應用以空前規模和速度滲透到各行各業。各行業對自己專用集成電路(ASIC)的設計要求日趨迫切,現場可編程器件的廣泛應用,為各行業的電子系統設計工程師自行開發本行業專用的ASIC提供了技術和物質條件。與單片機系統開發相比,利用EDA技術對FPGA/CPLD的開發,通常是一種藉助於軟體方式的純硬體開發,可以通過這種途徑進行專用ASIC開發,而最終的ASIC晶元,可以是FPGA/CPLD,也可以是專制的門陣列掩模晶元,FPGA/ CPLD起到了硬體模擬ASIC晶元的作用。
2.2基於EDA的FPGA/ CPLD開發
我國的電子設計技術發展到今天,將面臨一次更大意義的突破,即FPGA/CPLD (Field Programmable Gate Array,現場可編程門陣列/Complex Programmable Logic Device,復雜可編程邏輯器件)在EDA基礎上的廣泛應用。從某種意義上說,新的電子系統運轉的物理機制又將回到原來的純數字電路結構,但卻是一種更高層次的循環,它在更高層次上容納了過去數字技術的優秀部分,對(Micro Chip Unit) MCU系統是一種揚棄,在電子設計的技術操作和系統構成的整體上發生了質的飛躍。如果說MCU在邏輯的實現上是無限的話,那麼FPGA/CPLD不但包括了MCU這一特點,而且可以觸及矽片電路的物理極限,並兼有串、並行工作方式,高速、高可靠性以及寬口徑適用性等諸多方面的特點。不但如此,隨著EDA技術的發展和FPGA/CPLD在深亞微米領域的進軍,它們與MCU, MPU, DSP, A/D, D/A, RAM和ROM等獨立器件間的物理與功能界限已日趨模糊。特別是軟/硬IP晶元(知識產權晶元;intelligence Property Core,一種已注冊產權的電路設計)產業的迅猛發展,嵌入式通用及標准FPGA器件的呼之欲出,片上系統(SOC)已經近在咫尺。FPGA/CPLD以其不可替代的地位及伴隨而來的極具知識經濟特徵的IP晶元產業的崛起,正越來越受到業內人士的密切關注。
2.2.1 FPGA/CPLD簡介
FPGA和CPLD都是高密度現場可編程邏輯晶元,都能夠將大量的邏輯功能集成於一個單片集成電路中,其集成度已發展到現在的幾百萬門。復雜可編程邏輯器件CPLD是由PAL (Programmable Array Logic,可編程陣列邏輯)或GAL (Generic Array Logic,通用陣列邏輯)發展而來的。它採用全局金屬互連導線,因而具有較大的延時可預測性,易於控制時序邏輯;但功耗比較大。現場可編程門陣列(FPGA)是由可編程門陣列(MPGA)和可編程邏輯器件二者演變而來的,並將它們的特性結合在一起,因此FPGA既有門陣列的高邏輯密度和通用性,又有可編程邏輯器件的用戶可編程特性。FPGA通常由布線資源分隔的可編程邏輯單元(或宏單元)構成陣列,又由可編程Ir0單元圍繞陣列構成整個晶元。其內部資源是分段互聯的,因而延時不可預測,只有編程完畢後才能實際測量。
CPLD和FPGA建立內部可編程邏輯連接關系的編程技術有三種:基於反熔絲技術的器件只允許對器件編程一次,編程後不能修改。其優點是集成度、工作頻率和可靠性都很高,適用於電磁輻射干擾較強的惡劣環境。基於EEPROM存儲器技術的可編程邏輯晶元能夠重復編程100次以上,系統掉電後編程信息也不會丟失。編程方法分為在編程器上編程和用下載電纜編程。用下載電纜編程的器件,只要先將器件裝焊在印刷電路板上,通過PC, SUN工作站、ATE(自動測試儀)或嵌入式微處理器系統,就能產生編程所用的標准5V, 3.3V或2.5V邏輯電平信號,也稱為ISP (In System Programmable)方式編程,其調試和維修也很方便。基於SRAM技術的器件編程數據存儲於器件的RAM區中,使之具有用戶設計的功能。在系統不加電時,編程數據存儲在EPROM、硬碟、或軟盤中。系統加電時將這些編程數據即時寫入可編程器件,從而實現板級或系統級的動態配置。
2.2.2基於EDA工具的FPGA/CPLD開發流程
FPGA/CPLD的開發流程:設計開始首先利用EDA工具的文本或圖形編輯器將設計者的設計意圖用文本方式(如VHDL, Verilog-HDL程序)或圖形方式(原理圖、狀態圖等)表達出來。完成設計描述後即可通過編譯器進行排錯編譯,變成特定的文本格式,為下一步的綜合準備。在此,對於多數EDA軟體來說,最初的設計究竟採用哪一種輸入形式是可選的,也可混合使用。一般原理圖輸入方式比較容易掌握,直觀方便,所畫的電路原理圖(請注意,這種原理圖與利用PROTEL畫的原理圖有本質的區別)與傳統的器件連接方式完全一樣,很容易為人接受,而且編輯器中有許多現成的單元器件可資利用,自己也可以根據需要設計元件(元件的功能可用HDL表達,也可仍用原理圖表達)。當然最一般化、最普適性的輸入方法是HDL程序的文本方式。這種方式最為通用。如果編譯後形成的文件是標准VHDL文件,在綜合前即可以對所描述的內容進行模擬,稱為行為模擬。即將設計源程序直接送到VHDL模擬器中模擬。因為此時的模擬只是根據VHDL的語義進行的,與具體電路沒有關系。在模擬中,可以充分發揮VHDL中的適用於模擬控制的語句,對於大型電路系統的設計,這一模擬過程是十分必要的,但一般情況下,可以略去這一步驟.

圖2-2 FPGA / CPLD開發流程
設計的第三步是綜合,將軟體設計與硬體的可實現性掛鉤,這是將軟體轉化為硬體電路的關鍵步驟。綜合器對源文件的綜合是針對某一FPGA/CPLD供應商的產品系列的,因此,綜合後的結果具有硬體可實現性。在綜合後,HDL綜合器一般可生成EDIF, XNF或VHDL等格式的網表文件,從門級來描述了最基本的門電路結構。有的EDA軟體,具有為設計者將網表文件畫成不同層次的電路圖的功能。綜合後,可利用產生的網表文件進行功能模擬,以便了解設計描述與設計意圖的一致性。功能模擬僅對設計描述的邏輯功能進行測試模擬,以了解其實現的功能是否滿足原設計的要求,模擬過程不涉及具體器件的硬體特性,如延遲特性。一般的設計,這一層次的模擬也可略去。綜合通過後必須利用FPGA/CPLD布局/布線適配器將綜合後的網表式文件針對某一具體的目標器件進行邏輯映射操作,其中包括底層器件配置、邏輯分割、邏輯優化、布局布線。適配完成後,EDA軟體將產生針對此項設計的多項結果:1適配報告:內容包括晶元內資源分配與利用、引腳鎖定、設計的布爾方程描述情況等;2時序模擬用網表文件;3下載文件,如JED或POF文件;4適配錯誤報告等。時序模擬是接近真實器件運行的模擬,模擬過程中己將器件硬體特性考慮進去了,因此模擬精度要高得多。時序模擬的網表式文件中包含了較為精確的延遲信息。如果以上的所有過程,包括編譯、綜合、布線/適配和行為模擬、功能模擬、時序模擬都沒有發現問題,即滿足原設計的要求,就可以將適配器產生的配置/下載文件通過FPGA/CPLD編程器或下載電纜載入目標晶元FPGA或CPLD中,然後進入如圖1-2所示的最後一個步驟:硬體模擬或測試,以便在更真實的環境中檢驗設計的運行情況。這里所謂的硬體模擬,是針對ASIC設計而言的。在ASIC設計中,比較常用的方法是利用FPGA對系統的設計進行功能檢測,通過後再將其VHDL設計以ASIC形式實現;而硬體測試則是針對FPGA或CPLD直接用於電路系統的檢測而言的。
2.2.3用FPGA/CPLD進行開發的優缺點
我們認為,基於EDA技術的FPGA/CPLD器件的開發應用可以從根本上解決MCU所遇到的問題。與MCU相比,FPGA/CPLD的優勢是多方面的和根本性的:
1.編程方式簡便、先進。FPGA/CPLD產品越來越多地採用了先進的IEEE 1149.1邊界掃描測試(BST)技術(由聯合測試行動小組,JTAG開發)和ISP(在系統配置編程方式)。在+5V工作電平下可隨時對正在工作的系統上的FPGA/CPLD進行全部或部分地在系統編程,並可進行所謂菊花鏈式多晶元串列編程,對於SRAM結構的FPGA,其下載編程次數幾乎沒有限制(如Altera公司的FLEXI 10K系列)。這種編程方式可輕易地實現紅外編程、超聲編程或無線編程,或通過電話線遠程在線編程。這些功能在工控、智能儀器儀表、通訊和軍事上有特殊用途。
2.高速。FPGA/CPLD的時鍾延遲可達納秒級,結合其並行工作方式,在超高速應用領域和實時測控方面有非常廣闊的應用前景。
3.高可靠性。在高可靠應用領域,MCU的缺憾為FPGA/CPLD的應用留下了很大的用武之地。除了不存在MCU所特有的復位不可靠與PC可能跑飛等固有缺陷外,FPGA/CPLD的高可靠性還表現在幾乎可將整個系統下載於同一晶元中,從而大大縮小了體積,易於管理和屏蔽。
4.開發工具和設計語言標准化,開發周期短。由於FPGA/CPLD的集成規模非常大,集成度可達數百萬門。因此,FPGA/ CPLD的設計開發必須利用功能強大的EDA工具,通過符合國際標準的硬體描述語言(如VHDL或Verilog-HDL)來進行電子系統設計和產品開發。由於開發工具的通用性、設計語言的標准化以及設計過程幾乎與所用的FPGA/ CPLD器件的硬體結構沒有關系.
所以設計成功的各類邏輯功能塊軟體有很好的兼容性和可移植性,它幾乎可用於任何型號的FPGA/ CPLD中,由此還可以知識產權的方式得到確認,並被注冊成為所謂的IP晶元,從而使得片上系統的產品設計效率大幅度提高。由於相應的EDA軟體功能完善而強大,模擬方式便捷而實時,開發過程形象而直觀,兼之硬體因素涉及甚少,因此可以在很短時間內完成十分復雜的系統設計,這正是產品快速進入市場的最寶貴的特徵。美國TI公司認為,一個ASIC 80%的功能可用IP晶元等現成邏輯合成。EDA專家預言,未來的大系統的FPGA/CPLD設計僅僅是各類再應用邏輯與IP晶元的拼裝,其設計周期最少僅數分鍾。
5.功能強大,應用廣闊。目前,FPGA/ CPLD可供選擇范圍很大,可根據不同的應用選用不同容量的晶元。利用它們可實現幾乎任何形式的數字電路或數字系統的設計。隨著這類器件的廣泛應用和成本的大幅度下降,FPGA/CPLD在系統中的直接應用率正直逼ASIC的開發。同時,FPGA/CPLD設計方法也有其局限性。這主要體現在以下幾點:
(1).FPGA/CPLD設計軟體一般需要對電路進行邏輯綜合優化((Logic段Synthesis & Optimization),以得到易於實現的結果,因此,最終設計和原始設計之間在邏輯實現和時延方面具有一定的差異。從而使傳統設計方法中經常採用的一些電路形式(特別是一些非同步時序電路)在FPGA/CPLD設計方法中並不適用。這就要求設計人員更加了解FPGA/CPLD設計軟體的特點,才能得到優化的設計;
(2).FPGA一般採用查找表(LUT)結構(Xilinx), AND-OR結構(Altera)或多路選擇器結構(Actel),這些結構的優點是可編程性,缺點是時延過大,造成原始設計中同步信號之間發生時序偏移。同時,如果電路較大,需要經過劃分才能實現,由於引出端的延遲時間,更加大了延遲時間和時序偏移。時延問題是ASIC設計當中常見的問題。要精確地控制電路的時延是非常困難的,特別是在像FPGA/CPLD這樣的可編程邏輯當中。
(3). FPGA/CPLD的容量和I/O數目都是有限的,因此,一個較大的電路,需經邏輯劃分((Logic Partition)才能用多個FPGA/CPLD晶元實現,劃分演算法的優劣直接影響設計的性能;
(4).由於目標系統的PCB板的修改代價很高,用戶一般希望能夠在固定的引 分配的前提下對電路進行修改。但在晶元利用率提高,或者晶元I/O引出端很多的情況下,微小的修改往往會降低晶元的流通率;
(5).早期的FPGA晶元不能實現存儲器、模擬電路等一些特殊形式的電路。最新的一些FPGA產品集成了通用的RAM結構。但這種結構要麼利用率不高,要麼不完全符合設計者的需要。這種矛盾來自於FPGA本身的結構局限性,短期內很難得到很好的解決。
6.盡管FPGA實現了ASIC設計的硬體模擬,但是由於FPGA和門陣列、標准單元等傳統ASIC形式的延時特性不盡相同,在將FPGA設計轉向其他ASIC設計時,仍然存在由於延時不匹配造成設計失敗的可能性。針對這個問題,國際上出現了用FPGA陣列對ASIC進行硬體模擬的系統(如Quicktum公司的硬體模擬系統)。這種專用的硬體模擬系統利用軟硬體結合的方法,用FPGA陣列實現了ASIC快速原型,接入系統進行測試。該系統可以接受指定的測試點,在FPGA陣列中可以直接觀測(就像軟體模擬中一樣),所以大大提高了模擬的准確性和效率。
2.3硬體描述語言(HDL)
硬體描述語言(HDL)是相對於一般的計算機軟體語言如C, Pascal而言的。HDL是用於設計硬體電子系統的計算機語言,它描述電子系統的邏輯功能、電路結構和連接方式。設計者可以利用HDL程序來描述所希望的電路系統,規定其結構特徵和電路的行為方式;然後利用綜合器和適配器將此程序變成能控制FPGA和CPLD內部結構、並實現相應邏輯功能的門級或更底層的結構網表文件和下載文件。硬體描述語言具有以下幾個優點:a.設計技術齊全,方法靈活,支持廣泛。b.加快了硬體電路的設計周期,降低了硬體電路的設計難度。c.採用系統早期模擬,在系統設計早期就可發現並排除存在的問題。d.語言設計可與工藝技術無關。e.語言標准,規范,易與共享和復用。就FPGA/CPLD開發來說,VHDL語言是最常用和流行的硬體描述語言之一。本次設計選用的就是VHDL語言,下面將主要對VHDL語言進行介紹。
2.3.1 VHDL語言簡介
VHDL是超高速集成電路硬體描述語言的英文字頭縮寫簡稱,其英文全名 是Very-High -Speed Integrated Circuit Hardware Description Language。它是在70- 80年代中由美國國防部資助的VHSIC(超高速集成電路)項目開發的產品,誕生於1982年。1987年底,VHDL被IEEE(The Institute of Electrical and產Electronics Engineers)確認為標准硬體描述語言。自IEEE公布了VHDL的標准版本((IEEE std 1076-1987標准)之後,各EDA公司相繼推出了自己的VHDL設計環境。此後,VHDL在電子設計領域受到了廣泛的接受,並逐步取代了原有的非標准HDL。1993年,IEEE對VHDL進行了修訂,從更高的抽象層次和系統描述能力上擴展VHDL的內容,公布了新版本的VHDL,即ANSI/IEEE std1076,1993版本。1996年IEEE 1076.3成為VHDL綜合標准。
VHDL主要用於描述數字系統的結構、行為、功能和介面,非常適用於可編程邏輯晶元的應用設計。與其它的HDL相比,VHDL具有更強的行為描述能力,從而決定了它成為系統設計領域最佳的硬體描述語言。強大的行為描述能力是避開具體的器件結構,從邏輯行為上描述和設計大規模電子系統的重要保證。就目前流行的EDA工具和VHDL綜合器而言,將基於抽象的行為描述風格的VHDL程序綜合成為具體的FPGA和CPLD等目標器件的網表文件己不成問題。
VHDL語言在硬體設計領域的作用將與C和C++在軟體設計領域的作用一樣,在大規模數字系統的設計中,它將逐步取代如邏輯狀態表和邏輯電路圖等級別較低的繁瑣的硬體描述方法,而成為主要的硬體描述工具,它將成為數字系統設計領域中所有技術人員必須掌握的一種語言。VHDL和可編程邏輯器件的結合作為一種強有力的設計方式,將為設計者的產品上市帶來創紀錄的速度
2.3.2 VHDL語言設計步驟
利用VHDL語言進行設計可分為以下幾個步驟:
1.設計要求的定義。在從事設計進行編寫VHDL代碼之前,必須先對你的設計目的和要求有一個明確的認識。例如,你要設計的功能是什麼?對所需的信號建立時間、時鍾/輸出時間、最大系統工作頻率、關鍵的路徑等這些要求,要有一個明確的定義,這將有助於你的設計,然後再選擇適當的設計方式和相應的器件結構,進行設計的綜合。
2.用VHDL語言進行設計描述。
(1)應決定設計方式,設計方式一般說來有三種:自頂向下設計,自底向上設計,平坦式設計。
前兩種方式包括設計階層的生成,而後一種方式將描述的電路當作單模塊電路來進行的。自頂向下的處理方式要求將你的設計劃分成不同的功能元件,每個元件具有專門定義的輸入和輸出,並執行專門的邏輯功能。首先生成一個由各功能元件相互連接形成的頂層模塊來做成一個網表,然後再設計其中的各個元件。而自底向上的處理方法正好相反。平坦式設計則是指所有功能元件均在同一層和同一圖中詳細進行的。
(2)編寫設計代碼。編寫VHDL語言的代碼與編寫其它計算機程序語言的代碼有很大的不同,你必須清醒地認識到你正在設計硬體,編寫的VHDL代碼必須能夠綜合到採用可編程邏輯器件來實現的數字邏輯之中。懂得EDA工具中模擬軟體和綜合軟體的大致工作過程,將有助於編寫出優秀的代碼。
3.用VHDL模擬器對VHDL原代碼進行功能模擬。對於大型設計,採用VHDL模擬軟體對其進行模擬可以節省時間,可以在設計的早期階段檢測到設計中的錯誤,從而進行修正,以便盡可能地減少對設計日程計劃的影響。因為對於大型設計,其綜合優化、配置往往要花費好幾個小時,在綜合之前對原代碼模擬,就可以大大減少設計重復和修正錯誤的次數和時間。但對於小型設計,則往往不需要先對VHDL原代碼進行模擬,即使做了,意義也不大。因為對於小型設計,其綜合優化、配置花費的時間不多,而且在綜合優化之後,你往往會發現為了實現性能目標,將需要修改你的設計。在這種情況下,用戶事先在原代碼模擬時所花費的時間是毫無意義的,因為一旦改變設計,還必須重新再做模擬。
4.利用VHDL綜合優化軟體對VHDL原代碼進行綜合優化處理。選擇目標器件、輸入約束條件後,VHDL綜合優化軟體工具將對VHDL原代碼進行處理,產生一個優化了的網路表,並可以進行粗略的時序模擬。綜合優化軟體工具大致的處理過程如下:首先檢測語法和語意錯誤;然後進行綜合處理,對CPLD器件而言,將得到一組工藝專用邏輯方程,對FPGA器件而言,將得到一個工藝專用網表;最後進行優化處理,對CPLD的優化通常包括將邏輯化簡為乘積項的最小和式,降低任何給定的表達式所需的邏輯塊輸入數,這些方程進一步通過器件專用優化來實現資源配置。對FPGA的優化通常也需要用乘積項的和式來表達邏輯,方程系統可基於器件專用資源和驅動優化目標指引來實現因式分解,分解的因子可用來對實現的有效性進行評估,其准則可用來決定是對方程序系統進行不同的因式分解還是保持現有的因子。准則通常是指分享共同因子的能力,即可以被暫存,以便於和任何新生成的因子相比較。
5.配置。將綜合優化處理後得到的優化了的網路表,安放到前面選定的CPLD或FPGA目標器件之中,這一過程稱為配置。在優化

⑤ 簡易8按鍵電子琴設計實驗

簡易電子琴的設計

摘 要 隨著基於CPLD的EDA技術的發展和應用領域的擴大與深入,EDA技術在電子信息、通信、自動控制用計算機等領域的重要性日益突出。作為一個學電子信息專業的學生,我們必須不斷地了解更多的新產品信息,這就更加要求我們對EDA有個全面的認識。本程序設計的是簡易電子琴的設計。採用EDA作為開發工具,VHDL語言為硬體描述語言,MAX + PLUS II作為程序運行平台,所開發的程序通過調試運行、波形模擬驗證,初步實現了設計目標。本程序使用的硬體描述語言VHDL,可以大大降低了硬體數字系統設計的入門級別,讓人感覺就是C語言的近親。通過老師的指導和自己的學習完成了預想的功能。

關鍵詞 電子琴;課程設計;EDA;VHDL

1 引言

1.1 課程設計胡配陪的目的
鞏固和運用所學課程,理論聯系實際,提高分析、解決計算機技術實際問題的獨立工作能力,通過對一個簡易的八音符電子琴的設計,進一步加深對計算機原理以及數字電路應用技術方面的了解與認識,進一步熟悉數字電路系統設計、製作與調試的方法和步驟。鞏固所學課堂知識,理論聯系實際,提高分析、解決計算機技術實際問題的獨立工作能力。為了進一步了解計算機組成原理與系統結構,深入學習EDA技術,用VHDL語言去控制將會使我們對本專業知識可以更好地掌握。
1.2 課程設計的內容
(1)設計一個簡易的八音符電子琴,它可通過按鍵輸入來控制音響。
(2)演奏時可以選擇是手動演奏(由鍵盤輸入)還是自動演奏已存入的樂曲。
(3)能夠自動演奏多首樂曲,且每首樂曲可重復演奏。

2 開發工具簡介

2.1 EDA技術
EDA是電子設計自動化(Electronic Design Automation)縮寫,是90年代初從CAD(計算機輔助設計)、CAM(計算機輔助製造)、CAT(計算機輔助測試)和CAE(計算機輔助工程)的概念發展而來的。EDA技術是以計算機為工具,根據硬體描述語言HDL( Hardware Description language)完成的設計文件,自動地完成邏輯編譯、化簡、分割、綜合及優化、布局布線、模擬以及對於特定目標晶元的適配編譯和編程褲蠢下載等工作。典型的EDA工具中必須包含兩個特殊的軟體包,即綜合器和適配器。綜合器的功能就是將設計者在EDA平台上完成的針對某個系統項目的HDL、原理圖或狀態圖形描述,針對給定的硬體系統組件,進行編譯、優化、轉換和綜合,最終獲得我們欲實現功能的描述文件。綜合器在工作前,必須給定所要實現的硬體結構參數,它的功能就是將軟體描述與給定的硬體結構用一定的方式聯系起來。也就是說,綜合器是軟體描述與硬體實現的一座橋梁。綜合過程就是將電路的高級語言描述轉換低級的、可與目標器件FPGA/CPLD相映射的網表文件。
適配器的功能是將由綜合器產生的王表文件配置與指定的目標器件中,產生最終的下載文件,如JED文件。適配所選定的目標器件(FPGA/CPLD晶元)必須屬於在綜合器中已指定的目標器件系列。
硬體描述語言HDL是相對於一般的計算機軟體語言,如:C、PASCAL而言的。HDL語言使用與設計硬體電子系統的計算機語言,它能描述電子系統的邏輯功能、電路結構和連接方式。設計者可利用HDL程序來描述所希望的電路系統,規定器件結構特徵和電路的行為方式;然後利用綜合器和適配器將此程序編程能控制FPGA和CPLD內部結構,並實現相應邏輯功能的的門級或更底層的結構網表文件或下載文件。目前,就FPGA/CPLD開發來說,比較常用和流行的HDL主要有ABEL-HDL、AHDL和VHDL。
2.2硬體描述語言—VHDL
VHDL的英文全名是Very-High-Speed Integrated Circuit Hardware Description Language,誕生於1982年。1987年底,VHDL被IEEE和美國國防部確認為標准硬體描述語言 。自IEEE公布了VHDL的標准版本,IEEE-1076(簡稱87版)之後,各EDA公司相繼推出了自己的VHDL設計環境,或宣布自己的設計工賣弊具可以和VHDL介面。此後VHDL在電子設計領域得到了廣泛的接受,並逐步取代了原有的非標準的硬體描述語言。1993年,IEEE對VHDL進行了修訂,從更高的抽象層次和系統描述能力上擴展VHDL的內容,公布了新版本的VHDL,即IEEE標準的1076-1993版本,(簡稱93版)。現在,VHDL和Verilog作為IEEE的工業標准硬體描述語言,又得到眾多EDA公司的支持,在電子工程領域,已成為事實上的通用硬體描述語言。有專家認為,在新的世紀中,VHDL於Verilog語言將承擔起大部分的數字系統設計任務。
VHDL主要用於描述數字系統的結構,行為,功能和介面。除了含有許多具有硬體特徵的語句外,VHDL的語言形式和描述風格與句法是十分類似於一般的計算機高級語言。VHDL的程序結構特點是將一項工程設計,或稱設計實體(可以是一個元件,一個電路模塊或一個系統)分成外部(或稱可是部分,及埠)和內部(或稱不可視部分),既涉及實體的內部功能和演算法完成部分。在對一個設計實體定義了外部界面後,一旦其內部開發完成後,其他的設計就可以直接調用這個實體。這種將設計實體分成內外部分的概念是VHDL系統設計的基本點。應用VHDL進行工程設計的優點是多方面的。
(1) 與其他的硬體描述語言相比,VHDL具有更強的行為描述能力,從而決定了他成為系統設計領域最佳的硬體描述語言。強大的行為描述能力是避開具體的器件結構,從邏輯行為上描述和設計大規模電子系統的重要保證。
(2) VHDL豐富的模擬語句和庫函數,使得在任何大系統的設計早期就能查驗設計系統的功能可行性,隨時可對設計進行模擬模擬。
(3) VHDL語句的行為描述能力和程序結構決定了他具有支持大規模設計的分解和已有設計的再利用功能。符合市場需求的大規模系統高效,高速的完成必須有多人甚至多個代發組共同並行工作才能實現。(4)對於用VHDL完成的一個確定的設計,可以利用EDA工具進行邏輯綜合和優化,並自動的把VHDL描述設計轉變成門級網表。
(4) VHDL對設計的描述具有相對獨立性,設計者可以不懂硬體的結構,也不必管理最終設計實現的目標器件是什麼,而進行獨立的設計。
2.3 VHDL的設計流程:
(1) 設計輸入根據電路設計所提出的要求,將程序輸入到VHDL編輯器中去編輯。
(2) 功能級模擬用VHDL,模擬器對編輯後的程序進行模擬,如果達不到設計要求,則可以重新修改程序,直到通過功能模擬。
(3) 邏輯綜合與優化 將通過功能模擬的程序放到VHDL編譯器中,進行邏輯綜合與優化。
(4) 門級模擬對電路用VHDL。模擬器模擬。可對門級電路的延時、定時狀態、驅動能力等進行模擬。如不符合要求,可重復步驟(3),再門級模擬,直到符合要求止。
(5) 版圖生成 用相應的軟體處理後,就可以拿去製版。

設計過程
3.1設計規劃
根據系統設計要求,系統設計採用自頂向下的設計方法,系統的整體組裝設計原理圖如圖3-1所示,它由樂曲自動演奏模塊、音調發生模塊和數控分頻模塊三部分組成。

圖3-1 系統的整體組裝設計原理圖
3.2 各模塊的原理及其程序
(1)樂曲自動演奏模塊
樂曲自動演奏模塊(AUTO.VHD)的作用是產生8位發聲控制輸入信號/當進行自動演奏時,由存儲在此模塊中的8位二進制數作為發聲控制輸入,從而自動演奏樂曲。
VHDL源程序(AUTO.VHD)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY AUTO IS
PORT ( CLK : IN STD_LOGIC;
AUTO : IN STD_LOGIC;
CLK2 : BUFFER STD_LOGIC;
INDEX2 : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
INDEX0 : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END AUTO;
ARCHITECTURE BEHAVIORAL OF AUTO IS
SIGNAL COUNT0: INTEGER RANGE 0 TO 31;
BEGIN
PULSE0 :PROCESS(CLK,AUTO)
VARIABLE COUNT :INTEGER RANGE 0 TO 8;
BEGIN
IF AUTO ='1' THEN
COUNT := 0;CLK2<='0';
ELSIF(CLK'EVENT AND CLK ='1')THEN
COUNT :=COUNT +1;
IF COUNT =4 THEN
CLK2 <='1';
ELSIF COUNT =8 THEN
CLK2<='0'; COUNT:=0;
END IF ;
END IF ;
END PROCESS;
MUSIC:PROCESS(CLK2)
BEGIN
IF (CLK2'EVENT AND CLK2='1')THEN
IF (COUNT0=31)THEN
COUNT0<=0;
ELSE
COUNT0<=COUNT0+1;
END IF ;
END IF ;
END PROCESS;
COM1:PROCESS(COUNT0,AUTO,INDEX2)
BEGIN
IF AUTO ='0' THEN
CASE COUNT0 IS
WHEN 0=>INDEX0<="00000100"; --3
WHEN 1=>INDEX0<="00000100"; --3
WHEN 2=>INDEX0<="00000100"; --3
WHEN 3=>INDEX0<="00000100"; --3
WHEN 4=>INDEX0<="00010000"; --5
WHEN 5=>INDEX0<="00010000"; --5
WHEN 6=>INDEX0<="00010000"; --5
WHEN 7=>INDEX0<="00100000"; --6
WHEN 8=>INDEX0<="10000000"; --8
WHEN 9=>INDEX0<="10000000"; --8
WHEN 10=>INDEX0<="10000000"; --8
WHEN 11=>INDEX0<="00000100"; --3
WHEN 12=>INDEX0<="00000010"; --2
WHEN 13=>INDEX0<="00000010"; --2
WHEN 14=>INDEX0<="00000001"; --1
WHEN 15=>INDEX0<="00000001"; --1
WHEN 16=>INDEX0<="00010000"; --5
WHEN 17=>INDEX0<="00010000"; --5
WHEN 18=>INDEX0<="00001000"; --4
WHEN 19=>INDEX0<="00001000"; --4
WHEN 20=>INDEX0<="00001000"; --4
WHEN 21=>INDEX0<="00000100"; --3
WHEN 22=>INDEX0<="00000010"; --2
WHEN 23=>INDEX0<="00000010"; --2
WHEN 24=>INDEX0<="00010000"; --5
WHEN 25=>INDEX0<="00010000"; --5
WHEN 26=>INDEX0<="00001000"; --4
WHEN 27=>INDEX0<="00001000"; --4
WHEN 28=>INDEX0<="00000100"; --3
WHEN 29=>INDEX0<="00000100"; --3
WHEN 30=>INDEX0<="00000010"; --2
WHEN 31=>INDEX0<="00000010"; --2
WHEN OTHERS =>NULL;
END CASE;
ELSE INDEX0<=INDEX2;
END IF;
END PROCESS;
END BEHAVIORAL;
(2) 音調發生模塊
音調發生模塊的作用是產生音階的分頻預置值。當8位發聲控制輸入信號中的某一位為高電平時,則對應某一音節的數值將輸出,該數值即為該音階的分頻預置值,分頻預置值控制數控分頻模塊進行分頻,由此可得到每個音階對應的頻率。

VHDL源程序(TONE.VHD)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY TONE IS
PORT (INDEX: IN STD_LOGIC_VECTOR(7 DOWNTO 0);
CODE: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
HIGH: OUT STD_LOGIC;
TONE0: OUT INTEGER RANGE 0 TO 2047);
END TONE;
ARCHITECTURE ART OF TONE IS
BEGIN
SEARCH : PROCESS(INDEX)
BEGIN
CASE INDEX IS
WHEN "00000001"=>TONE0 <=773;CODE<="1001111";HIGH<='1';
WHEN "00000010"=>TONE0 <=912;CODE<="0010010";HIGH<='1';
WHEN "00000100"=>TONE0 <=1036;CODE<="0000110";HIGH<='1';
WHEN "00001000"=>TONE0 <=1116;CODE<="1001100";HIGH<='1';
WHEN "00010000"=>TONE0 <=1197;CODE<="0100100";HIGH<='1';
WHEN "00100000"=>TONE0 <=1290;CODE<="0100000";HIGH<='0';
WHEN "01000000"=>TONE0 <=1372;CODE<="0001111";HIGH<='0';
WHEN "10000000"=>TONE0 <=1410;CODE<="0000000";HIGH<='0';
WHEN OTHERS =>TONE0<=2047;CODE<="0000001";HIGH<='0';
END CASE;
END PROCESS;
END ART;
(3) 數控分頻模塊
數控分頻模塊是對時基脈沖進行分頻,得到與1、2、3、4、5、6、7七個音符相對應的頻率。

VHDL源程序(FENPIN.VHD)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY FENPIN IS
PORT(CLK1: IN STD_LOGIC;
TONE1: IN INTEGER RANGE 0 TO 2047;
SPKS: OUT STD_LOGIC);
END ENTITY FENPIN;
ARCHITECTURE ART OF FENPIN IS
SIGNAL PRECLK:STD_LOGIC;
SIGNAL FULLSPKS:STD_LOGIC;
BEGIN
PROCESS(CLK1)
VARIABLE COUNT:INTEGER RANGE 0 TO 8;
BEGIN
IF (CLK1'EVENT AND CLK1='1')THEN
COUNT:=COUNT +1;
IF COUNT=2 THEN
PRECLK<='1';
ELSIF COUNT =4 THEN
PRECLK<='0';COUNT:=0;
END IF ;
END IF ;
END PROCESS;
PROCESS(PRECLK,TONE1)
VARIABLE COUNT11:INTEGER RANGE 0 TO 2047;
BEGIN
IF (PRECLK'EVENT AND PRECLK='1')THEN
IF COUNT11<TONE1 THEN
COUNT11:=COUNT11+1;FULLSPKS<='1';
ELSE
COUNT11:=0;FULLSPKS<='0';
END IF ;
END IF ;
END PROCESS;
PROCESS(FULLSPKS)
VARIABLE COUNT2 :STD_LOGIC:='0';
BEGIN
IF (FULLSPKS'EVENT AND FULLSPKS='1')THEN
COUNT2:=NOT COUNT2;
IF COUNT2='1'THEN
SPKS<='1';
ELSE
SPKS<='0';
END IF ;
END IF;
END PROCESS;
END ART;
(4) 頂層設計
VHDL源程序(DIANZIQIN.VHD)
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_ARITH.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY DIANZIQIN IS
PORT(CLK32MHZ: IN STD_LOGIC;
HANDTOAUTO:IN STD_LOGIC;
CODE1: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);--音符顯示信號
INDEX1: IN STD_LOGIC_VECTOR(7 DOWNTO 0);--鍵盤輸入信號
HIGH1: OUT STD_LOGIC;--高低音節信號
SPKOUT: OUT STD_LOGIC);--音頻信號
END;
ARCHITECTURE ART OF DIANZIQIN IS
COMPONENT AUTO
PORT(CLK: IN STD_LOGIC;
AUTO: IN STD_LOGIC;
INDEX2: IN STD_LOGIC_VECTOR(7 DOWNTO 0);
INDEX0: OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END COMPONENT;
COMPONENT TONE
PORT(INDEX: IN STD_LOGIC_VECTOR(7 DOWNTO 0);
CODE: OUT STD_LOGIC_VECTOR(6 DOWNTO 0);
HIGH: OUT STD_LOGIC;
TONE0: OUT INTEGER RANGE 0 TO 2047);
END COMPONENT;
COMPONENT FENPIN
PORT(CLK1: IN STD_LOGIC;
TONE1:IN INTEGER RANGE 0 TO 2047;
SPKS: OUT STD_LOGIC);
END COMPONENT;
SIGNAL TONE2:INTEGER RANGE 0 TO 2047;
SIGNAL INDX:STD_LOGIC_VECTOR(7 DOWNTO 0);
BEGIN
U0:AUTOPORTMAP(CLK=>CLK32MHZ,INDEX2=>INDEX1,INDEX0=>INDX,AUTO=>HANDTOAUTO);
U1:TONEPORTMAP(INDEX=>INDX,TONE0=>TONE2,CODE=>CODE1,HIGH=>HIGH1);
U2:FENPIN PORT MAP(CLK1=>CLK32MHZ,TONE1=>TONE2,SPKS=>SPKOUT);
END ART;

4 波形模擬
(1)樂曲自動演奏模塊的模擬(如圖4-1所示)

圖4-1樂曲自動演奏模塊的模擬圖
(2)音調發生模塊的模擬(如圖4-2)

圖4-2 音調發生模塊的模擬圖
(3)數控分頻模塊的模擬(如圖4-3)

圖4-3數控分頻模塊模擬圖
(4)簡易電子琴整個系統的模擬(如圖4-4)

圖4-4簡易電子琴整個系統的模擬圖

5 結束語
經過努力,簡易電子琴的設計基本上完成了。在整個設計過程中,包括前期中期和後期,我都有著許多不同的體會:
1) 這個設計的基本是接觸一門新的語言並加以應用,對於我來說,沒有想到的是入手的速度比我的預料快,在以前編程的基礎上,從接觸到開始動手編程的時間得到了很大的縮短。知識的接收速度在很大的程度上決定了動手的時間。
2) VHDL的編程與C語言的編程有著本質的不同,然而以往形成的舊編程習慣在VHDL編程中依然起著很大的作用。一通百通,不是沒有道理的。對於學習新的知識並予以應用的信心,顯得更足了。
3) VHDL的設計關鍵是電路邏輯設計,而一個程序的關鍵是總體設計。對於硬體設計接觸不多的我們清楚這一點也許不無好處。
4)通過這個程序設計讓我學會一種新的語言,對數字系統結構也有了更進一步的了解和認識,對我以後的學習有很大的幫助。希望其他人在看再做類似設計時有所借鑒。
通過幾天的課程設計,我對資料庫軟體EDA技術、VHDL、等系列知識都有了一定的了解。使用EDA技術開發頁面的能力也有了很大提高。
在整個設計過程中,有很多人對任務的完成給予了重要的支持和幫助。感謝老師給了我本次設計的機會並提供指導;感謝許多同學在我此課程設計遇到問題時給我的幫助使我能夠順利地進行設計的工作;論壇中有很多認識不認識的朋友也都為我的設計提出了很寶貴的建議,同樣在這里感謝他們。

參考文獻
《VHDL與數字電路設計》.盧毅,賴傑.科學出版社
《VHDL語言100例詳解——北京理工大學ASIC研究所》.北京理工大學ASIC研究所.清華大學出版社
《VHDL程序設計》(第二版). 曾繁泰等.清華大學出版社
《VHDL入門與應用》陳雪松,滕立中.人民郵電出版社
《VHDL簡明教程》.王小軍.清華大學出版社

⑥ 請問用什麼通用編程器能讀出cpld的pof文件我急用啊,請指教了,謝謝

用jed4w可反編譯pof文件為ABEL語言,其它的如verilog目前還不能反編譯

⑦ .jed文件怎麼下到CPLD里

.jed文件可以通過JTAG編程線直接下載到器件中,這里會用到開發軟體的編程功能(programmer),具體情況隨軟體版本有所差異。你最好給出器件型號和開發軟體版本,這樣提問針對性更強,比較容易解決。

⑧ Altera的CPLD EPM240T中的程序可以被讀出來

好像不行的。。如果能讀出來的話那不就泄密了么!就和軟體行業的反編譯一樣了啊,不被允許的。

閱讀全文

與cpldjed反編譯相關的資料

熱點內容
域外伺服器是什麼意思 瀏覽:635
大眾點評伺服器怎麼老卡頓 瀏覽:556
javavector與list的區別 瀏覽:313
java初始化類數組 瀏覽:302
java字元串轉換成json對象 瀏覽:647
android非阻塞socket 瀏覽:358
編譯系統概念 瀏覽:450
天眼通app能做什麼 瀏覽:555
魅族手機怎麼加密圖庫 瀏覽:8
rpa編譯器 瀏覽:570
車載雲伺服器記錄 瀏覽:738
四川金星壓縮機製造有限公司 瀏覽:53
移動平台圖片壓縮演算法 瀏覽:35
銀行項目java 瀏覽:569
怎樣將pdf轉換為ppt 瀏覽:595
純凈伺服器怎麼開服 瀏覽:286
比澤爾壓縮機如何換油 瀏覽:818
編譯鏈接如何生成exe 瀏覽:74
jre編譯運行環境 瀏覽:271
怎麼解壓鏡像系統 瀏覽:190