本書主要使用Xilinx公司的Artix��7 FPGA器件(引齣自帶的LVDS接口)和Cypress公司的USB 3.0控製器芯片FX3,以及一些常見的DDR3存儲器、UART電路、擴展接口等,由淺入深地引導讀者從闆級設計、軟件工具、相關驅動安裝到基礎的FPGA實例,從基於FPGA的UART、DDR3、USB 3.0、LVDS傳輸實例入手,掌握FPGA各種片內資源的應用以及接口時序的設計。
本書基於特定的FPGA開發平颱,既有足夠的理論知識深度進行支撐,也有豐富的例程進行實踐講解,並且穿插著筆者多年FPGA學習和開發過程中的各種經驗和技巧。對於希望基於FPGA實現USB 3.0和LVDS開發的工程師,本書提供的很多實例都是很好的參考原型,可以幫助其實現快速係統原型的開發。
Contents
目錄
第1章FPGA、USB與LVDS概述
1.1FPGA發展概述
1.2FPGA的優勢
1.3FPGA應用領域
1.4FPGA開發流程
1.5USB接口概述
1.6LVDS接口概述
第2章實驗平颱闆級電路詳解
2.1闆級電路整體架構
2.2電源電路
2.3FPGA時鍾與復位電路
2.3.1FPGA時鍾晶振電路
2.3.2FPGA復位電路
2.4FPGA配置電路
2.5FPGA供電電路
2.6DDR3芯片電路
2.7UART芯片電路
2.8LVDS接口電路
2.9USB 3.0控製器FX3電路
2.10其他接口電路
2.11FPGA引腳定義
第3章軟件安裝與配置
3.1Xilinx賬戶注冊與Vivado軟件下載
3.1.1Xilinx賬戶注冊
3.1.2Vivado下載
3.2Vivado安裝與免費License申請
3.2.1Vivado安裝
3.2.2免費License申請
3.3文本編輯器Notepad++安裝
3.4Vivado中使用Notepad++的關聯設置
3.5串口芯片驅動安裝
3.5.1驅動安裝
3.5.2設備識彆
3.6USB 3.0控製器FX3的SDK安裝
3.7USB 3.0控製器FX3的驅動安裝
3.7.1PC與開發闆的USB 3.0連接
3.7.2PC與USB連接
3.7.3USB 3.0控製器FX3驅動安裝
Xilinx FPGA伴你玩轉USB 3.0與LVDS
第4章第一個例程與FPGA的下載配置
4.1流水燈實例
4.1.1功能概述
4.1.2新建Vivado工程
4.1.3創建工程源碼、約束和仿真文件
4.1.4功能仿真
4.1.5編譯
4.2Xilinx 7係列FPGA配置概述
4.2.1不同配置模式的選擇
4.2.2FPGA配置比特流的大小
4.2.3FPGA加載配置方式選擇
4.2.4配置引腳功能定義
4.3XADC溫度監控界麵
4.4bit文件的FPGA在綫燒錄
4.5mcs文件的QSPI Flash固化
4.5.1FPGA配置設置選項
4.5.2生成mcs文件
4.5.3下載mcs件
第5章基礎外設實例
5.1撥碼開關的LED控製實例
5.2PLL配置實例
5.3用戶自定義IP核
5.3.1創建IP核
5.3.2移植IP核
5.3.3配置、例化IP核
5.4UART的loopback實例
5.4.1功能概述
5.4.2代碼解析
5.4.3闆級調試
5.5MicroBlaze的Hello World實驗
5.5.1功能概述
5.5.2MicroBlaze係統IP核配置
5.5.3MicroBlaze處理器軟件工程創建
5.5.4闆級調試
第6章基於FPGA的DDR3存儲器控製實例
6.1DDR3 IP核配置與仿真
6.1.1DDR3 IP核概述
6.1.2DDR3 IP核配置
6.1.3DDR3 IP核仿真
6.2基於在綫邏輯分析儀監控的DDR3數據讀/寫
6.2.1功能概述
6.2.2DDR3控製器IP接口時序解析
6.2.3代碼解析
6.2.4在綫邏輯分析儀配置
6.2.5在綫邏輯分析儀調試
6.3基於UART命令的DDR3數據讀/寫
6.3.1功能概述
6.3.2代碼解析
6.3.3闆級調試
第7章USB 3.0控製器FX3實例
7.1基於FX3內部DMA的USB傳輸loopback實例
7.1.1功能概述
7.1.2固件編譯與固化文件生成
7.1.3硬件連接與設備識彆
7.1.4FX3的USB Boot加載
7.1.5闆級調試
7.2FX3的SPI Flash代碼固化
7.2.1啓動設置
7.2.2SPI Flash固化
7.3基於FX3內部DMA的USB數據吞吐量測試
7.3.1硬件連接
7.3.2FX3的USB Boot加載
7.3.3FX3的基本Streamer功能演示
7.4基於FX3的UVC(USB Video Class)傳輸協議實例
7.4.1硬件連接
7.4.2FX3的USB Boot加載
7.4.3UVC設備識彆
7.5FX3固件SlaveFIFO配置修改說明
7.5.1功能概述
7.5.2GPIF Ⅱ Designer開啓與工程加載
7.5.3GPIF Ⅱ接口配置與工程編譯
7.5.4IDE下firmware工程加載
7.5.5IDE下firmware工程編譯
7.6基於FPGA�睩X3 SlaveFIFO接口的loopback實例
7.6.1功能概述
7.6.2Firmware下載
7.6.3FPGA代碼解析
7.6.4ILA在綫邏輯分析儀查看接口時序
7.7基於FPGA�睩X3 SlaveFIFO接口的StreamOUT實例
7.7.1功能概述
7.7.2Firmware下載
7.7.3FPGA代碼解析
7.7.4ILA在綫邏輯分析儀查看接口時序
7.7.5Streamer中查看數據吞吐量
7.8基於FPGA�睩X3 SlaveFIFO接口的StreamIN實例
7.8.1功能概述
7.8.2Firmware下載
7.8.3FPGA代碼解析
7.8.4ILA在綫邏輯分析儀查看接口時序
7.8.5Streamer工具測試數據吞吐量
第8章LVDS收發傳輸實例
8.1LVDS數據收發實例
8.1.1功能概述
8.1.2bit align處理
8.1.3代碼解析
8.1.4裝配說明
8.1.5闆級調試
8.2帶CRC校驗的LVDS數據收發實例
8.2.1功能概述
8.2.2CRC校驗基本原理
8.2.3CRC8檢驗代碼生成
8.2.4代碼解析
8.2.5裝配說明
8.2.6闆級調試
參考文獻
本章導讀
本章通過5個基礎實例,熟悉使用Xilinx FPGA對LED指示燈、撥碼開關、UART外設的控製,以及使用FPGA實現PLL、MicroBlaze處理器、IP核定製等。希望通過這些例程,讀者可以掌握基於Xilinx Artix��7係列FPGA器件和Vivado開發工具的使用。
5.1撥碼開關的LED控製實例
本實例對應工程at7_ex02,如圖5.1所示,AT7闆子闆載8個LED指示燈和8個撥碼開關與FPGA相連。本實例所要實現的功能很簡單,每個撥碼開關對應控製一個LED指示燈的亮滅狀態。
圖5.1撥碼開關與LED原理圖
本實例的功能: 每個時鍾周期,將最新的撥碼開關輸入賦值給LED指示燈,代碼如下所示。
module at7(
input sys_clk_i,//外部輸入50MHz時鍾信號
input ext_rst_n, //外部輸入復位信號,低電平有效
input[7:0] switch, //8個撥碼開關輸入,ON——低電平;OFF——高電平
output reg[7:0] led //8個LED指示燈亮滅控製
);
//-------------------------------------
always @(posedge sys_clk_i or negedge ext_rst_n)
if(!ext_rst_n) led <= 8'd0;
else led <= switch;
endmodule
Foreword
前言
FPGA技術在當下各種電子設計應用中越來越火熱,它的成本雖然還是高高在上,但是它給電子係統帶來的不可限量的速度和帶寬,以其在靈活性、小型性方麵的優勢,越來越被各種對性能要求高、偏重定製化需求的開發者所青睞。而使用LVDS、USB接口進行高速數據傳輸也是很多大數據采集應用的必然選擇。
因此,筆者結閤實際工程項目的需求,在本書中講述基於Xilinx Artix��7 FPGA器件+LVDS+USB 3.0的開發,通過實例講解,相信可以幫助讀者快速掌握這個原型係統,甚至將其移植到具體的項目或産品中。
本書共8章。
第1章闡釋FPGA、USB和LVDS的一些基本概念和應用背景。
第2章從FPGA開發平颱的電路闆設計入手,介紹FPGA闆級硬件電路設計要點,以及本書配套開發平颱的外圍電路的設計。
第3章講述開發環境的搭建,包括Xilinx FPGA集成開發環境Vivado、文本編輯器Notepad++、下載器驅動、UART驅動、USB 3.0控製器芯片FX3對應的SDK和驅動安裝,幫助讀者迅速解決這些最棘手的“軟”問題。
第4章以一個最基本的FPGA實例引領讀者掌握一個完整的FPGA開發流程,包括FPGA的下載配置和代碼固化操作。
第5章為基礎外設實例,包含基本的LED流水燈、撥碼開關控製、PLL配置、用戶自定義IP、UART和搭建基於MicroBlaze處理器的嵌入式係統,通過這些基本的實例確保讀者能夠快速掌握基於Xilinx FPGA的開發。
第6章主要介紹DDR3 SDRAM的配置、仿真和闆級調試。
第7章集中在USB 3.0控製器芯片FX3相關的實例上,既有單獨FX3和PC的USB 3.0傳輸實例,也有FPGA + FX3和PC之間的USB 3.0數據傳輸實例。
第8章講解如何使用FPGA實現LVDS接口應用,包括LVDS基本的收發設計以及包含CRC校驗的LVDS收發設計。
吳厚航(網名:特權同學)
2017年12月於上海
Xilinx FPGA伴你玩轉USB 3.0與LVD
這本書絕對是近年來我在FPGA領域遇到的最令人興奮的讀物之一,即使你已經有一些基礎,它也能給你帶來意想不到的啓發。我尤其喜歡作者在講解USB3.0部分時那種抽絲剝繭般的嚴謹態度,每一個協議層、每一個時序細節都講解得繪聲繪色,仿佛你正坐在作者身邊,由他親自手把手地指導。讓我印象深刻的是,書中不僅僅是理論堆砌,而是大量結閤瞭實際的工程案例,從原理到實現,再到調試過程中可能遇到的各種坑,都一一列舉並給齣瞭解決方案。這對於初學者來說,簡直是寶藏!我之前嘗試過幾本關於高速接口的書,但很多都停留在概念層麵,要麼就是代碼片段過於晦澀難懂。這本書的優勢在於,它能夠將復雜的理論轉化為可執行的代碼,並且提供瞭詳盡的說明,讓你不僅知其然,更知其所以然。讀完關於USB3.0的部分,我對高性能數據傳輸的理解上升瞭一個新的颱階,甚至開始思考如何在自己的項目中應用這些技術。而LVDS的部分,同樣精彩,那些關於信號完整性、阻抗匹配的講解,讓我茅塞頓開,很多之前在實際設計中遇到的信號問題,現在都能找到根源所在。作者的文字功底也非常紮實,沒有生澀難懂的專業術語,即使是初學者,也能循序漸進地理解。總而言之,這是一本能夠真正幫助你“玩轉”高速接口的實戰指南。
評分這本書真的像一位經驗豐富的導師,在我學習FPGA的過程中起到瞭至關重要的作用。我之前在學習USB3.0時,常常感到無從下手,協議繁多,時序復雜,總是在理論和實踐之間難以找到一個有效的連接點。而這本書的齣現,徹底改變瞭我的睏境。它沒有迴避USB3.0的復雜性,而是以一種非常清晰、邏輯嚴謹的方式,將龐大的協議棧分解成一個個易於理解的部分,並輔以大量的圖示和代碼示例。讓我印象最深刻的是,作者在講解數據傳輸流程時,會詳細分析每一個階段的狀態機和信號交互,這對於我理解整個流程至關重要。LVDS部分的講解也同樣齣色,作者通過對比不同的LVDS應用場景,以及分析信號完整性問題,讓我深刻認識到高速信號設計的重要性,並且掌握瞭一些實用的設計技巧。讓我感到驚喜的是,書中關於電子設計與嵌入式開發實踐的內容,並不是簡單地羅列一些開發闆和工具,而是深入探討瞭整個開發流程中的一些共性問題,例如如何進行有效的模塊化設計,如何進行高效的調試,以及如何優化性能等。這些內容對於提升我的工程實踐能力非常有幫助。總之,這本書為我提供瞭一個非常全麵且深入的學習平颱,讓我能夠更自信地去挑戰更復雜的FPGA項目。
評分這本書給我的感覺就像是一張精美的藏寶圖,指引我深入探索FPGA的奇妙世界。在我看來,它的最大價值在於其“實踐性”和“啓發性”。USB3.0和LVDS這兩個主題,本身就具有一定的門檻,但作者通過極其生動且易於理解的方式,將這些復雜的概念娓娓道來。我尤其欣賞書中關於信號完整性分析和優化的章節,這部分內容往往是很多書籍中容易被忽略的,但對於實際的高速接口設計至關重要。作者提供瞭非常具體的案例和分析方法,讓我能夠清晰地看到如何通過閤理的PCB布局和走綫來保證信號質量。而電子設計與嵌入式開發實踐的部分,更是錦上添花。書中關於如何進行項目規劃、如何選擇閤適的開發工具、以及如何進行有效的調試策略的講解,都非常實用。我之前在做嵌入式項目時,常常會遇到一些難以解決的bug,但通過學習書中的調試技巧,我發現很多問題迎刃而解。這本書不僅僅是傳授知識,更是培養一種解決問題的能力和一種工程思維。它讓我明白瞭,真正的“玩轉”FPGA,不僅僅是掌握技術,更是要將技術融會貫通,並應用於解決實際的工程問題。
評分坦白說,我一開始對這本書並沒有抱太大的期望,畢竟市麵上關於FPGA的書籍實在太多瞭,質量參差不齊。然而,當我翻開它之後,立刻就被深深吸引瞭。作者的敘事方式非常獨特,他沒有采用枯燥乏味的教科書式講解,而是將復雜的概念融入到一個個引人入勝的故事和場景中。例如,在講解LVDS的時候,他沒有直接拋齣公式和圖錶,而是先描繪瞭一個需要高速、低噪聲傳輸的場景,然後層層深入,解釋LVDS是如何在這種場景下大顯身手的。這種“故事化”的講解方式,讓原本晦澀的技術變得生動有趣,也更容易被我這樣的讀者所理解和記憶。更重要的是,書中對實際項目開發流程的描述也非常到位,從需求分析、架構設計,到代碼編寫、仿真驗證,再到硬件調試,每一個環節都進行瞭詳細的闡述,並提供瞭大量的實用技巧和注意事項。我特彆喜歡其中關於嵌入式開發實踐的部分,它不僅僅是教你如何寫代碼,更是教你如何像一個經驗豐富的工程師一樣去思考和解決問題。那些關於資源優化、功耗管理、時序約束的講解,對我來說具有極高的參考價值。通過這本書,我不僅掌握瞭相關的技術知識,更重要的是,培養瞭一種解決實際問題的思維方式。
評分讀完這本書,我最大的感受是,它真正做到瞭“授人以漁”。我之前在學習FPGA的時候,常常會陷入一個誤區,就是死記硬背一些API或者寄存器配置,但對底層原理卻瞭解不深。這本書恰恰彌補瞭這一塊的不足。它在講解USB3.0和LVDS時,並沒有僅僅停留在接口的應用層麵,而是深入剖析瞭其背後的硬件原理和設計思想。例如,在講解USB3.0的物理層時,作者詳細介紹瞭信號編碼、時鍾恢復等關鍵技術,讓我對高速串行接口的工作機製有瞭更深刻的認識。而LVDS部分的講解,同樣讓我受益匪淺,關於差分信號的産生與接收,以及如何抑製共模噪聲的分析,都非常有深度。更讓我感到欣喜的是,這本書在電子設計與嵌入式開發實踐方麵的論述,也充滿瞭智慧。作者分享瞭許多他在實際項目中積纍的寶貴經驗,例如如何進行係統級的性能評估,如何進行代碼重構以提高可讀性和可維護性,以及如何有效地進行團隊協作等。這些內容,對於任何希望在嵌入式領域有所建樹的開發者來說,都是無價之寶。這本書不僅僅是關於技術,更是關於如何成為一名優秀的工程師。
本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度,google,bing,sogou 等
© 2025 book.tinynews.org All Rights Reserved. 静思书屋 版权所有