目錄
1. 認識FPGA
什么是FPGA
FPGA的編程過程
?2. 認識ARM
什么是ARM
ARM與FPGA的區(qū)別
ARM與Linux
3. 認識ZYNQ
ZYNQ與FPGA的區(qū)別
ZYNQ的"ARM"和"FPGA"
關于PL
關于PS
4. 學習用板載資源
5. 總結
1. 認識FPGA
-
什么是FPGA
????????FPGA是一種集成電路,它可以在制造后由客戶或設計者根據(jù)需要配置電路功能 。FPGA的內部由可編程邏輯、專用功能塊和可編程互連組成。FPGA的結構可以根據(jù)不同的廠商和型號有所差異,但一般包括以下幾種主要元素:
- 可配置邏輯塊(CLB):是FPGA的基本單元,可以實現(xiàn)任意的邏輯功能。每個CLB由一些查找表(LUT)、觸發(fā)器、多路復用器等組成;
- 數(shù)字信號處理(DSP)塊:是FPGA的專用功能塊之一,可以高效地實現(xiàn)數(shù)字信號處理的功能,如濾波、乘法、累加等;
- 收發(fā)器(Transceiver):是FPGA的專用功能塊之一,可以實現(xiàn)高速的串行數(shù)據(jù)的發(fā)送和接收,支持多種協(xié)議和標準;
- 塊隨機存取存儲器(BRAM):是FPGA的專用功能塊之一,可以提供片上的存儲空間,支持多種訪問模式和配置方式;
- 可編程互連:是FPGA的重要組成部分,可以實現(xiàn)不同的CLB和功能塊之間的連接和通信,支持多種拓撲結構和路由算法;
FPGA的應用領域非常廣泛,主要包括以下幾類:
- 通信和網(wǎng)絡:FPGA可以實現(xiàn)高速的數(shù)據(jù)傳輸和處理功能,支持多種通信協(xié)議和標準,如5G、WiFi、Ethernet等;
- 數(shù)據(jù)中心和云計算:FPGA可以實現(xiàn)高效的數(shù)據(jù)加密和壓縮功能,支持多種云服務和平臺,如AWS、Azure等;
- 人工智能和機器學習:FPGA可以實現(xiàn)高性能的神經(jīng)網(wǎng)絡和深度學習功能,支持多種模型和算法,如CNN、RNN等;
- 嵌入式系統(tǒng)和物聯(lián)網(wǎng):FPGA可以實現(xiàn)低功耗的智能控制和傳感功能,支持多種嵌入式操作系統(tǒng)和物聯(lián)網(wǎng)協(xié)議,如Linux、MQTT等;
- 數(shù)字信號處理和圖像處理:FPGA可以實現(xiàn)高精度的信號采集和分析功能,支持多種信號處理和圖像處理算法,如FFT、DCT、OpenCV等;
- 工業(yè)控制和汽車電子:FPGA可以實現(xiàn)高可靠的工業(yè)控制和汽車電子功能,支持多種工業(yè)總線和汽車標準,如CAN、FlexRay等;
????????學習FPGA可以提高自己的硬件設計能力和創(chuàng)新能力,可以實現(xiàn)自己的想法和算法,可以解決實際的問題和挑戰(zhàn),可以參與到前沿的技術和項目中;?
-
FPGA的編程過程
????????FPGA編程通過使用硬件描述語言(HDL)或其他工具來定義和配置FPGA上的邏輯電路。FPGA編程的主要步驟包括:
- 硬件架構設計:確定FPGA的輸入輸出接口,時鐘頻率,資源利用率等;
- 設計:使用HDL(如VHDL或Verilog)或其他工具(如MATLAB或Simulink)來描述硬件邏輯,實現(xiàn)算法功能;
- 驗證:使用仿真或測試平臺來檢查設計是否符合預期,是否存在錯誤或缺陷;
- 綜合:將HDL代碼轉換為適合FPGA的邏輯門電路,優(yōu)化性能和資源消耗;
- 集成:將設計與FPGA的固有資源(如引腳,時鐘,ADC等)以及外部設備(如內存,傳感器等)進行連接和配置;
- 實現(xiàn):將綜合后的邏輯門電路映射到FPGA的物理資源上,并進行布局和布線,生成可以下載到FPGA的比特流文件;
- 實驗測試和調試:將比特流文件下載到FPGA上,并使用真實或測試輸入來運行和觀察結果,發(fā)現(xiàn)并解決問題;
?2. 認識ARM
-
什么是ARM
????????ARM(Acorn RISC Machine)是一家英國的半導體公司,它設計和授權處理器IP,提供了多種性能、功耗和成本需求的處理器。ARM的處理器包括:? ? ? ? ? ? ? ? ? ?
- Cortex-A系列:面向性能密集型系統(tǒng)的應用處理器內核;
- Cortex-R系列:面向實時應用的高性能內核;
- Cortex-M系列:面向各類嵌入式應用的微控制器內核;
- Neoverse:滿足大型互聯(lián)網(wǎng)和 HPC高性能計算應用需求的高性能內核;
- Ethos:專門用于加速人工智能和機器學習的神經(jīng)處理器內核;
- SecurCore:基于Cortex-M3核的高安全性微控制器內核;
????????ARM的處理器廣泛應用于智能手機、平板電腦、物聯(lián)網(wǎng)設備、云計算、汽車電子、嵌入式系統(tǒng)等領域;
-
ARM與FPGA的區(qū)別
????????ARM與FPGA的區(qū)別主要有以下幾點:
- ARM的功能主要是執(zhí)行軟件指令,實現(xiàn)數(shù)據(jù)處理、事務管理、界面顯示、應用程序等功能,它可以運行多種操作系統(tǒng)和開發(fā)環(huán)境,也可以調用多種現(xiàn)成的硬件資源;
- FPGA的功能主要是實現(xiàn)硬件邏輯,實現(xiàn)數(shù)據(jù)加速、并行處理、信號處理、圖像處理等功能,它可以根據(jù)不同的需求和設計來配置電路功能,也可以通過添加軟核或硬核來實現(xiàn)處理器功能;
- ARM和FPGA的功能可以相互補充,也可以相互競爭,取決于具體的應用場景和性能要求。一般來說,ARM更適合控制類的應用,而FPGA更適合計算類的應用;
-
ARM與Linux
????????Linux是一種開源的操作系統(tǒng),可以根據(jù)不同的需求和環(huán)境來定制和優(yōu)化,具有靈活性高、兼容性強、穩(wěn)定性好等特點,適用于多種應用場景,如嵌入式系統(tǒng)、物聯(lián)網(wǎng)設備、數(shù)據(jù)中心等。在ARM上運行Linux可以充分利用ARM的處理能力和節(jié)能特性,可以提高系統(tǒng)的性能和效率,可以降低系統(tǒng)的成本和功耗,可以增加系統(tǒng)的功能和可擴展性;
????????在ARM上運行的Linux系統(tǒng)有很多種,例如:
- Arch Linux ARM:基于Arch Linux的分支,提供了一個輕量級、靈活、可定制的Linux系統(tǒng),支持多種ARM設備;
- Debian ARM:基于Debian的分支,提供了一個穩(wěn)定、成熟、兼容的Linux系統(tǒng),支持多種ARM設備;
- Armbian:基于Debian或Ubuntu的分支,專門為ARM開發(fā)板定制的Linux系統(tǒng),提供了優(yōu)化的性能和穩(wěn)定性;
- Linux Mint Debian Edition (LMDE):基于Debian Testing的分支,提供了一個友好、美觀、功能豐富的Linux系統(tǒng),支持多種ARM設備;
- Manjaro ARM:基于Manjaro的分支,提供了一個快速、現(xiàn)代、易用的Linux系統(tǒng),支持多種ARM設備;
- Ubuntu Server ARM:基于Ubuntu Server的分支,提供了一個適用于云計算和邊緣計算的Linux系統(tǒng),支持多種ARM服務器設備;
3. 認識ZYNQ
-
ZYNQ與FPGA的區(qū)別
? ? ? ? ZYNQ(zynq-7000 All Programmable SoC)是Xilinx推出的新一代全新可編程片上系統(tǒng),在傳統(tǒng)FPGA芯片的基礎上集成了1-2個ARM處理器,同時具備了軟件可編程和硬件可編程的特性,將ARM的控制能力和FPGA的計算性能完美結合,提供無與倫比的系統(tǒng)性能、靈活性和可擴展性;
????????ZYNQ與FPGA的區(qū)別主要有以下幾點:
- ZYNQ相比FPGA,具有更強的處理能力和靈活性,可以利用ARM處理器實現(xiàn)復雜的軟件功能和控制邏輯,也可以利用可編程邏輯實現(xiàn)硬件加速和算法優(yōu)化;
- FPGA相比ZYNQ,具有更高的自由度和定制性,可以根據(jù)不同的需求和設計來配置電路功能,也可以通過添加軟核或硬核來實現(xiàn)處理器功能;
????????除此之外,ZYNQ內部ARM部分和FPGA部分的完美結合,是普通FPGA無法做到的;
-
ZYNQ的"ARM"和"FPGA"
????????ZYNQ具備ARM Cortex-A9內核和28nm Artix 7?FPGA結構,在ZYNQ片內被稱為PS和PL:
- PS(Processing System)是指處理系統(tǒng),它包括雙核ARM Cortex-A9處理器和一系列的片上外設,如內存控制器、DMA控制器、USB控制器、以太網(wǎng)控制器等;
- PL(Programmable Logic)是指可編程邏輯,它包括基于Artix-7或Kintex-7的可編程邏輯單元,如可配置邏輯塊、DSP塊、BRAM塊等;
- ZYNQ的PS和PL之間通過多種AXI接口進行連接和通信,可以實現(xiàn)軟硬件協(xié)同設計,提高系統(tǒng)的性能和靈活性;
? ? ? ? PL和PS雖是ZYNQ片內的兩個主要部分,但二者既可以協(xié)同工作,又可以獨立工作;
-
關于PL
? ? ? ? 了解PL首先要了解什么是PLD,早期生產的數(shù)字集成電路邏輯功能都是固定不變的。要想改變它的邏輯功能,就必須改變內部各單元電路之間的連接,而這種連接在集成電路制作過程中已經(jīng)固定下來了。
? ? ? ? 為了提高靈活性,出現(xiàn)了允許用戶自行修改內部連接的集成電路:可編程邏輯器件PLD(Programmable Logic Device)
- PLD內部的電路結構可以通過寫入編程數(shù)據(jù)來設置;
- 寫入PLD的編程數(shù)據(jù)還可以擦除重寫;
????????FPGA是一種PLD,除FPGA(現(xiàn)場可編程門陣列)外,CPLD(復雜可編程邏輯器件)也屬于PLD,二者的本質區(qū)別是:
- CPLD:基于“乘積項”的與或邏輯陣列;
- FPGA:基于“查找表”(LUT,Look UP Table)的CLB陣列;
????????PL與FPGA的結構相同
圖1 FPGA架構
????????FPGA的架構是指FPGA內部的組成和連接方式,它決定了FPGA的功能和性能。根據(jù)圖1,F(xiàn)PGA的基本架構包括以下幾個部分:
- 可編程IO單元(I/O):這些物理端口將數(shù)據(jù)輸入和輸出FPGA,可以根據(jù)不同的信號標準和電壓水平進行配置;
- 可編程邏輯單元(LC):這些是執(zhí)行邏輯運算的基本單元,通常由查找表(LUT)、觸發(fā)器(FF)和多路復用器等組成。LUT可以存儲任意的邏輯函數(shù),F(xiàn)F可以存儲LUT的結果。不同的FPGA有不同數(shù)量和類型的輸入的LUT,如輸入LUT、輸入LUT等;
- 布線資源:這些是將各種元件彼此連接的導線和開關,可以實現(xiàn)不同的信號路徑。布線資源的數(shù)量和質量影響了FPGA的邏輯密度和時序性能。
- 嵌入式塊式 RAM(BRAM):這些是用于存儲數(shù)據(jù)的內存模塊,可以配置為不同的位寬和深度,也可以級聯(lián)成更大的內存空間。BRAM可以提供高速、低功耗、低延遲的數(shù)據(jù)訪問。
- 數(shù)字時鐘管理模塊(CMT):這些是用于產生、分配和調整時鐘信號的模塊,包括相位鎖定環(huán)(PLL)、延遲鎖定環(huán)(DLL)、時鐘緩沖器等。CMT可以提供多種頻率和相位的時鐘信號,實現(xiàn)時鐘域之間的轉換和同步。
- 內嵌專用硬核:這些是用于實現(xiàn)特定功能的硬件模塊,如乘法器、累加器、DSP切片、PCI Express接口等。內嵌專用硬核可以提高FPGA的計算能力和接口兼容性,降低邏輯資源和功耗的消耗。
- 底層內嵌功能單元:這些是用于實現(xiàn)一些底層功能的單元,如配置邏輯、JTAG接口、電源管理等。底層內嵌功能單元可以保證FPGA的正常工作和可靠性。
????????ZYNQ系列的PL結構如圖2所示,可以與FPGA的結構進行對照;
?圖2 ZYNQ的PL結構
????????ZYNQ7010和7020都使用了Artix-7的結構,可以看到,除了基本的結構,ZYNQ系列的PL還具備了如GTX transceiver和PCIE等獨特結構,但ZYNQ7010和7020不包含這些結構;
-
關于PS
PL與PS在片內的結構如圖3所示,可以看到兩個結構基本是分開的
?圖3 PL和PS的片內結構
PS最重要的部分是圖3中的應用處理單元APU(Application Processing Unit),如圖4所示
?圖4 APU結構
????????可以看到,APU內部不僅有Cortex-A9內核,還包含了FPU浮點運算單元,NEON SIMD (Single Instruction Multiple Data 單指令多重數(shù)據(jù))?指令集,MMU存儲管理單元,一級cache(I代表指令cache,D代表數(shù)據(jù)cache),窺探控制單元SCU(Snoop Controller),私有看門狗AWDT,定時器TIMER,二級cache(雙核公用),片上內存OCM,中斷控制器GIC,直接存儲器訪問DMA等;
? ? ? ? PS內部APU外部,結合圖片分析,就可以理解APU與外部的連接方式,比較重要的是Central interconnect模塊,負責控制APU與各模塊之間的連接,除控制通信接口,還包含了對動態(tài)存儲器訪問(DDR3)和靜態(tài)存儲器(QSPI Flash)訪問;
? ? ? ? PS連接外部,結合圖片分析,PS與PL的連接,GP接口(General-Purpose Port),HP接口(High-Performance Ports)和ACP(Accelerator Coherency Port)都屬于AXI片內通信協(xié)議,圖5描述了GP接口和ACP的結構
圖5 GP接口的結構?
? ? ? ? 由圖5看出,ACP用于訪問SCU實現(xiàn)PL和PS二級cache與SRAM的高速存取,GP接口用于通用的PL和PS通信,并且區(qū)分M(Master)和S(Slave)通信機制,HP接口用于高速通信,并且通信自帶FIFO,連接在存儲仲裁器(memory interconnect),可用于訪問DDR3,適合大量數(shù)據(jù)流傳輸;
接口名稱 | 接口描述 | 主設備 | 從設備 |
M_AXI_GP0 | 通用接口(AXI_GP) | PS | PL |
M_AXI_GP1 | PS | PL | |
S_AXI_GP1 | 通用接口(AXI_GP) | PL | PS |
S_AXI_GP1 | PL | PS | |
M_AXI_ACP | ACP 緩存(cache)一致性傳輸 | PL | PS |
M_AXI_HP1 | 帶有讀寫FIFO的高速接口(需要注意HP有時被稱為AXI FIFO interface[AXI FIFO接口],或者AFIs) | PL | PS |
M_AXI_HP1 | PL | PS | |
S_AXI_HP1 | PL | PS | |
S_AXI_HP1 | PL | PS |
? ? ? ? AXI是高級微控制器總線架構(AMBA3.0/4.0)的一部分,全稱高級擴展接口(Advanced Extensible Interface),ZYNQ使用的是AMBA4.0標準中的AXI-4,分為memory map,stream和lite三種,如圖6所示;
圖6? AMBA與AXI?
????????除了AXI接口之外,還包含了IO拓展EMIO,XADC(來自PL硬核),DMA,IRQ,AEX/SHA配置(此配置用于PS配置PL的啟動,代表了PS和PL不是完全獨立的,ZYNQ整個設計是以ARM處理器為中心的,PS端的ARM內核可以獨立于PL端運行,值得注意的是,雖然PL端也可以獨立于PS端運行,但是PL的配置是由PS端完成的,所以不能采用傳統(tǒng)的固化FLASH的方式固化PL端程序)等連接;
4. 學習用板載資源
- 主芯片?ZYNQxc7z010? 677M(-1) 28k?Programmable Logic Cells
- 512MB?DDR3???(4Gbit)
- TF卡槽(可負責TF啟動)
- 128Mbit(16MB)QSPI?FLASH(可負責啟動)
- 一路EEPROM?2KB?(PS)
- 兩路?LED?燈(PL)
- 兩個按鍵???(PL)?+一個控制系統(tǒng)POR復位的按鍵
- 一路UART(PS)
- 一路板載XILINX?下載器?JTAG
- 一路USB???可作USB?SLAVE?或USB?HOST
- 引出?68路GPIO?
- 千兆以太網(wǎng)(PL)
- HDMI?輸出接口?支持1080P?60hz
- 1.47寸?彩色LCD?顯示屏??172X320?(PL)
- 50M有源晶振(PL)
5. 總結
? ? ? ? 筆記對應課程:文章來源:http://www.zghlxwxcb.cn/news/detail-714137.html
- 第1.1講 ZYNQ簡介(第一講)
- 第1.2講 ZYNQ簡介(第二講)
? ? ? ? 圖片來自正點原子課程PPT,筆記中有自己理解的內容,如有錯誤,歡迎指正文章來源地址http://www.zghlxwxcb.cn/news/detail-714137.html
到了這里,關于從零開始學ZYNQ(FPGA)筆記二 | 認識學習內容的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!