FPGA初學者,回歸經典——超越者Spartan-6 FPGA開發板

2021-02-25 電路設計技能

隨著時代的發展,晶片行業的興起的氣勢已經不亞於當年網際網路興起時氣勢,越來越多的莘莘學子湧入半導體行業的大潮。越來越多的學子以找到一份晶片行業的工作為大學畢業目標,儘管不同的晶片公司對於求職者的需求不盡相同,FPGA 或許可以成為你的敲門磚。

本期Jaya 帶來一款適合學生,FPGA 小白的開發板正點原子出品的超越者Spartan-6 FPGA開發板。作為學生或者初入社會的學子,如果想要進入半導體行業,那麼你需要一些技能。半導體的行業,與傳統的電子行業會有一些區別。比如傳統的電子行業,相對來說會比較簡單,一般來說工程師的角色一般包含軟體工程師和硬體工程師,測試工程師三大類別,再往下細分的話,軟體可能會包含固件開發工程師,Kernel 內核工程師,linux 上層工程師等等等等,硬體可能會有layout 工程師,系統工程師,射頻工程師等等等等。但是晶片行業來說這個結構會複雜很多。一般可能會包含模擬IC設計工程師,數字IC設計工程師,版圖工程師,硬體工程師,軟體工程師,測試工程師等等。模擬和數字的設計工程師,負責構建起晶片的藍圖,版圖工程師會將模擬部分的圖紙實現,驗證軟體硬體的工程師,主要會完成以晶片為中心的驗證,原型開發,方案設計等。而作為進入晶片行業的敲門磚之一,FPGA,Verilog相關的技術是你值得掌握的。

現如今晶片產業蓬勃發展,有志之士都在這條康莊大道努力拼搏,作為學生或者有心進入晶片行當的你是否也想在晶片行業上展身手呢?什麼?你說你不會?沒關係,不會可以學,本期的開發板就是這樣一款面向純新手的經典款,那麼請出我們本期的主題來自正點原子的超越者FPGA開發板:

如果你看了上面的簡單的說明不知所云,那麼來!請繼續往下看,Jaya會用最簡單的語言來說明,只要稍微有一點電子基礎的童鞋都是可以看懂的!

首先你需要明白什麼是FPGA,所謂的FPGA就是Field Programmable Gate Array,即現場可編程門陣列,它是一種半定製的數字集成電路。簡單的說就是用我們數字電路學科學過的與或非門來搭建電路,總所周知只有有了與或非門,理論上我們就可以實現任何的邏輯,FPGA的區別是不過使用語言的方式將這個與或非門的組合進行描述,這個語言就叫做硬體描述語言,比如VHDL,Verilog,System Verilog,再通過綜合器將我們的硬體描述語言轉換成硬體電路的實際實現發送給FPGA。這樣FPGA就可以按照我們所描述的方式進行運行了。你可能會說這個過程和單片機編程一樣啊!作為初學者,可以暫時的這麼認為,因為畢竟都需要經過手寫代碼,機器轉換成器件能看懂的語言,然後再給機器執行。但是Jaya 會明確的告訴你單片機和FPGA有著本質的區別,FPGA的綜合說到底,是將你的語言轉換成電路,一個電路,只要有電信號就會按照邏輯直接跑到過去。而單片機的編譯是將代碼轉成成機器碼,然後由Core來機型逐行的執行。所以單片機的程序會有一個時序的關係,只有上一行執行了才會再執行下一行。而FPGA則不會有時序的關係,所有的電路都是同時執行,輸入端給一個信號,輸出端就會立刻給出反饋。

OK,簡單的科普FPGA的知識後,我們先來簡單的開個箱,箱子咱就不看了,就是正常的厚紙殼箱,我們直接將內部的器件拆出來給大家看!

先來一張全家福,套件中的器件包含:
1.    Jtag的轉接座
2.    兩根杜邦線
3.    一個Mini USB 轉 USB TypeA的USB線
4.    12V 1A的電源適配器
5.    一根DB9 to DB9的串口線
6.    Jtag排線
7.    屏幕的FPC 異面線。
8.    4.3寸帶觸摸的LCD 顯示屏
9.    超越者Spartan-6 FPGA開發板本體
10.    紅外遙控器

下面我們來看下主板,說實話的Jaya的主觀感受還是很不錯的,整塊板卡來說看起來十分精緻,整體的布局緊湊,但是並不會顯得很散亂,正點原子作為設計開發板的大廠,基礎的功底還是做的很紮實的,對接口,器件的布局,擺放的恰當好處。對於板卡的保護做的也很到位,上下均有兩層亞克力進行保護,top面的亞克力進行過切合,使得板子獲得應有的保護,但是又不會被擋住接口,可以說是在正常使用的前提下,為開發板提供了最強的保護。

在板卡的背面十分乾淨,只有一個TF 卡槽,一個用於播放聲音的Speaker,亞克力底板還很友善的為Speaker開了孔,方便聲音傳出。剩下的部分除了焊點和固定孔就是Spartan-6 FPGA 所需要的去耦電容。小夥伴可能會問,為什麼去耦電容一定要擺在背面,明明正面的Spartan-6 FPGA周圍還有很多空隙,如果擺在正面背面就沒有物料豈不是看起來會更加整潔?其實呢這個去耦電容擺在背面主要是有幾點原因啦,一般來說去耦電容的擺放位置是很有講究的,一般要靠近管腳擺放,靠近管腳擺放,才能讓電源管腳獲得最好的去耦效果。比如像是常見的QFN 封裝,SOP 封裝,LQFP的封裝管腳都在外側,很好理解就把去耦電容擺在晶片的旁邊就會好了,但是對於Spartan-6 XC6SLX16,這顆FT(G)256封裝的BGA 晶片,管腳的就近點就是在PCB的背面。另外,即使就近原則並沒有那麼嚴格,BGA晶片的走線也不會很容的把去耦電容擺放在晶片的周圍。這個的原因是這樣的,一般來說一層信號層最多可以拉出BGA晶片的3圈的引腳,而電源一般都會比較靠裡一點。所以把內側的電源信號跨越無數的管腳拉到晶片的邊上也是一件費力不討好的事情。(PS:底面亞克力的防滑墊是小編自己貼的,桌面有點滑,在插線或者其他動作的時候板子老是亂動)

接下來呢我們來看下整塊開發板上最核心的器件,那麼就是位於板卡中央的Xinlinx 的Spartan-6 FPGA 晶片,Spartan-6 作為2010年的老將來說,可以說它擁有這強大的生命力,到目前位置依然有很多Spartan-6 的應用場景。Spartan-6 使用的是45nm的製成,擁有知道可達2027年的供貨周期,可以說在電子產品迭代如此之快的今天,晶片的性能恨不得半年的就翻一倍的情況下,Spartan-6 依然堅挺。這就鑄造可以晶片的經典印象。就好比單片機中的8051,又好比ARM 32位單片機的STM32F103。儘管年代已經過去,更新更強的產品已經問世,但是依然無法磨滅曾經的經典。

Spartan-6 系列其實有很多款晶片,各款晶片的差異如下表,看出來Spartan-6 系列大體上可以分為兩類,一類是帶T的,另一類是不帶T的,這個X的差異主要在是否帶收發器,而是什麼事收發器呢?作為新手只要知道,有了收發器,我們就可以通過收發來接收高速的信號,比如PCIe,除了這個收發器的區別外其他的差異就是FPGA資源數目的多少了。如下圖中的Logic Cells,這個就是FPGA所有擁有的邏輯資源,Spartan-6 FPGA 中使用的是一個6輸入的LUT,所謂的LUT就是查找表,通過使用LUT與其真值表的方式來實現FPGA 中的邏輯與或非的實現,這樣就大大簡化了FPGA的設計難度。使得同樣的面積中塞進更多的邏輯資源。

Spartan-6 系列的封裝也是多種多樣的,同樣型號邏輯資源相同,使用不同的封裝,使可以使用的管腳數目不同。Spartan-6 系列FPGA的大小覆蓋 8X8mm 的BGA 到31X31mm 的BGA,同樣的更大的封裝就可以擴展出更多的管腳User I/O也隨著封裝的增加從106個用戶IO,擴展到576個用戶IO。我們的正點原子超越者Spartan-6 FPGA開發板,使用的就是XC6SLX16 FTG256的封裝。對應的資源數目為24051個Logic Cells。

Spartan-6器件簡單了解了,我們再回來看下我們的開發板。整體來說正點原子的超越者開發板將新手可能會用的功能完全包括,豐富的資源接口,會為我們的FPGA的學習帶來便利。

正點原子 超越者Spartan-6開發板的主要資源包括:

主控晶片:Xilinx Spartan6系列XC6SLX16,封裝:FTG256,速率等級:-2

晶振:50Mhz有源晶振

FLASH:採用Winbond公司的W25Q128 QSPI FLASH,容量:128Mbit(16M字節)

DDR3:NT5CB128M16CP-DI,容量:2Gbit(256M字節)

EEPROM晶片:AT24C64,容量:64Kbit(8K字節)

1個電源指示燈(藍色)

4個狀態指示燈(LED0~ LED3:紅色)

1個程序下載完成指示燈(綠色)

1個ATK模塊接口,支持正點原子藍牙/GPS/MPU6050/RGB燈模塊

1個標準的RGB888 TFT-LCD接口

1個OLED/攝像頭模塊接口

1個6位數碼管

1個RS232/RS485選擇接口

1個CAN選擇接口

1路CAN接口

1路RS232接口(母頭)

1路RS485接口

1路USB UART接口

1路HDMI接口

1路千兆乙太網接口(RJ45)

1個有源蜂鳴器

1個紅外接收頭

1個TF卡接口(在板子背面)

1個JTAG調試下載口,10PIN接口

1組5V/3.3V電源擴展口,支持對外提供電源和外部輸入電源

1個直流電源輸入接口(輸入電壓範圍:DC6~16V)

1個RTC後備電池座,並帶電池

1個RTC實時數字時鐘,採用PCF8563晶片

1個MIC(錄音輸入)

1路音頻輸入接口

1路耳機輸出接口

1個小揚聲器(在板子背面)

1個復位按鍵,可作為FPGA程序執行的復位信號

4個功能按鍵

1個電容觸摸按鍵

1個電源開關,控制整個開發板的電源

2個20x2擴展口,共80個擴展IO口,每組包含1個3.3V和5V電源接口

可見超越者Spartan-6開發板的資源真的非常的豐富。擁有豐富的資源,以及外設接口,可以更加方便的給我們來進行各種實驗。比如基礎的功能,像是初學者必須要了解的按鍵和點燈,再比如ETH PHY的控制,LCD屏幕的驅動,攝像頭接口通過DVP的接口驅動8bit的CMOS Sensor獲取圖像,可玩性很強,基本涵蓋FPGA和Verilog入門的需求,XC6SLX16的邏輯資源也足以支撐初學者玩到軟核的構建。作為入門開發板來說真的是不二的選擇。正常能一般來說開發板的在出場之前會進行測試程序的燒錄,來確定板卡是完好的,正點原子的超越者開發板也不會例外那麼我們就先來直接上電,上電來看下板卡的狀態,以及順便檢測板卡的在運輸的途中是否會有意外的損傷(出廠的時候一定會經過測試,如果板卡出現問題,大概率是粗心的快遞小哥不小心造成的物理損傷),順便也來看下整個板子的功耗,一般來說出場程序會儘量將可以驗證的部分都驗證到,雖然邏輯可能沒有用光,無法測量到最大功耗,額你說為啥用光邏輯才會有最大功耗?這裡的就是另外一個概念了,邏輯用的多,上電的瞬間所有的邏輯都進行配置,配置的過程就相當於打開管子,如果很多管子都進行同時進行工作會有一個超大的瞬間抽電,這時候電源就一定要抗住,Jaya以前就碰到,上電瞬間電源被抽死從而導致板卡無法啟動的情況。不過Spartan-6這個規模應該不會有這個問題,另外就是你的邏輯越多,速率越快自然功耗也就越大了。

整體的功耗有3W,可以說符合Jaya的預期,背面的喇叭會有一點點白噪音,當將耳朵貼在背板亞克力上能隱約的聽見沙沙聲。於是Jaya看了相關Audio部分的原理圖,發現居然還是熟悉的配方熟悉的味道,Audio部分功能是實現是通過外接了一顆WM8960 Codec來實現,通過I2S接口與FPGA 連接,發送音頻數據和接收音頻數據,另外還有一路I2C是用來給WM8960進行配置的。WM8960也是單片機中常用的一顆Codec。一樣的料在不同的平臺上使用,還真是有種又見老朋友的感覺。

硬體的結構我們基本了解完成下面我們來實現使用板子實現一點功能,首先我們需要有一個正點原子超越者FPGA開發板的綜合環境。由於正點原子超越者FPGA開發板使用的FPGA晶片是Spartann 6系列所以對應的開發綜合環境就要是ISE或者PlanAhead,PlanAhead工具可能使用的會比較少點,大多數都會使用ISE的工具,ISE的工具會略有點老,安裝的過程中需要進行一些調整以達到適配WIN10 的條件。額如果你還再用老版本的Windows,請當我沒說。具體的操作如下。

首先呢我們先來安裝軟體,ISE的安裝文件在<超越者FPGA開發板資料-工具盤(B盤)/ISE14.7>的目錄下,解壓TAR文件。

解壓後雙擊Xsetup.exe進行安裝,全程下一步就好。(PS:這裡對原子哥的視頻的確實有點佩服,連安裝的過程的巨細無遺,不愧是堪稱保姆級的資料)

安裝好了會彈出的一個Xilinx License Configuration Manager的窗口,用來激活工具的,ISE沒有激活是幾乎能不能使用的,一般來說在裡有三個方法,第一個當然就是購買正版軟體,當然這個有條件當然是最優先考慮的,第二個就是使用試用版的,試用版的License 相對來說限制較大,不方便使用,倒不是十分推薦,第三就是最不推薦也是最推薦的,在網上查找可以激活工具的License,畢竟我們是學習,又沒又商用(PS:自己找個藉口),這部分Jaya就不給大家舉例子了,網上多的是!

OK這樣的話我們的工具就已經安裝好了,但是,這樣的狀態還不推薦使用,因為與WIN10的兼容性問題,可能會導致閃退程序無法下載。我需要替換掉庫文件使ISE平臺變得穩定。具體操作如下:

1.將文件libPortability.dll重名為libPortability.dll.orig
2.將文件libPortabilityNOSH.dll複製一份,將這個複製文件重命名為libPortability.dll,並重新粘貼到與libPortabilityNOSH.dll相同的路徑下

1.將文件libPortability.dll重名為libPortability.dll.orig
2.然後將第一步中的文件libPortabilityNOSH.dll複製到該文件夾下,並重命名為libPortability.dll

這樣我們就可以愉快和正點原子超越者FPGA開發板玩耍了。
我們簡單的實現下點燈的實驗首先需要觀察原理圖,確認好管腳的位置

通過觀察原理圖,我們發現LED 和 KEY相關的管腳都是連接在Bank2上,另外一個重要的參數就是時鐘,我們可以通過原理圖發現正點原子超越者FPGA開發板的數時鐘是一個50M的CLK,是通過BANK2的N8管腳輸入。

實驗的框架邏輯為們有六路邏輯輸入進FPGA,分別是50M的時鐘,reset按鍵,以及四個按鍵。輸出邏輯有四個,分別對應四顆LED燈。

我們這裡就直接引用原子哥的代碼,然後進行工程的綜合,使用ISE的環境完成我們調試的小測試代碼如下:
//****************************************Copyright (c)***********************************//
//技術支持:www.openedv.com
//淘寶店鋪:http://openedv.taobao.com
//關注微信公眾平臺微信號:"正點原子",免費獲取FPGA & STM32資料。
//版權所有,盜版必究。
//Copyright(C) 正點原子 2018-2028
//All rights reserved
//---
// File name:           flow_led
// Last modified Date:  2018/7/11 11:12:36
// Last Version:        V1.1
// Descriptions:        流水燈
//---
// Created by:          正點原子
// Created date:        2018/1/29 10:55:56
// Version:             V1.0
// Descriptions:        The original version
//---
//****************************************************************************************//
module flow_led(
    input               sys_clk  ,  //系統時鐘
    input               sys_rst_n,  //系統復位,低電平有效
    
    output  reg  [3:0]  led         //4個LED燈
    );
reg [23:0] counter;
//*****************************************************
//**                    main code
//*****************************************************                                                                                                                                                                                                   
//計數器對系統時鐘計數,計時0.2秒
always @(posedge sys_clk or negedge sys_rst_n) begin
    if (!sys_rst_n)
        counter <= 24'd0;
    else if (counter < 24'd1000_0000)
        counter <= counter + 1'b1;
    else
        counter <= 24'd0;
end
//通過移位寄存器控制IO口的高低電平,從而改變LED的顯示狀態
always @(posedge sys_clk or negedge sys_rst_n) begin
    if (!sys_rst_n)
        led <= 4'b0001;
    else if(counter == 24'd1000_0000)
        led[3:0] <= {led[2:0],led[3]};
    else
        led <= led;
end

endmodule

代碼寫入後我們通過左下角的工具生產Bitfile。

雙擊Configure Target Device。打開iMPACT工具進行bitfile的燒錄

在掃描到器件後選擇我們生產的bit文件。

雙擊Program,實現下載。

簡單的實現效果:

簡單的實驗測試OK,另外呢,作為一塊入門級的開發板,設計部分的優良只是評價開發板價值的基礎部分,更重要的資料,如果開發板很好但是資料少的可憐,暗坑無數的話,說實話這不算一塊優秀的開發板,因為在剛剛開始學習和了解的過程中,即使是一個小小的問題都可能花掉我們很長的時間,甚至是打消積極性,當然對於大神來說,開發板神馬的不重要,主控夠強就可以玩起來,這種情況我們暫不討亂,但對於原子哥開發板來說,資料神馬的從來都不會讓我們失望,堪稱保姆及的開發板資料,為我們掃清認知過程中的一切障礙。另外相關的資料可以從從正點原子的官方網站上無任何限制的從百度雲盤上下載,沒有購買開發板也可以下載哦!地址給大家貼出來如下,即便是沒有正點原子超越者FPGA開發板,手頭有其他Spartann 6系列開發板的也可借鑑原子的教程,完成入門級的學習哦!

www.openedv.com/thread-319385-1-1.html。

下載的資料一共分為4個部分:

A盤是資料盤,裡面包含原理圖,PDF版教程,各種手冊等等。

B盤是工具盤,包含我們綜合的工具ISE,仿真的工具Modelsim。(PS:截圖才發現,原子哥好像拼錯了名字)

C盤就是就是視頻教程盤,包含一整套的FPGA視頻教程,涵蓋了軟體使用,verilog語法,以及軟核的使用

最後一個部分就是整個課件中使用的PPT集合。

可以看得出正點原子的資料是非常齊全的,涵蓋面也是非常廣泛的,只要有耐心,哪怕只看一半也足以初步入門FPGA,透過FPGA的學習與實踐,你會慢慢發現其中的樂趣,比如從最基本的邏輯出發洞察整個電子產品的運行邏輯。作為晶片設計的仿真工具,FPGA的功能不可謂不強,整體的數字邏輯都可以使用FPGA來仿真實現,起到限制作用的就是邏輯資源的數量,作為初學者當然用不到那麼多邏輯資源的板卡,並且大規模的驗證級FPGA價格也高的離譜,動輒上百萬,想要拿來進行學習基本不可能(土豪另說),正點原子超越者Spartan-6 FPGA開發板,正好適配初學者入門,價格門檻底,學習資料豐富,是入門Verilog和FPGA的不二選擇。

原創聲明:本文系電路城原創測評,如需轉載請註明來源出處!

與非官方微信交流群:嵌入式、物聯網、汽車電子、RF、人工智慧、EDA/IC設計、傳感器…超多技術群邀您來參加!

相關焦點