-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

FPGA設計技巧與案例開發詳解

( 簡體 字)
作者:韓彬,于瀟宇,張雷鳴類別:1. -> 電子工程 -> FPGA
譯者:
出版社:電子工業出版社FPGA設計技巧與案例開發詳解 3dWoo書號: 39575
詢問書籍請說出此書號!

缺書
不接受訂購

出版日:9/1/2014
頁數:580
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
不接受訂購
ISBN:9787121242540
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

序一
受《電子技術應用》ChinaAET網站楊暉委托,很高興為韓彬寫的基于Altera FPGA的《FPGA設計技巧及案例開發詳解》寫序。
本書的作者韓彬對FPGA的發展史非常清楚,同時也了解當前FPGA的最新進展,以及對Altera軟件、硬件有廣泛的理解。FPGA技術發展到今天,已經由最初的黏合邏輯功能,逐步發展為系統級芯片,也就是所謂的SoC—System on Chip。可以這樣來概括FPGA—所有數字電路的元素都包括在FPGA里面。學會FPGA也就意味著將來會有更加寬廣的事業前途,能夠掌握最前端的技術。
書中列舉了大量的實驗,都是作者自己的經歷。最可貴的是書中提出了代碼規范的問題。這不但對個人的編程有益,更對一個團隊、一個企業有著指導性的意義。個人的代碼風格可以任意發揮,只要自己看得懂。但是如果針對一個產品,一項系統級設計,則為了給后來者提供一個可讀性強,易于查閱,糾錯等的環境和便于團隊之間的協同合作,規范性的代碼編寫是必需的,而且是相當重要的一環。
最后,我特別提示的是這本書也同樣適合大學老師閱讀。其中最有參考價值的就是,在硬件描述語言的教學中,要加上代碼風格和編寫規范的章節。

陳衛中
Altera中國區大學計劃經理
2014年5月28日于成都

序二
與韓彬相識已近五年,近聞其首本FPGA實例設計方面的書作即將出版,我欣然受邀為之作序。初識韓彬,是從他的網絡文章開始的,當時我偶然關注到博客園(www.cnblogs. com)的幾篇技術博文,是關于CPLD、FPGA具體應用及電子設計方面的內容,例子敘述詳細,觀點鮮明,很有參考價值。而這些博文的博主有一個與眾不同的名字—“CrazyBingo”,讓人記憶深刻。時隔一年后,我才知道這個“CrazyBingo”居然是我當時上課班級學生中的一員,他就是韓彬。后來,他在我這里完成了優秀的本科畢業設計,是一個基于FPGA實現的多畫面疊加顯示技術方面的課題,在這期間,他對FPGA應用技術的鉆研態度讓我印象深刻。最后,他飛去了西電,因為他考上了西電的研究生。
隨著集成電路技術的飛速發展,FPGA的邏輯規模和內嵌資源越來越多,但部分FPGA的成本卻越來越低。隨著成本的降低,在電子系統應用設計中,FPGA不再是曲高和寡的陽春白雪,它們的應用領域早已不局限于高端應用,而是擴展到電子系統應用設計的各個角落。近年來,大量工業控制設備、工業機器人、監控攝像機、大型顯示設備等中都可以見到FPGA的身影,這就要求有一大批熟悉FPGA應用的電子工程師。閱讀此書,可以幫助現有的還不熟悉FPGA的電子工程師進行FPGA快速入門。
FPGA應用設計屬于工程設計范疇,所謂工程,勢必涉及技術細節,涉及操作流程,涉及具體問題的具體解決,往往不能由理論推理直接得到具體解決方法及步驟。此書以FPGA設計案例做引導講解,設計步驟循序而下,無一遺漏,非常適合FPGA入門的初學者自學。在案例設計分析過程中,此書又時不時附加一些技術技巧,適合FPGA已經入門的設計者提高設計效率。換句話說,此書很實用,照著書來,FPGA設計就變得不是那么難學了。十年前,我和潘松老師編著《EDA技術實用教程》一書,在書名中加入“實用”兩字,也是這種理念。
韓彬在此書中加入了大量實際的FPGA應用設計,這些代碼來源于他自己學習、參加的科研課題,與資深設計者的技術交流等,有很多都極具參考價值,也多處體現了創新性。在這里,我希望他在FPGA應用創新之路上繼續前行,也同時希望我的學生中能出現更多的韓彬。

黃繼業 老師
主講電子系統設計、EDA技術及應用、單片機開發等
2014年6月26日于杭州電子科技大學


序三
我所了解的Bingo,是個勤奮好學,求知欲極強,甚至于對技術追求幾近瘋狂的工科男,難怪乎“自詡”為CrazyBingo,名副其實。
速度的閱畢此書,不難從字里行間感受到Bingo的用心,他這是極盡所能地將畢生所學所悟躍然紙上,其幽默詼諧的文風更是能夠帶大家輕松愉快的踏上FPGA的學習之旅。
客觀的講,這也是一本不錯的FPGA/CPLD設計參考書,里面可以找到很多純技術派中看不到的背景知識,也可以發現很多理論派中難覓的實踐案例。甚至于說,這本書凝聚的是Bingo同學數年技術生涯的各種經驗和技巧的總結。Bingo是個聰明人,在學習的路上,并不是盲目的照抄他人,更多的是在“去其糟粕,取其精華”之后持續知識點的升華。無疑地,這是本書最大的看點之一。
我曾說過,也許人們會忘記你做過多少項目,干過多少工程,但一定不會忘記你寫過一本好書。Bingo是一個極其瘋狂又踏實用心的人,永遠忠于年輕時的夢想,我極力向廣大FPGA初學者和愛好者們推薦這本書。

特權同學
《深入淺出玩轉FPGA》與《愛上FPGA開發——特權和你一起學NIOS II》圖書作者
2014年8月于上海

序四
認識韓彬源于一次偶遇,他那創新的熱情、充沛的活力和嚴謹的態度,都深深地感染了我。后來隨著各種技術問題探討程度的深入,我們相互了解的程度也逐步加深。最近的一次討論,獲悉他正籌劃著《FPGA設計技巧與案例開發詳解》的出版事宜,他熱情地邀請我為該書作序。說實在的,我自愧能力有限,但深情難卻,勉強為之。
對于FPGA我并不陌生,自從2012年開始接觸FPGA起,我就對它一直著迷至今。今天,FPGA已經成為最令人激動的器件類型之一。FPGA那具有可編程的體系結構讓它可以實現從微處理器軟核到硬件加速器的任何東西,它所提供的可編程的通用輸入/輸出(GPIO)引腳、存儲單元、乘法器、加法器和數字信號處理(DSP)模塊等豐富的資源,幾乎可以讓你實現各種實際應用,真可謂是“nothing is impossible”。從便攜式設備到各種娛樂設備,再到用于搜尋外太空生命的每秒萬億次的計算引擎,FPGA擁有相當廣泛的應用范圍。難怪有人把這個時代稱為FPGA時代。因此,我一直期待有更多的年輕人能加入到這個行列中,韓彬便屬于其中的佼佼者。
學習FPGA并不是一件容易的事情,對于剛入門的初學者,特別是學生來說,需要一本通俗易懂、貼近實際的參考書。然而,當前市場上關于FPGA的書籍繁多,質量參差不齊,給初學者的學習帶來很大困惑。韓彬所撰寫的《FPGA設計技巧與案例開發詳解》一書,從基礎講起,緊貼實際,從代碼設計、仿真,到硬件驗證都可以看出他是經過精心設計的。例如,第8章從LCD的硬件電路設計,LCD驅動的C語言實現,LCD驅動的Verilog HDL實現和仿真,到最后的板上實現,邏輯清晰、深入淺出。讀者可以從這一章領會到C語言和Veriog HDL硬件語言的異同,從而加深對硬件語言的理解。又如,第14章的基于OV7725的攝像頭視頻圖像采集系統,這是一個完整的工程例子,它從系統框架、算法流程,再到具體硬件的介紹和實現,環環相扣、逐步深入,讓讀者清楚現實生活中具體的工程是怎樣開展和實現的。總體來講,本書具有以下特點:
1.深入淺出
從FPGA發展歷史及其特點、Quartus II開發工具的安裝使用、Verilog HDL設計、FPGA的PCB Layout等,都分別采用通俗易懂的語言進行講解,并通過實例對FPGA設計的基本原則、技巧,以及在接口設計領域的典型應用進行闡述。
2.突出驗證
本書的一大特點是配套了相應的開發板,并給出了大量的仿真測試,以幫助讀者直觀地掌握硬件語言的操作過程,從而深入理解信號間的時序互動關系、數據通路的操作,最終通過硬件進行驗證。其目的都是為了幫助讀者厘清其中錯綜復雜的時序關系,并開發出可綜合、無競爭和高質量的代碼。
3.精選實例
書中的每個知識點對應的實例都是精心挑選的,并對代碼部分進行了解釋說明。本書還提供完整的源代碼,讀者通過跟蹤練習可加深對書中知識點的掌握和理解,最終具備FPGA系統設計和工程開發的能力。
《FPGA設計技巧與案例開發詳解》作為一本深入淺出、通俗易懂的著作,給每位想從事FPGA開發的初學者開辟了一條通往FPGA的坦途,愿各位能夠憑借此書開啟通往FPGA的大門。最后以“Something more is important!”與各位讀者共勉!

蔡肯 老師
主講電子系統設計、EDA技術及應用等
2014年6月6日于仲愷農業工程學院

序五
20世紀80年代中期,Altera和Xilinx分別推出了與標準門陣列類似的FPGA,它具有體系結構和邏輯單元靈活、集成度高及適用范圍寬等特點。這種器件兼容了PLD和通用門陣列的優點,可實現較大規模的電路,編程也很靈活。與其他ASIC相比,它具有設計開發周期短、設計制造成本低、開發工具先進、標準產品無須測試、質量穩定及可實時在線檢驗等優點。與PAL、GAL器件相比,它的優點是可以實時地對內置的SRAM或EPROM編程來改變器件功能,從而實現現場可編程(基于EPROM型)或在線重配置(基于SRAM型)。因此,FPGA被廣泛應用于產品的原型設計和產品生產之中。
FPGA通常包含三類可編程資源:可編程邏輯功能塊、可編程I/O單元和可編程內部互連。可編程邏輯功能塊是實現用戶功能的基本單元,它們通常排列成一個陣列,散布于整個芯片;可編程I/O單元實現芯片上邏輯與外部封裝腳的接口,將陣列圍繞于芯片四周;可編程內部互連包括各種長度的線段和編程連接開關,它們將各個可編程邏輯塊或I/O塊連接起來,構成特定功能的電路。不同廠家生產的FPGA在可編程邏輯塊的規模、內部互連線的結構和采用的可編程元件上存在較大的差異。目前,在市場上比較常用的是Altera公司的FPGA器件。
由于FPGA能夠減少電子系統的開發風險和開發成本(NRE),同時有效地縮短上市時間(time to market),并且通過在系統編程、遠程在線重構等技術降低了維護和升級成本,因此在通信、控制、數據計算等領域得到了廣泛的應用。FPGA 的發展推動了先進制造工藝和封裝工藝的出現,通過全定制的電路和版圖設計方法所進行的設計優化,使FPGA 在邏輯密度、性能、功能和功耗方面得到了大幅改善,成本顯著下降。隨著FPGA 在功能、密度、速度上的不斷提升與成本的降低,用戶需求與協議標準的變化,FPGA 芯片由于其便利的可升級性,不僅被用來制作原型機,而且還被大量地應用到網絡、消費電子、科研、航天及國防的許多最終產品中,成為一系列電子系統的核心。
隨著時代的發展,信息技術已成為新興生產力的代表,信息產業不但逐漸成為新的經濟增長點,還帶動了傳統產業的升級改造,促進了其他高新技術產業化的發展,成為提高企業競爭力和增強國家綜合實力的關鍵所在。
由于電子技術的發展突飛猛進,整個電子系統的結構和設計思想、設計方法正在發生著革命性的變化。電子系統的結構由“微處理器+存儲器+邏輯控制接口電路”發展到“微處理器+存儲器+可編程器件”的全可編程模式。子系統的設計方法從“自下而上”的設計方法改變為一種全新的“自頂而下”設計方法。因此,電子系統的分析和設計手段發生了變化,逐漸形成了以計算機為基本工作平臺,配合外部可編程器件所搭建的硬件平臺,完成電子系統設計樣機與產品設計的電子設計自動化技術(EDA技術)。目前世界上的經濟發達國家已經完成了從傳統的電子系統設計模式向現代設計模式的觀念上的轉變,而且在電子產品中大量應用該設計方法,獲得了極大的競爭力與成功。
隨著改革開放的深入和中國加入WTO,世界逐漸變成地球村,因此為了應對來自各個方面的競爭,我國急切需要具備掌握可編程邏輯器件FPGA的設計理論和設計方法,并能從事現代電子系統的研究和設計的高級專業人才。
但是,目前我國高校教育體系關于FPGA教學的相關內容過于陳舊,所涉及的教學實驗內容大多還停留在對FPGA概念的基礎認識階段,所教授的相關內容較為簡單,且教學方法和教學內容與單片機課程類似,無法培養學生對FPGA的學習興趣。這導致學生在學習FPGA的過程中,無法接觸到目前電子設計行業中最新的設計方法與設計理念,不能完整地掌握FPGA的設計使用方法,從而無法在進入工作崗位后勝任FPGA設計方面的工作。
在大學教書育人的過程中,我接觸了很多學生,他們雖然對FPGA的基本設計理論都有比較不錯的掌握,但是對于如何應用FPGA進行電子系統設計,尤其是對于如何設計考慮基于FPGA的電子系統存在很多疑惑。產生這一問題的根本原因在于大學階段的FPGA教育主要集中在對硬件描述語言的介紹與學習,關于如何設計考慮和解決針對FPGA的電子系統與電路設計需要注意的問題很少提及,至于具有較大實用價值的工程實例則更是少之又少。而且,很多老師與學生完全按照單片機的學習方法對待FPGA相關課程,其結果是學生只掌握了硬件描述語言如何使用,而忽視了對實現硬件描述語言的載體——FPGA開發平臺的學習與設計。這樣培養出來的學生可以寫程序,但無法自己去設計開發由FPGA組成的復雜電子系統。因此,我認為加大對大學本科教育階段EDA學習過程中FPGA實用設計方法與設計技巧的相關內容介紹勢在必行。同時,也可以通過在大學課程中引入基于FPGA的實際電子產品設計開發流程,使學生了解面向市場應用需求的電子產品開發過程、縮短電子系統設計周期、降低設計成本、提高設計正確率。此外,也可以在一定程度上提高學生的動手能力,滿足用人單位的實際需求,解決高校畢業生就業難的問題。
因此,在大學本科教育階段增加FPGA實際工程開發應用方面的學習,對于加深學生對數字電子系統的了解,增強應用各種設計方法和設計工具進行系統和綜合分析的能力具有積極的作用。通過本書,學生可以全面理解面向市場需求和工程應用的針對FPGA的電子系統設計概念和方法,鞏固和加深理解所學的理論知識,并通過實際案例的講解,樹立正確的設計觀點、嚴謹的科學作風、理論聯系實際的能力與動手操作的能力,達到提高綜合素質的目的,實現目前所提倡的“卓越工程師”教育。
本書結合FPGA的嵌入式系統結構與視頻圖像處理算法,使用淺顯易懂的語言,為讀者介紹了利用FPGA針對嵌入式圖形顯示的數字圖像處理系統設計、驗證方法,建立了系統級設計的概念,使讀者更加容易掌握實際工程中嵌入式電子系統圖形界面設計的方法。同時,也通過各種實際案例為讀者介紹了利用FPGA控制常用存儲器和外部設備的方法,本書第13、14章設計了基于SDRAM控制器的視頻圖像采集系統,深入地向讀者介紹了相關的設計精髓。因此,本書不僅適用于本科生和研究生的專業課教學,也可以作為一本工具書幫助電子設計工程師更好地掌握FPGA的設計使用方法,是一本不可多得的教科書和工具手冊。
與韓彬相識于2011年,距今也3年有余,在我的印象中他一直是一個技術控、偏執狂與強迫癥患者,擅長基于FPGA的視頻圖像處理設計。初始韓彬緣于他在杭電所著的第一本電子書《從零開始走進FPGA世界》,雖然這第一本書不是很成熟,但是已經為很多FPGA的初學者打開了一扇窗。相比前作,韓彬所著的這本《FPGA設計技巧與案例開發詳解》從實際工程應用的視角出發,尤其是結合視覺處理的具體設計案例為讀者介紹了FPGA設計過程中將會遇到的各種實際問題與解決方法。通過本書,不僅可以使讀者學到FPGA開發工具與設計語言的使用,還可以了解基于FPGA的電子系統設計所需要注意的問題,掌握基于FPGA開發平臺的圖像處理系統設計方法,并且能夠通過作者開發的工程實例進一步掌握FPGA設計技巧的精髓。本書不僅條理清晰、內容豐富,而且是一本不可多得的工具書、參考書,非常適合初學者與工程設計人員。
想要獲得成功,就意味著你要付出比別人更多的努力。因此將“做不成一件事總是有各種理由,但人們只看到你沒做成;做成一件事只需一個理由,就是堅持”這句話送給廣大的FPGA初學者與開發人員。希望你們堅持自己的夢想,不改初衷,在FPGA設計這條路上走得更好、更遠!

張雷鳴 老師
主講現代電子系統設計、EDA、研究生的數字電子系統設計等
2014年5月30日于河南科技大學電氣工程學院


序六
我們生活的時代是一個技術快速更新的時代,這是一件讓人痛并快樂的事。隨著制造工藝的提高,我們可以用更低的成本買到資源更豐富的FPGA,同時由于新技術的層出不窮,讓我們手中的知識變得越來越乏善可陳。值得慶幸的是,這些新技術同樣令我們的設計更加出色,如14.1Gbps的高速串行接口,DDR3的存儲器硬核,取代SOPC的高性能Qsys,高效編譯的Quartus II等。
我們生活的時代也是一個信息爆炸的時代,信息的實時處理問題顯得更為突出。作為分布式計算的代表,近年來云計算成為技術領域的熱門話題。而作為實時處理的另一分支——硬件加速(Hardware Acceleration)技術,在處理能力上也顯得毫不遜色,并在高帶寬數據輸入的應用中更具優勢。硬件加速的主要實現方式為GPU和FPGA。NVIDIA公司提出的CUDA技術使GPU成為一種可編程利用的資源,其并行結構為實時系統提供了一種有效的硬件加速方式。而FPGA在本質上具有無可比擬的并行運算潛力和靈活的定制能力。隨著FPGA芯片供應商的技術革新,FPGA中不僅可集成大量存儲塊、硬件乘法器等DSP模塊,還可以將具有固定或可裁剪結構的處理器嵌入其中,在一定程度上彌補了浮點運算的短板,使FPGA的并行計算能力得到了極大的提升。尤其是在圖像處理領域中,數據由各個獨立的像素構成,具有良好的并行特性與定點運算特性,更適合基于FPGA硬件加速技術的應用。例如,在2048×2048分辨率灰度圖像的中值濾波中,結合本書16.6節所述算法,可以在圖像傳輸過程中實現;而采用工作頻率為1GHz的DSP,完成這一過程的運算耗時已接近秒級。
作為一個設計人員,認識FPGA是我的幸運。我在2006年讀研究生期間,由于項目需求,要實現一套基于400通道的數據實時采集與存儲系統,這讓我了解到了FPGA最振奮人心的一個特性——并行。與同寢夜聊,每當談到技術話題時,精通ARM的人說,我們有豐富的接口;精通DSP的人說,我們能在GHz的頻率下每個時鐘周期完成xx次乘法運算,他們問我,FPGA有什么?我淡定地說,創造。
選擇了FPGA,其實選擇的是一張白紙。描繪出什么內容,你做主。看到ARM中有串口,你也畫上去一個串口,這樣永遠都在跟隨別人的腳步。通用的處理器是為了滿足通用的設計,而FPGA的設計是定制的設計。如果給我們足夠的資源,則在我們的設計中位寬沒有了限制,我們的運算能力也沒有了限制,我們唯一的限制就是我們限制了自己的創造。算法設計也是如此。現有的算法大部分是基于計算機平臺的,運算中的反復迭代過程通常是影響實時性的關鍵因素。而對于FPGA的算法開發者們,請記住,你們手中的FPGA永遠不是一個人在戰斗。必要的時候,跟馮·諾依曼說再見,你會獲得更多。
FPGA最后一個重要的特性——靈活。在FPGA領域,很多技術都是基于靈活特性來實現的。例如,解決多任務下資源不足的“可重構技術(Reconfigurable)”,解決寄存器間門延時過長的“周波流水技術(Wave-Pipelining)”,以及本書16.8節所述的解決大量數據傳輸問題的零延時數據傳輸技術等。我期待著,未來的種種技術的革新,來源于現在的你。
最后,我們生活的時代同樣是一個信息共享的時代。從接觸FPGA至今,網絡上涌現了大量極具應用價值的博文,并通過博客、論壇、QQ群等方式,帶動了一大批FPGA設計者,為國內FPGA技術的發展做出了貢獻。例如,元老級人物特權同學,功力深厚的XiaomaGee,激情四射的CrazyBingo,駿龍科技的現場應用工程師.COM張,以及QQ群中經常與群友分享設計經驗的七哥、李東發、eBoy_eMan等,我以與你們同時代為榮。

于瀟宇(網名:湘雨瀟瀟)
2014年6月9日于哈爾濱工業大學


既然選擇了遠方,便不顧風雨兼程……
決定寫此書,執筆至此,已經有將近一年的光陰。時間過得太快,甚至都沒來得及回味,卻又得開始不停地追隨。我們總是在不停地奔跑,卻又沒有時間停下來思索——我們,究竟在堅持什么?是因為興趣使然,擋不住的誘惑?還是因為吃穿住行、柴米油鹽醬醋?是因為歪打正著,稀里糊涂地過活?還是因為雄心壯志,不顧一切地追求……
也許我只是一個FPGA界的小人物,也許我還沒有資格在數字界說三道四,也許我還不足以寫出一本膾炙人口的好書,也許本書會因為相關的不足而被噴得體無完膚,但僅此希望,我的點滴總結,我的肺腑之言,能夠幫助一些曾經與我一樣,在FPGA成長道路上迷茫、掙扎、徘徊的朋友,能讓你們少走些學習FPGA的彎路,能讓你們認清FPGA的真諦,能讓你們掌握設計的精髓,能讓你們從此有目標地奮斗前行。
我出生于浙江諸暨的一個小山區,遠離都市的繁華,從小成長在大山的懷抱。在長輩們眼里,考上大學,是山區孩子唯一的出路。從小按部就班地讀書,千篇一律地重復,很難有自己的追求,直到高考的到來。高考,是我平凡命運的轉折點,也是我跨出的人生中的第一步。與大部分人一樣,我并沒有因為太多的了解,或者由于興趣而選擇專業,而是順應時代的潮流。2008年9月,我第一次朦朧地跨入了電子信息工程這個專業(當年相當熱門的一個專業)。
坐落于天堂杭州的杭州電子科技大學(簡稱杭電),是一所以電子專業著稱的高校,也是一所改變我人生軌跡的大學。太多人因為電子夢,聚集到了這里;太多人滿載著知識與夢想,揮手告別了這里。大學的四年,是我認清自己的凈土,是我掙扎脫殼的搖籃,更是我夢想起航的地方。
作為一所以電子設計著稱的高校,大部分學生都是赤裸裸地來追求技術的海洋。電子類學生對技術的狂熱,尤其是大一學生的好奇,在剛入學期間表現得最淋漓盡致。電子信息工程學院(簡稱電院)有一個無線電愛好者協會,是30多年前幾位老前輩,由于彼此對無線電設計的興趣而建立的團隊,繼而發展成為一個研究并培養對電子開發有熱情的學生的協會。為了尊重創始人,該協會一直沒改名字,但實質上一直都是一個以電子開發著稱的社團。該協會是學校公認的一個以熱情與激情、興趣與責任結晶的社團,坐落于電院2#中樓,在每一屆會長的帶領下,以階梯式教育,在課外培養了一代又一代技術狂,同時每年均會選拔一部分愿意留任,擔負培養下一代重任的學生。幾十年來,協會培養了很多電子特長的學生,包括很多留校的老師,盡管不停地更新換代,舊去新來,但卻一直傳承發揚著協會。
每年一度的電院“震‘焊’人心焊接大賽”,是進入協會的敲門磚。為了能夠進入協會,當年的我從一個不認識烙鐵、電阻、電容的人,夜以繼日地訓練,惡補電子元器件知識,掌握焊接工具的使用,從當初的拿烙鐵手發抖,到最后以時間與質量,在幾分鐘內(具體不記得了,應該在5分鐘內)焊接完一套5V直流穩壓電壓,而榮獲了一等獎(現在回頭看看,那時的焊接技術簡直是“渣渣”)。也許正是因為如此,我在大一第一學期就進入了協會,認識了幾位對我的大學四年有深遠影響的學長——王凱與曾慶卿學長,他們在后續的日子里多次指點并教導過我,感謝他們的曾經才有了我的明天。
在隨后的一段日子里,我由經常串門,升級到長期蝸居協會,我開始尋找、開始追求、開始如饑似渴地學習(現在認為是盲目追求,O(∩_∩)O~),在僅僅半年時間內,我熟練掌握了焊接技巧(現在看來還是很“渣”),手工焊接了多路直流穩壓電源,并且自學了C語言,開始意識到擁有一臺電腦是多么的重要。一學期過得很快,但卻過得很充實,學海無涯,我突然發現大學就是該為自己的追求而瘋狂。
我真正開始學FPGA,是在大一的第二學期。那時學校搞課程改革,由潘松老師負責教學,將大三的數學、EDA課程提前到大一,好讓學生們能更早地找到自己的目標,選擇或決定自己未來的方向。潘松老師是《EDA技術實用教程》、《EDA技術實用教程——VHDL版》、《EDA技術與Verilog HDL》等書的作者,同時是杭州康芯電子有限公司的創始人,開發了多套FPGA實驗箱、開發套件,在杭電,甚至全國多所高校都有使用,開辟了國內高校FPGA教學的先鋒。
記得當時的課程改革并沒有針對所有學生,而是選取了180多個“小白兔”(據我所知我是最后幸存的唯一一只小白兔)進行試驗,而我有幸就是其中一個。一學期內,我們從最基本的數字電路開始學習,從各種74系列、與非門芯片開始學習,在數電實驗箱上用組合電路實現加法器、跑馬燈、交通燈等實驗。接著轉場開始學習FPGA技術(當時認為無所不能的現場可編程門陣列),從原理圖Block方式的數字電路設計,到從零開始的VHDL語言的學習,最后采用純HDL代碼的方式,完成了學期末的課程設計——可編程音樂播放器及精準時分秒計數器。盡管在現在看來,這無非是切換2個ROM,按照一定的頻率驅動蜂鳴器,以及簡單的計數與數碼管的驅動而已,但在當時卻被認為小有成就,學有所成。
大一暑假,我沒有回家,而是抱著康芯的實驗箱,將每一個模塊都玩了一遍。我將圖書館中與FPGA有關的書都翻了一遍,深入學習了VHDL語言,掌握了基本的FPGA設計思路,同時還未雨綢繆地學習了使用Altium Designer 2009(當時的DXP最新版本軟件),繪制了相關的PCB版圖。康芯實驗箱上還集成有8051單片機模塊,總不能老是冷落了“她”,由于自己的反常規學習,因此我逼迫自己在5天內看完了郭天祥的《10天學會51單片機的教程》,狠狠地把51單片機的知識惡補了一把。記得該教程中有郭天祥親自編寫的《郭天祥——我的大學六年》,極大地鼓舞了我。該文檔我至少看過10遍,“晨昏三叩首,早晚一炷香”,我懂得了他的所謂的很多人因為游戲人生,荒廢本科之后的悔恨;懂得了把握青春,成就自己未來的珍貴;明確了自己該做什么,也許為自己的未來奮斗,才是真正的大學。
此外,我還深切體會到機遇的重要性。機會總是會給有準備的人,對于整天抱怨沒有人帶,而不去尋找機遇的人,我只能說你還沒有準備好。事實上當時在180個小白兔名單外的人,找老師美言幾句也能入圍,重點在于你愿不愿意嘗試——膽大心細臉皮厚,沒有什么不可以。那時由于開始在QQ技術交流群活躍,我還認識了網友王會計(圈子里的很多人都認識他),那時作為前輩的他,對懵懂的我的告誡是,有幸我太早擁有了學習的機會,但這只是一個開始,課程只能給你指路,未來還得靠自己(我于2012年8月在北京第一次膜拜了王會計前輩,真人不露相)。
同年8月下旬,由于自己對技術的熱情,外加在協會出色的表現,我成為無線電愛好者協會中,選拔去電院CAD研究所409實驗室學習的一員(當時僅有3個人,其他兩位分別是鄧團飛、冀瑋楠,這兩個人是我未來的隊友,一起浴血奮戰的兄弟)。感謝409負責人,前協會會長,無線電愛好者協會名譽主席楊峰學長給了我這個彌足珍貴的機會,伯樂識馬,沒有這個機遇,也不會有今天的我。楊峰學長一直帶領并指導協會,在大學7年的他,培養了無數飽含真才實學的電子工程師,在師生界具有極大的影響力,是大家公認的“老大”。在CAD研究所的2年多,是我本科電子設計最充實、最富有激情、最值得回憶的時光,是我定向成長全方位塑造自己的搖籃,也是我后來選擇FPGA專業開發的基石。
由于對FPGA的基礎與激情,我分組并進入了實驗室的FPGA小組。作為小白兔的FPGA學習基礎,對于實驗室的需求而言還遠遠不夠。在刀哥(FPGA小組組長)的指點下,我開始加強鍛煉,從HDL的編寫到FPGA設計思維,從時序電路到功能開發,從頭開始優化自己,作為一個小白兔產物,我還需要進化。也正是這一階段,我從零開始研究VGA顯示驅動設計,并對圖像顯示開發產生了極大的興趣,這也正是后來一年我一直執迷于LCD顯示開發的緣由。
年少無知,從串口程序設計,到SPI時序的研究,我竟然想通過SD卡的SPI驅動來實現VGA圖像源的獲取。不管方案實現的可行性,正是因為對技術的熱情,我認識了網友黃娜(當時在EDN工作,后來去CSDN了),介紹并讓我認識了特權同學。時值2009年8月,5年過去了,回頭看看,特權同學在那個時候還沒有出名,FPGA視頻教程還沒開始錄制,僅有的只是開始在EDN網站寫博客。我有幸在平凡時期認識了未來無所不能,在業界有一定影響力的特權同學,指點并且讓我研究他當年設計的SD卡的SPI驅動時序。但是該驅動程序中的Verilog HDL語言和上千行的精華代碼,讓當時的我望塵莫及,幾乎讀不懂,這讓自認為小有成就的我開始自嘆不足。雖然結果我還是沒能驅動SD卡,但對SPI的時序還是有了深入了解,更值得慶幸的是,我認識了未來幾年對FPGA界有巨大貢獻,受無數人膜拜與尊重,出版了《深入淺出玩轉FPGA》、《愛上FPGA開發——特權和你一起學NIOS II》、永遠忠于年輕時夢想的特權同學。特權同學的學習精神,以及出版的書籍,對我的未來幾年產生了深遠的影響,源于DT,重在設計,在前輩的指領下,我正努力地前行。
大二開學了,我由于對技術的熱情,儼然對上課已毫無興趣,大部分時間都是在實驗室度過的。在那個年代,我們用的還是Quartus II 5.1,VHDL在高校依然很盛行,FPGA被認為是高功耗、高成本、開發周期長的方案,一塊簡單的EP2C8Q208C8N的開發板價格不菲,同時FPGA的學習資料,包括書或網絡資源,遠沒有現在那么多。在前行的道路上,每一步都是那么的艱難。正當我徘徊在VHDL與Verilog HDL之間,以及在研究SOPC時連一個LED燈驅動都搞不定的低迷時刻,我認識了正在讀大四的張亞峰,也就是網友小時不識月,當初的.COM張。
當初的張亞峰,專業研究Altera FPGA,并將學習心得整理成博文發布于cnblog,博客日產量甚至可能超過他的飯量。在他最瘋狂的時刻,我有幸認識了他,他對我指點迷津,悉心教導,甚至遠程協助。在我徘徊不定時,他以多種理由“說服”我學習Verilog HDL,幸好我有扎實的VHDL基礎,我在一周內成功地從VHDL轉向了Verilog HDL;在我停滯不前時,他不厭其煩地給我遠程協助,指點我FPGA開發,尤其是SOPC方便的設計。最后,也正是他,多次“強迫”我進行總結,寫博客,對自己所做的事情負責。2010年5月,我在博客園寫下了人生中的第一篇博客,至此以后,一發而不可收,后來轉場chinaAET,只要在不停地研究開發,就會有源源不斷的博客公之于世。寫博客,不僅僅是對自己設計的總結,對問題的記錄與分析,甚至不僅僅是為了寫給別人看,我曾無數次翻閱自己的博客,查閱自己遇到過的問題,也曾因為同樣的研究,或者說分享或“遭遇”,認識了不少的同行。只有懂得總結的人,才能不斷地成長。好記性不如爛筆頭,呵呵。
作為網絡上的交流學習,我一直認為QQ、博客平臺是極其重要的交流方式。很多人言談身邊沒有人指點,沒有人一起學習,一個人的奮斗,堅持不了就放棄了。也有很多人很在乎自己學校的檔次,或者說自己的專業類屬,以為自己孤軍奮戰,或者身邊魚龍混雜,沒有得天獨厚的環境,即便感興趣也怎么可能學得好。其實我想說,學不學得好真正意義上還是取決于自己。雖然我處在電子氛圍濃厚的杭電電院,但我同樣認識很多專科類的職校學生,真正對此有興趣的人,從來不會匱乏激情,因為這個世界遠沒你想象得那么小,在互聯網越來越發達的年代,閉門造車,只有死路一條。在我后續的成長道路上,我認識了太多太多的網友,我們之間互相指點,均使我不斷嘗試,不斷地積累,從時間與空間上積累了一個網絡技術交流圈。電子開發,貴在互幫互助,技術是單純的,也是興趣與樂趣,很多人都愿意指點,并沒有你想象得那么苛刻。我想說重點在于嘗試,而不在于埋怨。從真正物理意義上講,我也是一個人進行學習的,但從互聯網角度考慮,這并不是我一個人的戰斗。張亞峰是一位對我的未來有深遠意義的網友,我們認識于騰龍前輩的SOPC技術交流群,他是我FPGA成長路線上極其重要的也是第一位互聯網導師。沒有張亞峰當初無私奉獻、不厭其煩地指點江山,我不可能順利地在每次碰壁時都找到解決方案,也不會有那么多的信心與激情堅持到現在。張亞峰畢業不久后,就去了廣州駿龍作了Altera的FAE,至今為止在業界享有盛譽。2012年8月,張亞峰在廣州請我吃大餐,正式拜見了“導師”真身,感謝張亞峰當年的激情,以及給我的無限指點。
同群還有前輩七哥(我于2012年9月在西安拜見了七哥),木頭同學(12年8月的深圳之旅,我首次會見了木頭同學)、查無此人(我于2013年7月在西安出差時有幸見到了查無此人真身)等,均是我們當時討論FPGA開發時結交的摯友。FPGA行業是很大的一個圈子,況且在2009年還遠沒有現在這么火熱!有志者事竟成,重在嘗試。
同年,我認識了一位生平故事傳奇,以及同樣在為這一行不懈努力的工程師——網名為沖擊波,人稱波波,在此值得一說。我曾無數次在深夜通宵與波波遠程暢談。那時的我還沒有熟練讀懂芯片時序圖的能力,而波波則剛好由于項目需求轉場FPGA,于是我幫波波的FPGA設計支招,而波波則悉心地教我如何分析芯片時序,如何正確驅動外設。此外,波波曾多次給我講述從修理工到深圳做電子工程師的坎坷之路,其傳奇之路的不易讓我感到了人生的艱難。波波自幼對電器十分感興趣,不過家境貧寒,小時候的學費都是通過賣菜、修電視機積攢下來的(想想衣來伸手、飯來張口的我們,顏面何存)。成年后的波波,按部就班地過活,在鎮上修理并賣蓄電池。由于某些說不清楚的原因,一夜之間,他的所有資產在一場火災中化為灰燼。錢財一無所有,女友也離開了他,傷心欲絕的波波含淚臥床。崩潰了一個月后,他不想就此向生命低頭,毅然離開了老家,開始了自行車的深圳之旅——既然上天把我逼上了絕路,那我也只能“無法無天”。由于口袋里面只有10塊錢,所以他沿途坎坷,風餐露宿,三兩天在工地里打工,結算零星的工錢,繼續上路。但既然選擇了深圳,便不顧風雨兼程,一路騎下去,他最終抵達了深圳,那一年是2002年。剛到深圳的日子,他無依無靠地游蕩,他有過白天搬磚頭、晚上睡橋洞的含辛茹苦,也做過各種雜活的兼職,以及制造廠的組裝員工類的活兒。但是波波發憤圖強,重新開始學習電子,不斷地追求自己的歸宿。多年來波波沒有放棄,從打雜到工人,從機械勞作到工程設計,不斷地努力升華,終于在2005年成為某公司的總工(我于2009年年末認識他)。孤身深入深圳打拼,可以對不起青春,但不能對不起夢想,在11年的時間里,波波沒有回過家,沒有對命運低過頭,盡管無數次崩潰,盡管形單影只,盡管有無限的思鄉之愁,但發誓沒有出息絕不回去;在11年的時間里,從工地搬磚到公司的總工,其辛酸累苦,無人能知。而今波波終于有了自己的事業,也有了自己的另一半,滿懷著離鄉11年的鄉愁,以及無限難以啟齒的感慨,在2013年春節,第一次踏上了回家的旅程。回想11年的奮斗,他用血淚掙回了一個屬于男人的尊嚴,換成誰都很難堅持到最后,因此波波是我生命中無比崇拜的前輩與楷模。2012年暑假,我在深圳第一次見到了傳說中的波波,第一次膜拜了相識3年(現在5年多了)的大神,第一次有機會面對面促膝長談,對我來說他就是一個傳奇的故事。雖然上帝在為你關上一扇門的同時,總會用門夾一下你的頭,但悲劇的背后,總會有另一扇門等著為你打開,也許轉角處就是光明。
誰都有夢想有追求,誰都可以為未來付出血汗,但重點在于你是否能夠戰勝挫折,能不能堅持到最后。在此我想說,很多事情并不是天賦的問題,而是看你愿不愿意為此付出,為此堅持。一份激情與執著,堅持與穩重,也許能換來一份應得的回報。我曾代表杭電游泳隊多次參加橫渡錢塘江的活動,也曾多次參加過長跑比賽,我深切地體會到很多事情并不在于天賦,而在于意志力,在于你能不能堅持,在于你敢不敢嘗試。電子開發,無論是FPGA還是單片機、DSP等,抱怨沒天賦,抱怨學不會的朋友,我只能得出2個結論,第一是你不適合做這行,興趣不在于此;第二是你就沒有努力嘗試過。就像某種礦泉水一樣,我們只是Datasheet的搬運工。天才需要99%的血汗+1%的靈感,我們并不是天才,用100%的血汗就可以了。我一直認為我的智商明顯不夠用,但我花了常人很多倍的努力,才有了今天。我并不是擁有天賦,而是多于你幾倍的付出。我所積累的經驗,都是我用時間與汗水換來的,這絕對不是我的天賦,相信特權同學、張亞峰等都一樣。因此,那些在成長路上抱怨的孩子,請深思,并不是你不行,而是你的意志力不行。既然選擇了電子,就要做好不顧風雨兼程的準備。只有經歷地獄般的磨煉,才能煉出創造天堂的力量。
2010年暑假,是我本科階段電子開發能力成長最快的一段時間。當時通過4天3夜的選拔賽,我們如愿以償地參加了暑期集訓,為8月的浙江省電子設計大賽做準備。電子設計大賽每年都舉行,但省賽與國賽奇偶交替,那一年恰好是省賽。所謂集訓,類似于夏令營,即為了參加比賽,短時間內對學生進行數電、模電、單片機、軟件設計,以及賽題設計技巧等方面的培訓。在這兩個月,我和我的隊友鄧團飛、冀瑋楠圍繞著可編程DDS信號發生器,從軟件設計到430單片機的開發,輔助采用FPGA進行高速掃描,以及后續的模擬電路進行了信號的整形及優化。我們花了將近2個月的時間鞏固了軟、硬件設計能力,以及團隊的協作能力,盡管我們那時才大二,但眾志成城,我們堅持到底。記得8月底的為期3天3夜的電子設計大賽,我們選擇了寬帶直流放大器,我們一起激辯過,一起研究過,一起扛過走過,最后采用430+CPLD的處理架構,配合模擬完成了我們的作品。在這3天3夜,除了第一天睡了4小時,我們幾乎沒有睡覺,吃飯喝水完全靠吞。由于過度勞累,我們的頭腦及身體都承受了很大的負擔,這期間幾乎干掉了一箱紅牛,以至于賽后我們喉嚨嘶啞,同時整個身體處于漂浮狀態。第四天早上上交作品后,我們在“癱瘓”了24小時后,第一次感到床是多么的溫暖,即便是硬床板。我們醒來已是第二天,估計是被餓醒的。盡管最后的評測,我們只得了省二(浙江省電子設計大賽二等獎),但回首3天3夜的浴血奮戰,我們用TeamWork與意志力走到了最后,連續72小時不睡覺,充實而又精彩,成為一段值得吹牛的故事。其實電子設計大賽關系到各大高校的聲譽,對于有些隊而言,是三個人的比賽,而對于有些隊而言,有可能是整個實驗室甚至全校師資力量的較量,因此,由于我們是完全靠自己的能力走到了最后,所以并沒有因為沒有得省一而感到惋惜。同樣,大部分沒得獎的人,都將這一次經歷當作美好的回憶。我自己也曾為了夢想,與隊友并肩作戰,過程永遠值得回憶,結果就顯得不那么重要了。如果告誡后人,我會毫不猶豫地告訴你,即便比賽的規則、驗收答辯是否值得質疑我不確定,但是電子設計大賽對于電科類學生而言,的確值得嘗試,值得考驗,值得參加。
有人說大學四年,大一:不知道自己不知道;大二,知道自己不知道;大三,不知道自己知道;大四,知道自己知道。不過我反而覺得我卻是不停地處于發現自己不知道→讓自己知道的過程。大三也許是本科生涯頭腦最清醒的時刻,是我最明確自己做什么,在為什么堅持的階段。這一年我榮幸擔任了無線電愛好者協會的會長,指導并引領協會上了一個階梯,培養了無數學子;這一年我繼續與鄧團飛、冀瑋楠并肩作戰,不懈地努力,參加了好多比賽并取得了優秀的成績;這一年我們在實驗室繼續浴血奮斗,繼續深入學習,承擔了實驗室多個項目的開發設計。而我一直忠于最初的夢想,潛心研究FPGA設計,從Verilog HDL邏輯電路設計,到Nios II嵌入式系統設計,從Quartus II 5.1版本到Quartus II 10.0的躍遷(寫這本書時才發布了Quartus II 13.1,而前不久,Quartus II 14.0已經發布,更新如此之快,我們幾乎在不停地追趕),從Cyclone II到Cyclone III系列的升級(現在都C IV、C V了),知道得越多,發現自己不知道的就越多。我一直認為自己知道的只是冰山一角。感謝大羅哥與刀哥,在研究生階段對我們的悉心輔導,也感謝409給予我們的機會,這是我們金蟬脫殼的地方。
長江后浪推前浪,有時候,前輩們看著我們成長起來,后生可畏,也會有莫名的喜悅。某電子應用群的群主NeverExist,在工作的同時,將電子當作一種愛好,在業余酷愛指導網友,幫大家排疑解惑,是群里公認的老大。壇子(論壇)都是靠凝聚力建立起來的,以至于NeverExist去日本深造多年后的今天,該群依然活躍如曾經。回想幾年前在NeverExist的指導下茁壯成長的日子,感覺通宵都那么帶勁。同樣還有電子工程師學堂的群主XiaomaGee,電子是他的生活,也是他的未來,他樂于幫助剛入園的“小白菜”,在激情調侃的同時指點迷津。XiaomaGee設計了很多板卡,幫助了眾多的網友成就電子設計之路,是電子界公認的前輩。我在2013年于洛陽拜見了XiaomaGee,正如傳說中的一樣,他是一個歡樂而又有卓識的前輩,聽他講述曾經在哈工大逆襲奮斗的故事,勝吃一天飯。目前XiaomaGee已注冊洛陽銀杏科技有限公司,隨著隊伍的壯大,正等待一個更美好的未來。
再說說我自己,曾經我也是白紙一張,但對技術如饑似渴,在艱難的泥濘中,由于激情熱血,我一直備受多位網友的慷慨指導。我曾拜網友eBoy_eMan為師,他在我的“小白”成長道路上不斷地矯正我的錯誤,并給予了我眾多的指點。eBoy_eMan,又稱壯壯,也屬于IT界的一個傳奇人物,他從小就喜歡玩電器,自然喜歡電子。他小學時玩無線電,初高中時玩單片機,大學時更是“無法無天”,簡直不能忍。他1999年上高中,2002年上大學,畢業于南京航空大學。eBoy_eMan由于出色的能力,跨專業作了電院電子協會的會長;同時由于酷愛音樂,他兼任了學校吉他協會的會長;此外,除了電子,德智體美勞,他甚至會寫小說,eBoy_eMan簡直是一個神話。事實上eBoy_eMan并不是電子信息學院的,但無法擋住與生俱來的使命與興趣,于是他放棄本專業的課而旁聽電院的課程,憑自己對電子的濃厚興趣與獨到天賦,一個神級的大師就這樣誕生了。畢業后eBoy_eMan去了蘇州工作,隨后在上海第一次創業。由于2008年的金融危機,他事業受挫,去了深圳打拼,隨后歷經從設計師到CTO的蛻變之路,一晃6年過去了,2014年對于eBoy_eMan而言又是不平凡的一年,他再次創業,立足智能電網,放眼未來,胸有成足,馬到成功。2009年下旬我認識了eBoy_eMan,2012年我在深圳拜見了大師,此后一直保持聯系,技術上的交流與探討,以及人生感悟的傾訴與分享,eBoy_eMan曾無數次指導并幫我排難解惑。也許他在我身上看到了曾經的自己,也許我是他所謂的可造之材,但于己于人,我不能讓師父失望,我會一如既往地努力,對得起眾人的期待。
生命重在交流,走出狹小的鐵籠子,放眼未來,永遠會感到驚喜。我大部分的知識都來源于網絡,或者是從與網友的交流中學到的,多年來我深切感受到了交流的重要性,并且樂此不疲。慶幸的是很多網站都給我們提供了很好的一個平臺,如ChinaAET、電子發燒友、21IC、CSDN等。其中ChinaAET是我最熟悉的一個網絡平臺,它是面向電子工程界的專業信息服務與交易平臺,網站經常開展電子新技術開發,尤其是FPGA方面的相關活動,通過與Altera、Xilinx等公司的合作,給廣大網友提供了無限的機會。網站是以廣告來運營的,因此其他的FPGA相關活動、博客等均是義務的,在此向各大“公益”論壇致敬。我在北京多次拜見過網站負責人coco本人,coco非常熱心幫助網友,經常動用各種關系來幫助有需要的朋友,我本人就是一個典型的范例,多年來身居壇子,受益無窮。相比cnblog而言,自從轉場chinaaet,發現在這里,FPGA博文受到了更多的關注,同時接連不斷的博客大賽,激勵并資助了眾多的網友。該網站讓很多人受益,也讓很多人懂得了付出,期待更多的人加入,共創美好的未來。
2011年下旬,是我最糾結的半年。我沒法說服自己考研,或者不考研。眾多前輩認為我應該繼續深造,畢竟即便文憑只是一張紙,但我的路依然很長。也有的前輩認為我沒必要再在學校浪費青春,應該勇敢出來闖蕩,打拼屬于自己的一切。還有人想讓我留在本校讀研,繼承實驗室。最終,我以“3年換來30年不后悔”的理由說服了自己,同時不想故步自封,毅然決定出去看看,選擇了西安電子科技大學。我以一個幾乎逃課2年,考試完全靠突擊的身份,在考研教室從零開始自學基礎課與專業課,在僅有的2個月時間內,我強迫自己冷靜了下來,考前還在醫院睡了半個月,最后又看了6天上了戰場,但竟然奇跡般地考上了,雖然考得很差。于是我選擇了繼續深造,我想給自己3年的光陰去冷靜地思考,去重新塑造自己,使自己能更胸有成竹地走進社會。
我的本科電子開發之旅,以我的畢設——基于FPGA的多畫面視頻疊加系統,畫上了一個句號。我的畢設結合了FPGA與SDRAM,采用OV7670攝像頭作為視頻源,在實現實時視頻VGA顯示的同時,完成了OSD、視頻疊加等功能,最后評上了優秀論文。當然這一切都少不了我的畢設導師——黃繼業老師的指導。黃繼業老師當年本科留校(當然后來在職讀研了),負責EDA與電子設計培訓等的教學,以實際技術能力與指導學生的激情,備受學生的歡迎與喜愛,是我當年的導師,也是我一生的導師。我有幸得到了黃老師的序言,給本書增添了光彩。同時,黃繼業老師還是潘松老師的《EDA技術實用教程》、《EDA技術實用教程——VHDL版》、《EDA技術與Verilog HDL》等書的作者,指導并培養了無數電子開發能力卓越的學生。此外,我的畢設并不是一個結局,而是我未來充實圖像行業的開端,是我后期開始研究各種攝像頭,以及視頻顯示技術的起跑線,感謝黃繼業老師的課題,讓我有了目標與激情。
本科生活過得很快,畢業之際,各種傷別離,抱頭大哭,而我也曾流淚。懷念一起歡笑瘋狂過的朋友,懷念一起在409跟我奮斗過的隊友冀瑋楠、鄧團飛,以及后來報到的許耀聰、張捷同學,我們一直是實驗室的核心力量,我們一起度過太多歡樂與痛苦的光陰,我們將會用一輩子的時光去懷念。最后鄧團飛考上了計算機學院讀研深造,冀瑋楠留學去了丹麥,許耀聰、張捷拿到了華為的offer深造,而我卻帶著一絲永遠懷念的鄉愁,離開了杭電,去了遙遠的西安,開始追求全新的生活。
很多人以為我早就工作,很多人不信我還是個學生,很多人確信我有多年的工作經驗,但事實上我還真只是個學生,只不過我在成長的道路上,付出了多于大部分人幾倍的時間,我不斷地嘗試與積累,才換來了今天。我經常寫博文記錄開發的點滴,同時在互聯網上比較活躍,認識的同行比較多,平時也不乏有技術與人生的交流,因此我始終了解到自己所知的只是冰山一角,我遠沒有所謂的學富五車,也不是有些不明真相的人認為的前輩,我一直認為,知道得越多,就發現自己不知道的越多,既然選擇了電子,只有不斷地學習,才能跟上時代的腳步。
而如今在不到一年的時間里,我的研究生生涯就要結束了。時間過得太快,一晃而過,我來西安兩年多了。專業只是個在校的分支而已,我一直更在乎的是自己的研究方向。也許研究生時代給我的最大收獲,就是讓我有時間冷靜而清醒地思考,對未來更加成熟穩重地計劃,以及真正決定自己到底想做什么、能做什么、該做什么。
從2012年開始,我對攝像頭產生了極大的興趣,我開始研究OmniVision、Micron等公司的Senser,從底層DIY開發CMOS Senser的FPGA驅動及視頻實時顯示,我用純邏輯開發實現FPGA加速運算的架構,同時我花了很大的精力提高圖像的畫質,我一直不懈地追求。當然我也并不是一開始就輕松地駕馭了Senser,我所嘗試的第一款攝像頭MT9M111,耗費了我3個月的精力,但最終還是以失敗告終。我轉而拾起較簡單的OV7670,力圖挽回僅剩的一點信心。在我幾乎一無所知的時候,是在圖像傳感器領域有很深造詣的官哥,不厭其煩地指點了我,把他曾經的坎坷及如何驅動設計的精髓告訴我,讓我盡量少走彎路。再次感謝官哥,讓曾經的我脫離“小白”的苦海。隨后我一直沒有放棄我對攝像頭的熱情,從DVP到PAL、LVDS、MIPI,從30W到500W、1400W,從攝像頭的邏輯驅動開發,硬件驅動板卡的設計,到FPGA視頻圖像算法的增強,我選擇了這條路,因為我執迷于圖像。
2013年我曾在某公司實習了8個月,負責相機的驅動,以及圖像算法的移植方面的工作。那一段時間我一直在摸索,同時我第一次發現外設的驅動只是個基礎的架構而已,算法的實現才是圖像開發的靈魂。因此我開始研究一些基礎的圖像算法,我希望我知道的不僅僅是外設。岡薩雷斯的《數字圖像處理——Matlab版》給予了我很大的幫助。那一段時間我幾乎同時使用MATLAB、Quartus II、Modelsim,結合Matlab語言、Verilog HDL代碼及Testbench仿真程序,以算法驗證→HDL設計→RTL功能仿真→FPGA硬件測試的流程,將基本的算法從書本移植到了FPGA中,我想我應該算是看到基于FPGA的圖像算法應用的大門了吧!后期我又研究了非局部均勻、3D降噪、MSRCR、二維匹配等算法,盡管這些在DSP中都能實現,但由于FPGA的并行高速特性,采用流水線、乒乓操作、并行方式在FPGA中實現某些算法的加速,非其他處理器所能攀比。我深刻認識到我如果再將精力放在外設上,而不進行硬件圖像算法實現的研究,那我簡直是在浪費青春與靈魂。甚至FPGA都只是個工具而已,挑戰我的將是未來駕馭FPGA應用于圖像處理的能力。如今Altera與Xilinx的28nm雙核Cortex-A9 FPGA已經風生水起,FPGA的資源已經足夠我們實現大部分圖像算法架構,敢于嘗試,釋放自己的創造力,幾乎沒有不可能,這只是一個開始而已。
驅動顯示攝像頭可以說是很快樂的事情,但優化圖像算法,實現各種硬件算法則是更靈魂的境界。2012年我編寫了電子書《從零開始進入OV7670世界.pdf 》,給廣大網友第一次帶來了攝像頭FPGA開發的福利,后期我又編寫了第二本電子書《基于VIP_Board Mini的FPGA視頻圖像算法(HDL-VIP)開發教程.pdf 》,從HDL-Logic(邏輯開發)到HDL-VIP(硬件圖像算法)的蛻變,從底層基礎到外設完整地闡述了OV7725攝像頭的開發,以及10余種圖像算法的設計指南,我希望能有更多的人加入FPGA圖像算法處理的圈子。由于篇幅有限,本書并未包含FPGA邏輯圖像算法加速運算方面的內容,不過有興趣的朋友可以從互聯網上或本書配套資料包中搜索,本人歡迎通過E-mail(thereturn of bingo @gmail. com)與我探討FPGA算法的實現。
在IT高速發展的年代,攝像頭智能化應用提高用戶體驗的同時,將輔助人工進行更高級別的安全維護。機器視覺、車載攝像頭、工控應用等更多面向向人工智能的圖像應用,將不斷地開辟攝像頭的新時代。我在攝像頭的圈子雖然混得還不夠久,但也兩年多了,認識了很多開發并應用攝像頭的同行,也了解到了眾多的電子開發永遠滿足不了客戶的需求,目前的市場還有很大一片空缺,等著我們去完善。上周我有幸會見了蘇州智能汽車電子有限公司的馮工,這讓我更貼近地了解到了攝像頭在汽車電子行業的需求,再次看到了我們的光明的未來。同行還有網友群里的卡帕、把肉賣給和尚、故壘西邊等手機攝像模組或相關廠家的工程師,一起探討與研究,我總是受益匪淺。也許未來不久的某一天,3D攝像頭會在我們的生活中得到普及,彩色低照度足以彌補人類夜視覺的不足,透霧、寬動態等算法的成熟將極大地降低交通事故發生的概率,機器視覺終會進入我們的視野。我不知道未來自己具體會從事哪一方面的圖像算法處理,但我知道我會為了這一方向,為了我的興趣,結合FPGA開發應用,挑戰不一樣的未來,我相信這一行始終有一個璀璨的明天。
關于本書,經由《電子技術應用》ChinaAET網站楊暉委托,我萬般榮幸地聯系上了Altera中國區大學計劃經理陳衛中老師,非常感謝陳老師在百忙之中抽出時間閱讀我的手稿并寫下寶貴的序言。同時感謝我的母校導師、《EDA技術與Verilog HDL》等書的作者——黃繼業老師(網友風翼),他在繁忙的工作中不辭辛勞通宵幫我寫完了本書的序。其次感謝大名鼎鼎的吳厚航(特權同學)為我寫序。再次感謝仲愷農業工程學院的蔡肯老師(網友紫聲月影)抽空幫我多次審閱了本書的內容,并提出了寶貴的意見,當然還有最后的序言。然后感謝本書的第三作者、兼河南科技大學張雷鳴老師(網友i7)針對在校學生EDA課程及FPGA設計能力方便的不足,在序言中提出了改革的方案并指出了本書的亮點。最后,感謝本書的第二作者,即哈爾濱工業大學博士于瀟宇(網友湘雨瀟瀟),在我寫完本書FPGA底層基礎設計后,幫本書添加了FPGA設計的進階方面的內容介紹,完善了系統的介紹。正是這6位老師/朋友的大力支持,才有了本書的最終面世,在此本人對他們表示由衷的感謝。
想寫一本書,很難;想寫一本好書,更難!最終我能將此書順利編寫完成,少不了眾多網友對我的幫助與支持,首先感謝網友可可豆、暖陽幫我審閱初稿,縮短了本書初稿的時間;接著感謝曾經指導、幫助、與我共進的網友們:風翼、紫聲月影、i7、湘雨瀟瀟、eBoy_eMan、.COM缺氧、鑿樹(發哥)、浪跡天涯(官哥)、七哥、DTFT&FFT、NeverExist、NIocni(泡泡)、電科031、九神、XiaomaGee、黎明、達克斯特、沖擊波、陶心云、龍涂騰、up.Craftor、zusen、Bean、疾風之狼、豌豆-棒棒糖、Bob、Clark、WarMonkey、靈、YJ_CS-書劍、wangkj、Edward、☆莫上塵︶ㄣ小二馬、把肉賣給和尚、卡斯帕爾、特權同學、查無此人、利利、獨孤求敗、Yesterday、日立、無為、Prince Liu、我心飛翔、美麗星空、HAOUMARU、Joseph.H、可可豆、木頭同學、北燕殘月、笨笨、家頂、coco、黃娜、空靈、鵬鵬、飛泉、子鍵、trust、chactor、龍騰★霧都溪風、戴鑫等(排名不分先后,如有缺失請見諒),是你們的出現,才讓我的世界更精彩!
此外,感謝曾經教我養我的杭電,助我成長的CAD研究所409,給予我不一樣的機會的楊峰,指導我奮斗路線的大羅哥、叨叨哥,凱哥、老不死機等,與我并肩作戰的冀瑋楠、鄧團飛、徐耀聰、張捷,以及在研究生時代默默支持我的實驗室。最后,我能堅持到今天,也少不了我的女朋友,無盡耐心地在我背后默默支持,是你忍受了我苦惱時的不耐煩,接受了我無奈時的?脾氣。總之,綜上,從另一重層面上來說,此書能面世,得道于你們。
我花了將近一年時間,編寫并多次修改本書的內容;我花了前后兩個月時間,針對本書設計了完全配套的FPGA實驗板卡并移植優化了例程;最后我又花了一個月的時間,最后一次審稿,并邀請前輩們給我作序。在前后一年的時間里,得到了眾生的支持,本書的編寫才終于走進尾聲,但此時夢想才剛剛開始;完美是沒有極限的,穩定是沒有終點的。既然選擇了FPGA,便不顧風雨兼程,一路走下去……但愿本書能幫助與我一樣,曾經在FPGA學習道路上,經受著坎坷泥濘,徘徊迷惘的朋友。如果在FPGA道路上你找不到方向,或者不知道如何開始,請選擇此書;如果你厭倦了陳舊乏味的教科書,想從實踐中掌握FPGA設計的精髓,請選擇此書;如果你想系統地了解DUT架構,以軟、硬件結合的方式學習FPGA,請選擇此書。有條件及需求的朋友,可在http://crazyfpga.taobao.com/頁面購買本書完全配套的實驗板卡——VIP_Board Full板卡,根據本書的講解,成就FPGA之夢。當然最終,我希望你能設計一套屬于自己的架構,完全掌握FPGA的軟、硬件設計。
最后,我想說,請記住,無論選擇了什么,無論身在何方,永遠相信自己,既然選擇了FPGA,便不顧風雨兼程,Just Try!!!


韓彬(網名CrazyBingo)
2014年6月30日







前 言
從20世紀90年代到21世紀的發展,從PLD到SoC FPGA的演變,從130nm到現在20nm的突破,FPGA以現場可編程技術,以及高速、并行等特性,同時開始嵌入ARM與DSP,在數字電路中,從協處理器到系統核心,逐漸成為數字界的主宰。當然,FPGA可編程邏輯作為強大的現場定制功能,在高速通信、海量數據的處理,以及IC的驗證測試,甚至實現IC半定制中正發揮著越來越重要的作用。
本書所介紹及基于的FPGA為全球最大的廠商之一——Altera生產的。作為已有30余年歷史的Altera,它在可編程邏輯、SoC、ASIC等方面具有雄厚的技術,在數字界有絕對的發言權,是高校及大公司最受歡迎的FPGA生廠商之一。Altera成功的全球大學計劃,以及亞洲創新設計大賽、Altera杯等,多年來為工科學生提供了廣大的空間,以發散性思維釋放創造力,成就了很多FPGA工程師。從FPGA應用技術、軟件平臺,以及整個FPGA生態系統考慮,Altera多年來立于不敗之地,首屈一指。
在數字電路高速發展的今天,沒有FPGA的系統,甚至會感到“四肢乏力”。如果沒有FPGA的輔助,我們仍然還局限于線程的思維中,無法實現并行加速算法,甚至無法看到形形色色的LED點陣屏,我們的世界或許還在單進程中徘徊。正是FPGA的強大,以無限的組合,實現了不可能的創造;通過不斷加速,突破了不可能的極限。在數字界的今天,掌握了FPGA,你便已經掌握整個世界。
FPGA開發,需要充實的數字、模擬電路基礎,熟練的電子電路設計的經驗,同時更需要掌握并行設計理念的一門技術,由于其電路簡單,功能強大,在數字電路中發揮著巨大的作用,儼然已是數字電路中的一個強大分支,已經成為高校教師、學生、科研人員、工程技術人員必學的技術。使用FPGA,可以加速我們的設計,提高產品的性能,甚至突破不可能的指標,打破常規,跨越鴻溝。
本書由淺入深,全面、系統地介紹了Altera FPGA的開發流程。筆者先后調查了多名FPGA初學者,尤其是根據當代高校大學生的FPGA學習現狀,以及相關EDA老師的反饋,經過精挑細選,制定了本書中的每一個例程的框架及步驟。每一個例程均具有很強的針對性,力求做到從模塊到系統,由簡單到復雜,步步為營,腳踏實地地攀登FPGA的階梯。
本書通過硬件設計與時序電路的構思,同步Quartus II與Modelsim軟件的協作,完成了多個具有針對性的例程開發,由點到面,從底層驅動到頂層架構,從電路設計到時序優化,每一個例程均包含了一個完整的FPGA開發流程,以方便讀者進行練習和學習。
本書非常注重FPGA設計實踐,遵循DUT的開發流程,尤其是實踐仿真與調試能力。通過學習本書的內容,讀者可以全面掌握Altera FPGA的開發流程,以可視化的操作跨出自己的第一步。筆者一直強調:“完美是沒有極限的”,FPGA開發之難,就在于時序設計的準確性,正因為如此,設計者不斷地通過軟件仿真、硬件調試、產品測試,來完善自己的設計;也正因為如此,FPGA工程師相當“貴重”。想要學會FPGA簡單,想要學好FPGA很難。筆者所提供的例程僅僅是一個簡單的設計、調試的流程,但更重要的是希望讀者能夠通過本書,掌握FPGA的開發流程,養成FPGA設計的習慣,更好地構思、調試、解決FPGA開發中遇到的問題,力求在最短的時間內,實現最完善的FPGA系統設計。
針對讀者閱讀本書時關于配套硬件平臺的實驗問題,筆者為此專門開發了相應的FPGA開發套件。該套件與本書硬件電路一一配套,支持本書所有的例程,并且給用戶提供了豐富的接口。需要購買配套板卡的讀者,可以在http://crazyfpga.taobao.com/網頁進一步了解;更多關于本書配套FPGA板卡的硬件資源及PCB設計方面的內容,請查閱4.6節。
本書的特點
1.例程完整,資料豐富
為了便于讀者對本書例程的學習、理解,甚至二次開發,筆者提供了每一個例程的完整工程,以及相關的手冊資料、硬件電路設計原理圖等方面的內容。這些內容均包含在本書的配套資料包中,希望讀者能通過本書與配套資料包例程的同步學習,有條理地掌握FPGA的開發能力。
2.結構合理,內容全面、系統
本書詳細介紹了Altera FPGA的開發流程,在例程的內容與系統的設計上,筆者響應了大部分初學者的心聲,以及考慮了當代大學生FPGA開發能力的欠缺問題,以軟、硬件結合進行FPGA的開發,希望能讓讀者在理解電路的基礎上,更有把握完成數字電路的開發。
3.軟、硬結合,與眾不同
本書有將近1/4的內容作為正式開始邏輯電路設計之前的驅動電路設計介紹,通過驅動芯片的手冊、驅動原理、時序電路等內容,力求讓讀者掌握FPGA開發的思維與流程,進而更清晰地完成FPGA邏輯電路的設計,而不是列出長篇大論的代碼,試圖讓讀者去理解一紙空文。
4.結合實際,設計技巧貫穿其中
筆者的例程經過了多年的提煉,相關設計目前均成熟運用于多個項目中。同時,將FPGA設計技巧貫穿在例程中,以實踐檢驗真理,讓讀者能夠更深刻地理解并掌握FPGA的開發技巧。筆者的DUT設計流程經常貫穿相關的FPGA設計思維,避免了純粹的理論支持,力求讓讀者能夠結合實際例程,透析筆者的設計思維。
5.語言通俗,圖文并茂
作為一本FPGA開發的指導叢書,筆者采用了淺顯易懂的語言完成了92.8萬字的解說;為了能讓讀者更好地理解,筆者花了很大一部分時間,設計并給出了開發的框架與流程圖。本書圖文并茂,避免了枯燥乏味的大段文字,力求讓讀者能夠通過圖文更加形象地掌握相關FPGA設計思維與技巧。
6.由淺入深,系統設計
本書從零開始,介紹了FPGA的發展歷程、Quartus II、Verilog HDL等方面的內容,接著開始CPLD/FPGA核心系統的硬件電路設計,在此基礎上完成了8個基本富含FPGA開發技巧的工程模塊。最后在前面設計的基礎上,由淺入深,完整地設計了一個“基于OV7725的攝像頭視頻圖像采集系統”。前面的步步為營是后面萬事俱備、系統集成的基礎,由模塊到系統,以全局的FPGA系統設計,希望讀者能更好地掌握FPGA系統的設計。
最后,本書站在一個比較高的層面上,介紹了基于高速相機的嵌入式視覺處理系統設計實例,包括FPGA進行視頻圖像處理的思想精髓,可幫助讀者更好地理解使用FPGA的意義,以及采用FPGA進行開發的一個重要去向。
本書內容體系
本書共16章,分為4部分,前14章由韓彬編寫,后2章由于瀟宇編寫,其中每部分對應的章節和具體內容介紹如下。
第1部分包括第1∼4章,主要介紹FPGA技術、優勢及學習途徑,指導了Quartus II 13.0套件的安裝與下載,闡述了Verilog HDL與Testbench的設計架構,以及作為后續章節硬件基礎的CPLD/FPGA核心板PCB設計。
第2部分包括第5∼12章,由淺入深給出了8個具有針對性的開發例程,介紹了邊沿檢測技術、全局時鐘同步設計技術、片間通信技術等多種FPGA設計技巧,完成了多種FPGA常用外設的驅動,為后續系統集成做好了準備。
第3部分為第13∼14章,介紹基于SDRAM的VGA顯示控制器,以及基于OV7725的圖像采集系統的設計,這是在第2部分8個例程基礎上的壓軸設計,也是本書的核心開發內容。這一部分首先介紹基于SDRAM的海量數據跨時鐘域交互設計,接著從零開始開發OV7725攝像頭,并且采用SDRAM控制器實現數據的實時采集與VGA顯示功能。本部分中包含了多種開發思想,開啟了未來FPGA在視頻圖像處理中發揮巨大作用的篇章,是基本的圖像采集/處理框架。
第4部分包括第15章和第16章,主要是在系統的層面上詳細地介紹了硬件電路的設計,以及基于FPGA的嵌入式視覺處理系統的開發。這一部分作為本書的進階,主要針對掌握了FPGA開發的對象,并對未來的FPGA視覺處理系統做出了簡單的介紹。
本書所涉及的數據手冊,相關的文檔規范,以及所有例程的開發工程,使用的軟件(Quartus II軟件希望讀者按照2.2節自己嘗試努力下載)與工具,包括更多的FPGA學習資料的總結,均包含在本書的配套資料包(下載地址:http://group.chinaaet.com/334)中,希望讀者能夠仔細閱讀這一部分資料,軟、硬結合,掌握FPGA開發流程與技巧。
本書讀者對象
  FPGA初學者;
  想全面、系統地學習FPGA的人員;
  FPGA技術愛好者;
  對攝像頭開發有炙熱興趣的朋友;
  利用FPGA視頻圖像開發的技術人員;
  大中專院校的學生和老師;
  相關培訓學校的學員。
編著者
內容簡介:

本書由淺入深,由表及里,從FPGA技術的探索,到資源的發現與利用,從硬件版圖規劃與設計,到邏輯電路驗證與實現;從模塊化功能的研究與積累,到系統集成的綜合與完善,系統、全面地介紹了Altera FPGA的開發流程。本書的所有例程均經過千錘百煉,相關FPGA設計的資源均為筆者多年整理歸納,均可在本書配套資料包(下載地址詳見前言)中找到,希望讀者能夠妥善利用及更高效、直觀地學習。

目錄:

第1章 淺談FPGA技術、優勢、學習途徑 (1)
1.1 FPGA的誕生、發展 (1)
1.1.1 FPGA的誕生 (1)
1.1.2 FPGA的發展與未來 (4)
1.1.3 博弈,在入門之前 (7)
1.2 Altera FPGA介紹及發展、應用 (8)
1.2.1 Altera公司介紹 (8)
1.2.2 Altera產品介紹 (9)
1.2.3 Altera FPGA的開發平臺 (15)
1.2.4 Altera FPGA的動態與應用 (17)
1.2.5 Altera FPGA的應用 (20)
1.2.6 對比ARM與DSP,認清FPGA (23)
1.3 善用網絡資源,不斷總結自我 (26)
第2章 Quartus II 13.0套件的下載及安裝 (29)
2.1 寫在前面的話 (29)
2.2 Quartus II 13.0軟件下載 (30)
2.3 Quartus II 13.0組件安裝 (32)
2.4 Quartus II 13.0 Device安裝 (36)
2.5 USB Blaster下載器驅動程序的安裝 (39)
第3章 Verilog HDL設計與Testbench文件架構 (43)
3.1 Verilog HDL設計 (43)
3.1.1 Verilog HDL與VHDL的對比 (43)
3.1.2 Verilog HDL的發展 (44)
3.1.3 Verilog HDL代碼設計風格 (45)
3.2 Testbench文件架構 (50)
3.2.1 Testbench的介紹 (50)
3.2.2 Testbench代碼設計風格 (51)
3.3 Quartus II工程目錄文件夾的定制 (54)
第4章 MAX II CPLD/Cyclone II/IV FPGA PCB Layout設計 (56)
4.1 淺談PCB Layout (56)
4.2 MAX II CPLD核心電路設計 (57)
4.2.1 MAX II CPLD背景及簡介 (57)
4.2.2 EPM240T100C5N設計需求研究及分析 (59)
4.2.3 EPM240T100C5N核心板原理圖設計 (63)
4.2.4 EPM240T100C5N核心板布局布線 (67)
4.3 Cyclone II FPGA核心電路設計 (68)
4.3.1 Cyclone II FPGA背景及簡介 (68)
4.3.2 Cyclone II數據手冊解讀與EP2C8Q208C8N的設計研究 (69)
4.3.3 EP2C8Q208C8N核心板原理圖設計 (81)
4.3.4 FPGA核心板Layout注意事項 (90)
4.4 Cyclone IV FPGA核心電路設計 (93)
4.4.1 Cyclone IV FPGA簡介 (93)
4.4.2 Cyclone IV FPGA數據手冊分析與EP4CE6E22C8N的設計研究 (95)
4.4.3 Cyclone IV FPGA核心電路設計 (101)
4.5 FPGA/CPLD電路焊接、調試經驗總結 (105)
4.6 本書配套FPGA開發平臺硬件介紹 (108)
4.6.1 VIP_Board 3.0硬件資源介紹 (109)
4.6.2 VIP_Board 3.0相關外設實物介紹 (110)
第5章 4位計數器的設計與仿真驗證 (115)
5.1 寫在前面的話 (115)
5.2 FPGA/CPLD開發流程 (115)
5.3 基于Quartus II 13.0的4位計數器設計流程 (117)
5.3.1 Quartus II 工程的創建 (117)
5.3.2 4位計數器的邏輯電路設計 (120)
5.3.3 Quartus II編譯流程與工程設置分析 (123)
5.4 基于Modelsim-Altera 10.1d的4位計數器仿真驗證流程 (134)
5.4.1 關于FPGA設計的各種仿真概念分析 (135)
5.4.2 Modelsim版本的簡要介紹 (136)
5.4.3 Modelsim工程的創建 (136)
5.4.4 Testbench激勵文件的編寫 (139)
5.4.5 Modelsim波形的仿真與分析 (142)
5.5 設計思路的驗證與總結 (149)
第6章 LED驅動電路設計 (151)
6.1 LED驅動電路設計方案1——入門 (151)
6.1.1 LED驅動電路設計方案 (151)
6.1.2 8位LED的自加顯示實驗 (153)
6.2 LED驅動電路設計方案2——升級 (164)
6.2.1 LED電路設計方案 (164)
6.2.2 74HC595驅動分析與實現 (166)
6.3 8位LED跑馬燈顯示實驗 (176)
6.4 LED特效呼吸燈的設計 (183)
6.4.1 PWM協議的基本介紹 (183)
6.4.2 LED呼吸燈的設計 (184)
第7章 獨立按鍵與矩陣鍵盤的FPGA驅動電路實現 (195)
7.1 按鍵及其工作模式介紹 (195)
7.1.1 按鍵抖動原理分析 (196)
7.1.2 硬件消抖動 (196)
7.1.3 軟件消抖動 (198)
7.2 獨立按鍵的FPGA驅動電路設計 (198)
7.2.1 獨立按鍵電路設計 (198)
7.2.2 FSM狀態機的Verilog HDL介紹 (199)
7.2.3 FPGA按鍵驅動設計方案1 (202)
7.2.4 FPGA按鍵驅動設計方案2 (216)
7.3 矩陣鍵盤的FPGA驅動電路設計 (221)
7.3.1 工作原理及電路設計 (221)
7.3.2 FPGA矩陣鍵盤驅動設計 (223)
第8章 “Hello World”的LCD1602顯示驅動實現 (235)
8.1 LCD1602介紹及硬件設計 (235)
8.1.1 LCD1602字符液晶介紹 (235)
8.1.2 LCD1602硬件電路設計 (236)
8.1.3 LCD1602的時序及初始化分析 (239)
8.2 LCD1602的FPGA驅動電路實現 (243)
8.2.1 LCD1602的C語言實現方案 (244)
8.2.2 LCD1602的Verilog HDL實現方案 (245)
第9章 優化設計FPGA全局時鐘管理模塊 (258)
9.1 異步復位,同步釋放機制 (258)
9.1.1 組合電路中的競爭-冒險 (259)
9.1.2 時序電路中的競爭-冒險 (260)
9.2 無PLL的全局時鐘管理模塊設計 (264)
9.3 Quartus II IP核介紹及PLL的定制 (273)
9.3.1 Quartus II IP核的介紹 (273)
9.3.2 PLL IP核的定制與分析 (279)
9.4 帶PLL的全局時鐘管理模塊設計 (287)
第10章 基于FPGA與MCU通信的SPI協議設計 (293)
10.1 SPI總線協議介紹及硬件的設計 (293)
10.1.1 SPI總線協議介紹 (293)
10.1.2 STM8的硬件電路設計 (295)
10.1.3 SPI總線協議時序分析 (297)
10.2 SPI總線協議的通信實現 (298)
10.2.1 STM8的SPI總線收發設計 (298)
10.2.2 邊沿檢測電路的FPGA實現 (300)
10.2.3 SPI通信的數據接收模塊設計 (302)
10.2.4 SPI通信的數據發送模塊設計 (311)
第11章 基于FPGA與PC通信的UART串口設計 (319)
11.1 追根溯源透析串口通信 (319)
11.1.1 串口通信簡介 (319)
11.1.2 串口波特率 (322)
11.1.3 串口協議分析 (322)
11.2 串口電路的設計 (323)
11.2.1 TTL轉RS-232電路的設計 (323)
11.2.2 USB→UART轉換電路設計 (324)
11.2.3 UART電路的調試 (325)
11.3 細說真正的任意分頻 (326)
11.3.1 分頻電路的重要性 (326)
11.3.2 任意頻率發生器原理 (326)
11.3.3 任意頻率發生器的驗證 (328)
11.4 串口通信的硬件實現 (332)
11.4.1 uart_receiver接收模塊的設計 (332)
11.4.2 uart_transfer發送模塊的設計 (340)
11.4.3 PC2FPGA UART聯調測試 (344)
第12章 基于FPGA的VGA驅動顯示設計 (351)
12.1 VGA接口、時序及驅動電路設計 (351)
12.1.1 VGA接口介紹 (351)
12.1.2 VGA時序分析 (353)
12.1.3 RGB三原色模型 (356)
12.1.4 VGA驅動電路設計 (359)
12.2 VGA驅動的FPGA實現 (364)
12.2.1 VGA驅動時序電路的設計 (364)
12.2.2 任意分辨率的VGA顯示控制器設計 (376)
12.3 “Hello World”的VGA顯示驅動實現 (379)
12.3.1 “Hello World”字模的提取 (379)
12.3.2 C2Mif軟件的介紹與Mif文件的生成 (382)
12.3.3 VGA字符顯示的FPGA實現 (386)
第13章 基于SDRAM的VGA顯示控制器的設計與實現 (391)
13.1 跨時鐘域數據交互 (391)
13.2 SDRAM的介紹及其控制器的移植與優化 (395)
13.2.1 SDRAM的特性及時序驅動介紹 (395)
13.2.2 SDRAM的硬件驅動電路設計 (399)
13.2.3 SDRAM控制器的移植與優化 (401)
13.2.4 Sdram_Control_2Port的封裝與協議制定 (418)
13.3 基于SDRAM的VGA顯示控制器的實現 (423)
第14章 基于OV7725的攝像頭視頻圖像采集系統 (435)
14.1 系統框架設計思路分析 (436)
14.1.1 系統框架分析 (436)
14.1.2 算法的實現流程 (437)
14.2 OV7725攝像頭介紹與視頻采集實現 (440)
14.2.1 CMOS攝像頭的簡介 (440)
14.2.2 OV7725的特性介紹及驅動電路設計 (442)
14.2.3 OV7725 SCCB接口及寄存器介紹 (447)
14.2.4 OV7725感光陣列與視頻時序分析 (456)
14.2.5 OV7725寄存器I2C初始化設計 (459)
14.2.6 OV7725的視頻采集模塊設計 (474)
14.3 OV7725視頻圖像顯示的實現 (492)
14.4 本章小結 (502)
第15章 基于FPGA的系統設計 (504)
15.1 FPGA芯片選型 (504)
15.2 FPGA的與眾不同——PCB布局在設計原理圖之前 (511)
15.3 存儲器的選型 (512)
15.4 FPGA外圍器件的選擇與設計 (513)
15.4.1 電阻 (514)
15.4.2 電容 (514)
15.4.3 磁珠 (517)
15.4.4 保險絲 (519)
15.5 基于核心板的系統設計 (521)
15.6 基于低功耗系統的電源選型 (522)
15.7 高速系統的PCB設計要點 (527)
15.7.1 結構布局 (527)
15.7.2 電路板的多層設計 (527)
15.7.3 過孔設計要點 (528)
15.7.4 防止串擾的布線原則 (529)
15.7.5 差分線布線原則 (529)
15.7.6 開關電源PCB設計要點 (530)
15.8 本章小結 (531)
第16章 基于高速相機的嵌入式視覺處理系統設計 (532)
16.1 視覺處理系統概述 (532)
16.2 嵌入式視覺處理系統結構設計 (533)
16.3 芯片選型 (535)
16.4 基于Camera Link工業相機接口的硬件設計 (537)
16.5 基于Camera Link接口的FPGA程序設計要點 (541)
16.6 基于VGA接口的圖像的實時縮小與算法結構 (542)
16.7 FPGA與DSP的協同工作模式 (545)
16.8 乒乓操作的進階——零延時數據傳輸 (545)
16.9 系統調試 (546)
16.10 本章小結 (547)
序: