總金額: 會員:NT$ 0 非會員:NT$ 0 
(此金額尚未加上運費)
電子電信技術 電腦技術 計算技術、計算機技術
 
 
 
 
FPGA現代數字系統設計:基於Xilinx可編程邏輯器件與Vivado平臺
 叢書名稱: 清華開發者書庫
 作  者: 孟憲元/錢偉康
 出版單位: 清華大學
 出版日期: 2019.04
 進貨日期: 2019/4/29
 ISBN: 9787302499138
 開  本: 16 開    
 定  價: 593
 售  價: 474
  會 員 價: 435
推到Facebook 推到Plurk 推到Twitter
前往新書區 書籍介紹 購物流程  
 
編輯推薦:

遵循摩爾定律的發展規律,FPGA技術已經進入到異構多核處理器和異構平行計算的嶄新階段,本書以FPGA的發展階段講述器件的架構和特性,以Verilog語言作為硬體描述語言講述數位系統的設計,保證設計功能通過模擬驗證的正確性,在Vivado設計套件中通過RTL分析、綜合和佈局佈線的實現等進程達到時序收斂,性能上滿足設計要求,本書也介紹了有關同步設計的技巧和要點,高級綜合等特性。DSP系統和嵌入式系統的設計流程和方法也作了介紹,最後以多個設計實例對前述的設計方法作了詳盡的說明。
•內容全面 涵蓋FPGA及Vivado的基本功能,及其在數位系統中的多種設計流程。
• 技術前沿 基於當前的Vivado設計套件版本,論述了FPGA主流設計技術。
• 易於實踐 全書結合大量實例論述,圖文並茂、操作性強,便於快速動手實踐。


內容簡介:

本書是以Xilinx公司全可程式設計FPGA和SoC為基礎,針對*的設計工具軟體——Vivado介紹FPGA設計理論與設計方法。 全書分為8章,包括現代數位系統設計技術概論、可程式設計邏輯器件、Verilog HDL硬體描述語言、Vivado設計流程、數位系統的設計與綜合、基於FPGA的DSP系統設計、Zynq嵌入式系統設計技術和EGO1綜合性設計項目舉例。各章都安排了針對性強的已驗證過的設計實例,並附有Verilog HDL手冊、EGO1開發板資料,供師生在教學中選用。 本書可作為高等院校電子、通信、自動化、電腦等專業本科教學參考書,也可作為資訊類專業研究生和數位系統設計人員的參考書。


作者簡介:

孟憲元 清華大學電子工程系教授,長期從事EDA相關技術和課程教學和科研工作,具有超過20年的FPGA技術研究和專案開發經歷,親歷了FPGA技術的發展歷程,積累了豐富實踐經驗,曾出版《新一代FPGA設計套件Vivado應用指南》等暢銷教材。


圖書目錄:

第1章現代數位系統設計概論

1.1概述

1.2數位系統的層次化結構

1.2.1開關電路級的基礎——CMOS反相器

1.2.2邏輯級的門電路

1.2.3寄存器傳輸級的有限狀態機

1.2.4數位系統的系統級構成

1.2.5複雜系統的演算法級設計

1.3數位系統設計的描述方法

1.3.1原理圖設計

1.3.2程式設計法

1.3.3IP模組的使用

1.3.4基於模型的設計技術

1.3.5高層次綜合——HLS設計

1.3.6腳本設計技術

1.4IP技術

1.4.1IP智慧財產權模組

1.4.2IP模組的種類與應用

1.4.3片上系統和IP核覆用

1.5全可程式設計FPGA/SoC實現智慧化系統

1.5.1軟體智慧化和硬體最佳化

1.5.2線上可重構技術

1.5.3可重配置加速堆疊

本章小結

習題

第2章可程式設計邏輯器件

2.1概述

2.1.1可程式設計邏輯器件概述

2.1.2可程式設計邏輯器件分類

2.2CPLD的結構和工作原理

2.2.1簡單可程式設計邏輯器件原理

2.2.2CPLD的結構和工作原理

2.3FPGA的結構和工作原理

2.3.1SRAMQ查閱資料表類型

2.3.2反熔絲多路開關類型

2.4邏輯級FPGA的結構和工作原理

2.4.1可程式設計邏輯

2.4.2可程式設計互連線

2.4.3可程式設計I/O

2.5系統級FPGA的結構和工作原理

2.5.1片上記憶體及介面

2.5.2數位時鐘管理

2.5.3時鐘資源

2.5.4系統級I/O

2.6平臺級FPGA的結構和工作原理

2.6.1DSP模組

2.6.2高速序列介面

2.7全可程式設計FPGA的特性和結構

2.7.1採用統一的7系列架構

2.7.2高性能和低功耗結合的工藝

2.8ASIC架構的UltraScale系列

2.8.1UltraScale架構

2.8.2SSI互連技術

2.9FPGA的配置

2.9.1程式設計原理簡介

2.9.2程式設計模式

2.9.3典型的配置電路

2.9.4程式設計流程

2.9.5部分重配置

本章小結

習題

第3章Verilog硬體描述語言

3.1硬體描述語言概述

3.1.1硬體描述語言特點

3.1.2層次化設計

3.2Verilog HDL程式的基本結構

3.2.1模組結構分析

3.2.2模組的實例化

3.3Verilog HDL詞法、資料類型和運算子

3.3.1詞法約定

3.3.2資料類型

3.3.3運算子

3.4Verilog HDL行為語句

3.4.1設定陳述式

3.4.2順序塊和並行塊語句

3.4.3結構說明語句

3.4.4條件陳述式

3.4.5迴圈語句

3.4.6系統任務和系統函數

3.4.7編譯預處理命令

3.4.8Verilog HDL可綜合設計

3.5Verilog HDL設計舉例

3.5.1組合電路設計

3.5.2時序電路設計

3.5.3數位系統設計

3.5.4數碼管掃描顯示電路

3.5.5LED通用非同步收發電路設計

3.6Testbench檔與設計

本章小結

習題

第4章Vivado設計工具

4.1Vivado工具概述

4.1.1單一的、共用的、可擴展的資料模型

4.1.2標準化XDC約束檔——SDC

4.1.3多維度分析佈局器

4.1.4IP封裝器、集成器和目錄

4.1.5Vivado HLS

4.1.6其他特性

4.1.7TCL特性

4.1.8Vivado按鍵流程執行設計專案

4.2Vivado設計流程

4.2.1創建工程

4.2.2功能模擬

4.2.3RTL級分析

4.2.4綜合設計

4.2.5分配引腳和時序

4.2.6設計實現

4.2.7生成bit檔

4.2.8下載

4.3產生IP集成器子系統設計

4.3.1產生IP集成器模組設計

4.3.2定制IP

4.3.3完成子系統設計

4.3.4產生IP輸出產品

4.3.5例示IP到設計中

4.4硬體診斷

4.4.1設計診斷概述

4.4.2Vivado邏輯診斷IP核

4.4.3HDL例示法添加ILA核

4.4.4系統內診斷uart_led設計

4.4.5網表插入法添加診斷核

4.4.6添加VIO診斷核

本章小結

習題

第5章數位系統的高級設計與綜合

5.1Verilog程式設計風格

5.1.1邏輯推理

5.1.2陷阱

5.1.3設計組織

5.1.4針對Xilinx FPGA的HDL編碼

5.2綜合優化

5.2.1速度與面積

5.2.2資源分享

5.2.3流水線、重新定時和寄存器平衡

5.2.4有限狀態機編譯

5.3數位系統的同步設計

5.3.1同步設計基本原理

5.3.2建立和保持時間

5.3.3時序例外約束

5.3.4同步設計中的非同步問題

5.4數位系統的綜合

5.4.1數位系統綜合概述

5.4.2系統級綜合

5.4.3高級綜合

5.4.4寄存器傳輸級綜合

5.4.5邏輯級綜合

本章小結

習題

第6章FPGA DSP系統設計

6.1DSP基礎

6.1.1DSP的基本概念

6.1.2FPGA實現DSP的特點

6.2DSP硬核的結構與使用

6.2.1輸入和輸出埠

6.2.2DSP48E1模組的操作

6.2.3輸入埠邏輯電路

6.2.4輸出埠邏輯

6.3FPGA設計DSP技術

6.3.1浮點數與定點數的表示與轉換

6.3.2採樣週期的設置

6.3.3System Generator模組

6.3.4Black Box模組

6.3.5ModelSim模組

6.3.6Gateway In模組和Gateway Out模組

6.3.7Concat模組、Convert模組、Reinterpret模組和Slice模組

6.3.8模組通用屬性

6.4DSP48實現MAC

6.4.1利用Xilinx Blockset設計12×8 MAC

6.4.2利用Simulink模擬12×8 MAC

6.4.3利用System Generator Block產生代碼

6.4.4實現12×8 MAC設計

6.4.5硬體協同模擬校驗設計

6.5設計FIR濾波器

6.5.1產生FIR濾波器的係數

6.5.2輸入FIR濾波器係數

6.5.3在Simulink中模擬FIR濾波器

6.5.4實現FIR濾波器

6.5.5連接演示板,通過Simulink模擬設計

6.6設計MAC FIR濾波器

6.6.1分析係數

6.6.2添加控制邏輯並參數化

6.6.3添加雙口RAM

6.6.4在資料埠添加填充位元和去填充位

6.6.5完成MAC FIR設計

6.6.6用各種信源測試設計

6.6.7執行硬體在環路校驗

6.7Vivado HLS

6.7.1高級綜合的調度和裝配

6.7.2資料通道 控制器架構

6.7.3理解Vivado HLS

6.7.4高級綜合的優化方法

本章小結

習題

第7章嵌入式系統Zynq設計

7.1Zynq概述

7.2Zynq設計入門

7.2.1Vivado工程創建

7.2.2由Vivado創建Zynq嵌入式系統

7.2.3SDK應用程式編寫

7.3Zynq嵌入式系統調試方法

7.3.1Vivado硬體調試

7.3.2使用SDK進行Zynq調試

7.4調試Linux應用

7.4.1產生SDK軟體工作空間

7.4.2啟動超級終端

7.4.3添加和診斷軟體應用

本章小結

習題

第8章綜合設計實例

8.1實例一: 基於VGA介面的設計實例

8.1.1設計任務

8.1.2原理分析與系統方案

8.2實例二: PS/2鍵盤編解碼演示系統

8.2.1設計任務

8.2.2原理分析與系統方案

8.2.3設計實現

8.3實例三: 實現SOPC系統

8.3.1設計任務和方案

8.3.2實驗步驟

8.3.3實驗調試設備

本章小結

習題

附錄AEGO1用戶手冊

附錄BVerilog HDL(IEEE 1364Q2001)關鍵字表及說明

參考文獻


章節試讀:

第5章

數位系統的高級

設計與綜合



從基於原理圖的設計轉到硬體描述語言設計是電子設計的一次變革,它允許一個設計者從理論上以工藝無關的行為方式來描述所設計的數位系統模型。隨著設計要求不斷提高,複雜性不斷增加,用硬體描述語言的數位電路設計在很多方面已經變成單調和費時的事情,設計者迫切需要更高層次抽象的設計與綜合技術,為了適應技術的發展,大量高層次的設計技術與綜合工具可提供給設計工程師使用。
對於結構比較清晰的數位系統,可以利用HDL硬體描述語言直接在寄存器傳輸級(即RTL級)對設計的系統進行描述,這種描述是對系統行為的描述,然後由綜合工具進行綜合,利用硬體來實現數位系統。
在第3章介紹Verilog HDL語言的基礎上,第4章結合Vivado設計軟體介紹了如何將描述系統行為的設計程式進行硬體實現,並載入到目標器件進行調試和驗證。由於設計者的程式的編碼風格和採用的設計技術直接影響系統模型的建立和綜合的結果,本章將討論如何使編寫的程式能夠建立正確的系統模型,並被軟體綜合成設計者設想的結構,包括編碼風格的影響、綜合工具優化的使用,以及同步設計技術的概念和措施。最後,按照數位系統的層次結構簡要介紹綜合可能採用的一些方法,以便讀者理解從語言描述到硬體實現的過程。
5.1Verilog程式設計風格
對於使用硬體描述語言(HDL)程式設計的抽象級描述,綜合優化技術僅能協助設計者滿足設計要求。綜合工具遵循編碼構造和按照RTL中展開的結構在最基礎的層次上映射邏輯。如果沒有類似FSM和RAM等十分規則的結構,綜合工具可以從代碼中提取功能,識別可替代的結構,並相應地實現。
除了優化之外,為綜合編碼時的基本指導原則是不減少功能而使所寫的結構和虛擬指令最小化,但是這樣可能在模擬和綜合之間產生不一致的結果。一個好的編碼風格一般要保證RTL模擬與可綜合的網表具有相同的性能。一類偏差是廠商支援的虛擬指令,它可以按照專門注釋的形式(不考慮模擬工具)加入RTL代碼,並引起綜合工具按RTL代碼本身不明顯的方式推演一個邏輯結構。
由於綜合工具只能對可綜合的語句產生最終的硬體實現,如果設計者對語言規則和電路行為的理解不同,則可能使設計描述的編碼風格直接影響EDA軟體工具的綜合結果。例如,描述同一功能的兩段RTL程式可能產生出時序和面積上完全不同的電路,好的描述方式就是綜合器容易識別並可以綜合出所期望的電路,電路的品質取決於工程師使用的描述風格和綜合工具的能力。
5.1.1邏輯推理
1. ifQelse和case結構——特權與並行性

在FPGA設計的範圍內,把一系列用來決定邏輯應該採取什麼動作的條件稱作一個判決樹。通常,可以分類成ifQelse和case結構。考慮一個十分簡單的寄存器寫入的示例。
例5Q1

module regwrite(

outputreg rout,

input clk,

input〔3:0〕in,

input〔3:0〕sel);

always @(posedge clk)

if(sel〔0〕)rout <= in〔0〕;

else if (sel〔1〕)rout <= in〔1〕;

else if (sel〔2〕)rout <= in〔2〕;

else if (sel〔3〕)rout <= in〔3〕;

endmodule

這類ifQelse的結構可以推理成如圖5Q1所示的多路選擇器的結構。

這類判決結構可以按許多不同的方式來實現,取決於速度/面積的權衡和要求的特權。下面介紹如何針對不同的綜合結構對各種判決樹進行編碼和約束。
ifQelse結構固有的性質是特權的概念。出現在ifQelse語句的條件所給予的特權超過判決樹中的其他條件。所以,上述結構中更高的特權將對應靠近鏈的末尾和更接近寄存器的多路選擇器。
在圖5Q1中,如果選擇字的位0被設置,則不管選擇字的其他位元的狀態,in0將被寄存。如果選擇字的位0沒有被設置,則利用其他位元的狀態來決定通過寄存器的信號。通常,只有當某一位元(在此情況是最低位元LSB)前面的所有位均沒有被設置時,則利用該位來選擇輸出。這個特權多路選擇器的真正實現如圖5Q2所示。



圖5Q1串列多路選擇器結構的簡單特權




圖5Q2特權多路選擇器



無論ifQelse結構最後如何實現,將賦予出現在任何給定的條件之前的條件陳述式更高的特權。所以,當判決樹有特權編碼時應該利用ifQelse結構。
另一方面,case結構通常(不是總是)用於所有條件互不相容的情況。換言之,可以在任何時刻只有一個條件成立的情況下優化判決樹。例如,根據其他多位元網線或寄存器(例如加法器的解碼器)進行判決時,在一個時刻只有一個條件成立。這與上述用ifQelse結構實現的解碼操作是一樣的。為了在Verilog中實現完全相同的功能,可以採用case語句。
例5Q2

case(l)

sel〔0〕:rout <= in〔0〕;

sel〔1〕:rout <= in〔1〕;

sel〔2〕:rout <= in〔2〕;

sel〔3〕:rout <= in〔3〕;

endcase

由於case語句是ifQelse結構的一種有效替代,許多初學者以為這是自動地無特權判決樹的實現。對於更嚴格的VHDL語言,該想法恰巧是正確的; 但是對於Verilog語言,卻不是這種情況,可以從圖5Q3中case語句的實現看出。


圖5Q3特權解碼邏輯


如圖5Q3所示,缺省的部分是通過特權解碼來設置多路選擇器上相應的使能引腳,這導致許多設計者落入陷阱。如果綜合工具報告case結構不是並行的,則RTL必須把它改變為並行的。如果特權條件是成立的,在相應的位置應該採用ifQelse結構。
2. 完全條件
目前為止檢查的判決樹中,如果case語句的條件沒有一個是成立的,則綜合工具將寄存器的輸出返回到判決樹作為一個默認條件(這個行為取決於綜合工具預設的實現方式,但是本節假設它是成立的)。這個假設是如果沒有條件滿足,數值不改變。
建議設計者添加默認條件。這個預設值可以是也可以不是當前的數值,但是,為每個case條件分配輸出一個數值,可避免工具自動地鎖存當前值。用這個默認條件消除寄存器使能,如例5Q3中修改後的case語句。
例5Q3

//不安全的case語句

module regwrite(

outputreg rout,

input clk,

input〔3:0〕in,

input〔3:0〕sel);

always @(posedge clk)

case(l)

sel〔0〕:rout <= in〔0〕;

sel〔1〕:rout <= in〔1〕;

sel〔2〕:rout <= in〔2〕;

sel〔3〕:rout <= in〔3〕;

default:rout <= 0;

endcase

endmodule

如圖5Q4所示,默認條件現在是明確的,作為多路選擇器一個可供選擇的輸入實現。雖然觸發器不再要求一個使能信號,總的邏輯資源不一定減少。同時應注意到,如果每個條件不對寄存器定義一個輸出(通常發生在單個case語句分配多個輸出時),默認條件和任何綜合的特徵位元都不能防止產生一個鎖存器。為了保證總有一個數值分配到寄存器,可以在case語句之前利用初始賦值分配給寄存器一個數值,如例5Q4所示。


圖5Q4為預設條件編碼


例5Q4

module regwrite (

output regrout,

input clk,

input〔3:0〕in,

input〔3:0〕sel);

always @(posedge clk)

rout <= 0;

case(l)

sel〔0〕:rout <= in〔0〕;

sel〔1〕:rout <= in〔1〕;

sel〔2〕:rout <= in〔2〕;

sel〔3〕:rout <= in〔3〕;

endcase

endmodule

這類編碼風格消除了對預設情況的需要,也保證了如果沒有其他賦值定義時,寄存器會分配到這個預設值。
完全條件可以用正確的編碼方式來設計,推薦的方法是避免該約束僅由設計保證完全的覆蓋,如前所述,即在case語句之前利用默認條件和設置默認數值。這將使代碼具有更高的可攜性,減少不希望的失配可能性。設置FPGA綜合選項時最大的風險之一是僅允許一個默認設置,因此所有的case語句自動地假設是parallel_case、full_case或二者兼之。廠商明確地提供了該選項。實際上,應該儘量不要使用這個選項,它會產生隱含的風險,以不正確的形式進行代碼綜合,並且用基本的系統內測試無法發現,在模擬中會產生不確定性。所以,parallel_case和full_case可以引起模擬和綜合的失配。
3. 多控制分支
設計者通常犯的錯誤(在較差的編碼風格中)是對單個寄存器不連接控制分支。在例5Q5中,oDat被唯一的判決樹中兩個不同的數值賦值。
例5Q5

//不好的程式設計風格

module separated(

output regoDat,

inputiclk,

input iDat1, iDat2, iCtrl1, iCtrl2);

always @ (posedge iclk)begin

if (iCtrl2) oDat <= iDat2;

if (iCtrl1) oDat <= iDat1;

end

endmodule

因為無法說明iCtrl1和iCtrl2是否是互不相容的,因此該編碼是模糊的,綜合工具必須為實現做一定的假設。特別地,當二者的條件同時成立時,沒有明顯的方式管理特權。因此,


圖5Q5帶明顯特權的實現


綜合工具必須基於這些條件發生的順序賦予特權。在這種情況下,如果條件最後出現,它將獲得優於第一個條件的特權。
基於圖5Q5,iCtrl1有優於iCtrl2的特權,如果交換它們的次序,特權同樣也會交換。這與ifQelse結構的行為相反,ifQelse結構通常把特權給予第一個條件。
所以,好的設計實踐是把所有的寄存器賦值保持在單個控制結構內。


圖片預覽:

 
  步驟一.
依據網路上的圖書,挑選你所需要的書籍,根據以下步驟進行訂購
選擇產品及數量 結 帳 輸入基本資料 取貨與付款方式
┌───────────────────────────────────────────────────┘
資料確定 確認結帳 訂單編號    

步驟二.
完成付款的程序後,若採用貨到付款等宅配方式,3~7天內 ( 例假日將延期一至兩天 ) 您即可收到圖書。若至分店門市取貨,一週內聯絡取書。

步驟三.
完成購書程序者,可利用 訂單查詢 得知訂單進度。

注意事項.
● 付款方式若為網路刷卡必須等" 2 ~ 3 個工作天"確認款項已收到,才會出貨.如有更改書籍數量請記得按更新購物車,謝謝。

● 大陸出版品封面老舊、磨痕、凹痕等均屬常態,除封面破損、內頁脫落...等較嚴重的狀態外,其餘所有商品將正常出貨。

● 至2018年起,因中國大陸環保政策,部分書籍配件以QR CODE取代光盤音頻mp3或dvd,已無提供實體光盤。如需使用學習配件,請掃描QR CODE 連結至當地網站註冊並通過驗證程序,方可下載使用。造成不便,敬請見諒。

● 我們將保留所有商品出貨權利,如遇缺書情形,訂單未達免運門檻運費需自行負擔。

預訂海外庫存.
商品到貨時間須4週,訂單書籍備齊後方能出貨,如果您有急用書籍,建議與【預訂海外庫存】商品分開訂購。