本書是基于課堂教學和全國大學生電子設計競賽的特點和需要進行編寫的。通過項目簡明而系統地介紹了FPGA/CPLD應用技術的相關內容。第一篇包括FPGA/CPLD的基本結構、開發流程及開發環境,硬件描述語言(VHDL)的基本知識。第二篇側重應用開發,共分為9個項目,依據CDIO理念,把相關知識融入項目中學習。項目4~項目9為常用邏輯單元電路,訓練讀者基本的VHDL程序設計能力,掌握VHDL程序結構和VHDL并行語句與順序語句。項目10~項目12為綜合實用型項目,旨在培養讀者的VHDL程序設計能力,有助于讀者掌握VHDL層次化設計。 本書在取材和編排上力求理論聯系實際、由淺入深、循序漸進。每個項目后面附有小結和習題,便于讀者學習和教學使用。
本書內容精練、實踐性和針對性強、實例豐富,既可作為電子信息類專業學生參加電子設計競賽、技能大賽的培訓教材,也可作為高等專科和職業院校電子類專業學生的教材與參考書。
EDA(電子設計自動化)技術,是以可編程邏輯器件為設計載體、以硬件描述語言為系統邏輯描述的主要表達方式,以計算機為工作平臺,以EDA工具軟件為開發環境,自動完成電子系統設計的全過程。EDA技術已經發展成為電子系統設計者完成電子系統設計的重要工具。
本教材適用于高職高專電類專業和本科非電子信息類專業。全書分為兩篇,第一篇介紹FPGA/CPLD的基礎知識,共分為3個項目。分別講解了FPGA/CPLD的基本結構、VHDL語言的基本知識和FPGA/CPLD的開發環境。基礎知識以“必需、夠用”為原則。第二篇側重應用開發,共分為9個項目,依據CDIO理念,把相關知識融入項目中學習。所選項目難度由易到難,項目4~項目9為小型簡單項目,訓練學生基本的VHDL程序設計能力,掌握VHDL程序結構和VHDL并行語句與順序語句。項目10~項目12為綜合實用型項目,訓練學生復雜VHDL程序設計能力,掌握VHDL層次化設計,綜合項目基本覆蓋課程的主要內容。通過本課程的學習,學生能夠熟練使用EDA開發工具,具備初步的VHDL程序設計能力,能夠利用FPGA/CPLD器件完成電子產品的開發。同時,作為現代企業所需要的高技能人才的社會能力,也能夠通過該門課程的學習得以提升。
本教材的主要特色有以下幾點。
(1) 體現基于CDIO的項目化教學的工程教育理念。以項目為主線讓學生在做項目的過程中學習必要的專業基礎知識,基礎知識以“必需、夠用”為原則,加強學生學習能力的培養,注重培養學生應用所學知識解決實際問題的能力,指導學生循序漸進地完成好一個個精選的、適合于多數學生的工程項目,使學生在做項目的過程中提高項目構思、設計、實現、運行的能力,然后再運用這種能力去解決新的工程實際問題,從而提高適應工作環境和技術發展變化的能力。
(2) 行業企業工程技術人員參與教材編寫。聘請行業企業工程技術人員參與教材編寫,可得到更多的先進技術的支持,使教材內容更具有新意; 獲得更多的來源于工程實際的案例資源; 把他們豐富的工程實踐經驗引入教材,使教材更貼近于行業企業的應用實際。
本書緊密結合高職高專學生的實際,選材精煉、突出實踐、講究實用,不僅可以作為高職高專類學生的教材,還可作為高職高專學生全國電子設計競賽的培訓教材,對電子信息類專業的工程技術人員也有較高的參考價值。
山東凱文科技職業學院韓曉敏老師擔任本教材主編,負責全書的統稿工作,并編寫了項目4~項目7; 山東省計算中心助理研究員張鵬擔任副主編,編寫了項目8~項目12及3.3節; 江蘇理工學院劉海妹老師擔任副主編,編寫了項目1、項目2、3.1、3.2節; 山東奧太電氣有限公司張洪亮工程師擔任參編,在項目的程序調試和硬件制作方面做了大量工作。
山東大學張有志教授、張平慧教授為本書的完成提供了大量支持、幫助,在此表示感謝。
由于信息技術發展迅速,其應用領域不斷擴展,限于編者的常識水平和知識范圍,錯誤之處在所難免,敬請廣大讀者批評指正。
編者2014.4
第一篇基 礎 知 識
項目1了解FPGA/CPLD
1.1FPGA/CPLD的基本結構
1.1.1FPGA的基本結構
1.1.2CPLD的基本結構
1.1.3FPGA和CPLD的比較
1.2Altera的FPGA/CPLD
1.2.1Altera的FPGA
1.2.2Altera的CPLD
1.2.3FPGA/CPLD選型
1.3FPGA/CPLD的開發流程
小結
課后練習
項目2學習VHDL語言的基本知識
2.1VHDL程序結構
2.1.1簡單VHDL程序舉例
2.1.2實體
2.1.3結構體
2.1.4庫和程序包
2.1.5配置
2.2VHDL的語言要素
2.2.1語法規則
2.2.2標識符
2.2.3數據類型
2.2.4運算操作符
2.3VHDL基本語句
2.3.1順序語句
2.3.2并行語句
2.3.3子程序
小結
課后練習
項目3熟悉FPGA/CPLD的開發環境
3.1常用開發軟件
3.2Quartus Ⅱ的使用
3.2.1Quartus Ⅱ的用戶界面
3.2.2設計輸入
3.2.3設計編譯
3.2.4設計仿真
3.2.5器件編程
3.3DE2開發板
3.3.1DE2開發板簡介
3.3.2DE2開發板的使用
小結
課后練習
第二篇應 用 開 發
項目4門電路設計
4.1基本邏輯門的設計
4.1.1設計要求
4.1.2構思——方案選擇
4.1.3設計——VHDL源程序設計
4.1.4實現——編輯、編譯
4.1.5運行——仿真、編程測試
4.2三態門的設計
4.2.1設計要求
4.2.2構思——方案選擇
4.2.3設計——VHDL源程序設計
4.2.4實現——編輯、編譯
4.2.5運行——仿真、編程測試
小結
課后習題
項目5編碼器設計
5.1普通編碼器的設計
5.1.1設計要求
5.1.2構思——方案選擇
5.1.3設計——VHDL源程序設計
5.1.4實現——編輯、編譯
5.1.5運行——仿真、編程測試
5.2優先編碼器的設計
5.2.1設計要求
5.2.2構思——方案選擇
5.2.3設計——VHDL源程序設計
5.2.4實現——編輯、編譯
5.2.5運行——仿真、編程測試及結果分析
小結
課后練習
項目6譯碼器設計
6.13?8譯碼器的設計
6.1.1設計要求
6.1.2構思——方案選擇
6.1.3設計——VHDL源程序設計
6.1.4實現——編輯、編譯
6.1.5運行——仿真、編程測試
6.2二?十進制BCD譯碼器的設計
6.2.1設計要求
6.2.2構思——方案選擇
6.2.3設計——VHDL源程序設計
6.2.4實現——編輯、編譯
6.2.5運行——仿真、編程測試
小結
課后練習
項目7觸發器設計
7.1同步RS觸發器的設計
7.1.1設計要求
7.1.2構思——方案選擇
7.1.3設計——VHDL源程序設計
7.1.4實現——編輯、編譯
7.1.5運行——仿真、編程測試
7.2同步復位D觸發器的設計
7.2.1設計要求
7.2.2構思——方案選擇
7.2.3設計——VHDL源程序設計
7.2.4實現——編輯、編譯
7.2.5運行——仿真、編程測試
小結
課后練習
項目8計數器設計
8.1同步計數器設計
8.1.1設計要求
8.1.2預備知識
8.1.3構思——方案選擇
8.1.4設計——編寫VHDL源程序
8.1.5實現——編譯與仿真
8.1.6運行——編程測試與結果分析
8.2異步計數器設計
8.2.1設計要求
8.2.2預備知識
8.2.3構思——方案選擇
8.2.4設計——編寫VHDL源程序
8.2.5實現——編譯與仿真
8.2.6運行——編程測試與結果分析
小結
課后練習
項目9分頻器設計
9.1占空比與分頻系數可調的分頻器設計
9.1.1設計要求
9.1.2預備知識
9.1.3構思——方案選擇
9.1.4設計——編寫VHDL源程序
9.1.5實現——編譯與仿真
9.1.6運行——編程測試與結果分析
9.2占空比為50%的奇數分頻器設計
9.2.1設計要求
9.2.2構思——提出設計方案
9.2.3設計——VHDL源程序設計
9.2.4實現——編譯與仿真
9.2.5運行——編程測試與結果分析
小結
課后練習
項目10電梯控制器
10.1設計要求
10.2必備知識
10.2.1狀態機的基本概念
10.2.2狀態機的VHDL設計
10.3項目實施
10.3.1構思——總體方案設計
10.3.2設計——編寫各模塊的VHDL源程序
10.3.3實現——編譯與仿真
10.3.4運行——編程測試與結果分析
小結
項目11交通燈控制器
11.1設計要求
11.2構思——總體方案確定
11.3設計——VHDL編程
11.3.1分頻模塊設計
11.3.2控制模塊設計
11.3.3顯示模塊設計
11.3.4頂層設計
11.4實現——硬件編程
11.5運行——測試結果分析
小結
項目12簡單微處理器設計與實現
12.1設計要求
12.2預備知識
12.2.1微處理器的硬件系統
12.2.2微處理器的指令系統
12.3構思——設計思路與方案
12.4設計——VHDL源程序設計
12.5實現——編譯與仿真
12.6運行——編程測試與結果分析
小結
參考文獻