內容簡介
由於大規模集成電路技術的飛速發展,一塊FPGA芯片上能實現的邏輯功能大幅度增加,並進一步嚮嵌入式DSP模塊和嵌入式處理器核技術發展,由此帶來的結果是在一塊FPGA芯片上能實現相當復雜的數字信號處理功能並保持相對較低的功耗,而芯片價格也一直在不斷下降。如今,FPGA已不再局限於ASIC設計的原型實現和功能驗證,而是可以直接用於復雜信號處理係統的商業化應用和解決方案的開發。《數字信號處理FPGA電路設計》專門為這樣一種技術發展趨勢而寫作。
書中主要介紹基於FPGA的數字信號處理電路的設計和實現方法。使用由全球最大FPGA芯片供應商Xilinx公司的大學閤作計劃(XUP)提供的Virtex-Ⅱ Pro開發闆和標準開發套件。書中除瞭介紹一些易於在FPGA上實現的DSP電路及其相關理論之外,特彆強調采用FPGA作為電路實現平颱時需要對算法和電路進行的特殊改造和設計,同時強調為充分利用硬件資源所需要采取的設計技巧。因此即使是從事ASIC設計的讀者也能從《數字信號處理FPGA電路設計》獲得關於DSP電路實現的許多參考知識。
《數字信號處理FPGA電路設計》可作為大專院校電子工程類高年級學生和研究生相關課程教材,也適用於工業界從事DSP應用開發的工程師自學或培訓。《數字信號處理FPGA電路設計》能幫助讀者獲得從DSP算法設計到硬件實現的整個流程的專業訓練,並在動手實現一些常用DSP電路的過程中熟悉業界通用的設計流程和EDA工具軟件。
作者簡介
施國勇,上海交通大學微電子學院教授,博士生導師。1987年畢業於復旦大學數學係應用數學專業,2002處獲美國華盛頓州立大學電機工程博士學位。曾任美國華盛頓大學電機工程係博士後研究員,荷蘭愛因霍芬科技大學訪問研究員。在自動控製、大規模集成電路設計自動化等領域發錶論文50餘篇。論文On Symbolic Model Order Reduction獲2007年IEEE電路與係統協會Donald O.Pederson最佳論文奬。為2007年上海市浦江人纔基金獲得者,2006年和2008年國傢自然科學基金麵上項目主持人。
內頁插圖
目錄
第1章 集成電路技術與數字信號處理
1.1 數字信號處理基本原理
1.2 FPGA技術
1.3 數字信號處理的應用
1.4 數字信號處理的發展趨勢
1.5 基於FPGA設計基本要點
1.6 從算法到硬件:一個設計例子
1.7 一個電路多樣性例子
1.8 本書的特色與重點
1.9 本書結構
1.10 對課堂教學的建議
1.11 本章小結
1.12 練習
1.13 參考文獻
第2章 Virtex-Ⅱ Pro FPGA資源與設計工具
2.1 FPGA的基本資源
2.2 FPGA的設計流程
2.3 Xilinx FPGA的設計流程
2.4 Xilinx FPGA設計工具軟件與安裝
2.5 本章小結
2.6 與System Generator兼容的ISE和MATLAB版本信息
2.7 參考文獻
第3章 基本算術運算電路
3.1 加法器設計與實現
3.2 符號數加法
3.3 溢齣與飽和
3.4 乘法器設計
3.5 乘法器在Slice上的實現
3.6 符號數乘法
3.7 除法器設計
3.8 開平方根電路的設計
3.9 本章小結
3.10 練習
3.11 參考文獻
第4章 采樣與量化
4.1 Fourier級數與Fourier變換
4.2 采樣數學模型
4.3 采樣定理
4.4 混疊
4.5 下采樣與上采樣
4.6 采樣與電路實現
4.7 量化
4.8 本章小結
4.9 練習
4.10 參考文獻
第5章 低成本低功耗濾波器設計
5.1 CIC濾波器
5.2 CIC位寬分析
5.3 CIC電路實現
5.4 本章小結
5.5 練習
5.6 參考文獻
第6章 CORDIC原理與實現
6.1 CORDIC基本原理
6.2 CORDIC的收斂性
6.3 雙麯CORDIC
6.4 CORDIC電路實現
6.5 本章小結
6.6 練習
6.7 參考文獻
第7章 FFT算法與電路實現
7.1 基2FFT算法推導
7.2 基2FFT蝶形計算電路
7.3 基4FFT算法推導
7.4 FFT電路結構設計
7.5 本章小結
7.6 練習
7.7 參考文獻
第8章 自適應濾波器設計
8.1 最小二乘問題
8.2 最小二乘問題迭代算法
8.3 自適應濾波算法
8.4 自適應濾波器電路設計
8.5 QR分解與電路實現
8.6 本章小結
8.7 練習
8.8 參考文獻
第9章 數據流圖與時序分析
9.1 數據流圖
9.2 數據流圖時序分析
9.3 時序重整
9.4 節點時序重整
9.5 最短路徑算法
9.6 本章小結
9.7 Karp定理證明
9.8 練習
9.9 參考文獻
第10章 設計案例
10.1 用4個乘法器實現10抽頭FIR濾波器
10.2 8位除法器設計與實現
10.3 8位開平方根電路的設計與實現
10.4 本章小結
附錄 實驗指導書
實驗前言
參考文獻
實驗一 Xilinx Virtex-Ⅱ Pro實驗闆與設計軟件
A1.1 實驗簡介
A1.2 實驗目的
A1.3 實驗任務
A1.4 實驗報告寫作要求
A1.5 實驗步驟
A1.6 參考文獻
實驗二 基本算術電路的FPGA實現
A2.1 實驗簡介
A2.2 實驗目的
A2.3 實驗任務
A2.4 實驗報告寫作要求
A2.5 實驗步驟
A2.6 練習
A2.7 參考文獻
實驗三 FIR濾波器設計
A3.1 實驗簡介
A3.2 實驗目的
A3.3 實驗任務
A3.4 實驗報告寫作要求
A3.5 實驗步驟
A3.6 參考文獻
實驗四 數控振蕩器設計與降頻轉換
A4.1 實驗簡介
A4.2 實驗目的
A4.3 實驗任務
A4.4 實驗報告寫作要求
A4.5 實驗步驟
A4.6 參考文獻
實驗五 CIC濾波器設計與應用
A5.1 實驗簡介
A5.2 實驗目的
A5.3 實驗任務
A5.4 實驗報告寫作要求
A5.5 實驗步驟
A5.6 參考文獻
實驗六 CORDIC計算嚮量長度
A6.1 實驗簡介
A6.2 實驗目的
A6.3 實驗任務
A6.4 實驗報告寫作要求
A6.5 實驗步驟
A6.6 練習
A6.7 參考文獻
精彩書摘
上述比較從根本上體現瞭用兩種典型方法實現同一個算法的差異。與通用處理器不同,定製電路或FPGA的設計具有更好的並行性與靈活性,而這種差異對於許多應用來說至關重要。當我們為一款數字信號處理産品決定設計指標和實現方式時,需要考慮諸多因素,如芯片的價格、投入的設計人力、設計周期、信息處理的速度、功耗、對小型化的要求、更新換代的容易程度以及成本等。其中特彆是産品的信息處理速度、開發成本、開發周期和功耗等會直接影響最終是選用軟件方式還是選用硬件(定製電路)方式實現一個。DSP的計算功能。
為此需要考慮算法的多樣性與電路實現(硬件)的多樣性之間的關係。算法本身的多樣性意味著可以改變算法的錶現形式,但不改變算法的功能,從而更有效地利用硬件資源。例如,直接用循環方式實現的運算需要多個時鍾周期纔能完成,可以把循環展開實行並行處理,以硬件換取速度。另一方麵,硬件(電路)實現的多樣性體現在用更經濟的電路實現同樣功能的計算,這通常與算法設計無關。例如,不直接用乘法器實現乘法運算(因乘法電路消耗比較多的硬件),而是用加法器和移位器實現乘法運算。
算法設計的多樣性更強調算法的結構設計(如並行處理、迭代、循環展開等),而電路實現的多樣性更強調電路層次的基本運算設計;如果一個算法中大量使用復雜運算(如乘、除、開平方根等),那麼把這些開銷較大的基本運算用開銷較低的簡單電路實現,通常可以大幅提高一個DSP係統的整體運行性能。
上述算法設計與電路實現的多樣性體現瞭數字信號處理實踐的靈活性和豐富內涵。雖然現代化的設計自動化工具能為設計者完成一定程度的選取和優化,但設計者仍可以有很大的自由度為應用問題選擇特殊的設計方案。為瞭實現從算法到電路之間的映射,作為設計者首先要對可支配的硬件資源和設計指標中的時序、功耗、帶寬等要求獲得第一手資料。在此基礎上對算法進行重新設計(reformulation)。對於算法的改造可以根據經驗,也可以使用一些形式化方法,如信號/數據流錶示法、時序重整(retiming)方法、流水綫和平行設計方法以及循環展開(1oopunfolding)等方法。這些通用方法大多數已經在一些流行的輔助工具中被實現,這些內容將在第10章做更多的介紹。
前言/序言
施國勇教授是我在上海交通大學任教時由衷地敬重的老師之一。他2005年夏從華盛頓大學迴國時最初的辦公桌就在我對麵,那時候,七八個老師擠在浩然大廈15樓一個狹小的房間裏,憧憬著閔行校園中的新微電子大樓的場景猶在眼前;而我,也得以近距離感受施教授深厚的數學功底和嚴謹的學術作風。
數字信號處理是所有電子信息類學生應該熟練掌握的專業基礎課程之一。長期以來,由於理論性較強,涉及的數學內容較多,教學一直頗有難度。盡管近年來的教學改革陸續將MATLAB等軟件工具引入課程,但距離實際的工程工作,比如設計齣具有數字信號處理係統能力的軟硬件係統以及芯片,仍然有較遠距離。施國勇教授的這本書填補瞭這方麵的空白。
這本書涉及的內容雖然屬於基礎性理論,但是,利用FPGA進行數字信號處理的教學方法卻是國際工科電子類教育研究中的前沿課題。Xilinx公司有幸和歐洲該領域頂尖的專傢教授閤作,於2006年將這種最前沿的課程資料引入中國。經過施教授在上海交通大學麵嚮研究生以及麵嚮本科生近三年的實際教學,並經過教學實踐的積纍和提煉,終於成書,可喜可賀。
2010年以後,隨著集成電路工藝越來越接近10nm,FPGA由於結構整齊、可現場編程,成為下一個十年中能夠繼續存活的為數不多的集成電路種類之一,並會加速發展,被更多的電子設備設計所采用。在這個進程中,FPGA也脫離瞭傳統的角色,越來越多地運用於嵌入式數字信號處理係統中。因此,2010年後的工程師需要熟練掌握FPGA技術,同時也要熟練掌握數字信號處理技術,纔能夠應對電子設備可移動化、網絡化、多媒體化的三重挑戰。而本書的推齣,使學生在第一次接觸數字信號處理時,就以高度並行的思路,完整地將並行世界的本源,以FPGA設計的形式呈現齣來,而Xilinx公司的System Generator等圖形化工具的引入,使得這個學習過程變得容易並且富有樂趣。
Xilinx公司大學閤作計劃將一如既往地支持本書的後續發展,包括更新軟件版本、更新實驗闆卡、聯閤實驗室捐贈等,期待本書的讀者和學生們從中獲得學習的樂趣。
《嵌入式係統開發實戰:從硬件到軟件的深度解析》 內容簡介 《嵌入式係統開發實戰:從硬件到軟件的深度解析》是一本旨在為讀者提供全麵、深入的嵌入式係統開發知識和實踐經驗的專業著作。本書並非僅聚焦於某一特定領域的理論或技術,而是從宏觀到微觀,係統地展現瞭嵌入式係統從概念設計、硬件選型、底層驅動開發、操作係統移植,直至應用軟件實現的全生命周期。本書的獨特之處在於,它強調理論與實踐相結閤,通過大量的實例分析和代碼示例,幫助讀者建立紮實的理論基礎,並掌握將理論轉化為實際産品的開發能力。 本書結構與內容概覽 本書共分為四大篇,涵蓋瞭嵌入式係統開發的各個核心環節: 第一篇:嵌入式係統基礎與硬件平颱構建 本篇將從嵌入式係統的基本概念齣發,為讀者構建一個完整的認知框架。我們將首先探討嵌入式係統的定義、特點、應用領域以及發展趨勢,幫助讀者理解嵌入式係統在現代科技中的重要地位。 嵌入式係統的演進與核心要素: 深入分析嵌入式係統與通用計算機係統的區彆,闡述其在資源受限、實時性、可靠性等方麵的特殊要求。我們將迴顧嵌入式係統發展的關鍵裏程碑,並重點解析其構成要素,包括微處理器/微控製器、存儲器、輸入/輸齣接口、通信接口以及嵌入式操作係統等。 微控製器(MCU)與微處理器(MPU)選型指南: 針對初學者和有一定經驗的開發者,本書將提供詳細的MCU和MPU選型策略。我們將對比分析不同架構(如ARM Cortex-M、Cortex-A等)的優缺點,以及在不同應用場景下的適用性。同時,還會介紹評估芯片性能、功耗、接口資源、開發生態以及成本等關鍵因素的方法。 典型嵌入式硬件平颱解析: 為瞭便於讀者實踐,本書將選取當前主流的嵌入式開發闆作為案例進行深入剖析。我們將詳細介紹這些開發闆的硬件組成,包括主控芯片、內存、存儲設備、外設接口(如GPIO、UART、SPI、I2C、ADC、DAC等)的原理和連接方式。讀者將學習如何閱讀硬件原理圖,理解信號通路,並掌握基本的硬件調試技巧。 嵌入式係統電源管理與功耗優化: 功耗是嵌入式係統設計中至關重要的一環,尤其是在電池供電設備中。本節將詳細講解電源管理的基本原理,包括低功耗模式、電壓調節、電流檢測等。我們會介紹常用的低功耗設計技術,如時鍾門控、電源門控、動態電壓頻率調整(DVFS)等,並提供實際的功耗優化案例。 PCB設計基礎與關鍵考慮因素: 雖然本書不側重於PCB設計本身,但理解PCB在嵌入式係統中的作用至關重要。我們將簡要介紹PCB的設計流程,並重點強調在嵌入式係統設計中需要特彆關注的PCB相關問題,例如信號完整性、電源完整性、電磁兼容性(EMC)以及散熱設計等。 第二篇:底層驅動與裸機編程實戰 本篇將帶領讀者深入到嵌入式係統的“心髒”,學習如何編寫底層驅動程序,以及在沒有操作係統支持的裸機環境下進行開發。 微控製器寄存器級編程: 掌握微控製器的寄存器操作是進行底層驅動開發的基礎。本節將詳細介紹寄存器的概念、功能和訪問方式,並通過具體的MCU(如STM32係列)來演示如何通過直接操作寄存器來控製GPIO、定時器、中斷控製器等外設。讀者將學會如何查閱數據手冊(Datasheet)並從中提取所需信息。 常用外設驅動程序開發: 本部分將涵蓋對嵌入式係統中常見外設的驅動程序開發。我們將重點講解GPIO、UART、SPI、I2C、ADC、DAC等接口的驅動實現。每個外設的驅動開發都將包含原理講解、寄存器配置、中斷處理以及數據讀寫等關鍵步驟,並提供可運行的代碼示例。 中斷係統設計與實時響應: 中斷是嵌入式係統實現實時性的關鍵機製。本節將深入講解中斷的工作原理,包括中斷嚮量錶、中斷優先級、中斷嵌套等。讀者將學習如何設計高效的中斷服務程序(ISR),以最小化中斷響應延遲,並處理並發的硬件事件。 定時器與計數器應用: 定時器是嵌入式係統中不可或缺的資源,用於實現延時、周期性任務、脈衝生成等功能。本節將詳細介紹不同類型定時器的功能和應用,包括通用定時器、PWM定時器、RTC(實時時鍾)等,並提供相應的編程示例。 內存管理與訪問: 嵌入式係統中的內存資源通常比較有限。本節將講解內存的分類(如RAM、Flash、EEPROM),以及如何有效地訪問和管理這些內存。我們將討論直接內存訪問(DMA)技術,以及如何使用DMA來提高數據傳輸效率。 bootloader的設計與實現: bootloader是嵌入式係統啓動過程中的第一個程序,它負責初始化硬件並加載應用程序。本節將介紹bootloader的作用、基本結構以及常見的實現方式。讀者將學習如何設計一個簡單的bootloader,用於應用程序的加載和更新。 第三篇:嵌入式操作係統(RTOS)深入應用 本篇將重點介紹實時操作係統(RTOS)在嵌入式係統開發中的重要作用,並提供詳細的應用指南。 RTOS核心概念與架構: 本節將深入剖析RTOS的核心概念,包括任務(Task)、任務調度(Task Scheduling)、任務間通信(IPC)、同步與互斥(Synchronization and Mutex)、內存管理以及中斷處理等。我們將對比分析幾種主流RTOS(如FreeRTOS、RT-Thread、UCOS)的特點和適用性。 FreeRTOS入門與進階: 作為最受歡迎的開源RTOS之一,FreeRTOS將是本篇的重點。我們將從FreeRTOS的移植和基本API使用入手,逐步講解任務創建、任務刪除、任務優先級管理、信號量、互斥鎖、消息隊列、事件標誌組等核心功能。 任務間通信與同步機製: 在多任務環境中,任務間的有效通信和同步是保證係統穩定運行的關鍵。本節將詳細講解RTOS提供的各種IPC機製,如消息隊列、信號量、互斥量、事件標誌等,並提供豐富的應用場景示例。 實時性保障與中斷管理: RTOS如何實現實時性是其核心優勢之一。本節將探討RTOS中的中斷管理策略,包括中斷上下文、ISR與任務的交互、中斷延遲的分析與優化等。讀者將學習如何設計高效的實時係統,滿足嚴格的時間約束。 內存管理在RTOS中的應用: 嵌入式係統中的內存資源需要被高效地管理。本節將介紹RTOS提供的內存管理機製,如靜態內存分配、動態內存分配(如堆管理)以及內存池等,並分析不同內存管理方式的優缺點。 RTOS在復雜係統中的應用模式: 本節將進一步探討RTOS在更復雜的嵌入式係統中的應用模式,如設備驅動的RTOS化、網絡通信模塊的設計、圖形用戶界麵的集成等。我們將通過實際案例,展示RTOS如何簡化復雜係統的開發和維護。 第四篇:嵌入式應用開發與係統集成 本篇將聚焦於如何在RTOS或裸機環境下開發實際的嵌入式應用程序,並最終將軟硬件有機地集成起來,構建一個完整的嵌入式産品。 嵌入式Linux係統開發概覽(選講): 對於需要更高計算能力和更豐富軟件生態的嵌入式係統,嵌入式Linux是一個重要的選擇。本節將簡要介紹嵌入式Linux係統的構建過程,包括交叉編譯工具鏈、bootloader(如U-Boot)、Linux內核配置與編譯、根文件係統製作等。並將重點放在介紹如何在嵌入式Linux環境下進行應用程序開發。 嵌入式係統調試與測試技術: 調試是嵌入式係統開發中最耗時但最關鍵的環節。本節將介紹多種調試工具和技術,包括仿真器(Emulator)、下載器(Debugger)、邏輯分析儀、示波器等。我們將重點講解使用JTAG/SWD接口進行硬件調試,以及如何利用GDB等工具進行軟件調試。 通信協議與網絡應用: 現代嵌入式係統通常需要與其他設備或雲端進行通信。本節將介紹嵌入式係統中常用的通信協議,如TCP/IP、UDP、HTTP、MQTT、CoAP等。我們將重點講解如何在嵌入式係統中實現網絡連接,並開發相應的客戶端或服務器應用程序。 人機交互(HMI)界麵設計與實現: 對於麵嚮用戶的嵌入式産品,友好的用戶界麵至關重要。本節將探討嵌入式係統中的HMI設計原則,以及如何實現基於GUI(圖形用戶界麵)或CLI(命令行界麵)的交互方式。我們將介紹一些嵌入式GUI框架,並展示如何將其集成到嵌入式係統中。 嵌入式産品開發流程與案例分析: 本篇的最後,我們將係統地梳理一個典型的嵌入式産品從概念到實現的開發流程,包括需求分析、方案設計、原型開發、硬件集成、軟件開發、測試驗證、量産等環節。我們將選取若乾典型應用場景(如智能傢居、工業自動化、醫療設備等),通過深入的案例分析,幫助讀者理解如何將本書中學到的知識融會貫通,解決實際的工程問題。 可靠性與安全性設計考慮: 嵌入式係統在許多關鍵領域都有應用,因此其可靠性和安全性不容忽視。本節將探討嵌入式係統設計中的可靠性問題,如容錯設計、錯誤檢測與恢復機製。同時,也將涉及嵌入式係統的安全加固,包括代碼安全、通信安全、數據安全等。 本書特色 理論與實踐並重: 本書不僅提供瞭紮實的理論基礎,更通過大量的實際案例和代碼示例,幫助讀者將知識轉化為動手能力。 循序漸進的難度: 內容從基礎概念到高級應用,層層遞進,適閤不同層次的讀者。 緊跟行業前沿: 涵蓋瞭當前嵌入式開發領域的熱點技術和發展趨勢。 麵嚮解決實際問題: 強調實際工程應用,幫助讀者掌握解決復雜嵌入式係統開發挑戰的能力。 《嵌入式係統開發實戰:從硬件到軟件的深度解析》將是您在嵌入式係統開發領域取得成功的寶貴指南。無論您是初入此行的學生、尋求技能提升的工程師,還是希望深入瞭解嵌入式係統奧秘的開發者,本書都將為您提供一條清晰的學習路徑,助您在嵌入式技術的廣闊天地中騰飛。