黃金鳳
摘要:對于普通高校電子與通信專業(yè)的學生,一般在大二、大三學期會學習關于單片機、嵌入式系統(tǒng)設計、DSP、EDA、FPGA、CPLD等相關課程。學生學習完這些課程后,對于這些硬件之間的異同掌握的不是很好,而對于程序設計語言卻能熟練掌握。其實,單片機、嵌入式系統(tǒng)、DSP等硬件電路固定的芯片,它們是根據(jù)存儲程序控制原理,由芯片執(zhí)行一條條指令完成數(shù)據(jù)的輸入、存儲、處理、展現(xiàn)等功能;而FPGA、CPLD芯片屬于可編程邏輯器件,它們的電路結(jié)構(gòu)不是固定的,可以通過特定的描述方式得到不同的電路系統(tǒng)結(jié)構(gòu),從而完成不同的設計任務。本論文從內(nèi)部邏輯結(jié)構(gòu)和開發(fā)方式兩方面簡述單片機和FPGA芯片,旨在幫助學生理清電子電路系統(tǒng)設計中所應用的核心芯片之間的異同,更好的學習本專業(yè)相關課程,更早的認識到未來工作方向。
關鍵詞:單片機; FPGA;異同
中圖分類號:TP391 文獻標識碼:A 文章編號:1009-3044(2016)23-0201-03
1 概述
信息技術正在快速發(fā)展,其應用已經(jīng)深入到各個領域各個方面。如今越來越多的電子產(chǎn)品向著智能化、微型化、低功耗方向發(fā)展,其中有的產(chǎn)品還需要實時控制和信號處理。電子系統(tǒng)的復雜性在不斷增加,它迫切要求電子設計技術也有相應的變革和飛躍?,F(xiàn)在學校為了適應社會對于電子技術人才的需求,普通院校一般都開設關于單片機、嵌入式ARM、DSP、EDA、FPGA等相關課程,很多學生學完這些課程后,對這些芯片異同比較模糊,而對于程序設計語言卻能熟練掌握。簡單從定義上講,單片機(MCU),又稱為微控制器,在一塊半導體芯片上集中了CPU,ROM,RAM,I/O Interface, timer/counter, interrupt system, 構(gòu)成一臺完整的數(shù)字計算機。FPGA,現(xiàn)場可編程邏輯陣列,本身沒有什么功能,就像一張白紙,想要它有什么功能完全靠編程人員設計,你可以把它變成MCU,也可以變成DSP。論文主要從內(nèi)部邏輯結(jié)構(gòu)和開發(fā)方式兩方面簡述單片機和FPGA芯片,旨在幫助學生理清電子電路系統(tǒng)設計中所應用的核心芯片之間的異同,更好的學習本專業(yè)相關課程,更早的認識到未來工作方向。
2 內(nèi)部邏輯結(jié)構(gòu)
2.1 單片機
單片機其實是將微型計算機系統(tǒng)集成在了一塊芯片上,由運算器、控制器、存儲器、總線及輸入輸出設備接口構(gòu)成,遵從計算機的工作原理——存儲程序控制原理,所以單片機與外部輸入輸出設備的交流是通過程序來控制的,程序存入程序存儲器ROM中,加電后ROM中的程序會像計算機內(nèi)存中的程序一樣逐條執(zhí)行,執(zhí)行需要的數(shù)據(jù)和生成的數(shù)據(jù)可以存入數(shù)據(jù)存儲器中,單片機計算速度和性能有限,但用在一些基本控制上綽綽有余。
2.2 FPGA
每一塊FPGA芯片都是由有限多個帶有可編程連接的預定義源組成來實現(xiàn)一種可重構(gòu)數(shù)字電路。FPGA內(nèi)部主要分三塊:可編程的邏輯單元、可編程的連線和可編程的I/O模塊。可編程的邏輯單元的基本結(jié)構(gòu)是某種存儲器(SRAM、 FLASH等)制成的4輸入1輸出的“真值表”加上一個D觸發(fā)器構(gòu)成??删幊踢B線上有很多用存儲器控制的鏈接點,通過改寫對應存儲器的值就可以確定哪些線是連上的,而哪些線是斷開的,這就可以把很多可編程邏輯單元組合起來形成大型的邏輯電路??删幊痰腎/O可以任意的定義某個非專用引腳(FPGA中有專門的非用戶可使用的測試、下載用引腳)為輸入還是輸出,還可以對I/O的電平標準進行設置。
通過單片機和FPGA的內(nèi)部邏輯結(jié)構(gòu),我們可以看出,它們的內(nèi)部結(jié)構(gòu)完全不同,單片機可以看作是將功能固定的一些芯片連接起來,外部輸入設備輸入的程序和數(shù)據(jù)以二進制數(shù)據(jù)形式存放于各自存儲器中,由CPU執(zhí)行指令處理數(shù)據(jù)得到輸出結(jié)果,并將輸出結(jié)果傳送給外部輸出設備。對于FPGA芯片,每個不同的任務所設計的FPGA內(nèi)部的元器件數(shù)目及其連線是不一樣的,外部輸入設備輸入的二進制數(shù)據(jù)傳送給FPGA內(nèi)部的LUT得到輸入數(shù)據(jù)的所有輸出結(jié)果,并將輸出結(jié)果傳送給外部輸出設備。
3 開發(fā)方式
3.1 單片機系統(tǒng)的開發(fā)
為完成某一任務的單片機應用系統(tǒng)需要包含硬件和軟件系統(tǒng)。硬件和軟件必須緊密結(jié)合,協(xié)調(diào)一致才能正常工作。單片機只是一塊芯片而已,本身并無開發(fā)能力,要借助開發(fā)工具才能實現(xiàn)系統(tǒng)設計。開發(fā)工具主要包括電腦、編程器(又稱寫入器)、仿真機。單片機程序的編寫、編譯、調(diào)試等都是在一定的集成開發(fā)環(huán)境下進行的。集成開發(fā)環(huán)境仿真軟件(ICE)將文件的編輯,匯編語言的匯編、連接,高級語言的編譯、連接高度集成于一體,能對匯編程序和高級程序進行仿真調(diào)試。當我們編寫好的程序在集成開發(fā)環(huán)境編譯通過后,會形成一個二進制文件(文件名與源程序文件名相同,后綴名為“.BIN”)或十六進制文件(后綴名為“.HEX”),即形成所謂的目標程序。這個目標程序必須利用編程器才能將目標文件燒寫到單片機的程序存儲器中,從而讓單片機系統(tǒng)的硬件和軟件真正結(jié)合起來,組成一個完整的單片機系統(tǒng)。
3.2 FPGA系統(tǒng)的開發(fā)
FPGA是專用集成電路ASIC((Application Specific Integrated Circuits),但有其特殊性,是半定制的,可以通過編程的方式改變硬件電路結(jié)構(gòu)。既然需要硬件編程,也需要集成開發(fā)環(huán)境,如Quartus II, Max+PlusII等。通過這些工具,可以完成軟件平臺的設計輸入、編譯、綜合、適配、布局布線優(yōu)化、仿真。集成開發(fā)軟件將硬件描述語言等設計輸入文件進行編譯、綜合、適配后得到可下載的二進制碼流文件(.sof等)。通過編程器將二進制碼流文件下載到FPGA芯片里,F(xiàn)PGA芯片內(nèi)部的電路連接結(jié)構(gòu)就由二進制碼流文件確定下來,構(gòu)成了ASIC,加上外圍設備構(gòu)成了一個完整的FPGA系統(tǒng)。
通過單片機系統(tǒng)和FPGA系統(tǒng)開發(fā)流程圖,我們可以看出,它們都需要軟件平臺的設計、仿真、驗證,最終都是生成可下載的二進制碼流文件。在各自的集成開發(fā)環(huán)境里,每一步所需的編輯器、編譯器、仿真器、下載器等是不一樣的,F(xiàn)PGA系統(tǒng)里還需要綜合器、適配器,而單片機系統(tǒng)不需要綜合、適配。綜合是把語言描述的抽象層次較高的設計描述轉(zhuǎn)化成為抽象層次較低的電路網(wǎng)表,表現(xiàn)為一般的數(shù)字邏輯,能夠?qū)骄唧w的門級邏輯。適配是把綜合后的具體數(shù)字邏輯映射到具體的不同型號當中的FPGA器件中去,包括選擇哪一些基本邏輯單元(主要包含LUT和寄存器單元等),以及布局布線等。FPGA需要通過軟件編程改變其內(nèi)部電路結(jié)構(gòu),所以需要綜合、適配得到軟件平臺的具體電路結(jié)構(gòu)的映射。
4 結(jié)語
單片機相當于一個微型的計算機,它的體積小、質(zhì)量輕、價格便宜、為學習、應用和開發(fā)提供了便利條件;而FPGA卻不能看作是一個微型的計算機,所以在結(jié)構(gòu)上,單片機是基于CPU的馮·諾依曼器件,F(xiàn)PGA是基于并行邏輯單元的器件。相應的,單片機的開發(fā)是對指令的編程,F(xiàn)PGA的開發(fā)是對邏輯單元的連接。FPGA要比單片機底層很多,而且開發(fā)工具也要簡陋很多。兩者的主要應用場合也是不一樣的。單片機適合通用任務、通用運算、標準接口。FPGA適合一些極端任務,同時做100個串口收發(fā)器、用幾十個乘法器做算法的終極改進等。
參考文獻:
[1]王艷林,李東.單片機原理及應用教學項目設計[J],教育教學論壇, 2016(20).
[2] 李廣弟.單片機基礎[M],北京航空航天出版社,2001.
[3] 陳海宴.51單片機原理及應用[M],北京航空航天大學出版社,2010.
[4] 劉守義.單片機技術基礎[M].西安電子科技大學出版社,2007.
[6] 鄭利浩,王荃. FPGA數(shù)字邏輯設計教程,電子工業(yè)出版社,2010.
[7]吳厚航.深入淺出玩轉(zhuǎn)FPGA,北京航空航天大學出版社,2010.