《普通高等教育“十二五”規劃教材·工程創新型電子信息類精品教材:EDA技術及其創新實踐(Verilog HDL版)》的教學目標有二,特色有一:掌握EDA技術基礎理論及其工程實踐基本技能、基于EDA的平臺及《普通高等教育“十二五”規劃教材·工程創新型電子信息類精品教材:EDA技術及其創新實踐(Verilog HDL版)》給出的大量實踐項目促進自主創新能力的有效提高;特色是速成。為此,全書做了精心的編排,在第1章中就將EDA技術的總體概況和盤托出,甚至包括EDA技術相關的軟硬件基本特點、結構和原理;在第2、第4和第6章中分別介紹了基于Verilog的組合電路設計、時序電路設計,和HDL設計技巧與優化技術的深入;所用的教學方法都是基于流行于國際的以電路模塊為先導的情景式教學模型。為能快速進入實踐操練階段,在第3、第5和第7章中分別穿插了EDA軟件應用、邏輯仿真、FPGA硬件驗證及開發、LPM宏模塊應用,以及與工程實踐更靠攏的狀態機設計技術等內容;使得從第3章開始,讀者就有機會不斷地將書本知識及時有效地融入實驗驗證、技能提高和經驗積累。在前期知識鋪墊的基礎上,第8章給出的16位實用CPU設計技術及CPU創新設計競賽實踐項目,將使讀者在基礎理論水平,工程實踐和自主創新能力等方面有較大的提高;第9章是Verilog語法補充。從第3章至第9章,每一章后都安排了大量的習題、實驗以及與工程實際緊密聯系的創新實踐項目。全書內容新穎,結構緊湊、特色鮮明,成效也一定會突出。
《普通高等教育“十二五”規劃教材·工程創新型電子信息類精品教材:EDA技術及其創新實踐(Verilog HDL版)》可作為高等院校電子工程、通信、工業自動化、計算機應用技術、電子對抗、儀器儀表、數字信號或圖像處理等學科的本科生或研究生的電子設計、EDA技術和VerilogHDL硬件描述語言課程的教材及實驗指導書,同時也可作為相關專業技術人員的自學參考書。《普通高等教育“十二五”規劃教材·工程創新型電子信息類精品教材:EDA技術及其創新實踐(Verilog HDL版)》提供免費課堂教學與實驗課件以及硬件演示程序。
“寓教于樂”可謂初級教育的上乘境界。而在高等教育中,尤其是工科類高等教育,如若能將培養學生的自主創新能力寓于知識傳授之中,應是“寓教于樂”的升華,是高等教育的上乘境界,是培養卓越工程師的捷徑,此可謂“寓悟于道”,即悟道寓于布道。此概因創新型人才的培養已成當今教育的熱點話題和重大命題。創新型人才遠比知識型人才更能激起社會的渴求,顯然,前者之“才”乃賢才、將才、帥才之才,自古求之者眾;而后者之“才”,實乃“材”耳,皆木材石材鋼材之材,多之不濫,少之不缺。
在高校的知識傳授中,能將培養自主創新能力寓于其中,有三個問題需要解決:什么是自主創新能力?什么樣的知識體系最適合培養自主創新能力?如何來做?
在工程領域,創新與自主創新是有巨大區別的。前者指能體現價值、知識和智慧的有別于他人的作品或成就;后者則在前者定義的基礎上增加更大的,乃至排他的全部社會或經濟價值的擁有性。比如某財務軟件或股票軟件,不能否認是作者的創新成果并擁有其知識產權。然而我們永遠不可能聽說某軟件擁有完全的自主知識產權,這是因為這套軟件的功能實現必須在別人的計算機系統上完成,而在銷售此軟件的同時也附帶幫助別人在賣計算機。
然而大到高鐵技術,銀河大型機,ARM處理器,小到一片電飯煲的控制芯片,其作者就能自豪地聲稱他們擁有完全的自主知識產權,這是因為設計者的智慧和創造已經滲透于包括軟件和硬件的全部設計和整個結構中,他們擁有了全部的自主權及排他的利益權;而這又反過來成就了這些創造者,他們正是所謂的自主創新型人才。顯然,擁有自主創新能力的人才永遠是一個企業的生存之本。推而廣之,國家的可持續發展有賴于大量的自主創新型人才,而創新型國家也必須由他們來支撐。
具體到信息工程教學領域,不難發現不是任何一門課程都適合于“寓悟于道”的。那些被一兩項定律圈定的課程(如牛頓定律之于力學,麥克斯韋方程之于電磁學)、結論先于探索的課程(如證明題之于數學)、軟件設計遠勝硬件設計的課程(如C、DSP、微機原理等),雖涉創新卻難企“自主”的課程(如單片機、嵌入式系統等),都難以同步孕育創造精神。顯然能兼而有之的“寓悟于道”的課程非EDA莫屬。正是EDA技術,將無序化作標準,手工躍為自動,突破軟硬件設計的屏障,使軟件語言與硬件語言相得益彰,令時序仿真與系統實現互為印證,更兼溶多分支學科課程于一爐。
不可否認,在充滿自主創新精神的EDA技術教學領域,從來就不相信什么習題集,也永遠沒有標準答案,它提倡個性、鼓勵想象、適應變革、崇尚實踐!
將培養學生的自主創新能力寓于EDA技術教學之中便是本教材的唯一定位。
正如本書內容簡介中所言,本教材的教學目標有二,特色有一:使讀者能掌握EDA技術基礎理論及其工程實踐基本技能,同時基于EDA的平臺及本書給出的大量實踐項目促進自主創新能力的有效提高;而特色是速成。為了實現這些目標,全書各章的精心編排最能體現作者的用心良苦:
第1章主要以導論的方式從面上介紹了EDA技術的總體概況,其中還包括EDA軟件的功能結構以及各類硬件平臺的特點,且較詳細介紹了大規模PLD的結構和原理。全景式俯瞰和細節性端詳相結合,為讀者快速切入正題做了必要的鋪墊。
第2、第4和第6章的主干內容分別是基于Verilog的組合電路設計、時序電路設計,和Verilog設計深入及優化技術。此三章的展開有明顯的節奏性:由淺入深,由點及面,由語言表述方法延伸至設計技巧和優化技術。特別是在講授方法上采用了以經典電路模塊為先導的所謂情景式教學模型。即脫離了傳統的HDL教學模式,而以讀者十分熟悉的電路模塊(如半加器等),引出Verilog的表述形式和方法,進而解釋相關的語句語法。以此層層漸進,卻步步為營。以大多數讀者自然與習慣的思維方式,徐徐道來。
經驗表明,面對這貌似繁雜的內容,卻能使教學二者倍感輕松,這自然使得課堂的課時數大為縮減,速成遂見平常之事。每章的末尾還精心配制了大量習題。
為了加快學習節奏,提高學習效率,鞏固學習成果,使讀者有機會不斷地將前一章的知識及時有效地融入實驗驗證、技能提高和經驗積累,特別是將自主創新能力的培育有機地融入理論學習與工程實踐之中,作者在第3、第5和第7章(也包括第4章的后兩節)中分別穿插了EDA軟件應用、邏輯仿真、FPGA硬件驗證及開發、LPM宏模塊應用,以及與工程實踐更靠攏的狀態機設計實用技術等內容。
例如在第3章中,以第2章中出現的某個經典實例對應的硬件驗證為目標,詳細介紹了QuartusII的使用方法、仿真技術、FPGA硬件驗證流程以及電路原理圖編輯與設計方法,使得讀者有能力從硬件驗證與開發的最貼近工程實際的角度回過頭去重新審視剛學過的第2章的全部內容。同時在此章的末尾安排了多個有較強針對性的實驗。
第5章主要介紹了EDA技術中最實用的內容之一,即宏功能模塊的使用技術。期間同樣穿插了極有針對性的以情景方式給出的Verilog語句語法的說明,以及基于特定EDA設計平臺的各類實用的屬性使用知識。其實這種直接面對工程技術的屬性使用知識一直貫穿于全書的各相關章節,這些內容的介紹在其他同類教材中并不多見。
第5章的末尾同樣安排了許多實驗和創新實踐項目。事實上,從第3章至第9章,每一章后都安排了大量的實驗以及與工程實際緊密聯系的創新實踐項目。絕大多數情況中,每一個實驗或項目除給出其詳細的實驗目的、實驗原理和實驗報告要求外,都含有2至5個或更多的實驗任務子項目。它們通常分為:第一層次的任務是與該章節或以前章節中某具體內容相關的驗證性實驗,并通常提供詳細的被驗證的設計源程序、實驗方法或演示實例。對此,學生只需將提供的設計程序輸入計算機,并按要求進行編譯仿真,在實驗系統上實現即可。這使學生有一個初步的感性認識,也同步提高了實驗的效率;第二層次的任務是要求在上一實驗基礎上做一些改進和發揮;第三個層次的實驗通常是提出自主設計的要求和任務;第四、第五個層次(或后期的一些實踐項目)則在給出一些提示的情況下,提出自主創新性設計的要求,或大致的方向,以及要求查閱相關資料。因此,授課教師可以根據學時數、教學實驗的要求,以及不同的學習對象,布置不同層次含不同任務的實驗項目。
第7章從實際電路系統的控制和工程實踐的角度詳細闡述了基于Verilog的有限狀態機設計技術,包括以不同角度分類的狀態機的設計方法、狀態機的編碼方式、性能比較、毛刺處理、容錯技術探討、屬性設置等。毫無疑問,就其內容的完整性,實用性和能動創新的啟發性而言,本教材可謂獨樹一幟。特別是末尾精心編排的大量的實踐項目和多層次的實驗任務實是希望讀者能淺心躬為,而后融會貫通。
在前期知識鋪墊的基礎上,第8章適時給出的16位實用CPU設計技術及CPU創新設計實踐項目,將使讀者在基礎理論水平、工程實踐和自主創新能力等方面有較大的提高;這些內容,同類教材極少涉及,但其卻在工程設計,大學生電子設計競賽,產品開發上極為重要和常用。由于更具綜合性和更為實用,又富于創新精神的激發,該章末尾安排了對應內容的CPU創新設計競賽項目。
第9章是Verilog語法補充。但也在本章末尾安排了數量不少的實驗設計項目。相比于之前的實驗,此章的項目綜合性更強,更加貼近工程實際,所以需要更加全面的EDA技術知識、更豐富的實踐經驗和更寬的電子工程知識面。它們既是對前期知識與實踐的總結,也蘊含了更多的創新要求。這一切顯然對學習者有了更多的挑戰。
對于本教材涉及的硬件描述語言是VerilogHDL(另有本出版社出版的同名同篇幅的VHDL版本的姐妹篇教材)。VerilogHDL具有易學易用和享有ASIC設計領域的主導地位等諸多優勢,在全球范圍內其用戶覆蓋率一直處于領先和上升趨勢;統計資料表明VerilogHDL現已超過80%的行業覆蓋率!在美國和日本的比率則更高,已占絕對優勢。由此勢必導致我國VerilogHDL工程師和相關就業領域人才需求的不斷增加。
本教材的教學僅就授課的課時數而言是十分靈活的,可長可短,視具體的專業特點、課程定位及學習者的前期教育力度等因素而定,大致在10~30學時之間選擇。由于本書的特色和定位,加之EDA技術課程的特質,具體教學可以是粗放型的,其中多數內容,包括實踐項目都可直接放手于學生。更多地讓他們自己去查閱資料、提出問題、解決問題,乃至創新與創造;而授課教師,甚至實驗教師只需做一個啟蒙者、引導者、鼓勵者和學生成果的檢驗者和評判者。授課的過程多數只需點到為止,大可不必拘泥細節,面面俱到。但有一個原則,即實驗學時數應多多益善。然而事實上,任何一門課程的學時數總是有限的,為了有效倍增學生的實踐和自主設計的時間,倒是可以借鑒清華大學的一項教改措施,即其電子系本科生從一入學就人手獲得一塊AlteraFPGA實驗開發板,可從本科一年級一直用到研究生畢業。這是因為EDA技術本身就是一個可把全部實驗和設計帶回家的課程。我校對于這門課也基本采用了這一措施:每個上EDA課的同學都可借出一套EDA實驗板,使他們能利用自己的計算機在課余時間完成自主設計項目,強化學習效果。實踐表明,這種安排使得實驗課時得到有效延長,教學成效自然明顯。
還有一個問題有必要在此探討,就是在前面曾提到的,本教材的定位之說。事實上,自主創新能力的提高不可能一蹴而就,其能力的培養更是一個重大命題,絕非一朝一夕之事。多年的教學實踐告訴我們,針對這一命題的教改必須從兩方面入手,一是教學內容,二是設課時間;二者互為聯系,不可偏廢。
前者主要指建立一個內在相關性好、設課時間靈活,且易于“寓悟于道”的課程體系。然后在具體的教學實踐中自覺地將自主創新能力的培養溶入這一課程體系之中。
后者主要指在課程安排的時段上,將這一體系的課程盡可能地提前。這一舉措是成功的關鍵,因為我們不可能想象到了本科三、四年級才去關注能力的培養并期待奇跡發生,更不可能指望一兩門課程就能解決問題。尤其是以卓越工程師為培養目標的工科高等教育,自主創新能
第1章 EDA技術概述
1.1 EDA技術
1.2 EDA技術應用對象
1.3 硬件描述語言Verilog HDL
1.4 EDA技術的優勢
1.5 面向FPGA的EDA開發流程
1.6 可編程邏輯器件
1.6.1 PLD的分類
1.6.2 PROM可編程原理
1.6.3 GAL
1.7 CPLD的結構與可編程原理
1.8 FPGA的結構與工作原理
1.8.1 查找表邏輯結構
1.8.2 Cyclone Ⅲ 系列器件的結構原理
1.9 硬件測試技術
1.10 FPGA/CPLD產品概述
1.10.1 Lattice公司的PLD器件
1.10.2 Xilinx公司的PLD器件
1.10.3 Altera公司的PLD器件
1.11 編程與配置
1.12 Quartus Ⅱ
1.13 EDA的發展趨勢
思考題
第2章 組合電路Verilog設計
2.1 半加器電路的Verilog描述
2.1.1 半加器的數據流建模描述方式
2.1.2 半加器的門級原語和UDP結構建模描述方式
2.2 多路選擇器不同形式的Verilog描述
2.2.1 4選1多路選擇器及其順序語句表述方式
2.2.2 4選1多路選擇器及其并行語句表述方式
2.2.3 4選1多路選擇器及其條件操作語句表述方式
2.2.4 4選1多路選擇器及其條件語句表述方式
2.2.5 4選1多路選擇器及其利用UDP元件的結構表述方式
2.3 Verilog加法器設計
2.3.1 全加器設計及例化語句應用
2.3.2 8位加法器設計及算術操作符應用
2.3.3 BCD碼加法器設計
2.4 組合邏輯乘法器設計
2.4.1 參數定義關鍵詞parameter和localparam
2.4.2 整數型寄存器類型定義
2.4.3 for語句用法
2.4.4 移位操作符應用法
2.4.5 兩則乘法器設計示例
2.4.6 repeat語句用法
2.4.7 while語句用法
2.4.8 Verilog循環語句的特點
2.4.9 parameter的參數傳遞功能
習題
第3章 Quartus Ⅱ應用向導
3.1 Quartus Ⅱ應用一般流程
3.1.1 輸入設計程序
3.1.2 創建本項目設計工程
3.1.3 設置約束項目
3.1.4 全程編譯與邏輯綜合
3.1.5 測試設計項目
3.1.6 RTL圖觀察器應用
3.2 硬件功能驗證及FPGA開發
3.2.1 引腳鎖定
3.2.2 編譯文件下載
3.2.3 JTAG間接編程模式
3.2.4 USB-Blaster編程配置器件使用方法
3.3 電路原理圖設計流程
3.4 利用屬性表述實現引腳鎖定
3.5 keep屬性應用
3.6 SignalProbe使用方法
3.7 宏模塊邏輯功能查詢
習題
EDA實驗
3-1 多路選擇器設計實驗
3-2 8位加法器設計實驗
3-3 十六進制7段數碼顯示譯碼器設計
第4章 時序電路Verilog設計
4.1 基本時序元件的Verilog表述
4.1.1 基本D觸發器單元及其Verilog表述
4.1.2 用UDP表述D觸發器
4.1.3 含異步復位和時鐘使能的D觸發器及其Verilog表述
4.1.4 含同步復位控制邏輯的D觸發器及其Verilog表述
4.1.5 基本鎖存器及其Verilog表述
4.1.6 含清0控制的鎖存器及其Verilog表述
4.1.7 異步時序電路的Verilog表述特點
4.1.8 時鐘過程表述的特點和規律
4.2 二進制計數器及其Verilog表述
4.2.1 簡單加法計數器及其Verilog表述
4.2.2 實用加法計數器設計
4.3 移位寄存器的Verilog表述與設計
4.3.1 含同步預置功能的移位寄存器設計
4.3.2 模式可控的移位寄存器設計
4.3.3 使用移位操作符設計移位寄存器
4.4 時序電路硬件設計與仿真示例
4.5 SignalTap Ⅱ的使用方法
習題
EDA實驗
4-1 數字計數器設計實驗
4-2 十六進制7段數碼顯示譯碼器設計
4-3 數碼掃描顯示電路設計
4-4 模可控計數器設計
4-5 移位寄存器設計
4-6 串行靜態顯示控制電路設計
4-7 應用宏模塊設計頻率計
第5章 邏輯宏功能模塊的應用
5.1 計數器宏模塊調用
5.1.1 計數器模塊文本的調用
5.1.2 計數器模塊程序與參數傳遞語句
5.1.3 對計數器進行仿真測試
5.2 利用屬性設置控制乘法器的構建
5.3 RAM宏模塊的使用方法
5.3.1 存儲器初始化文件
5.3.2 RAM宏模塊的設置和調用
5.3.3 仿真測試RAM宏模塊
5.3.4 存儲器的Verilog代碼描述及初始化文件調用
5.3.5 存儲器設計的結構控制
5.4 LPM存儲器在系統讀寫方法
5.5 嵌入式鎖相環使用方法
5.6 信號在系統測試與控制編輯器用法
習題
EDA實驗與創新實踐
5-1 查表式硬件運算器設計
5-2 正弦信號發生器設計
5-3 DDS正弦信號發生器設計
5-4 移相信號發生器設計
第6章 EDA技術深入
6.1 過程中的兩類賦值語句
6.1.1 未指定延時的阻塞式賦值語句
6.1.2 指定了延時的阻塞式賦值
6.1.3 未指定延時的非阻塞式賦值
6.1.4 指定了延時的非阻塞式賦值
6.1.5 阻塞與非阻塞式賦值特點的深入討論
6.1.6 不同賦值方式的信號賦初值導致不同綜合結果
6.2 過程語句使用深入探討
6.2.1 過程語句應用總結
6.2.2 深入認識不完整條件語句與時序電路的關系
6.3 更完整地認識if語句
6.3.1 if語句的一般表述形式
6.3.2 關注if語句中的條件指示
6.4 三態與雙向端口設計
6.4.1 三態控制電路設計
6.4.2 雙向端口設計
6.4.3 三態總線控制電路設計
6.5 系統設計優化
6.5.1 資源優化
6.5.2 速度優化
習題
EDA實驗與創新實踐
6-1 硬件消抖動電路設計
6-2 4×4陣列鍵盤鍵信號檢測電路設計
6-3 直流電機綜合測控系統設計
6-4 VGA彩條信號顯示控制電路設計
第7章 有限狀態機設計技術
7.1 狀態機的一般形式
7.1.1 狀態機的基本結構
7.1.2 初始控制與表述
7.2 Moore型有限狀態機
7.2.1 實用狀態機設計示例
7.2.2 序列檢測狀態機設計
7.3 Mealy型狀態機設計
7.4 不同編碼類型狀態機
7.4.1 直接輸出型編碼
7.4.2 宏定義語句在狀態編碼定義中的用法
7.4.3 宏定義命令語句
7.4.4 順序編碼型狀態機編碼
7.4.5 一位熱碼編碼
7.4.6 狀態編碼設置
7.5 安全狀態機設計
習題
EDA實驗與創新實踐
7-1 序列檢測器設計
7-2 ADC采樣控制電路設計
7-3 數據采集邏輯控制模塊設計
7-4 五功能智能邏輯筆設計
7-5 VGA簡單圖像顯示控制模塊設計
第8章 16位實用CPU創新設計
8.1 KX9016的結構與特色
8.2 KX9016基本硬件系統設計
8.2.1 單步節拍發生模塊
8.2.2 算術邏輯單元
8.2.3 比較器COMP
8.2.4 基本寄存器與寄存器陣列組
8.2.5 移位器
8.2.6 程序與數據存儲器
8.3 KX9016v1指令系統設計
8.3.1 指令格式
8.3.2 指令操作碼
8.3.3 軟件設計實例
8.3.4 KX9016 v1控制器設計
8.3.5 指令設計實例詳解
8.4 KX9016的時序仿真與硬件測試
8.4.1 時序仿真與指令執行波形分析
8.4.2 CPU工作情況的硬件測試
8.5 KX9016應用程序設計實例和系統優化
8.5.1 乘法算法及其硬件實現
8.5.2 除法算法及其硬件實現
8.5.3 KX9016v1的硬件系統優化
習題
EDA