FPGA的管腳主要包括:用戶I/O(User I/O)、配置管腳、電源、時鐘及特殊應用管腳等。其中有些管腳可有多種用途,所以在設計FPGA電路之前,需要認真的閱讀相應FPGA的晶片手冊。
下面以Altera公司的Cyclone系列FPGA為例,介紹FPGA的各種功能管腳。
(1)用戶I/O。
I/Onum(LVDSnumn):可用作輸入或輸出,或者雙向口,同時可作為LVDS差分對的負端。其中num表示管腳序號。
一般在繪製FPGA原理圖時,將同一種功能和用途的管腳放在一個框圖中,如圖2.3所示是用戶I/O的原理圖。
(2)配置管腳。
MSEL[1..0]:用於選擇配置模式。FPGA有多種配置模式,比如主動、被動、快速、正常、串行、並行等,可以此管腳進行選擇。DATA0:FPGA串行數據輸入,連接至配置器件的串行數據輸出管腳。DCLK:FPGA串行時鐘輸出,為配置器件提供串行時鐘。nCSO(I/O):FPGA片選信號輸出,連接至配置器件的nCS管腳。ASDO(I/O):FPGA串行數據輸出,連接至配置器件的ASDI管腳。nCEO:下載鏈器件使能輸出。在一條下載鏈(Chain)中,當第一個器件配置完成後,此信號將使能下一個器件開始進行配置。下載鏈的最後一個器件的nCEO應懸空。圖2.3 FPGA用戶I/O原理圖
nCE:下載鏈器件使能輸入,連接至上一個器件的nCEO。下載鏈第一個器件的nCE接地。nCONFIG:用戶模式配置起始信號。nSTATUS:配置狀態信號。CONF_DONE:配置結束信號。如圖2.4所示是FPGA配置管腳原理圖。
圖2.4 FPGA配置管腳原理圖
(3)電源管腳。
VCCINT:內核電壓。通常與FPGA晶片所採用的工藝有關,例如130nm工藝為1.5V,90nm工藝為1.2V。VCCIO:埠電壓。一般為3.3V,還可以支持選擇多種電壓,如5V、1.8V、1.5V等。VREF:參考電壓。GND:信號地。(4)時鐘管腳。
VCC_PLL:鎖相環管腳電壓,直接連VCCIO。VCCA_PLL:鎖相環模擬電壓,一般通過濾波器接到VCCINT上。GNDA_PLL:鎖相環模擬地。GNDD_PLL:鎖相環數字地。CLKnum(LVDSCLKnump):鎖相環時鐘輸入。支持LVDS時鐘輸入,p接正端,num表示PLL序號。CLKnum(LVDSCLKnumn):鎖相環時鐘輸入。支持LVDS時鐘輸入,n接負端,num表示PLL序號。PLLnum_OUTp(I/O):鎖相環時鐘輸出。支持LVDS時鐘輸入,p接正端,num表示PLL序號。PLLnum_OUTn(I/O):鎖相環時鐘輸出。支持LVDS時鐘輸入,n接負端,num表示PLL序號。如圖2.6所示是FPGA時鐘管腳原理圖。
圖2.5 FPGA電源管腳原理圖 圖2.6 FPGA時鐘管腳原理圖
另外,FPGA的管腳中,有一些是全局時鐘,這些管腳在FPGA中已經做好了時鐘樹。使用這些管腳作為關鍵時鐘或信號的布線可以獲得最佳性能。
(5)特殊管腳。
VCCPD:用於選擇驅動電壓。VCCSEL:用於控制配置管腳和鎖相環相關的輸入緩衝電壓。PORSEL:上電復位選項。NIOPULLUP:用於控制配置時所使用的用戶I/O的內部上拉電阻是否工作。TEMPDIODEn/p:用於關聯溫度敏感二極體。2.2.2 下載配置與調試接口電路設計FPGA是SRAM型結構,本身並不能固化程序。因此FPGA需要一片Flash結構的配置晶片來存儲邏輯配置信息,用於進行上電配置。
以Altera公司的FPGA為例,配置晶片分為串行(EPCSx系列)和並行(EPCx系列)兩種。其中EPCx系列為老款配置晶片,體積較大,價格高。而EPCSx系列晶片與之相比,體積小、價格低。
另外,除了使用Altera公司的配置晶片,也可以使用Flash+CPLD的方式去配置FPGA。
在把程序固化到配置晶片之前,一般先使用JTAG模式去調試程序,也就是把程序下載到FPGA晶片上運行。雖然這種方式在斷電以後程序會丟失,但是充分利用了FPGA的無限擦寫性。
所以一般FPGA有兩個下載接口:JTAG調試接口和AS(或PS)模式下載接口。所不同的是前者下載至FPGA,後者是編程配置晶片(如EPCSx),然後再配置FPGA。
如圖2.7和圖2.8所示分別是JTAG模式和AS模式的電路原理圖。
圖2.7 JTAG模式原理圖
2.2.3 高速SDRAM存儲器接口電路設計SDRAM可作為軟嵌入式系統的(NIOS II)的程序運行空間,或者作為大量數據的緩衝區。SDRAM是通用的存儲設備,只要容量和數據位寬相同,不同公司生產的晶片都是兼容的。
一般比較常用的SDRAM包括現代HY57V系列、三星K4S系列和美光MT48LC系列。例如,4M×32位的SDRAM,現代公司的晶片型號為HY57V283220,三星公司的為K4S283232,美光公司的為MT48LC4M32。這幾個型號的晶片可以相互替換。SDRAM典型電路如圖2.9所示。
圖2.8 AS模式原理圖
圖2.9 SDRAM典型電路
2.2.4 異步SRAM(ASRAM)存儲器接口電路設計由於ASRAM的讀寫時序相對比較簡單,因此一般使用SRAM作為數據的緩衝,但其成本相對SDRAM高。而且作為異步設備,ASRAM對於時鐘同步的要求也不高,可以在低速下運行。ASRAM主要為8位和16位數據寬度,用戶可根據需要進行選擇。ASRAM的典型電路如圖2.10所示。
圖2.10 ASRAM典型電路
2.2.5 Flash存儲器接口電路設計Flash可作為軟嵌入式系統的程序存儲空間,或者作為程序的固件空間。最常使用的是AMD公司或者Intel公司的Flash。在小容量的Flash選擇上,AMD公司的Flash性價比較高,而高容量的Flash選擇上,Intel公司的Flash性價比較高。
Flash同樣也可以通過設置實現8位和16位的數據位寬,下面是幾種典型的Flash應用。
16位模式下的(AMD)Flash連接如圖2.11所示。
8位模式下的(AMD)Flash連接如圖2.12所示。
8位模式下(Intel)Flash連接如圖2.13所示。
圖2.11 16位模式下(AMD)Flash連接
圖2.12 8位模式下(AMD)Flash連接
圖2.13 8位模式下(Intel)Flash連接
2.2.6 開關、按鍵與發光LED電路設計發光LED參考電路如圖2.14所示。
圖2.14 數碼管參考電路
撥碼開關參考電路如圖2.15所示。
圖2.15 撥碼開關參考電路
按鍵開關參考電路如圖2.16所示。
圖2.16 按鍵開關參考電路
2.2.7 VGA接口電路設計紅色颶風開發板提供了VGA顯示功能與接口,可以用普通的VGA電纜連接到計算機的顯示器上。VGA 連接器定義如圖2.17所示。
圖2.17 VGA連接器定義
包括的信號有Red(R)、Green(G)、Blue(B)、Horizontal Sync(水平掃描HS)以及Vertical Sync(垂直掃描 VS)。系統結構示意圖如圖2.18所示。
圖2.18 VGA接口結構示意圖
2.2.8 PS/2滑鼠及鍵盤接口電路設計早期的PS/2滑鼠及鍵盤採用5V電壓標準,目前的PS/2滑鼠及鍵盤主要採用3.3V電壓標準,如圖2.19所示的參考電路可以實現對兩種標準的兼容。
圖2.19 PS/2參考電路
2.2.9 RS-232串口RS-232接口定義如表2.1所示。
表2.1 RS-232接口定義表
25芯
9芯
信號方向來自
縮 寫
描 述
2
3
PC
TXD
發送數據
3
2
數據機
RXD
接收數據
4
7
PC
RTS
請求發送
5
8
數據機
CTS
允許發送
6
6
數據機
DSR
通信設備準備好
7
5
GND
信號地
8
1
數據機
CD
載波檢測
20
4
PC
DTR
數據終端準備好
22
9
數據機
RI
響鈴指示器
DTE DCE設備信號電流方向如表2.2所示。
表2.2 DTE DCE設備信號電流方向表
9芯DTE
25芯DTE
電 流 方 向
縮寫DCE
描述DCE
3
2
DTE→DCE
2
3
2
3
DTE←DCE
3
2
7
4
DTE→DCE
4
7
8
5
DTE←DCE
5
8
6
6
DTE←DCE
6
6
5
7
DTE←DCE
7
5
1
8
DTE←DCE
8
1
4
20
DTE→DCE
20
4
9
22
DTE←DCE
22
9
RS-232參考電路如圖2.20所示。
圖2.20 RS-232參考電路
2.2.10 字符型液晶顯示器接口電路設計字符型液晶顯示器電路原理圖如圖2.21所示。
第1腳:VSS為地電源。
第2腳:VDD接5V正電源。
第3腳:V0為液晶顯示器對比度調整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產生「鬼影」,使用時可以通過一個10kW的電位器調整對比度。
第4腳:RS為寄存器選擇線,高電平時選擇數據寄存器低電平時選擇指令寄存器。
第5腳:RW為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和RW共同為低電平時可以寫入指令或者顯示地址,當RS為低電平、RW為高電平時可以讀忙信號,當RS為高電平、RW為低電平時可以寫入數據。
第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執行命令。
第7~14腳:D0~D7為8位雙向數據線。
圖2.21 字符型液晶顯示器電路原理圖
2.2.11 USB 2.0接口晶片CY7C68013電路設計通過開發系統上的USB接口,可以用USB電纜直接將系統與主機(比如PC機)相連。USB接口使用了Cypress公司的CY7C68013晶片來實現,其電路原理圖如圖2.22所示。
圖2.22 CY7C68013原理圖
1.晶片介紹Cypress Semiconductor公司的EZ-USB FX2是世界上第一款集成USB 2.0的微處理器。它集成了USB 2.0收發器、SIE(智能串行引擎)、增強的8051微控制器和可編程的外圍接口。FX2這種獨創性結構可使數據傳輸率達到56MB/s,即USB 2.0允許的最大帶寬。
在FX2中,智能SIE可以硬體處理許多USB 1.1和USB 2.0協議,從而減少了開發時間和確保了USB的兼容性。GPIF(General Programmable Interface)和主/從端點FIFO(8位或16位數據總線)為ATA、UTOPIA、EPP、PCMCIA和DSP等提供了簡單和無縫連接接口。
CY7C68013集成了以下特性。
(1)USB 2.0收發器、SIE(智能串行引擎)和增強性8051微處理器。
(2)軟體運行。8051程序從內部RAM開始運行,可藉助下列幾種方式進行程序裝載。
通過USB下載。從EEPROM中裝載。通過外部存儲器設備。(3)4個可編程(BULK/INTERRUPT/ISOCHRONOUS)端點,可選雙緩衝、三緩衝和四緩衝。
(4)8位或16位外部數據接口。
(5)通用可編程接口(GPIF)。
可以直接連接到並口,分為8位和16位。可編程波形描述符和配置寄存器。支持多個Ready輸入和Control輸出。(6)集成標準8051內核,且具有下列增強特性。
可以達到48MHz時鐘。每條指令佔4個時鐘周期。2個UARTS。3個定時/計數器。擴展的中斷系統。兩個數據指針。(7)採用3.3V電源系統。
(8)矢量USB中斷。
(9)獨立的數據緩衝區供SETUP和DATA包控制傳輸。
(10)集成I2C控制器,運行速度可達100kHz。
(11)4個FIFO,可與ASIC和DSP等無縫連接。
(12)專門的FIFO和GPIF自動矢量中斷。
(13)可用於DSL Modems、ATA接口、相機、Home PNA、WLAN、MP3播放器、網絡等。
2.USB啟動方式和枚舉上電時,內部邏輯會檢查連接到I2C總線上的EEPROM中的第一個字節(0xC0或0xC2)。如果是0xC0,就會使用EEPROM中的VID/PID/DID來替代內部存儲值;如果是0xC2,內部邏輯就會把EEPROM中的內容裝入到內部RAM中;如果沒有檢查到EEPROM,FX2就會使用內部存儲的描述符來枚舉。其預設值是0x04B4/ 0x8613/ 0xxxyy。
當首次插入USB時,FX2會通過USB電纜自動枚舉並下載固件和USB描述符表。然後FX2將再次枚舉,通過下載的信息來定義設備。這兩個步驟就叫做重枚舉,當設備插入時它們就立即執行。
3.程序/數據存儲器(1)內部數據RAM。
FX2的內部數據RAM被分成3個不同的區域:低(LOW)128位元組,高(Upper)128位元組和特殊功能寄存器(SFR)空間。低128位元組和高128位元組是通用RAM,SFR包括FX2控制和狀態寄存器。
(2)外部程序存儲器和數據存儲器。
FX2有8KB片上RAM(位於0x0000~0x1FFF範圍內)和512位元組Scratch RAM(位於0xE000~0xE1FF)。儘管Scratch RAM從物理上來說位於片內,但是通過固件可以把它作為外部RAM一樣來尋址。FX2保留7.5KB(0xE200~0xFFFF)數據地址空間作為控制/狀態寄存器和端點緩衝器。
注意
只有數據內存空間保留,而程序內存(0xE000~0xFFFF)並不保留。
4.端點緩衝區FX2包含3個64位元組端點緩衝區和4KB可配置成不同方式的緩衝,其中3個64位元組的緩衝區為EP0、EP1IN和EP1OUT。
EP0作為控制端點用,它是一個雙向端點,既可為IN也可為OUT。當需要控制傳輸數據時,FX2固件讀寫EP0緩衝區,但是8個SETUP字節數據不會出現在這64位元組EP0端點緩衝區中。
EP1IN和EP1OUT使用獨立的64位元組緩衝區,可配置為BULK、INTERRUPT或ISOCHRONOUS傳輸方式,這兩個端點和EP0一樣只能被固件訪問。這一點與大端點緩衝區EP2、EP4、EP6和EP8不同,這4個端點緩衝區主要用來和片上或片外進行高帶寬數據傳輸而無需固件的參與。EP2、EP4、EP6和EP8是高帶寬、大緩衝區,它們可被設置成不同的方式來適應帶寬的需求。
5.外部FIFO接口EP2、EP4、EP6和EP8大端點緩衝區主要用來進行高速(480Mbit/s)數據傳輸。可以通過FIFO數據接口與外部ASIC和DSP等處理器無縫連接來實現高速數據傳輸。它具有的通用接口有:Slave FIFO或GPIF(內部主)、同步或異步時鐘、內部或外部時鐘等。
6.中斷資源FX2的中斷結構是在一個標準8051單片機的基礎上增強和擴展了部分中斷資源,中斷資源如表2.3所示。
表2.3 FX中斷資源表
FX2中斷
中 斷 來 源
中 斷 向 量
優 先 級
IE0
INT0 Pin
0x0003
1
TF0
Timer0 Overflow
0x000B
2
IE1
INT1 Pin
0x0013
3
TF1
Timer1 Overflow
0x001B
4
RI_0 TI_0
USART0 Rx Tx
0x0023
5
TF2
Timer2 Overflow
0x002B
6
Resume
WAKEUP/WU2 Pin
0x0033
0
RI_1 TI_1
USART1 Rx Tx
0x003B
7
USBINT
USB
0x0043
8
I2CINT
I2C BUS
0x004B
9
IE4
GPIF/FIFOs/INT4 Pin
0x0053
10
IE5
INT5 Pin
0x005B
11
IE6
INT6 Pin
0x0063
12
其中27個USB請求共享USB中斷,14個FIFO/GPIF源共享INT4。
晶片的詳細介紹與使用方法可參看晶片數據手冊。
2.2.12 電源電路設計電源是整個系統能夠正常工作的基本保證,如果電源電路設計的不好,系統有可能不能工作,或者即使能工作但是散熱條件不好,導致系統不穩定等異常情況。所以如何選用合適的電源晶片,以及如何合理地對電源進行布局布線,都是值得下大功夫研究的。
在選用電源之前要仔細閱讀FPGA的晶片手冊,一般來說FPGA用到的管腳和資源越多,那麼所需要的電流就越大,當電路啟動時FPGA的瞬間電流也比較大。通過數據手冊中提供的電氣參數,確定FPGA最大需要多大的電流才能工作。
下面是幾種常使用的FPGA參考電源。
AS117可以提供1A電流,線型電源(適用144管腳以下、5萬邏輯門以下的FPGA)。AS2830(或LT1085/6)可以提供3A電流,線性電源(適用240管腳以下、30萬邏輯門以下的FPGA)。TPS54350可以提供3A電流,開關電源(適用大封裝大規模的高端FPGA)。AS2830電源應用電路如圖2.23所示。
對於線性電源晶片,輸出電壓和輸入電壓的關係為:Vout=(1+RP3/RP2)×Vref。
Vref一般是1.25V,輸出假定輸入Vin為5V,Vout為1.5V,那麼RP2/RP3=1/5,而RP3一般要求100~150W,那麼可以選RP3=100W,RP2=500W。如果採用了固定電平輸出的晶片,只需要把RP3焊0W,RP2不焊接即可。
圖2.23 AS2830電源應用電路
2.2.13 復位電路設計一般復位電路採用的是低電平復位,只有個別單片機採用高電平復位方式。
常見的電平復位電路分為晶片復位和阻容復位。前者的復位信號比較穩定,而後者容易出現抖動。因此在成本允許的範圍內我們一般推薦使用晶片復位。
常用的晶片復位有MAX708S/706S系列,它們可提供高、低電平兩種復位方式和電源監控能力(監控電源電壓低到一定程度自動復位)。
IMP811是一款比較低廉的復位晶片,只有低電平復位功能,但是其體積非常小。
阻容復位典型連接電路如圖2.24所示。
圖2.24 阻容復位典型連接電路
MAX708S典型連接電路如圖2.25所示。
圖2.25 MAX708S典型連接電路
IMP811典型連接電路如圖2.26所示。
圖2.26 IMP811典型連接電路
2.2.14 時鐘電路設計時鐘電路典型連接如圖2.27所示。
圖2.27 時鐘電路典型連接