本書主要使用Xilinx公司的Artix7 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開發的工程師,本書提供的很多實例都是很好的參考原型,可以幫助其實現快速系統原型的開發。
(1)《Xilinx FPGA伴你玩轉USB3.0與LVDS》基于Xilinx Artix-7 FPGA LVDS USB 3.0的硬件開發平臺,提供有豐富的例程講解:從基礎的FPGA入門實例到基于FPGA的UART、DDR3、LVDS、USB 3.0傳輸實例。(2)《Xilinx FPGA伴你玩轉USB3.0與LVDS》提供一站式入門學習方案:板級設計、軟件工具和相關驅動安裝、豐富的例程講解,讓讀者快速掌握FPGA各種片內資源的應用以及接口時序的設計。
前言
FPGA技術在當下各種電子設計應用中越來越火熱,它的成本雖然還是高高在上,但是它給電子系統帶來的不可限量的速度和帶寬,以其在靈活性、小型性方面的優勢,越來越被各種對性能要求高、偏重定制化需求的開發者所青睞。而使用LVDS、USB接口進行高速數據傳輸也是很多大數據采集應用的必然選擇。
因此,筆者結合實際工程項目的需求,在本書中講述基于Xilinx Artix7 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與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基于FPGAFX3
SlaveFIFO接口的loopback實例
7.6.1功能概述
7.6.2Firmware下載
7.6.3FPGA代碼解析
7.6.4ILA在線邏輯分析儀查看接口時序
7.7基于FPGAFX3
SlaveFIFO接口的StreamOUT實例
7.7.1功能概述
7.7.2Firmware下載
7.7.3FPGA代碼解析
7.7.4ILA在線邏輯分析儀查看接口時序
7.7.5Streamer中查看數據吞吐量
7.8基于FPGAFX3
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板級調試
參考文獻