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

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

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

【ZYNQ Ultrascale+ MPSOC FPGA教程】第二十一章PS端UART讀寫控制

FPGA技術(shù)專欄 ? 來源:芯驛電子科技 ? 作者:芯驛電子科技 ? 2021-01-27 09:25 ? 次閱讀

原創(chuàng)聲明:

本原創(chuàng)教程由芯驛電子科技(上海)有限公司(ALINX)創(chuàng)作,版權(quán)歸本公司所有,如需轉(zhuǎn)載,需授權(quán)并注明出處。

適用于板卡型號:

AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG

vivado工程目錄為“ps_hello/vivado”

vitis工程目錄為“ps_uart/vitis”

軟件工程師工作內(nèi)容

以下為軟件工程師負責內(nèi)容。

在前面的實驗中,大家或多或少會發(fā)現(xiàn)有打印信息的情況,主要是調(diào)用”xil_printf”或”printf”,但是通過什么打印信息呢?我們還記得打印信息之前設(shè)置了串口,是的,確實是串口,但這些函數(shù)是如何調(diào)用串口呢?其實我們可以在”xil_printf”函數(shù)定義中看到,注意outbyte函數(shù)就是調(diào)用UART打印的。

pIYBAGAKMUuAE642AABF7ek9_1k937.jpg

再進入outbye的函數(shù),即可看到調(diào)用了PS端UART的函數(shù),得以在串口中顯示。

o4YBAGAKMUyAQy2HAAATNltDNzc995.jpg

除了打印信息之外,如果我們想用UART進行數(shù)據(jù)傳輸呢?本章便來介紹PS端UART的讀寫控制,實驗中,每隔1S向外發(fā)送一串字符,如果收到數(shù)據(jù),產(chǎn)生中斷,并將收到的數(shù)據(jù)再發(fā)送出去。

1.UART模塊介紹

以下是UART模塊的結(jié)構(gòu)圖,TxFIFO和RxFIFO都為64字節(jié)。

pIYBAGAKMU2AFO_lAABhvyPhSRs691.jpg

下圖為UART的四種模式

o4YBAGAKMU6AWnnUAACQwPdsNjY707.jpg

可以用remote loopback mode測試物理電路是否正常,使用API函數(shù)XUartPs_SetOperMode

pIYBAGAKMU6AMv5NAAAJmCQvXFQ422.jpg

2. Vitis程序開發(fā)

1) 本實驗流程如下:

主程序流程:

UART初始化設(shè)置UART模式設(shè)置數(shù)據(jù)格式設(shè)置中斷發(fā)送UART數(shù)據(jù)檢查是否收到數(shù)據(jù)如果收到,發(fā)送收到的數(shù)據(jù),如果沒有,等待1秒鐘,繼續(xù)發(fā)數(shù)據(jù)

中斷程序流程:

中斷初始化設(shè)置接收FIFO trigger中斷寄存器,設(shè)置為1,即收到一個數(shù)據(jù)就中斷打開接收trigger中斷REMPTY及接收FIFO空中斷RTRIG

中斷服務(wù)程序:

判斷狀態(tài)寄存器是trigger還是empty清除相應中斷trigger狀態(tài)讀取RxFIFO數(shù)據(jù),empty狀態(tài)將接收標志ReceivedFlag置1

2) 在main函數(shù)中進行模式的設(shè)置,可以直接調(diào)用函數(shù),設(shè)置為正常模式,數(shù)據(jù)格式設(shè)置為波特率115200,數(shù)據(jù)8bit,無校驗位,1bit停止位。UartFormat定義在uart_parameter.h中。

o4YBAGAKMU-ACf61AAAOI7mukpI580.jpgpIYBAGAKMU-AMfRBAAAJEGUIcIg527.jpg

3) 中斷控制器程序初始化可參考按鍵中斷方式,用法類似。

4) 在main函數(shù)中將trigger level設(shè)置為1,打開trigger和empty中斷。

pIYBAGAKMVCAEE96AAATs4GOcr4038.jpg

5) 數(shù)據(jù)的發(fā)送和接收函數(shù)參考了UARTPS的XUartPs_Send和XUartPs_Rev函數(shù),但它們會打開某些中斷,不符合預期,因此做了修改。

o4YBAGAKMVCALvq_AAALxC_WozQ403.jpg

在接收緩存中設(shè)置了最大2000字節(jié)的緩沖,可以根據(jù)需要修改。

pIYBAGAKMVCATG_fAAAF-3VZxC8477.jpgo4YBAGAKMVGAG32pAAAJV8dExoI017.jpg

6) 在中斷服務(wù)程序中,將ReceivedBufferPtr指針地址和ReceivedByteNum加上接收到的個數(shù),如果FIFO空了,將ReceivedFlag置為1。同時向中斷狀態(tài)寄存器寫數(shù)據(jù),清除中斷。

pIYBAGAKMVGAKwE1AAAy-FTpkJI285.jpgo4YBAGAKMVKAeUWaAACJJepSgyY082.jpgUg1085 UART清除中斷

7) 在main函數(shù)中,將ReceivedFlag和ReceivedByteNum清零,ReceivedBufferPtr指針復位。

pIYBAGAKMVKAbZm2AAAQ5CKjXOg111.jpg

8) Uart發(fā)送函數(shù)中,判斷TxFIFO是否滿,否則繼續(xù)發(fā)送,直到計數(shù)達到NumBytes

o4YBAGAKMVOAGQ4YAAAt4eJnVh0967.jpg

9) Uart接收函數(shù)中,判斷接收RxFIFO是否為空,否則繼續(xù)讀數(shù)據(jù),NumBytes為需要讀取的數(shù)據(jù)個數(shù),但如果接收的FIFO空了,計數(shù)沒有達到這個值,也會結(jié)束此函數(shù)。

pIYBAGAKMVOATuVRAAA6HV2Y5bI060.jpg

10) 除了自己寫程序外,還可以從system.mss中導入模塊的例子,參考Xilinx提供的程序,方便學習。

o4YBAGAKMVSAKmcbAAAafnGEnYk848.jpg

3. 板上驗證

1) 接下來下載程序

pIYBAGAKMVSAKqr_AACaz4PUyhQ089.jpg

2) 打開工程目錄下的串口調(diào)試工具

o4YBAGAKMVWAAXJSAAAGjubltm0668.jpg

3) 設(shè)置好參數(shù)如下,打開串口,即可看到打印信息。

pIYBAGAKMVWAHkT1AABOBEwiPT8185.jpg

4) 在發(fā)送區(qū)填入數(shù)據(jù),點擊手動發(fā)送,即可看到接收區(qū)的數(shù)據(jù)。

o4YBAGAKMVaALpFtAABS-x55pPQ175.jpg

4. 總結(jié)

本章學習了UART的發(fā)送與接收,以及中斷的使用,希望大家能養(yǎng)成良好的習慣,多看文檔,理解原理,能對系統(tǒng)的認識有很大提高。

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

    關(guān)注

    1624

    文章

    21573

    瀏覽量

    600704
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1539

    瀏覽量

    75921
  • uart
    +關(guān)注

    關(guān)注

    22

    文章

    1216

    瀏覽量

    101025
  • Zynq
    +關(guān)注

    關(guān)注

    9

    文章

    607

    瀏覽量

    47084
  • MPSoC
    +關(guān)注

    關(guān)注

    0

    文章

    195

    瀏覽量

    24215
收藏 人收藏

    評論

    相關(guān)推薦

    明德?lián)P視頻分享點撥FPGA課程--第二十一章 ?矩陣鍵盤工程

    第二十一章矩陣鍵盤工程1. 矩陣掃描模塊2. 數(shù)碼顯示模塊3. for循環(huán)的使用4. 統(tǒng)計模塊5. generate的使用6. 進制轉(zhuǎn)換模塊7. 頂層模塊http://yunpan.cn/cjZTiDA9pY56x訪問密碼 c359
    發(fā)表于 11-09 08:47

    如何調(diào)試Zynq UltraScale+ MPSoC VCU DDR控制

      如何調(diào)試Zynq UltraScale+ MPSoC VCU DDR控制器  Zynq UltraS
    發(fā)表于 01-07 16:02

    如何調(diào)試Zynq UltraScale+ MPSoC VCU DDR控制

    如何調(diào)試 Zynq UltraScale+ MPSoC VCU DDR 控制器?
    發(fā)表于 01-22 06:29

    ZYNQ Ultrascale+ MPSOC FPGA教程

    ZYNQ Ultrascale+ MPSOC FPGA教程
    發(fā)表于 02-02 07:53

    第二十一講 組合邏輯電路中的競爭冒險

    第二十一講 組合邏輯電路中的競爭冒險 6.7.1 競爭冒險現(xiàn)象及其產(chǎn)生的原因一、競爭、冒險1.理想情況2.實際情況3.競
    發(fā)表于 03-30 16:25 ?3023次閱讀
    <b class='flag-5'>第二十一</b>講 組合邏輯電路中的競爭冒險

    模擬電路網(wǎng)絡(luò)課件 第二十一節(jié):場效應管與BJT放大電路的比較

    模擬電路網(wǎng)絡(luò)課件 第二十一節(jié):場效應管與BJT放大電路的比較 場效應管放大電路與BJT放大電路的性能比較
    發(fā)表于 09-17 11:01 ?1217次閱讀
    模擬電路網(wǎng)絡(luò)課件 <b class='flag-5'>第二十一</b>節(jié):場效應管與BJT放大電路的比較

    閑話Zynq UltraScale+ MPSoC(連載1)

    Zynq-7000,這款SoC功能顯得更加強勁:最顯著的變化是新加入了GPU和視頻編解碼器,PS的高速接口更加豐富。按照Xilinx官方的說法,Zynq
    發(fā)表于 02-08 08:24 ?710次閱讀
    閑話<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>(連載1)

    閑話Zynq UltraScale+ MPSoC(連載5)

    作者:Hello,Panda Part3 I/O資源 和Zynq-7000相比較,Zynq UltraScale+ 增強了PS的IO性能;
    發(fā)表于 02-08 08:29 ?681次閱讀
    閑話<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>(連載5)

    Zynq UltraScale+ MPSoC的發(fā)售消息

    Zynq?UltraScale+?MPSoC,現(xiàn)已開始發(fā)售。視頻向您重點介紹了Xilinx UltraScale +產(chǎn)品組合的第一位成員
    的頭像 發(fā)表于 11-27 06:47 ?3534次閱讀

    米爾科技Zynq UltraScale+ MPSoC技術(shù)參考手冊介紹

    Zynq UltraScale+ MPSoC是Xilinx推出的第二代多處理SoC系統(tǒng),在第一代Zynq-7000的基礎(chǔ)上做了全面升級,在單
    的頭像 發(fā)表于 11-18 11:03 ?3069次閱讀
    米爾科技<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>技術(shù)參考手冊介紹

    ZYNQ Ultrascale+ MPSOC FPGA教程】第一章 MPSoC芯片介紹

    Zynq UltraScale+ MPSoC系列是Xilinx第二Zynq平臺。其亮點在于FPGA
    發(fā)表于 01-31 07:43 ?17次下載
    【<b class='flag-5'>ZYNQ</b> <b class='flag-5'>Ultrascale+</b> <b class='flag-5'>MPSOC</b> <b class='flag-5'>FPGA</b>教程】第<b class='flag-5'>一章</b> <b class='flag-5'>MPSoC</b>芯片介紹

    如何調(diào)試 Zynq UltraScale+ MPSoC VCU DDR 控制器?

    Zynq UltraScale+ MPSoC VCU DDR 控制器是一款專用 DDR 控制器,只支持在
    發(fā)表于 02-23 06:00 ?15次下載
    如何調(diào)試 <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b> VCU DDR <b class='flag-5'>控制</b>器?

    米爾電子zynq ultrascale+ mpsoc底板外設(shè)資源清單分享

    米爾電子推出的國內(nèi)首款zynq ultrascale+ mpsoc平臺核心板(及開發(fā)板):MYC-CZU3EG吸引了人工智能、工業(yè)控制、嵌入式視覺、ADAS、算法加速、云計算、有線/無
    發(fā)表于 01-07 15:20 ?3次下載
    米爾電子<b class='flag-5'>zynq</b> <b class='flag-5'>ultrascale+</b> <b class='flag-5'>mpsoc</b>底板外設(shè)資源清單分享

    ZYNQ Ultrascale+ MPSoC系列FPGA芯片設(shè)計

    基于 Xilinx 公司ZYNQ Ultrascale+ MPSoC系列 FPGA 芯片設(shè)計,應用于工廠自動化、機器視覺、工業(yè)質(zhì)檢等工業(yè)領(lǐng)域
    發(fā)表于 11-02 14:35 ?1529次閱讀

    Zynq UltraScale+ MPSoC的隔離設(shè)計示例

    電子發(fā)燒友網(wǎng)站提供《Zynq UltraScale+ MPSoC的隔離設(shè)計示例.pdf》資料免費下載
    發(fā)表于 09-13 11:28 ?3次下載
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>的隔離設(shè)計示例