【ZYNQ學習】ZYNQ簡介與Vivado使用


從本篇文章開始,就來記錄一下ZYNQ的學習,本篇博客主要介紹ZYNQ是什么以及在vivado中創建一個ZYNQ工程的過程,其中的知識大部分來自於正點原子的ZYNQ教程,感興趣的可以去看一下他們家的參考資料

ZYNQ簡介

ZYNQ全稱ZYNQ-7000 All Programmable SoC,即全可編程片上系統,將處理器的軟件可編程性與FPGA的硬件可編程性整合,其本質特征在於它組合了一個雙核ARM Cortex-A9處理器作為處理系統(PS)和一個傳統的現場可編程門陣列(FPGA)邏輯部件作為可編程邏輯(PL)
因此在ZYNQ中,ARM Cortex-A9是一個應用級處理器,可以運行像Linux一樣的操作系統,而可編程邏輯是基於Xilinx 7系列的FPGA架構,同時實現了AXI接口,使兩個部分實現了高帶寬低延遲的連接

SoC發展史
SoC發展史

PL部分

PL:Programmable Logic
PLD:Programmable Logic Device可編程邏輯器件,PLD的邏輯功能可以由使用者通過編程來設定
CPLD:復雜可編程邏輯器件,基於乘積項的與或邏輯陣列
FPGA:Field Programmable Gate Array現場可編程門陣列,基於查找表(LUT)的CLB陣列
PL部分提供了高精度DSP處理器,XADC模數轉換器等通用的邏輯單元
FPGA架構
ZYNQ內部的PL其實就是Xilinx7系列的FPGA
在這里插入圖片描述

PS部分

PS:Processing System
ZYNQ實際上是一個以處理器為核心的系統,PL只是一個它的外設,ZYNQ包含了完整的ARM處理器系統,且處理器系統中集成了內存控制器和大量外設,使Cortex-A9處理器可以完全獨立於可編程邏輯單元
ZYNQ處理器系統里並非只有ARM處理器,還有一組相關的處理資源,形成了一個應用處理器單元(APU),以ARM處理器為核心的應用處理單元(APU)可以集成豐富的外設,以外還有擴展外設接口,cache存儲器,存儲器接口,互聯接口和時鍾發生電路等
ZYNQ的PS部分
框圖中的一些專用術語:
MIO(Multiplexing IO):PS 域可復用的 IO,因為此 IO 管腳的配置在一定范圍內有靈活性
EMIO(Extensible MIO):對 MIO 的擴展, 將 PL 域的 IO 口直接連到 PS 域
GIC (General Interrupt Controller):通用的中斷控制器
IRQ(Interrupt Request):中斷請求
OCM(On Chip Memory):片上存儲
DMA(Direct Memory Access):直接存儲訪問
MMU:內存管理單元

外部接口

PS實現了很多接口,PS與外部接口的通信主要靠復用的輸入/輸出實現的(MIO),提供了可靈活配置的54個引腳。當需要超過54個引腳時可以通過擴展MIO實現(EMIO),EMIO 並不是 PS 和外部連接之間的直接通路,而是通過共用了 PL 的 I/O 資源來實現的
PS當中可用的I/O除了標准通信接口外還有通用輸入/輸出(GPIO)

PL與PS互聯

PS和PL互聯基於ARM的 AMBA3.0協議的AXI總線
AXI:Advanced Extensible Interface(高級可擴展接口),屬於AMBA接口
AMBA:Advanced Microcontroller Bus Architecture
AMBA接口

  • AXI-4 Memory Map:存儲映射,支持突發傳輸,主要用於處理器訪問存儲器等需要指定地址的高速數據傳輸場景
  • AXI-4 Stream:類似FIFO,數據傳輸時不需要地址這種,在主從設備之間直接連續讀寫數據,主要用於視頻,高速AD,DMA接口等需要高速數據傳輸的場合
  • AXI-4 Lite:為外設提供單個數據傳輸,主要用於訪問一些低速外設中的寄存器

在PS和PL之間主要通過一組9個AXI接口,每個接口有多個通道組成AXI接口AXI接口

vivado使用

Vivado是賽靈思公司為其產品定制的集成開發環境,支持Block Design,Verilog,VHDL等多種設計輸入方式,內嵌綜合器和仿真器,可以完成從設計輸入,綜合適配,仿真到下載的完整FPGA設計流程
Vivado還集成了HLS(High Level Synthesis)工具,可實現直接使用C,C++,System C語言對Xilinx的FPGA器件進行編程,用戶無需手動創建RTL,通過高層次綜合生成HDL級的IP核,從而加速IP創建

Vivado開發流程:
Vivado開發流程

Vivado創建工程

選擇Create Project
在這里插入圖片描述
設置工程名字和存儲位置
設置工程名字和存儲位置
選擇RTL Project
如果要添加源文件則不勾選,如果創建完工程后再添加源文件則勾選
在這里插入圖片描述
選擇開發的芯片型號
在這里插入圖片描述
可以直接搜索ZYNQ芯片型號如下:
選擇ZYNQ型號
也可以像下面一樣選擇:
在這里插入圖片描述
在這里插入圖片描述

Vivado工程界面

在上面用vivado創建了一個新的工程,這里主要介紹一下vivado的工程界面
vivado的工程界面
(1)左邊的是設計流程導航窗口,從上到下是FPGA的各個設計環節
PROJECT MANAGER是工程管理部分,可以添加文件,FPGA的原語模板工具,IP核等
IP INTEGRATOR 包含模塊化圖表形式的創建和打開,生成等管理
SIMULATION 包含 FPGA 設計的仿真功能相關
RTL ANALYSIS 包含工程的分析,以及設計的檢查,以及設計的原理圖邏輯關系的生成等SYNTHESIS 是 FPGA 的綜合,是 FPGA的最關鍵部分
IMPLEMENTATION 是實現部分,完成 FPGA 的布局布線設計
PROGRAM AND DEBUG,是 FPGA 生成配置文件,以及在線實時調試文件生成,下載,調試功能部分
(2)中間的PROJECT MANAGER-pl_LED是工程文件窗口,查看工程的層次結構,編輯工程文件屬性
(3)右邊的Project Summary是主工作窗口,根據不同的layout有不同的顯示內容
(4)下面的藍色窗口是結果顯示窗口,顯示各個環節的執行結果,其中,TCL Console 可以采用 TCL 腳本指令進行軟件交互

創建源文件

PROJECT MANAGER
從上到下依次是:
工程設置
添加源文件
提供了一些文件模板
給工程添加IP核

點擊Add Sources即可創建各種源文件

也可以直接點擊+號創建源文件:
在這里插入圖片描述

在編寫完Verilog代碼后,選擇RTL ANALYSIS
在這里插入圖片描述
對代碼進行分析並將Verilog代碼翻譯成RTL原理圖
同時在這一步中可以直接綁定引腳,設置完引腳后需要保存管腳約束文件,也可以綜合后在新建約束文件設置引腳

接下來可以對代碼進行綜合(也可以再編寫完Verilog代碼后直接進行綜合),點擊Run Synthesis:
綜合
在綜合后彈出的綜合完成的對話框中先不要選擇Run Implementation,在綁定管腳后再進行 Implementation 實現:
在這里插入圖片描述

接下來約束輸入,分配管腳:
首先創建一個約束文件,點擊sources窗口的+號,選擇Add or create constraints
添加約束
點擊Create File創建一個新的約束文件
創建約束文件
輸入約束文件的名稱,並完成約束文件的創建
約束文件命名
應當注意,vivado的約束文件是以.xdc為后綴的文本文件,存儲的是一條條的xdc約束命令

分配管腳
或者在最右邊
分配管腳
約束輸入完畢后即可開始實現設計,點擊Run Implementation
實現
在下載程序之前,首先要生成用於下載到器件中的比特流文件,文件后綴為.bit,點擊Generate Bitstream(也可以先點直接生成bit文件包含了實現操作)
生成比特流
在完成后彈出的界面中選擇打開硬件管理器 Open Hardware Mnager
點擊Open target或Hardware子窗口中的Auto Connect按鈕
連接下載器
點擊Program Device並Program即可下載程序:
下載程序
下載程序
這樣就完成了ZYNQ的FPGA的開發流程,可以總結為如下步驟:
步驟一
步驟二
以上兩種流程,雖然過程有點區別,但都是可以的


免責聲明!

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



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