《Xilinx FPGA數字設計:從門級到行為級雙重HDL描述》是為高等學校電子信息類和其他相關專業而編寫的數字系統設計課程教材。本書共分為11章,主要內容包括數字邏輯基礎、可編程邏輯器件工藝和結構、Xilinx ISE設計流程、VHDL語言規范、Verilog HDL語言規范、基本數字邏輯單元HDL描述、基于HDL數字系統實現、數字系統高級設計技術、基于IP核數學系統實現、數模混合系統設計、軟核處理器PicoBlaze原理及應用。
根據數字系統相關課程的教學要求和實際教學實踐體會,本書將傳統本科的數字電子技術、數字邏輯課程和基于HDL的復雜數字系統設計課程相融合,遵循循序漸進、由淺入深的原則,內容從最基礎的數字邏輯理論、組合邏輯和時序邏輯電路,到HDL語言和基于HDL語言的復雜數字系統設計。為了方便教師教學和學生自學,書中給出了大量的設計實例。
《Xilinx FPGA數字設計:從門級到行為級雙重HDL描述》可作為本科生和研究生相關課程的教材,也可作為從事Xilinx可編程邏輯器件設計的設計人員的參考用書,同時也可作為Xilinx相關培訓的授課教材。
隨著半導體技術的不斷發展,數字系統的設計向著系統化和集成化的方向發展,而目前國內電子信息類專業學生所學的傳統數字邏輯理論和設計方法遠遠不能應對這種挑戰。為了應對這種挑戰,很多學校的電子信息類專業又單獨開設了基于HDL語言的數字系統設計課程。這種授課方式不利于知識的銜接,也加重了學生的學習負擔; 同時,也不利于梳理數字系統設計的理論知識和設計方法。
國內越來越多的電子信息類專業授課教師希望將傳統數字邏輯課程和基于HDL語言的數字系統設計課程進行整合,作者根據多年的授課經驗和學生實訓成果,將傳統的數字邏輯課程和基于HDL語言的數字系統設計課程進行融合。本著由淺入深、由易到難的原則,在參考國外已經出版的數字設計教材和作者已經出版的《EDA原理及VHDL實現》、《EDA原理及Verilog HDL實現》教材的基礎上,對數字系統設計所需要的知識點進行重新整合,從最基本的數字半導體器件、布爾邏輯、組合邏輯和時序邏輯電路,到VHDL/Verilog HDL以及使用HDL實現復雜數字系統的設計,其目的是打通數字設計相關課程的知識通道,使學生能系統、全面、扎實地掌握數字設計相關的理論知識和設計方法,為高等學校電子信息類數字設計相關課程的教學改革和課程整合提供完整的教學資源。
本書共11章,內容包括數字邏輯基礎、可編程邏輯器件工藝和結構、Xilinx ISE設計流程、VHDL語言規范、Verilog HDL語言規范、基本數字邏輯單元HDL描述、基于HDL數字系統實現、數字系統高級設計技術、基于IP核數字系統實現、數模混合系統設計、軟核處理器PicoBlaze原理及應用。
第1章數字邏輯基礎內容主要包括數字邏輯的發展史、開關系統、半導體數字集成電路、基本邏輯門電路分析、邏輯代數理論、邏輯表達式的化簡、毛刺產生及消除、數字碼制表示和轉換、組合邏輯電路、時序邏輯電路、有限自動狀態機。
第2章可編程邏輯器件工藝和結構內容主要包括可編程邏輯器件發展歷史、可編程邏輯器件工藝、可編程邏輯器件結構、Xilinx可編程邏輯器件。
第3章Xilinx ISE設計流程內容主要包括ISE設計套件介紹、創建新的設計工程、ISE開發平臺主界面及功能、創建并添加新源文件、添加設計代碼、設計綜合、設計行為仿真、添加引腳約束文件、設計實現、布局布線后仿真、產生比特流文件、下載比特流文件到FPGA、生成存儲器配置文件并燒寫存儲器。
第4章VHDL語言規范內容主要包括VHDL程序結構和配置、VHDL語言描述風格、VHDL語言要素、VHDL設計資源共享、VHDL類型、VHDL聲明、VHDL說明、VHDL名字、VHDL表達式、VHDL順序描述語句、VHDL并發描述語句。
第5章Verilog HDL語言規范內容主要包括Verilog HDL語言發展、Verilog HDL程序結構、Verilog HDL描述方式、Verilog HDL語言要素、Verilog HDL數據類型、Verilog HDL表達式、Verilog HDL分配、Verilog HDL門級和開關級描述、Verilog HDL用戶自定義原語、Verilog HDL行為描述語句、Verilog HDL任務和函數、Verilog HDL層次化結構、Verilog HDL設計配置、Verilog HDL指定塊、Verilog HDL時序檢查、Verilog HDL SDF逆向注解、Verilog HDL系統任務和函數、Verilog HDL的VCD文件、Verilog HDL編譯器指令、Verilog HDL編程語言接口。
第6章基本數字邏輯單元HDL描述內容主要包括組合邏輯電路的HDL描述、數據運算操作HDL描述、時序邏輯電路HDL描述、存儲器HDL描述、有限自動狀態及HDL描述。
第7章基于HDL數字系統實現內容主要包括設計所用外設的原理、系統設計原理、建立新的設計工程、基于VHDL的系統設計實現、基于Verilog HDL的系統設計實現。
第8章數字系統高級設計內容主要包括HDL高級設計技巧、IP核設計技術、可編程邏輯器件調試。
第9章基于IP核數字系統實現內容主要包括建立新的設計工程、添加和配置時鐘IP核、添加和配置計數器IP核、生成頂層設計文件、生成時鐘資源模塊例化模板、生成計數器模塊例化模板、創建HDL時鐘分頻模塊、完成頂層設計文件、添加頂層引腳約束文件。
第10章數模混合系統設計內容主要包括模數轉換器原理、數模轉換器原理、基于并行ADC的數字電壓表的設計、基于串行ADC的數字電壓表的設計、基于DAC的信號發生器的設計。
第11章軟核處理器PicoBlaze原理及應用內容主要包括片上可編程系統概論、PicoBlaze處理器原理及結構分析、PicoBlaze處理器指令集、PicoBlaze處理器匯編程序。
在講授和學習本書內容時,可以根據教學時數和內容有所側重,適當調整和刪減相關章節的內容。為了讓讀者更好地掌握相關內容,本書還給出了大量設計示例程序和習題。本書不僅可以作為大學信息類專業講授數字電子線路、數字邏輯和復雜數字系統設計相關課程的教學用書,也可以作為從事相關課程教學和科研工作者的參考用書。
為了方便老師的教學和學生的自學,提供了該教材的教學課件和所用設計實例的完整設計文件,這些設計資源可以在清華大學出版社的網站(http://www.tup.com.cn)下載。
在本書的編寫過程中引用和參考了許多著名學者和專家的研究成果,同時也參考了Xilinx公司的技術文檔和手冊,在此向他們表示衷心的感謝。北京聯合大學信息學院章學靜老師參與編寫了書中第4章和第5章的內容。西南科技大學信息工程學院郭海燕老師參與編寫了書中第6章和第7章的內容。集寧師范學院物理系聶陽老師參與編寫了書中第10章的內容。作者的研究生李寶隆、張艷輝參加部分章節的編寫工作,在此一并向他們表示感謝。在本書的出版過程中,得到了Xilinx公司大學合作計劃和美國Digilent公司的大力支持和幫助,在本書出版的過程中也得到了清華大學出版社編輯的幫助和指導,在此也表示深深的謝意。
由于編者水平有限,編寫時間倉促,書中難免有疏漏之處,敬請讀者批評指正。
作者2014年10月于北京
第1章數字邏輯基礎
1.1數字邏輯的發展史
1.2開關系統
1.2.10和1的概念
1.2.2開關系統的優勢
1.2.3晶體管作為開關
1.2.4半導體物理器件
1.2.5半導體邏輯電路
1.2.6邏輯電路符號描述
1.3半導體數字集成電路
1.3.1集成電路的發展
1.3.2集成電路構成
1.3.3集成電路版圖
1.4基本邏輯門電路分析
1.4.1基本邏輯門電路的描述
1.4.2邏輯門電路的傳輸特性
1.4.3基本邏輯門集成電路
1.4.4不同工藝邏輯門的連接
1.5邏輯代數理論
1.5.1邏輯代數中運算關系
1.5.2邏輯函數表達式
1.6邏輯表達式的化簡
1.6.1使用運算律化簡邏輯表達式
1.6.2使用卡諾圖化簡邏輯表達式
1.6.3不完全指定邏輯功能的化簡
1.6.4輸入變量的卡諾圖表示
1.7毛刺產生及消除
1.8數字碼制表示和轉換
1.8.1數字碼制表示
1.8.2數字碼制轉換
1.9組合邏輯電路
1.9.1編碼器
1.9.2譯碼器
1.9.3碼轉換器
1.9.4數據選擇器
1.9.5數據比較器
1.9.6加法器
1.9.7減法器
1.9.8加法器/減法器
1.9.9乘法器
1.10時序邏輯電路
1.10.1時序邏輯電路類型
1.10.2時序邏輯電路特點
1.10.3基本SR鎖存器
1.10.4同步SR鎖存器
1.10.5D鎖存器
1.10.6D觸發器
1.10.7其他觸發器
1.10.8普通寄存器
1.10.9移位寄存器
1.10.10存儲器
1.11有限自動狀態機
1.11.1有限自動狀態機原理
1.11.2狀態圖表示及實現
1.11.3三位計數器
第2章可編程邏輯器件工藝和結構
2.1可編程邏輯器件發展歷史
2.2可編程邏輯器件工藝
2.3可編程邏輯器件結構
2.3.1PROM原理及結構
2.3.2PAL原理及結構
2.3.3PLA原理及結構
2.3.4CPLD原理及結構
2.3.5FPGA原理及結構
2.3.6CPLD和FPGA比較
2.4Xilinx可編程邏輯器件
2.4.1Xilinx CPLD芯片介紹
2.4.2Xilinx FPGA芯片介紹
2.4.3Xilinx PROM芯片介紹
第3章Xilinx ISE設計流程
3.1ISE設計套件介紹
3.2創建新的設計工程
3.3ISE開發平臺主界面及功能
3.3.1Design(設計)面板
3.3.2Console(控制臺)面板
3.3.3Workspace
3.4創建并添加新源文件
3.5添加設計代碼
3.5.1Verilog HDL設計代碼的添加
3.5.2VHDL設計代碼的添加
3.6設計綜合
3.6.1Xilinx綜合工具功能
3.6.2設計綜合
3.7設計行為仿真
3.7.1為Verilog HDL設計添加測試向量
3.7.2為VHDL設計添加測試向量
3.7.3運行行為仿真
3.8添加引腳約束文件
3.9設計實現
3.9.1運行設計實現工具
3.9.2查看布局布線結果
3.10布局布線后仿真
3.11產生比特流文件
3.12下載比特流文件到FPGA
3.13生成存儲器配置文件并燒寫存儲器
3.13.1生成BPI存儲器配置文件
3.13.2編程BPI文件到BPI存儲器
第4章VHDL語言規范
4.1VHDL程序結構和配置
4.1.1VHDL程序結構框架
4.1.2VHDL實體
4.1.3VHDL結構體
4.1.4配置聲明
4.2VHDL語言描述風格
4.2.1行為描述
4.2.2數據流描述
4.2.3結構化描述
4.3VHDL語言要素
4.3.1字符集
4.3.2語言要素、分隔符和分界符
4.3.3標識符
4.3.4抽象文字
4.3.5字符文字
4.3.6字符串文字
4.3.7比特字符串文字
4.3.8注釋
4.3.9保留字
4.3.10允許替換的字符
4.4VHDL設計資源共享
4.4.1庫的聲明和調用
4.4.2子程序和函數聲明
4.4.3函數體和子程序體
4.4.4子程序和函數重載
4.4.5解析函數
4.4.6包聲明
4.4.7包體
4.5VHDL類型
4.5.1標量類型
4.5.2復合類型
4.5.3訪問類型
4.5.4文件類型
4.5.5保護類型
4.6VHDL聲明
4.6.1類型聲明
4.6.2子類型聲明
4.6.3對象
4.6.4屬性聲明
4.6.5元件聲明
4.6.6組模板聲明
4.6.7組聲明
4.7VHDL說明
4.7.1屬性說明
4.7.2配置說明
4.7.3斷開說明
4.8VHDL名字
4.8.1簡單名字
4.8.2選擇名字
4.8.3索引名字
4.8.4切片名字
4.8.5屬性名字
4.9VHDL表達式
4.9.1VHDL操作符
4.9.2VHDL操作數
4.10VHDL順序描述語句
4.10.1wait語句
4.10.2斷言和報告語句
4.10.3信號分配語句
4.10.4變量分配語句
4.10.5子程序調用語句
4.10.6if語句
4.10.7case語句
4.10.8loop語句
4.10.9next語句
4.10.10exit語句
4.10.11return語句
4.10.12null語句
4.11VHDL并發描述語句
4.11.1塊語句
4.11.2進程描述語句
4.11.3并行過程調用語句
4.11.4并行斷言語句
4.11.5并行信號分配語句
4.11.6元件例化語句
4.11.7生成語句
第5章Verilog HDL語言規范
5.1Verilog HDL語言發展
5.2Verilog HDL程序結構
5.2.1模塊聲明
5.2.2模塊端口定義
5.2.3邏輯功能定義
5.3Verilog HDL描述方式
5.3.1行為級描述方式
5.3.2數據流描述方式
5.3.3結構級描述方式
5.3.4開關級描述方式
5.4Verilog HDL語言要素
5.4.1注釋
5.4.2間隔符
5.4.3標識符
5.4.4關鍵字
5.4.5系統任務和函數
5.4.6編譯器命令
5.4.7運算符
5.4.8數字
5.4.9字符串
5.4.10屬性
5.5Verilog HDL數據類型
5.5.1值的集合
5.5.2網絡和變量
5.5.3向量
5.5.4強度
5.5.5隱含聲明
5.5.6網絡類型
5.5.7寄存器類型
5.5.8整數、實數、時間和實時時間
5.5.9數組
5.5.10參數
5.5.11Verilog HDL名字空間
5.6Verilog HDL表達式
5.6.1操作符
5.6.2操作數
5.6.3延遲表達式
5.6.4表達式的位寬
5.6.5有符號表達式
5.6.6分配和截斷
5.7Verilog HDL分配
5.7.1連續分配
5.7.2過程分配
5.8Verilog HDL門級和開關級描述
5.8.1門和開關聲明
5.8.2邏輯門
5.8.3輸出門
5.8.4三態門
5.8.5MOS開關
5.8.6雙向傳輸開關
5.8.7CMOS開關
5.8.8pull門
5.8.9邏輯強度建模
5.8.10組合信號的強度和值
5.8.11通過非電阻器件的強度降低
5.8.12通過電阻器件的強度降低
5.8.13網絡類型強度
5.8.14門和網絡延遲
5.9Verilog HDL用戶自定義原語
5.9.1UDP定義
5.9.2組合電路UDP
5.9.3電平觸發的時序UDP
5.9.4邊沿觸發的時序電路UDP
5.9.5初始化狀態寄存器
5.9.6UDP例化
5.9.7邊沿觸發和電平觸發的混合行為
5.10Verilog HDL行為描述語句
5.10.1過程語句
5.10.2過程連續分配
5.10.3條件語句
5.10.4case語句
5.10.5循環語句
5.10.6過程時序控制
5.10.7語句塊
5.10.8結構化的過程
5.11Verilog HDL任務和函數
5.11.1任務和函數的區別
5.11.2任務和任務使能
5.11.3禁止命名的塊和任務
5.11.4函數和函數調用
5.12Verilog HDL層次化結構
5.12.1模塊和模塊例化
5.12.2覆蓋模塊參數值
5.12.3端口
5.12.4生成結構
5.12.5層次化的名字
5.12.6向上名字引用
5.12.7范圍規則
5.13Verilog HDL設計配置
5.13.1配置格式
5.13.2庫
5.13.3配置例子
5.13.4顯示庫綁定信息
5.13.5庫映射例子
5.14Verilog HDL指定塊
5.14.1模塊路徑聲明
5.14.2為路徑分配延遲
5.14.3混合模塊路徑延遲和分布式延遲
5.14.4驅動連線邏輯
5.14.5脈沖過濾行為的控制
5.15Verilog HDL時序檢查
5.15.1使用穩定窗口檢查時序
5.15.2用于時鐘和控制信號的時序檢查
5.15.3邊沿控制標識符
5.15.4提示符: 用戶定義對時序沖突的響應
5.15.5使能有條件事件的時序檢查
5.15.6向量信號的時序檢查
5.15.7負時序檢查
5.16Verilog HDL SDF逆向注解
5.16.1映射SDF結構到Verilog
5.16.2多個注解
5.16.3多個SDF文件
5.16.4脈沖限制注解
5.16.5SDF到Verilog延遲值映射
5.17Verilog HDL系統任務和函數
5.17.1顯示任務
5.17.2文件輸入輸出系統任務和函數
5.17.3時間標度系統任務
5.17.4仿真控制任務
5.17.5可編程邏輯陣列建模系統任務
5.17.6隨機分析任務
5.17.7仿真時間系統函數
5.17.8轉換函數
5.17.9概率分布函數
5.17.10命令行輸入
5.17.11數學函數
5.18Verilog HDL的VCD文件
5.18.1四態VCD文件的創建
5.18.2四態VCD文件的格式
5.18.3擴展VCD文件的創建
5.18.4擴展VCD文件的格式
5.19Verilog HDL編譯器指令
5.19.1'celldefine和'endcelldefine
5.19.2'default_nettype
5.19.3'define和'undef
5.19.4'ifdef、'else、'elsif、'endif、'ifndef
5.19.5'include
5.19.6'resetall
5.19.7'line
5.19.8'timescale
5.19.9'unconnected_drive和'nounconnected_drive
5.19.10'pragma
5.19.11'begin_keywords和'end_keyword
5.20Verilog HDL編程語言接口PLI
5.20.1Verilog HDL PLI發展過程
5.20.2Verilog HDL PLI提供的功能
5.20.3Verilog HDL PLI原理
5.20.4Verilog HDL VPI工作原理
第6章基本數字邏輯單元HDL描述
6.1組合邏輯電路的HDL描述
6.1.1邏輯門的HDL描述
6.1.2編碼器HDL描述
6.1.3譯碼器HDL描述
6.1.4數據選擇器HDL描述
6.1.5數字比較器HDL描述
6.1.6總線緩沖器HDL描述
6.2數據運算操作HDL描述
6.2.1加法操作HDL描述
6.2.2減法操作HDL描述
6.2.3乘法操作HDL描述
6.2.4除法操作HDL描述
6.2.5算術邏輯單元HDL描述
6.3時序邏輯電路HDL描述
6.3.1觸發器和鎖存器的HDL描述
6.3.2計數器HDL描述
6.3.3移位寄存器HDL描述
6.3.4脈沖寬度調制PWM HDL描述
6.4存儲器HDL描述
6.4.1ROM HDL描述
6.4.2RAM HDL描述
6.5有限自動狀態機HDL描述
6.5.1FSM設計原理
6.5.2FSM的分類及描述
第7章基于HDL數字系統實現
7.1設計所用外設的原理
7.1.1LED燈
7.1.2開關
7.1.3七段數碼管
7.1.4VGA顯示器
7.1.5通用異步接收發送器
7.2系統設計原理
7.3建立新的設計工程
7.4基于VHDL的系統設計實現
7.4.1設計分頻時鐘模塊2
7.4.2設計和仿真計數器模塊
7.4.3設計頂層模塊
7.4.4設計分頻時鐘模塊1
7.4.5設計七段數碼管模塊
7.4.6設計分頻時鐘模塊3
7.4.7設計通用異步收發器模塊
7.4.8設計分頻時鐘模塊4
7.4.9設計VGA控制器模塊
7.5基于Verilog HDL的系統設計實現
7.5.1設計分頻時鐘模塊2
7.5.2設計和仿真計數器模塊
7.5.3設計頂層模塊
7.5.4設計分頻時鐘模塊1
7.5.5設計七段數碼管模塊
7.5.6設計分頻時鐘模塊3
7.5.7設計通用異步收發器模塊
7.5.8設計分頻時鐘模塊4
7.5.9設計VGA控制器模塊
第8章數字系統高級設計技術
8.1HDL高級設計技巧
8.1.1邏輯復制和復用技術
8.1.2并行和流水線技術
8.1.3同步和異步單元處理技術
8.1.4邏輯處理技術
8.2IP核設計技術
8.2.1IP核分類
8.2.2IP核優化
8.2.3IP核生成
8.3可編程邏輯器件調試
8.3.1多路復用技術的應用
8.3.2虛擬邏輯分析工具
8.3.3ChipScope Pro調試工具概述
第9章基于IP核數字系統實現
9.1建立新的設計工程
9.2添加和配置時鐘IP核
9.3添加和配置計數器IP核
9.4生成頂層設計文件
9.5生成時鐘資源模塊例化模板
9.5.1生成VHDL時鐘資源例化模板
9.5.2生成Verilog HDL時鐘資源例化模板
9.6生成計數器模塊例化模板
9.6.1生成VHDL計數器例化模板
9.6.2生成Verilog HDL計數器例化模板
9.7創建HDL時鐘分頻模塊
9.8完成頂層設計文件
9.9添加頂層引腳約束文件
第10章數模混合系統設計
10.1模數轉換器原理
10.1.1模數轉換器的參數
10.1.2模數轉換器的類型
10.2數模轉換器原理
10.2.1數模轉換器的參數
10.2.2數模轉換器的類型
10.3基于并行ADC的數字電壓表的設計
10.3.1數字電壓表的功能和結構
10.3.2模塊設計
10.3.3設計實現
10.4基于串行ADC的數字電壓表的設計
10.4.1系統設計原理
10.4.2設計實現
10.5基于DAC的信號發生器的設計
10.5.1函數信號發生器設計原理
10.5.2設計實現
第11章軟核處理器PicoBlaze原理及應用
11.1片上可編程系統概論
11.1.1片上MCU和專用MCU的比較
11.1.2片上MCU和片上邏輯的比較
11.2PicoBlaze處理器原理及結構分析
11.2.1PicoBlaze處理器特點
11.2.2PicoBlaze處理器應用框架
11.2.3PicoBlaze處理器內部結構
11.3PicoBlaze處理器指令集
11.3.1PicoBlaze指令集
11.3.2控制程序轉移指令
11.3.3中斷指令
11.3.4邏輯操作指令
11.3.5算術運算指令
11.3.6循環轉移指令
11.3.7輸入和輸出指令
11.4PicoBlaze處理器匯編程序
11.4.1KCPSM3匯編器原理及操作
11.4.2KCPSM3編程語法
11.4.3KCPSM3中斷處理
11.4.4KCPSM3中CALL/RETURN棧
11.4.5KCPSM3共享程序空間
11.4.6KCPSM3輸入/輸出端口設計
附錄Verilog HDL(IEEE 1364—2005)關鍵字列表
參考文獻