編者按:幾年前,我寫了一篇“如何學習ARM和FPGA的文章”,雖然流傳甚廣,但回頭來看還是有很多的不足之處,為什么呢?因為今天的社會環境已經發生了很大的變化,人們對于學習的渴望與八十年代比較相去甚遠。與此同時今天的人們更具有個性化和自由的思想,因此文化的傳播和價值觀的傳遞更需要注重人文關懷。
人們時常說,現在的大學生不好學,真的是這樣嗎?或許,每個人的需求不一樣,他不一定非要學什么做什么,每個人可以按照自己的喜好與意愿去發展,這就是今天與過去的不同。事實上,學習僅僅是培養一個人成才的訓練過程,他可能沒有掌握技術的細節,但他已經掌握了常用的方法,這同樣是我這些年來思考的問題之一。
基于上述原因,我在教學與圖書創作過程中,將更多的精力用于研究“他們”為什么學不會?“他們”與“我們”相比為什么沒有那么大的興趣?而不是埋怨“他們”不好學。事實上,學生不知道為什么要學習FPGA?學習FPGA到底有什么用途?其次,到底只需要學習那些內容,學生就能夠達到舉一反三的效果,而不是一味按照圖書作者的意愿或老師的意愿或人云亦云的錯誤思想,將什么都灌輸給學生,最后反而將學生灌暈了,倒了胃口食之無味棄之可惜,這是人們很少研究的問題。第三,我們應該如何設計教學實踐案例,不僅要達到引起學生產生興趣的目的,而且要做到課程之間知識點的相互融合(比如,同樣一個示例,在不同的課程中,采用多種方法來實現),這也是我們在教學中很少研究和關注的問題。
《可編程邏輯電路設計基礎教程》前言
一、創作起因
其實兩年前就已經寫好了這本書,為什么沒有提交給出版社呢?我們一直在問自己一個問題,面對已經面世的上百本圖書,如果再出版一本豈不多余嗎?
盡管很多大學都開設了這門課,且花大價錢投入了很多的教學實驗設備,但我們也一直在苦思冥想,為什么熟練掌握FPAG的學生卻寥寥無幾呢?
雖然我們公司有專業的SoC可編程邏輯電路設計團隊,但依然感到培養一個合格的開發人員仍然有一定的難度。到底問題出在哪里呢?哪些內容才是培養一個合格開發工程師必須掌握的重要知識點,這個問題成了我們研究的重點。每年我們都在修改培養方案,終于發現精選教學內容和合理設置實踐案例才是關鍵所在。
二、教學內容的組織與安排
為了提高學生的動手能力,我們為《新編計算機基礎教程》編寫了一本淺顯易懂的電子版配套圖書《項目驅動——數字電路實踐與制作基礎教程(1)》,采用step-to-step的方法引導初學者,學習如何設計和制作一臺基于80C51單片機的微型計算機的方法和過程,最終達到深入了解計算機體系結構的目的。
與此同時,我們在此基礎上加入了更多的基礎理論,寫作了電子版《項目驅動——數字電路實踐與制作基礎教程(2)》,用作《電子技術基礎(數字部分)》配套的實驗指導。
針對這門課程更進一步地,我們寫作了電子版《項目驅動——可編程邏輯電路設計與實踐基礎教程》,其特點是將其中的每一個集成電路全部用FPGA來實現,接著將微型計算機的地址、數據輸入和顯示電路、SRAM以及讀寫控制電路全部用一個FPGA來實現,構成一臺完整的微型計算機。最后在單片FPGA中設計一臺完整的基于80C51軟核的微型計算機,這就是本書的全部構思。
實踐證明,對于初學者來說,經過上述訓練之后,已經完全具備了成為一個合格開發工程師的必要基礎和能力。
1. 本書的第一部分內容
第1章——FPGA基礎知識。本章主要是介紹FPGA的基本知識,了解什么是FPGA?它與數字電路之間有什么關系?我們用怎樣的方式將FPGA與數字電路進行有機的結合?同時了解FPGA的發展歷程,有助于從源頭上認識FPGA,并結合實用的角度介紹FPGA的使用流程和FPGA的特點。
第2章——FPGA基本結構。了解了什么是FPGA之后,讀者一定想要知道FPGA的內部結構到底是怎樣的。因此本章內容主要是從FPGA最基本的單元結構出發,詳細介紹FPGA的結構特點,其中包括開關結構、邏輯單元、布線資源和I/O結構等,了解這些內容可以幫助大家對FPGA的結構有一個全新的認識。
第3章——FPGA片內外設。目前的FPGA除了邏輯單元以外,往往還帶有非常多的片內外設,如同MCU一樣,這些外設讓FPGA的單芯片實現成為可能,同時可以實現更多的功能。因此本章介紹FPGA內部常用的外設,其中包括SRAM、FIFO、PLL、模擬電路等等,從而了解FPGA為什么如此強大的原因。
2. 本書的第二部分內容
第4章——Verilog基礎語法。如果要用FPGA來做設計,學會FPGA的設計語言非常地關鍵,如同使用MCU一樣,學習C語言是基礎。本章介紹了國內最為流行、使用人數最多的FPGA編程語言——Verilog的基本語法,從基本概念到強大的系統任務都逐一詳細介紹,為后面的FPGA設計打下堅實的基礎。
3. 本書的第三部分內容
第5章——常用IP設計。從本章開始,注重FPGA的實戰練習,學習FPGA的設計應用,將理論在實踐中得以驗證。因此,本章將從FPGA獨特的IP設計開始,學習如何利用FPGA來設計一些常用的IP,例如:I2C、UART、SPI、PWM等,甚至可以用FPGA來實現CPU,自定義特有的MCU。
第6章——典型應用設計。本章從應用的角度出發,結合工程設計中常用的案例,介紹如何實現一些典型的FPGA設計,從而達到學以致用的目的。本章從大量的實例中精心挑選了五個例子作為教學,分別是頻率計、DDS、產品版本號控制器、偽隨機序列、并行總線,詳細介紹了其原理和實現方式,并留有一定的空間讓讀者自行補全設計內容,鍛煉動手能力。
第7章——DIY創新應用設計。創新是我們進步的階梯,是我們與眾不同的途徑之一,也是我們超越對手的方式之一。因此,本章注重發揮大家的動手和創新能力,更進一步地將FPGA的應用發揮得淋漓盡致。讀者可以通過矩陣鍵盤管理設計、開平方算法設計、同步FIFO設計鍛煉大家DIY創新設計的思維與能力。
面向對象
本書是為電子信息工程、電氣自動化、自動化、電子科學與技術、測控技術、通信、醫學電子、機電一體化等專業編寫的。
結束語
本書由江西理工大學周立功教授、廣州周立功單片機科技有限公司劉銀華與北京航空航天大學夏宇聞教授歷時3年的構思與實踐創作而成,是“高等院校電類專業新概念教材.卓越工程師教育”叢書的第四冊,由周立功擔任本書主編,負責全書內容的組織策劃、構思設計和最終的審核定稿。