在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

Vivado中進行ZYNQ硬件部分設計方案

454398 ? 來源:xilinx社區(qū) ? 作者:xilinx社區(qū) ? 2020-11-03 12:33 ? 次閱讀

ZYNQ概述

ZYNQ內(nèi)部包含PS和PL兩部分,PS中包含以下4個主要功能模塊:

  • Application processor unit (APU)
  • Memory interfaces
  • I/O peripherals (IOP)
  • Interconnect

ZYNQ內(nèi)部的總體框架如所示,PS中包含2個ARM Cortex-9的內(nèi)核,一些基本的外設擴展口以及Memory接口。PS和PL的相互通信通過兩個通路完成,分別是GP(General Purpose)Ports和HP(High Performance)Ports。

GP Ports包含2個Master接口和2個Slave接口,符合標準的AXI協(xié)議數(shù)據(jù)位寬是32bit。HP Ports包含4個接口,全部是PL作為Master;有兩個專用的連接到DDR Controller的接口和一個連接到OCM的接口。HP與GP相比,最大的特點在于有額外的FIFO作為Buffer,可以提高傳輸效率和數(shù)據(jù)吞吐量。

所以從功能角度,GP Ports主要用于寄存器的讀寫以及小數(shù)據(jù)量的傳輸;HP Ports用于大量數(shù)據(jù)的傳輸,主要是Memory數(shù)據(jù)的讀寫。

ZYNQ中最常用的設計思路是將主程序放在PS中完成,在PL中設計相應的邏輯功能作為PS的外設使用,將邏輯設計封裝成IP,且每個IP都包含一個標準的AXI-Lite接口。PS對于邏輯設計的控制是通過控制邏輯設計的功能寄存器,進而控制邏輯設計進行相應的操作,同時將工作情況通過狀態(tài)寄存器返回給PS端。如果邏輯設計與PS端需要進行大量數(shù)據(jù)的交互,則會在邏輯設計中增加AXI-Full接口,與PS的HP Port相連。

綜上,ZYNQ設計的基本流程包含以下步驟:

1. Vivado中搭建ZYNQ平臺,完成基本外設控制。
2. 創(chuàng)建邏輯設計,并封裝成IP。
3. ZYNQ設計中調用封裝的IP。
4. 對設計的IP進行仿真

ZYBO開發(fā)板簡介

ZYBO是Digilent開發(fā)的以XC7Z010-1CLG400C為核心處理器的開發(fā)板,其主要功能包括有:

  • 1片32bit位寬,512MB容量的 DDR3
  • 1個 HDMI port
  • 1個VGA source port
  • 1個(1Gbit/100Mbit/10Mbit) Ethernet PHY 與RJ45接口
  • 1個MicroSD slot
  • 1個OTG USB 2.0 PHY
  • 1個外部 EEPROM
  • 1個耳機輸出接口和1個麥克風輸入接口
  • 1片128Mb QSPI Flash作為加載Flash
  • 1個JTAG接口和1個USB-Converter下載接口
  • GPIO: 6 pushbuttons, 4 slide switches, 5 LEDs
  • 6個 Pmod ports

其板上器件分布情況如圖 2和圖 3所示。


Vivado中進行ZYNQ硬件部分設計

Step1: Viavdo中選擇XC7Z010-1CLG400器件,建立工程。

Step2: 建立Block Design。

Step3: 加入ZYNQ7 Processing System和其他所需要的外設IP。

點擊“Add IP”,加入ZYNQ7 Processing System和AXI GPIO,雙擊IP可以對其進行配置。該實驗中ZYNQ7配置使能UART,引腳為MIO48和49,其ZYBO相關電路圖如圖 5所示。(注:如果需要在Step11中選擇Hello World工程,則需要使能UART)。AXI GPIO的位寬設置為4,其余為默認配置。


注意:這里有個地方非常容易出錯。在Vivado建立工程選擇器件的過程中沒有選擇ZYBO開發(fā)板的配置,而是直接選擇的XC7Z010-1CLG400C器件的配置。系統(tǒng)默認的ZYNQ7 Processing System配置中Input Clock Frequency是33.3333MHz,而ZYBO板上為50MHz。此處必須修改過來,否則后面的系統(tǒng)時鐘會完全錯亂,導致軟件工程無法運行。

Step4: 點擊“Run Block Automation”,其作用是完成ZYNQ7 Processing System專用引腳的連接,包括FIXED_IO和DDR引腳的連接。

Step5: 點擊“Run Connection Automation”,其作用是自動完成ZYNQ與外設的連接,連接是按照工具對于用戶所設計系統(tǒng)的理解,如果需要進行修改,可以手動更改Block中的連線。該操作工具會默認增加:

1. AXI interconnect
2. Processor System Reset
3. 自動完成了外設IP的AXI-Lite端口與ZYNQ7 Processing System的連接,默認接法是ZYNQ的FCLK_CLK0作為外設AXI時鐘,Processor System Reset產(chǎn)生外設復位信號連接到所有外設的復位端口。
4. 將AXI GPIO的引腳引出。

可以使用“Regenerate Layout”,重新布局Block Design。

Step6: 在“Address Editor”中查看、修改外設在總線上的地址。

Step7: 首先在Block design界面右擊彈出的菜單中點擊Validate Design,以驗證Block Design的設計和連接是否有錯誤。至此Block Design完成了,但是還需要根據(jù)Block Design的配置生成相應的源代碼。右擊.bd設計,并選擇“Create HDL Wrapper”。隨后即生成了相應的HDL代碼。

Step8: 對于PL端的外接引腳,需要設置相應的Constraints。

Step9: 與普通FPGA設計一樣,完成Synthesis、Implementation和Generate Bitstream。

Step10: 將Step9中完成的硬件設計導入到SDK開發(fā)平臺下。

Step11: 從這一步開始,開發(fā)平臺轉移到SDK平臺。此時硬件平臺已經(jīng)確定,接下來是軟件的開發(fā)。首先在SDK中建立軟件工程。


Step12: 在新建工程中完成C代碼的設計。

#include
#include
#include "xparameters.h"
#include "sleep.h"
#include "platform.h"

int main()
{
XGpio output;
int Status;
/*
* Initialize the GPIO driver so that it's ready to use,
* specify the device ID that is generated in xparameters.h
*/
Status = XGpio_Initialize(&output, XPAR_GPIO_0_DEVICE_ID);
if (Status != XST_SUCCESS) {
return XST_FAILURE;
}
/* Set the direction for all signals to be outputs */
XGpio_SetDataDirection(&output, 1, 0x0);
init_platform();
while(1){
usleep(200000); //delay
XGpio_DiscreteWrite(&output, 1, 0x0);
usleep(200000); //delay
XGpio_DiscreteWrite(&output, 1, 0xF);
};
cleanup_platform();
return 0;
}

Step13: 首先點擊“Program FPGA”,將硬件平臺下載到ZYNQ中。

Step14: 運行軟件工程進行調試。

在ZYBO板上也能看到LED燈閃爍,至此完成了ZYNQ的一個基本設計的所有開發(fā)流程。

DK中進行ZYNQ軟件部分設計

首先對“Vivado中進行ZYNQ硬件部分設計”中讓LED閃爍的C代碼做詳細的注釋。

int main()

{

/*定義外設對于的類型指針,用于綁定外設,便于后面程序調用時選擇

* 外設

*/

XGpio output;

int Status;

/* XGpio_Initialize()函數(shù)是xgpio.c中的函數(shù),在BSP Documentation可以

* 查到該函數(shù)的描述。

* int XGpio_Initialize(XGpio * InstancePtr, u16 DeviceId)

* InstancePtr為GPIO類型的指針

* DeviceId是在板級配置中已經(jīng)定義好的外設的ID,該定義包含在BSP的xparameters.h中

* 即在xparameters.h已經(jīng)為該硬件設計中的每一種類型的多個外設設置了唯一的ID

* 例如設計中如果有2個GPIO外設,則ID分別為0和1.

* 該語句完成之后將ID對應的外設對象與該指針進行了綁定,后面可以通過調用該指針指

* 定到該外設

*/

Status = XGpio_Initialize(&output, XPAR_GPIO_0_DEVICE_ID);

if (Status != XST_SUCCESS) {

return XST_FAILURE;

}

/* void XGpio_SetDataDirection (XGpio * InstancePtr,

* unsigned Channel,u32 DirectionMask )

* InstancePtr:外設指針,用于指定到對應的外設設備,已經(jīng)與外設綁定

* Channel: 每個AXI_GPIO中可以有兩個32bit的GPIO端口,該參數(shù)用來

* 選擇是該外設中的哪一個端口

* DirectionMask:選擇GPIO的方向,0為output,1為input

* 該函數(shù)的作用是設置GPIO的方向,如前所述,可以通過output指定到

* 該GPIO外設,

*/

XGpio_SetDataDirection(&output, 1, 0x0);

//初始化ARM內(nèi)核

init_platform();

while(1){

usleep(200000); //delay

XGpio_DiscreteWrite(&output, 1, 0x0);

usleep(200000); //delay

XGpio_DiscreteWrite(&output, 1, 0xF);

};

cleanup_platform();

return 0;

}

以上調用的這些函數(shù),其定義及使用方法全部可以在BSP(Board Support Package)板級支持包中找到。當在Vivado平臺中設計完成硬件,將其導入到SDK平臺時,工具會根據(jù)硬件設計中使用到的外設,自動生成相應的板級支持包。在SDK的“Project Explorer”界面中可以查看,并且可以在其中打開相應的BSP說明文檔,如圖 18所示。

但是雖然BSP中提供了所有相關的API函數(shù),但是對于初學者來說,想搭建一個可以實現(xiàn)基本功能的平臺還是有些困難。于是另一個方法是利用SDK生成新的Application時提供的Peripheral Test模板。

該模板生成的代碼中,在主函數(shù)中找到相應外設的測試函數(shù),例如本例中GPIO的測試函數(shù)“GpioOutputExample()”,再通過追述該函數(shù)的具體實現(xiàn),可以一定程度上作為最基本的范例代碼。

如果再進一步深入到ARM編程的本質,其實與硬件的所有控制和通信都是依靠讀寫底層的寄存器來完成的。例如如果查看一下“XGpio_SetDataDirection()”函數(shù)的底層實現(xiàn),可以發(fā)現(xiàn)逐級調用的分別是“XGpio_WriteReg()”函數(shù)和“XGpio_Out32()”函數(shù),而“XGpio_Out32()”調用的是“Xil_Out32()”。 其實“Xil_Out32()”和“Xil_In32()”這兩個函數(shù)分別是寫讀底層硬件寄存器的兩個函數(shù),所有的上層與底層的寄存器級別的通信,也就是絕大多數(shù)的外設控制,都是依靠這兩個函數(shù)完成的。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1630

    文章

    21777

    瀏覽量

    604679
  • 寄存器
    +關注

    關注

    31

    文章

    5359

    瀏覽量

    120807
  • Zynq
    +關注

    關注

    10

    文章

    610

    瀏覽量

    47224
  • Vivado
    +關注

    關注

    19

    文章

    815

    瀏覽量

    66711
收藏 人收藏

    評論

    相關推薦

    ZYNQ基礎---AXI DMA使用

    前言 在ZYNQ中進行PL-PS數(shù)據(jù)交互的時候,經(jīng)常會使用到DMA,其實在前面的ZYNQ學習當中,也有學習過DMA的使用,那就是通過使用自定義的IP,完成HP接口向內(nèi)存寫入和讀取數(shù)據(jù)的方式。同樣
    的頭像 發(fā)表于 01-06 11:13 ?269次閱讀
    <b class='flag-5'>ZYNQ</b>基礎---AXI DMA使用

    LM4890采用差分設計方案,為什么沒有聲音?怎么解決?

    1、LM4890采用差分設計方案(如下圖),為什么沒有聲音?怎么解決? 2、采用差分方案設計的功放能用非差分輸出或普通音頻輸出?
    發(fā)表于 11-05 06:33

    Vivado使用小技巧

    有時我們對時序約束進行了一些調整,希望能夠快速看到對應的時序報告,而又不希望重新布局布線。這時,我們可以打開布線后的dcp,直接在Vivado Tcl Console里輸入更新后的時序約束。如果調整
    的頭像 發(fā)表于 10-24 15:08 ?392次閱讀
    <b class='flag-5'>Vivado</b>使用小技巧

    AMD Vivado Design Suite 2024.1全新推出

    eXchange ( DFX ) 進行了全面增強。Power Design Manager 新增了對 AMD Zynq RFSoC 系列的支持。
    的頭像 發(fā)表于 09-18 09:41 ?530次閱讀

    使用霍爾效應傳感器在電子智能鎖中進行位置感應應用說明

    電子發(fā)燒友網(wǎng)站提供《使用霍爾效應傳感器在電子智能鎖中進行位置感應應用說明.pdf》資料免費下載
    發(fā)表于 09-12 14:03 ?0次下載
    使用霍爾效應傳感器在電子智能鎖<b class='flag-5'>中進行</b>位置感應應用說明

    電磁頻譜管理系統(tǒng)設計方案

    智慧華盛恒輝電磁頻譜管理系統(tǒng)設計方案是一個綜合性的項目,旨在有效地管理和利用電磁頻譜資源,確保各種無線通信服務的順暢進行,并避免頻譜資源的沖突和浪費。以下是一個基于當前技術和應用需求的電磁頻譜管理
    的頭像 發(fā)表于 07-15 16:40 ?514次閱讀

    UPS系統(tǒng)設計方案解讀

    UPS的應用場景日趨多樣化,每個場景都有其獨特的需求,對應不同的方案。UPS系統(tǒng)方案指南繼續(xù)上新,本文將聚焦UPS設計方案展開講述。
    的頭像 發(fā)表于 06-26 10:06 ?866次閱讀
    UPS系統(tǒng)<b class='flag-5'>設計方案</b>解讀

    一個更適合工程師和研究僧的FPGA提升課程

    設計; ● UltraFast 設計方法; ● 使用UltraScale和UltraScale+架構進行設計; ● FPGA 功耗最優(yōu)化; ● 使用 Vivado Design Suite 4
    發(fā)表于 06-05 10:09

    簡談Xilinx Zynq-7000嵌入式系統(tǒng)設計與實現(xiàn)

    設計。 最大優(yōu)點可實現(xiàn)硬件加速: 設計者可以根據(jù)需求在硬件實現(xiàn)和軟件實現(xiàn)之間進行權衡,使所設計的嵌入式系統(tǒng)滿足最好的性價比要求,例如,在實現(xiàn)一個嵌入式系統(tǒng)設計時,當使用軟件實現(xiàn)算法成為整個
    發(fā)表于 05-08 16:23

    Xilinx ZYNQ 動手實操演練

    Vivado 2017.2安裝教程,說了這么多,下面介紹一下開發(fā)硬件環(huán)境Zynq 7000 XC7Z100,Zynq 7000系列中頂配型號,Zy
    發(fā)表于 05-03 19:28

    簡談Xilinx Zynq-7000嵌入式系統(tǒng)設計與實現(xiàn)

    需求在硬件實現(xiàn)和軟件實現(xiàn)之間進行權衡,使所設計的嵌入式系統(tǒng)滿足最好的性價比要求,例如,在實現(xiàn)一個嵌入式系統(tǒng)設計時,當使用軟件實現(xiàn)算法成為整個系統(tǒng)性能的瓶頸時,設計人員可以選全可編程SoC內(nèi)使用硬件邏輯
    發(fā)表于 04-10 16:00

    AR眼鏡_AR智能眼鏡芯片|主板|光機硬件設計方案

    AR智能眼鏡芯片|主板|光機硬件設計方案。我們建議選用聯(lián)發(fā)科MT6765芯片,這款芯片搭載了先進的8核CPU和IMG GE8320 GPU,支持高性能計算和圖形處理,能夠滿足AR眼鏡的各種應用需求
    的頭像 發(fā)表于 03-22 20:16 ?1101次閱讀
    AR眼鏡_AR智能眼鏡芯片|主板|光機<b class='flag-5'>硬件</b><b class='flag-5'>設計方案</b>

    STM32WLE5 LORA硬件設計的幾個問題求解

    芯片射頻濾波電路有兩種設計方案,一種用分立的電阻電容器件設計,另一種用巴倫設計方案。針對巴倫設計方案,我看到有些視頻中說用在射頻接收功能部分,但我看巴倫的介紹文檔,它既有針對射頻芯片發(fā)
    發(fā)表于 03-12 07:18

    請問FX3的UART口和Xilinx ZYNQ7000的PS端的UART進行硬件連接需要TTL電平轉換嗎?

    想讓FX3的UART口和Xilinx ZYNQ7000的PS(Processor system)端的內(nèi)置UART相互通信,兩個芯片使用的是同一個電源(同在一塊板子上或分別在兩塊相互連接的板子上),請教一下它們之間的硬件連接需要TTL電平轉換(使用2塊MAX3232ESE芯
    發(fā)表于 02-28 08:32

    TC234在boot中進行Deinit CANFD失敗了的原因?

    大家好: 問題描述:項目已從啟動切換到應用程序。 如果在應用程序中使用不同的 MO 并以相同的 ID 啟動,則無法接收應用程序中的消息。 我本來希望在 boot 中進行 Deinit CANFD,但我失敗了。 預期的解決方案
    發(fā)表于 01-31 06:31
    主站蜘蛛池模板: 久久这里精品青草免费| 能看的黄色网址| 美女扒开尿口给男人看大全| 中文字幕精品一区二区2021年| 日本午夜片成年www| 四虎精品久久| 日本特黄特色免费大片| 欧美电影一区二区| 国产资源在线播放| 日韩一级在线| 欧美日韩亚洲国产| 韩国电影天堂网| 成人a在线| 午夜看看| 国产在视频线精品视频2021| 日本内谢69xxxx免费| 亚洲人成网i8禁止| 成人午夜免费视频| 高黄网站| 在线观看亚洲一区| 亚洲人成a在线网站| 日本妈妈4| 国产精品单位女同事在线| 午夜久久免费视频| 国产高清免费不卡观看| 一区二区三区视频免费观看| 伊人久久精品成人网| 欧洲乱码专区一区二区三区四区| 狠狠色丁香婷婷综合橹不卡| 亚洲dv| 午夜影视在线| 黄色成人免费观看| 亚洲码欧美码一区二区三区| 亚洲第一伊人| 毛片aa| 午夜高清| 欧美男人的天堂| 亚洲欧美精品| 婷婷五月色综合香五月| 午夜黄色大片| 特一级毛片|