本書根據課堂教學和實驗操作的要求,以提高實際工程設計能力為目的,深入淺出地對EDA技術、Verilog HDL硬件描述語言、FPGA開發應用及相關知識做了系統和完整的介紹,使讀者通過本書的學習并完成推薦的實驗,能初步了解和掌握EDA的基本內容及實用技術。
本書包括EDA的基本知識、常用EDA工具的使用方法和目標器件的結構原理、以向導形式和實例為主的方法介紹的多種不同的設計輸入方法、對Verilog的設計優化以及基于EDA技術的典型設計項目。各章都安排了習題或針對性較強的實驗與設計。書中列舉的大部分Verilog設計實例和實驗示例實現的EDA工具平臺是Quartus II,硬件平臺是Cyclone III系列FPGA,并在EDA實驗系統上通過了硬件測試。
本書可作為高等院校電子工程、通信、工業自動化、計算機應用技術、電子對抗、儀器儀表、數字信號或圖像處理等學科的本科生或研究生的電子設計、EDA技術課程和Verilog HDL硬件描述語言的教材及實驗指導書,同時也可作為相關專業技術人員的自學參考書。
第1章 EDA技術概述
1.1 EDA技術及其發展
1.2 EDA技術實現目標
1.3 硬件描述語言Verilog HDL
1.4 其他常用HDL
1.5 HDL綜合
1.6 自頂向下的設計技術
1.7 EDA技術的優勢
1.8 EDA設計流程
1.8.1 設計輸入(原理圖/HDL文本編輯)
1.8.2 綜合
1.8.3 適配
1.8.4 時序仿真與功能仿真
1.8.5 編程下載
1.8.6 硬件測試 第1章 EDA技術概述
1.1 EDA技術及其發展
1.2 EDA技術實現目標
1.3 硬件描述語言Verilog HDL
1.4 其他常用HDL
1.5 HDL綜合
1.6 自頂向下的設計技術
1.7 EDA技術的優勢
1.8 EDA設計流程
1.8.1 設計輸入(原理圖/HDL文本編輯)
1.8.2 綜合
1.8.3 適配
1.8.4 時序仿真與功能仿真
1.8.5 編程下載
1.8.6 硬件測試
1.9 ASIC及其設計流程
1.9.1 ASIC設計簡介
1.9.2 ASIC設計一般流程簡述
1.10 常用EDA工具
1.10.1 設計輸入編輯器
1.10.2 HDL綜合器
1.10.3 仿真器
1.10.4 適配器
1.10.5 下載器
1.11 Quartus II概述
1.12 IP核
1.13 EDA技術發展趨勢管窺
習題
第2章 FPGA與CPLD的結構原理
2.1 PLD概述
2.1.1 PLD的發展歷程
2.1.2 PLD分類
2.2 簡單PLD結構原理
2.2.1 邏輯元件符號表示
2.2.2 PROM結構原理
2.2.3 PLA結構原理
2.2.4 PAL結構原理
2.2.5 GAL結構原理
2.3 CPLD的結構原理
2.4 FPGA的結構原理
2.4.1 查找表邏輯結構
2.4.2 Cyclone III系列器件的結構原理
2.5 硬件測試
2.5.1 內部邏輯測試
2.5.2 JTAG邊界掃描
2.6 PLD產品概述
2.6.1 Altera公司的PLD器件
2.6.2 Lattice公司的PLD器件
2.6.3 Xilinx公司的PLD器件
2.6.4 Actel公司的PLD器件
2.6.5 Altera的FPGA配置方式
2.7 CPLD/FPGA的編程與配置
2.7.1 CPLD在系統編程
2.7.2 FPGA配置方式
2.7.3 FPGA專用配置器件
2.7.4 使用單片機配置FPGA
2.7.5 使用CPLD配置FPGA
習題
第3章 組合電路的Verilog設計
3.1 半加器電路的Verilog描述
3.2 多路選擇器的Verilog描述
3.2.1 4選1多路選擇器及case語句表述方式
3.2.2 4選1多路選擇器及assign語句表述方式
3.2.3 4選1多路選擇器及條件賦值語句表述方式
3.2.4 4選1多路選擇器及條件語句表述方式
3.3 Verilog加法器設計
3.3.1 全加器設計及例化語句應用
3.3.2 半加器的UDP結構建模描述方式
3.3.3 利用UDP元件設計多路選擇器
3.3.4 8位加法器設計及算術操作符應用
3.3.5 算術運算操作符
3.3.6 BCD碼加法器設計
3.4 組合邏輯乘法器設計
3.4.1 參數定義關鍵詞parameter和localparam
3.4.2 整數型寄存器類型定義
3.4.3 for語句用法
3.4.4 移位操作符及其用法
3.4.5 兩則乘法器設計示例
3.4.6 repeat語句用法
3.4.7 while語句用法
3.4.8 parameter的參數傳遞功能
3.5 RTL概念
習題
第4章 時序仿真與硬件實現
4.1 Verilog程序輸入與仿真測試
4.1.1 編輯和輸入設計文件
4.1.2 創建工程
4.1.3 全程編譯前約束項目設置
4.1.4 全程綜合與編譯
4.1.5 時序仿真
4.1.6 RTL圖觀察器應用
4.2 引腳鎖定與硬件測試
4.2.1 引腳鎖定
4.2.2 編譯文件下載
4.2.3 AS直接編程模式
4.2.4 JTAG間接編程模式
4.2.5 USB-Blaster驅動程序安裝方法
4.3 電路原理圖設計流程
4.4 利用屬性表述實現引腳鎖定
4.5 keep屬性應用
4.6 SignalProbe使用方法
4.7 宏模塊邏輯功能查詢
習題
實驗與設計
4-1 多路選擇器設計實驗
4-2 8位加法器設計實驗
4-3 8位硬件乘法器設計實驗
4-4 十六進制7段數碼顯示譯碼器設計
第5章 時序電路的Verilog設計
5.1 基本時序元件的Verilog表述
5.1.1 基本D觸發器及其Verilog表述
5.1.2 用UDP表述D觸發器
5.1.3 含異步復位和時鐘使能的D觸發器及其Verilog表述
5.1.4 含同步復位控制的D觸發器及其Verilog表述
5.1.5 基本鎖存器及其Verilog表述
5.1.6 含清0控制的鎖存器及其Verilog表述
5.1.7 異步時序電路的Verilog表述特點
5.1.8 時鐘過程表述的特點和規律
5.2 二進制計數器及其Verilog表述
5.2.1 簡單加法計數器及其Verilog表述
5.2.2 實用加法計數器設計
5.3 移位寄存器的Verilog表述與設計
5.3.1 含同步預置功能的移位寄存器設計
5.3.2 使用移位操作符設計移位寄存器
5.4 可預置型計數器設計
5.4.1 同步加載計數器
5.4.2 異步加載計數器
5.4.3 異步清0加載計數器
5.4.4 同步清0加載計數器
5.5 時序電路硬件設計與仿真示例
5.5.1 編輯電路、創建工程和仿真測試
5.5.2 FPGA硬件測試
習題
實驗與設計
5-1 應用宏模塊設計數字頻率計
5-2 計數器設計實驗
5-3 數碼掃描顯示電路設計
5-4 模可控計數器設計
5-5 串行靜態顯示控制電路設計
5-6 高速硬件除法器設計
5-7 不同類型的移位寄存器設計
第6章 Quartus II應用深入
6.1 SignalTap II的使用方法
6.2 編輯SignalTap II的觸發信號
6.3 Fitter Settings項設置
6.4 功能塊Chip Planner應用
6.4.1 Chip Planner應用流程說明
6.4.2 Chip Planner說明
6.5 Synplify的應用及接口方法
6.5.1 Synplify使用流程
6.5.2 Synplify Pro與Quartus II接口
習題
實驗與設計
6-1 VGA彩條信號顯示控制電路設計
6-2 移位相加型8位硬件乘法器設計
6-3 半整數與奇數分頻器設計
6-4 基于Verilog代碼的頻率計設計
第7章 LPM宏模塊的應用
7.1 計數器LPM宏模塊調用
7.1.1 計數器LPM模塊文本代碼的調用
7.1.2 LPM計數器代碼與參數傳遞語句
7.1.3 創建工程與仿真測試
7.2 利用屬性控制乘法器的構建
7.3 LPM_RAM宏模塊的設置與使用
7.3.1 初始化文件及其生成
7.3.2 以原理圖方式對LPM_RAM進行設置和調用
7.3.3 測試LPM_RAM
7.3.4 存儲器的Verilog代碼描述
7.3.5 存儲器設計的結構控制
7.4 LPM_ROM的定制和使用示例
7.4.1 LPM_ROM的調用
7.4.2 簡易正弦信號發生器設計
7.4.3 正弦信號發生器硬件實現和測試
7.5 在系統存儲器數據讀寫編輯器應用
7.6 LPM嵌入式鎖相環調用
7.7 In-System Sources and Probes Editor使用方法
7.8 數控振蕩器核使用方法
7.9 FIR核使用方法
7.10 DDS實現原理與應用
7.10.1 DDS原理
7.10.2 DDS信號發生器設計示例
習題
實驗與設計
7-1 查表式硬件運算器設計
7-2 正弦信號發生器設計
7-3 簡易邏輯分析儀設計
7-4 DDS正弦信號發生器設計
7-5 移相信號發生器設計
7-6 16位×16位高速硬件乘法器設計
第8章 Verilog設計深入
8.1 過程中的兩類賦值語句
8.1.1 未指定延時的阻塞式賦值語句
8.1.2 指定了延時的阻塞式賦值
8.1.3 未指定延時的非阻塞式賦值
8.1.4 指定了延時的非阻塞式賦值
8.1.5 深入認識阻塞與非阻塞式賦值的特點
8.1.6 不同的賦初值方式導致不同綜合結果的示例
8.2 過程語句歸納
8.2.1 過程語句應用總結
8.2.2 深入認識不完整條件語句與時序電路的關系
8.3 if語句歸納
8.3.1 if語句的一般表述形式
8.3.2 關注if語句中的條件指示
8.4 三態與雙向端口設計
8.4.1 三態控制電路設計
8.4.2 雙向端口設計
8.4.3 三態總線控制電路設計
習題
實驗與設計
8-1 硬件消抖動電路設計
8-2 4×4陣列鍵盤鍵信號檢測電路設計
8-3 直流電機綜合測控系統設計
8-4 VGA簡單圖像顯示控制模塊設計
8-5 樂曲硬件演奏電路設計
第9章 Verilog系統設計優化
9.1 資源優化
9.1.1 資源共享
9.1.2 邏輯優化
9.1.3 串行化
9.2 速度優化
9.2.1 流水線設計
9.2.2 寄存器配平
9.2.3 關鍵路徑法
9.2.4 乒乓操作法
9.2.5 加法樹法
習題
實驗與設計
9-1 采用流水線技術設計高速數字相關器
9-2 線性反饋移位寄存器設計
9-3 基于UART串口控制的模型電子琴設計
9-4 PS2鍵盤控制模型電子琴電路設計
9-5 AM幅度調制信號發生器設計
第10章 Verilog狀態機設計技術
10.1 Verilog狀態機的一般形式
10.1.1 狀態機的特點與優勢
10.1.2 狀態機的一般結構
10.1.3 初始控制與表述
10.2 Moore型狀態機及其設計
10.2.1 多過程結構狀態機
10.2.2 序列檢測器及其狀態機設計
10.3 Mealy型狀態機設計
10.4 狀態機圖形編輯設計
10.5 不同編碼類型狀態機
10.5.1 直接輸出型編碼
10.5.2 用宏定義語句定義狀態編碼
10.5.3 宏定義命令語句
10.5.4 順序編碼
10.5.5 一位熱碼編碼
10.5.6 狀態編碼設置
10.6 異步有限狀態機設計
10.7 安全狀態機設計
10.7.1 狀態導引法
10.7.2 狀態編碼監測法
10.7.3 借助EDA工具自動生成安全狀態機
10.8 硬件數字技術排除毛刺
10.8.1 延時方式去毛刺
10.8.2 邏輯方式去毛刺
習題
實驗與設計
10-1 序列檢測器設計
10-2 ADC采樣控制電路設計
10-3 數據采集模塊設計
10-4 五功能智能邏輯筆設計
第11章 16位實用CPU創新設計
11.1 KX9016的結構與特色
11.2 KX9016基本硬件系統設計
11.2.1 單步節拍發生模塊
11.2.2 ALU模塊
11.2.3 比較器模塊
11.2.4 基本寄存器與寄存器陣列組
11.2.5 移位器模塊
11.2.6 程序與數據存儲器模塊
11.3 KX9016v1指令系統設計
11.3.1 指令格式
11.3.2 指令操作碼
11.3.3 軟件程序設計實例
11.3.4 KX9016v1控制器設計
11.3.5 指令設計實例詳解
11.4 KX9016的時序仿真與硬件測試
11.4.1 時序仿真與指令執行波形分析
11.4.2 CPU工作情況的硬件測試
11.5 KX9016應用程序設計實例和系統優化
11.5.1 乘法算法及其硬件實現
11.5.2 KX9016v1的硬件系統優化
習題
實驗與設計
11-1 16位CPU驗證性設計綜合實驗
11-2 新指令設計及程序測試實驗
11-3 16位CPU的優化設計與創新
11-4 CPU創新設計競賽
第12章 MCU與FPGA片上系統開發
12.1 FPGA擴展MCU開發技術
12.1.1 FPGA擴展方案及其系統設計技術
12.1.2 基于單片機IP軟核的SOC設計方案
12.2 FPGA擴展方案設計實例
12.2.1 串進并出/并進串出雙向端口擴展模塊設計
12.2.2 8位四通道數據交換擴展模塊設計
12.2.3 存儲器讀寫的FPGA擴展模塊設計
12.2.4 四通道PWM信號發生器接口模塊設計
12.2.5 李薩如圖波形發生器擴展模塊設計
12.3 基于單片機核的FPGA片上系統設計
12.3.1 單片機擴展串進并出/并進串出模塊的SOC設計
12.3.2 擴展SRAM模塊的片上系統設計
12.3.3 擴展移相信號發生器模塊的片上系統設計
實驗與設計
12-1 單片機串口擴展FPGA片上系統設計
12-2 單片機數據交換FPGA擴展電路設計
12-3 擴展外部數據存儲器的FPGA單片系統設計
12-4 四通道PWM信號發生器及其MCU控制系統設計
12-5 移相信號發生器和掃頻信號發生器的片上系統設計
12-6 李薩如圖波形發生器的FPGA片上系統設計
12-7 脈寬/占空比/等精度頻率多功能測試儀設計
第13章 Verilog語句語法補充說明
13.1 Verilog文字規則
13.2 數據類型
13.2.1 net網線類型
13.2.2 register寄存器類型
13.2.3 存儲器類型
13.3 操作符
13.4 常用語句補充
13.4.1 initial過程語句使用示例
13.4.2 forever循環語句
13.4.3 編譯指示語句
13.4.4 任務和函數語句
13.5 用庫元件實現結構描述
習題
實驗與設計
13-1 SPWM脈寬調制控制系統設計
13-2 點陣型與字符型液晶顯示器驅動控制電路設計
13-3 數字彩色液晶顯示控制電路設計
13-4 串行ADC/DAC控制電路設計
第14章 Verilog Test Bench仿真
14.1 Verilog行為仿真流程
14.2 Verilog測試基準實例
14.3 Verilog Test Bench測試流程
14.4 Verilog系統任務和系統函數
14.4.1 系統任務和系統函數
14.4.2 預編譯語句
14.5 延時模型
14.5.1 #延時和門延時
14.5.2 延時說明塊
14.6 其他仿真語句
14.6.1 fork_join塊語句
14.6.2 wait語句
14.6.3 force語句和release語句
14.6.4 deassign語句
14.7 仿真激勵信號的產生
14.8 Verilog數字系統仿真
習題
實驗與設計
14-1 在ModelSim上對計數器的Test Bench進行仿真
14-2 在ModelSim上進行16位累加器設計仿真
附錄 EDA開發系統及相關軟硬件
參考文獻
在現代電子設計領域,Verilog HDL作為IEEE標準的兩大主流HDL之一,相比于VHDL,具有易學易用和享有ASIC設計領域的主導地位等諸多優勢,在全球范圍內其用戶覆蓋率一直處于上升趨勢;統計資料表明Verilog HDL現已超過80%的行業覆蓋率,例如美國使用Verilog HDL的工程師占HDL設計行業工程師的90%以上,并仍有上升趨勢。由此勢必導致我國Verilog HDL工程師和相關就業領域人才需求的不斷增加。本書以Verilog HDL作為基本硬件描述語言來介紹EDA技術。作為教科書,與科學出版社出版的《EDA技術實用教程——VHDL版》構成了姐妹篇。
為了適應EDA技術在高新技術行業就業中的需求和高校教學的要求,突出EDA技術的實用性,以及面向工程實際的特點和自主創新能力的培養,作者力圖將EDA技術最新的發展成果、現代電子設計最前沿的理論和技術、國際業界普遍接受和認可的EDA軟硬件開發平臺的實用方法,通過本書合理的綜合和萃取,奉獻給廣大讀者。
隨著EDA技術的發展和應用領域的擴大,EDA技術在電子信息、通信、自動控制及計算機應用等領域的重要性日益突出。同時隨著技術市場與人才市場對EDA技術需求的不斷提高,產品的市場效率和技術要求也必然會反映到教學和科研領域中來。以最近幾屆全國大學生電子設計競賽為例,涉及EDA技術的賽題從未缺席過。對諸如斯坦福大學、麻省理工學院等美國一些著名院校的電子與計算機實驗室建設情況的調研也表明,其EDA技術的教學與實踐的內容也十分密集,在其本科和研究生教學中有兩個明顯的特點:其一,各專業中EDA教學實驗課程的普及率和滲透率極高;其二,幾乎所有實驗項目都部分或全部地融入了EDA技術,其中包括數字電路、計算機組成與設計、計算機接口技術、數字通信技術、嵌入式系統、DSP等實驗內容,并且更多地注重創新性實驗。這顯然是科技發展和市場需求雙重影響下自然產生的結果。
基于工程領域中的EDA技術應用的巨大實用價值,以及重視EDA教學中實踐能力和創新意識培養的極端重要性,我們對本書各章節做了相應的安排,其特點有以下三個。
1. 注重實踐和創新能力的培養
除在各章中安排了許多習題外,絕大部分章節還安排了針對性較強的實驗與設計項目,使學生對每一章的課堂教學內容和教學效果能及時通過實驗得以消化和強化,并盡可能地從學習一開始就有機會將理論知識與實踐、自主設計緊密聯系起來。
全書包含數十個實驗及其相關的設計項目,這些項目涉及的技術領域寬,知識涉獵密集、針對性強,而且自主創新意識的啟示性好。與本書的示例一樣,所有的實驗項目都通過了EDA工具的仿真測試并通過FPGA平臺的硬件驗證。每一個實驗項目除給出詳細的實驗目的、實驗原理和實驗報告要求外,都含2~5個子項目或子任務。它們通常分為:第一(層次)實驗任務是與該章某個闡述內容相關的驗證性實驗,通常提供詳細的并被驗證的設計源程序和實驗方法,學生只需將提供的設計程序輸入計算機,并按要求進行編譯仿真,在實驗系統上實現即可,使學生有一個初步的感性認識,這也提高了實驗的效率;第二(層次)實驗任務是要求在上一實驗基礎上做一些改進和發揮;第三個層次的實驗通常是提出自主設計的要求和任務;第四、第五個實驗層次則在僅給出一些提示的情況下提出自主創新性設計的要求。因此,教師可以根據學時數、教學實驗的要求以及不同的學生對象,布置不同層次、含不同任務的實驗項目。
此外,在第五版增加的諸多內容中,第11章的內容進一步強化了本教材注重實踐和創新能力培養的特色。目前北美許多著名高校,如斯坦福大學、麻省理工學院、多倫多大學等高校的電子信息與工程專業中,都將CPU的組成及設計作為EDA技術課程、硬件描述語言課程或數字系統設計課程中必不可少的教學內容和自主實踐項目。而第11章的內容很好地體現了EDA技術教學的課程要求和發展趨勢。
2. 高效的教學模式成就速成
一般認為EDA技術的難點和學習費時的根源在于硬件描述語言。對此,全書做了有針對性的安排:根據專業特點,摒棄傳統的計算機語言的教學模式,打破目前HDL教材通行的編排形式,而以電子線路設計為基點,從實例的介紹中引出Verilog語句語法內容。同時為了盡快進入EDA技術的實踐階段,熟悉EDA開發工具及其相關軟硬件的使用方法,及時安排了大量有針對性的實驗項目,以便讀者能盡早進入數字系統工程設計經驗的積累和能力提高階段,并能通過這些面向實際的實踐和實驗活動,快速深化對硬件描述語言的理解和掌握對應的設計技巧。
本書通過一些簡單而典型的Verilog HDL設計示例和電路模型,從具體電路和實用背景下引出相關的Verilog HDL語言現象和語句規則,并加以深入淺出的說明,使得讀者僅通過前期一些內容的學習便能迅速了解并掌握Verilog HDL描述與邏輯電路間的基本關系,從而極大地降低了HDL的學習難度,大幅提高了學習效率,快速實現了學以致用的目的。我們過去多年的實踐已證明這是一種高效學習硬件描述語言和EDA技術的好方法。這種學習流程也是目前國外流行的基于情景和工作過程的教學和學習模式,是一種自頂向下的新的學習模式。
3. 注重教學選材的靈活性和完整性相結合
本書的結構特點決定了授課課時數可十分靈活,即可長可短,視具體的專業特點、課程定位及學習者的前期教育力度等因素而定,在20~50學時之間選擇。由于本書的特色和定位,加之EDA技術課程的特質,具體教學可以是粗放型的,其中多數內容,包括實踐項目可直接放手于學生,更多地讓他們自己去查閱資料、提出問題、解決問題,乃至創新與創造;而授課教師,甚至實驗教師只需做一個啟蒙者、引導者、鼓勵者和學生成果的檢驗者和評判者。授課的過程多數只需點到為止,大可不必拘泥細節,面面俱到。但有一個原則,即實驗學時數應多多益善。事實上,現在任何一門課程的學時數總是有限的,為了有效倍增學生的實踐和自主設計的時間,可以借鑒清華大學的一項教改措施,即其電子系本科生從一入學就人手獲得一塊FPGA實驗開發板,可從本科一年級一直用到研究生畢業。這是因為EDA技術本身就是一個可把全部實驗和設計帶回家的課程。我校對于這門課也基本采用了這一措施:每個上EDA課的學生都可借出一套EDA實驗板,使他們能利用自己的計算機在課余時間完成自主設計項目,強化學習效果。實踐表明,這種安排使得實驗課時得到有效延長,教學成效非常明顯。
本書的定位目標是,基于全書給出的完整的知識結構,注重實踐第一的觀念,強化創新意識的培養,通過課堂合理的教學安排,結合學生明晰的求知覺悟和踏實的實踐精神,為了即將離開學校面向招聘者、面向研究生導師、面向社會、面向未來的學生能多一份自信、多一點信心和多一線希望。因此我們建議應該積極鼓勵學生利用課余時間盡可能學完本書的全部內容,掌握本書介紹的所有EDA工具軟件和相關開發手段,并盡可能多地完成本書配置的實驗和設計任務。
還有一個問題有必要在此探討,就是在前面曾提到的,本書的定位之說。事實上,自主創新能力的提高絕非一朝一夕之事。多年的教學實踐告訴我們,針對這一命題的教改必須從兩方面入手,一是教學內容,二是設課時間;兩者互為聯系,不可偏廢。
前者主要指建立一個內在相關性好、設課時間靈活,且易于將創新能力培養寓于知識傳播之中的課程體系。
后者主要指在課程安排的時段上,將這一體系的課程盡可能地提前。這一舉措是成功的關鍵,因為我們不可能想象到了本科三、四年級才去關注能力培養會有奇跡發生,更不可能指望一兩門課程就能解決問題。尤其是以卓越工程師為培養目標的工科高等教育,自主創新能力的培養本身就是一項教學雙方必須投入密集實踐和探索的創新活動。
我校的EDA技術國家級精品課程正是針對這一教改目標建立的課程體系,而“數字電子技術基礎”是這一體系的組成部分和先導課程。它的提前設課是整個課程體系提前的必要條件。通過數年的試點性教學實踐和經驗總結,現已成功在部分本科學生中將此課程的設課時間從原來的第4或第5學期提前到了第1或第2學期。而這一體系的其他相關課程,如EDA技術、單片機、SOC片上系統、計算機接口、嵌入式系統和DSP等也相應提前,從而使學生到二年級時就具備了培養工程實踐和自主開發能力的條件。
不可否認,數字電路課程的大幅提前必須要以改革其教學內容為前提,否則將傳統的教學內容強行提前必將歸于失敗。為此,在總結了數字電路多年教改成果的基礎上,我們推出了適應新需求的教材,即科學出版社出版的《數字電子技術基礎》一書,很好地滿足了當前的教改要求。此書創新性地解決了傳統教材中的手工數字技術與現代自動化數字技術間的關系,使兩者能平穩過渡,且有機融合,在有效促進理論與實踐緊密結合的同時,強化實踐訓練,突顯了創新意識啟蒙的良好效果,同時實現了與后續課程的良好銜接。盡管這一切尚處于我校的局部教學實踐中,但已清晰地展示了諸多頗具說服力的證明。例如相比于其他同類情況(如同年級,同專業,同授業課程等),那些曾經參加這一課程體系的學生在大學生電子設計競賽、飛思卡爾車模大賽,以及一些國外企業主導的自主設計賽事中,都獲得了更多的獎項和更好的成績。而且這些學生的獲獎比例逐年提高,例如我校在2011年全國大學生電子設計競賽獲一、二等獎項(分別是3個和6個)的學生中,本科二年級學生的比例高達80%(這年我校多數三年級學生選擇考研復習,未參賽)。若按傳統的工科本科教學流程,二年級就有能力獲全國一等獎是不可想象的事!
其實,類似的教改活動和教改成績,我校遠非唯一。國內早有不少院校將數字電路放在第1或第2學期,其實踐訓練的內容包括超過數萬至數十萬邏輯門規模的數字系統自主設計訓練,不少受益的學生在各類電子設計競賽中也都獲得了好成績。前面提到的清華大學的教改活動也說明,他們至少有部分學生于本科一年級就有數字系統設計方面的訓練;后來的調研也證明了這一點,如該校計算機專業本科二年級學生就能自主設計出各種極具創新特色的數字系統,如語音處理及數字立體聲播放、硬件超級瑪麗游戲顯示與控制系統等;又如東南大學在一次省級數字電路課程(尚未學EDA)電子設計競賽中,有一組同學完成了指紋識別數字鎖的設計而獲一等獎;再如美國密歇根大學本科一年級學生就能設計數字電子琴這樣的復雜系統,其中包括用FPGA控制VGA顯示五線譜,PS2鍵盤作為琴鍵及數字立體聲音樂播放等。
有兩個問題必須在此說明,第一個問題是關于本書對于Quartus II版本選擇的問題。盡管目前Altera公司早已頒布了Quartus II 12.0,但本書中的示例說明仍然選擇Quartus II 9.x。這是因為Altera公司已將Quartus II 10.0及此后版本的軟件中曾經一貫內置的門級波形仿真器移除了,并推薦使用接口于Quartus II的ModelSim-Altera仿真器。然而這一舉措對于初學者并不是好消息。因為必須承認,Quartus II 9.x及之前版本軟件中一直內置的波形仿真器的易學、高效和便捷的巨大優勢,對于EDA教學和初學者的學習是十分重要的。況且Quartus II 9.x與Quartus II 12.0相比,總體上變化不大,而且本書在第14章中針對Test Bench仿真,重點介紹了ModelSim-Altera的使用方法。
第二個問題是針對本書中的實驗和實踐項目所能提供的演示示例源設計文件的問題。本書中多數實驗能夠提供經硬件驗證調試好的演示示例源設計文件,目的是為讀者能順利完成實驗驗證和設計;有的示例的目的是希望能啟發或引導讀者完成更有創意的設計,其中一些示例盡管看上去頗有創意,但都不能說是最佳或最終結果,這給讀者留有許多改進和發揮的余地。此外還有少數示例無法提供源代碼(只能提供演示文件),這是考慮到本書作者以外的設計者的著作權,但這些示例仍能給讀者在設計的可行性、創意和創新方面以寶貴的啟示。
為了本書的順利出版,杭州康芯電子有限公司的高級工程師姜兆剛先生在IP核的應用、實驗設計項目的驗證和各種EDA軟件工具的安裝調試等方面完成了大量的和無可替代的工作,在此表示誠摯的謝意!
為了盡可能降低成本和售價,本書未配置光盤。與本書相關的資料,包括配套課件、實驗示例源程序資料、相關設計項目的參考資料和附錄中提到的mif文件編輯生成軟件等文件資料都可免費索取,此外,對于一些與本書相關的工具軟件,包括Quartus II、Synplify Pro、ModelSim-Altera和DSP-Builder/MATLAB等EDA軟件的安裝使用問題的咨詢都可瀏覽網址www.kx-soc.com,或與作者探討(pmr123@sina.cn)。所有這些(主要是教學課件)也可直接與科學出版社聯系(www.abook.cn)。
本書第一、二作者是杭州電子科技大學教師,第三作者是桂林電子科技大學教師。
現代電子設計技術是發展的,相應的教學內容和教學方法也應不斷地改進,還有許多問題值得深入探討,我們真誠地歡迎讀者對書中的錯誤與有失偏頗之處給予批評指正。
作 者
2013年5月
于杭州電子科技大學