數字設計FPGA應用學習筆記


數字設計FPGA應用學習筆記


第一章 FPGA基礎及電路設計

FPGA基礎及電路設計包含兩個方面的內容,一個是FPGA基礎及7系列FPGA基本原理,另外就是FPGA電路設計,FPG廣泛應用於軍事、醫療、工業、通信等領域,下面是兩款實驗板:
實驗板一
實驗板二

FPGA基礎及7系列FPGA基本原理

FPGA概述

FPGA(Field-Programmable Gate Array),即現場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發展的產物。它是作為專用集成電路(ASIC)領域中的一種半定制電路而出現的,既解決了定制電路的不足,又克服了原有可編程器件門電路數有限的缺點。
FPGA的應用面非常廣泛,這里主要介紹Xilinx Artix-7系列芯片:
Xilinx Artix-7 系列器件以28納米高性能低功耗 ,尤其適合於可滿足航空電子和通信等領域的尺寸、重量、功耗和成本敏感型市場需求。提供大量的可供開發者直接使用的IP核,是市場的主流。
下圖是開發軟件VIVADO的截圖,可以看到一些IP核,用戶也可以自己設計IP核
IP核
系統設計師可以根據需要通過可編輯的連接把FPGA內部的邏輯塊連接起來,就好像一個電路試驗板被放在了一個芯片里。
一個出廠后的成品FPGA的邏輯塊和連接可以按照設計者的設計而改變,所以FPGA可以完成所需要的邏輯功能。
下圖是一個Verilog HDL語言的一個實例,Verilog HDL語言就是對電路功能的一個描述,通過具體分析可以看到具體實現的電路,就可以將這個電路下載到FPGA里面,讓FPGA實現我們描述的功能
Verilog實例

FPGA基本邏輯結構

現場可編程門陣列FPGA是可編程器件,與傳統可編程器件如PAL、GAL、CPLD等相比,FPGA有不同的結構,FPGA是利用小型查找表、小的RAM來實現組合邏輯,每個查找表連接到一個D觸發器的輸入端,觸發器再來驅動其他邏輯電路或IO,由此構成即可實現組合邏輯功能和時序邏輯功能的基本邏輯單元模塊,這些模塊間利用金屬連線連接或連接到IO輸入輸出模塊,通過向內部靜態存儲單元加載編程數據,就可以實現組合邏輯,再通過與觸發器配合,就可以實現時序邏輯,這些都是可編程的,最終決定了FPGA的所有功能實現。對FPGA的配置信息被保存在配置存儲器中,並在上電和復位的瞬間對FPGA進行配置。
下面是一款Xilinx Artix-7 xc7a35t的芯片,封裝型號為ftg256,在VIVADO下可以看到他的封裝是16*16的256個管腳


放大之后可以看到邏輯單元和相應的管腳信息

每個CLB由兩個Slice組成,Xilinx FPGA采用了陣列邏輯單元LCA(Logic Cell Array)概念,內部包括可配置邏輯模塊CLB(Configurable Logic Block)、輸入輸出模塊IOB(Input Output Block)和內部連線(Interconnect)三個部分。

要掌握FPGA基本邏輯結構,就要掌握LUT是如何實現的,FPGA是通過查找表LUT實現邏輯函數的

例1:用一個LUT實現如下函數

於是可以構建出如圖所示的真值表

7系列FPGA CLB

Artix-7系列的FPGA,型號為xc7a35t,在Artix-7中處於中端。它包含 5200個SLICE,其中3600個SLICEL,1600個SLICEM。每個SLICE包含4個6輸入查找表LUT,共有20800個查找表。Artix-7A35T可以分配400Kb的分布式RAM,200Kb的移位寄存器,41,600個觸發器。

通過查找表LUT實現邏輯函數,7系列的FPGA,每個查找表LUT都有6輸入和兩個獨立輸出。
當實現6輸入邏輯函數時,A1-A6為輸入,O6為輸出 ,當實現兩個小於等於5輸入的邏輯函數時,A1-A5為輸入,O6為輸出,A6拉高。

在圖中我們可以看到,每個CB由兩個SLICE組成

每個SLICE包含4個LUT及8個存儲元件及其他組合邏輯

每一個SLICE具有8個存儲元件,右邊的4個可以配置為鎖存器或觸發器,左邊的4個只能配置為觸發器。其中右側的4個存儲元件的輸入通過多路開關選擇,可以使用對應的查找表輸出,或者外部的輸入。
另外的四個之鞥呢配置為D觸發器。這4個D觸發器的輸入可以是查找表LUT的輸出,也可以是外部的輸入。
額外的規定是,當右邊的存儲元件被配置為鎖存器,這4個觸發器不能被使用

SLICE在FPGA 7系列體系結構分為兩類:能夠實現補碼運算、移位寄存器、存儲器功能的SLICE,成為SLICEM。它的功能相對較為復雜

而查找表只能實現基本邏輯函數的,成為SLICEL,邏輯結構相對比較簡單

通常采用全功能SLICEM結合簡單功能的SLICEL配合使用,使芯片在保持能力和性能的同時,實現低功耗和低成本。

7系列FPGA IOB

CLB能夠實現FPGA的功能,但是要和外界進行數據傳輸,就必須要有和外界電平兼容的IO接口IOB(Input Output Block),IOB的數量主要取決於芯片引腳的數量,通常對IOB的配置可以配置FPGA引腳的電氣特性,甚至可以配置上拉和下拉模式,可以達到與大多數電平的兼容。
7系列FPGA具有多個IOBANK(可以理解為IO的分組),每個BANK具有50個IOB, 具體的 BANK的數量取決於FPGA的尺寸和封裝。

XC7K325T具有10個I/O BANK,xc7a35tftg256-1因為有256個管腳,具有4個IO BANK。分別是BANK14、BANK15、BANK34和BANK35,其中BANK34只有部分管腳是可用的。

在下入中我們可以看到IOB的具體信息

IO管腳可以配置多種輸入輸出標准,當配置為單端模式,例如按鍵輸入、LED驅動等,可以設置為LVCMOS,、LVTTL、HSTL、 PCI、 SSTL電平標准。
當選擇差分輸入輸出模式(2個IO管腳差分輸入或輸出),可以設置為LVD,、Mini_LVDS、 RSDS、PPDS、BLVDS,以及差分 HSTL和 SSTL標准。
7系列的FPGA管腳還分為高效管腳HP(high-performance)和寬范圍HR(high-range)管腳
T信號用於控制輸入輸出三態DCITERMDISABLE設置DCI功能無效DIFFI_IN用於設置是否采用差分模式。在大多數的7系列FPGA器件中,在每一個BANK的最后兩個管腳是僅單端模式的,其他的管腳都可以配置為單端或差分模式。

7系列FPGA及7a35tftg256-1特性

    1. 改進的高效6輸入查找表技術,可配置為分布存儲器。
    1. 內置先入先出邏輯的36 Kb雙端口塊內存用於片內數據緩存。
    1. 高效的SelectIO技術,支持DDR3接口,采樣率高達1866 Mb/s。
    1. 內置串行千兆位收發器(multi-gigabit transceivers),收發頻率從600 Mb/s到最高的6.6 Gb/s ,直到28.05 Gb/s。
    1. 用戶可配置的模擬輸入接口(XADC),,具有雙12-bit 1MSPS 模數轉換器,並帶有內部溫度、電壓傳感器。
    1. 具有DSP 專用SLICE , 帶有 25 x 18 乘法器, 48位進位累加器。
    1. 時鍾管理塊 (CMT)及結合鎖相環PLL和混合模式時鍾管理器MMCM,具有高精度和低抖動優點,可實現分頻和倍頻、相位移動等功能。
    1. 集成PCIE接口模塊。
    1. 大量的可配置選項。
    1. 28 nm高效低功耗、低內核電壓、低成本設計。
      速度等級
      Artix-7 FPGA可選- 3、- 2、- 1、- 1l,和-2l速度等級,其中-3等級具有最高的性能。
      Artix-7 FPGA主要操作在1.0V內核電壓,器件xc7a35tftg256-1具有-1的速度等級。
      電壓
      7a35tftg256的內核電壓VCCINT電壓最大1.1V,通常工作在1.0V。
  • 輔助設備電壓VCCAUX最高為2.0V,通常為1.8V。
  • BRAM電壓VCCBRAM電壓最大1.1V,通常工作在1.0V。
  • I/O端口電壓VCCO最高為3.6V,通常為3.3V。
  • 設計包含FPGA的電路板,需要設計不同的電壓源。

FPGA電路設計

基於Xilinx xc7a35tftg256-1的電路板為配合FPGA學習使用, 加上一台筆記本電腦就可以完成口袋實驗室的搭建。掌握FPGA的基本電路設計,對於FPGA的功能設計與實現是必須的。例如進行約束時需要對應到管腳,要點亮LED就必須知道並在工程中描述接口關系。
某寶上也有大量的實驗開發板可以選擇,根據個人喜好可以進行選擇,這里不做推薦,避免廣告嫌疑。

xc7a35tftg256-1分為BANK14,BANK15,BANK35和BANK34四個BANK。不同的開發板對應不同的管腳,在開發板配套資料中會有相應的原理圖,通過查看原理圖可以找到相應的管腳

下面列出一些開發板上比較常見的資源管腳分配:

  • LED
    LED驅動電路非常簡單,FPGA的輸出I/O口的驅動能力足夠驅動LED點亮

  • 撥碼開關
    撥碼開關(也叫DIP開關,撥動開關)是用來操作控制的地址開關

  • 按鍵
    按鍵是開發板必不可少的元件,不同的按鍵有不同的電氣特性,根據電路圖,當按鍵缺省狀態時(未按下),對應管腳通過兩個串聯的10K歐姆電阻接地,獲得低電平輸入。當按鍵按下時,通過10K電阻接到電源,這時將得到高電平輸入。

  • 數碼管
    數碼管的選擇分為連體數碼管和分布數碼管,共陽極和共陰極的區別,驅動的方式也分為含有3-8譯碼器和不含3-8譯碼器的區別,使用3-8譯碼器可以節省芯片管腳資源

    下面是電路板七段數碼管驅動電路及管腳分配圖

  • VGA驅動

  • 串口驅動

  • XADC

  • 其他接口


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM