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

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

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

3天內不再提示

ZYNQ系列開發板:PS控制PL產生需要的PWM波

電子設計 ? 來源:CSDN ? 作者:ChuanjieZhu ? 2020-12-23 11:39 ? 次閱讀

這一節我們探索基于AXI總線的設計,來看一看ZYNQ系列開發板的獨特優勢,PS可以控制PL產生定制化的行為,而不需要去動硬件代碼。

這次實驗是產生頻率和占空比可調的PWM(Pulse Width Modulation)信號,調用8次,產生8路PWM波,并用這些信號去控制8路LED燈,觀察實驗效果。后面會做一個比較。

用的板子是zc702。

新建一個工程,命名為PWM_AXI_Lite

創建基于AXI總線的PWM波IP

IP設計為一個寄存器負責控制頻率,一個寄存器負責控制占空比。

創建一個IP核,tools-->Create and Package ,這里需要16個寄存器,創建方法見系列(六)、系列(七),這里命名為PWM_AXI_Lite。

在IP核工程里,新建一個PWM模塊文件,這里占空比設計的比較糙,直接就用一個計數值代替功能,后面的軟件設計要注意:

module PWM(
input clk,
input rst_n,
input cnt_set,
input fre_set,
output pwm_o
);

wire[31:0] cnt_set;
wire[31:0] fre_set;
reg [31:0] fre_cnt;

always @(posedge clk) begin
if(!rst_n) begin
fre_cnt end
else begin
if(fre_cnt fre_cnt else
fre_cnt end
end

assign pwm_o=(cnt_set>fre_cnt);
endmodule

在自動產生的實例文件里,添加端口信號和自定義功能,后面要約束到LED上:

o4YBAF9uHN2AXueaAAAee8p20ys261.png


o4YBAF9uHN6AdHWMAABHkC0jICo966.png

自定義的功能就是一個寄存器控制頻率(fre_set),一個寄存器控制占空比(cnt_set):
// Add user logic here
PWM PWM0(
.clk(S_AXI_ACLK),
.rst_n(S_AXI_ARESETN),
.cnt_set(slv_reg1),
.fre_set(slv_reg0),
.pwm_o(PWM_o[0])
);

PWM PWM1(
.clk(S_AXI_ACLK),
.rst_n(S_AXI_ARESETN),
.cnt_set(slv_reg3),
.fre_set(slv_reg2),
.pwm_o(PWM_o[1])
);

PWM PWM2(
.clk(S_AXI_ACLK),
.rst_n(S_AXI_ARESETN),
.cnt_set(slv_reg5),
.fre_set(slv_reg4),
.pwm_o(PWM_o[2])
);

PWM PWM3(
.clk(S_AXI_ACLK),
.rst_n(S_AXI_ARESETN),
.cnt_set(slv_reg7),
.fre_set(slv_reg6),
.pwm_o(PWM_o[3])
);
PWM PWM4(
.clk(S_AXI_ACLK),
.rst_n(S_AXI_ARESETN),
.cnt_set(slv_reg9),
.fre_set(slv_reg8),
.pwm_o(PWM_o[4])
);
PWM PWM5(
.clk(S_AXI_ACLK),
.rst_n(S_AXI_ARESETN),
.cnt_set(slv_reg11),
.fre_set(slv_reg10),
.pwm_o(PWM_o[5])
);
PWM PWM6(
.clk(S_AXI_ACLK),
.rst_n(S_AXI_ARESETN),
.cnt_set(slv_reg13),
.fre_set(slv_reg12),
.pwm_o(PWM_o[6])
);

PWM PWM7(
.clk(S_AXI_ACLK),
.rst_n(S_AXI_ARESETN),
.cnt_set(slv_reg15),
.fre_set(slv_reg14),
.pwm_o(PWM_o[7])
);
// User logic ends

在頂層模塊添加好用戶信號,一個是端口里的,一個是調用里的:

pIYBAF9uHN-AD0k0AAA8JBRcnPY181.png


o4YBAF9uHOGAVAiuAACfxdJpB_8885.png

修改完后重新打包好。

回到原先建的工程,將這個IP添加到IP庫里,然后Create Block Design,添加ZYNQ核和PWM_AXI_Lite,為了觀察PWM波信號,這里又添加了一個ILA(為了簡化,可以去掉),配置如下:

o4YBAF9uHOOAaN7KAAD8pWVGi9o607.png


pIYBAF9uHOWAfQOIAADMoJSJWJY039.png

連接CLK 和 FCLK_CLK0 ,連接 Probe0 和 PWM_o,最后創建的系統如下:

o4YBAF9uHOeAMBx7AAFRaOZ6LCM920.png

添加約束文件,將8路PWM波綁定到8個LED上:
#GPIO PMOD1
set_property PACKAGE_PIN E15 [get_ports {PWM_o[7]}]
set_property IOSTANDARD LVCMOS25 [get_ports {PWM_o[7]}]
set_property PACKAGE_PIN D15 [get_ports {PWM_o[6]}]
set_property IOSTANDARD LVCMOS25 [get_ports {PWM_o[6]}]
set_property PACKAGE_PIN W17 [get_ports {PWM_o[5]}]
set_property IOSTANDARD LVCMOS25 [get_ports {PWM_o[5]}]
set_property PACKAGE_PIN W5 [get_ports {PWM_o[4]}]
set_property IOSTANDARD LVCMOS25 [get_ports {PWM_o[4]}]
#GPIO PMOD2
set_property PACKAGE_PIN V7 [get_ports {PWM_o[3]}]
set_property IOSTANDARD LVCMOS25 [get_ports {PWM_o[3]}]
set_property PACKAGE_PIN W10 [get_ports {PWM_o[2]}]
set_property IOSTANDARD LVCMOS25 [get_ports {PWM_o[2]}]
set_property PACKAGE_PIN P18 [get_ports {PWM_o[1]}]
set_property IOSTANDARD LVCMOS25 [get_ports {PWM_o[1]}]
set_property PACKAGE_PIN P17 [get_ports {PWM_o[0]}]
set_property IOSTANDARD LVCMOS25 [get_ports {PWM_o[0]}]

一系列常規操作,生成比特流文件后,Lanch到SDK。

SDK部分設計
在BSP包里找到xparameter.h文件:

pIYBAF9uHOiAGqF6AAAhWRFEXPE751.png

在xparameters.h文件里找到系統為我們的PWM IP配置的地址,待會我們要操作它的寄存器:

打開xparameters.h文件,Ctrl+F:

pIYBAF9uHOqAfXYRAAE0fLqXvXs100.png

這個基地址就是我們的寄存器0的地址,然后我們將各路PWM波的頻率和占空比寫入:
#include
#include "xparameters.h"
#include "xil_io.h"
#include "sleep.h"
#include "xil_types.h"

int main(){

Xil_Out32(XPAR_PWM_AXI_LITE_V1_0_0_BASEADDR,40000000);
Xil_Out32(XPAR_PWM_AXI_LITE_V1_0_0_BASEADDR+4,30000000);

Xil_Out32(XPAR_PWM_AXI_LITE_V1_0_0_BASEADDR+8,40000000);
Xil_Out32(XPAR_PWM_AXI_LITE_V1_0_0_BASEADDR+12,20000000);

Xil_Out32(XPAR_PWM_AXI_LITE_V1_0_0_BASEADDR+16,40000000);
Xil_Out32(XPAR_PWM_AXI_LITE_V1_0_0_BASEADDR+20,10000000);

Xil_Out32(XPAR_PWM_AXI_LITE_V1_0_0_BASEADDR+24,40000000);
Xil_Out32(XPAR_PWM_AXI_LITE_V1_0_0_BASEADDR+28,8000000);

Xil_Out32(XPAR_PWM_AXI_LITE_V1_0_0_BASEADDR+32,40000000);
Xil_Out32(XPAR_PWM_AXI_LITE_V1_0_0_BASEADDR+36,6000000);

Xil_Out32(XPAR_PWM_AXI_LITE_V1_0_0_BASEADDR+40,40000000);
Xil_Out32(XPAR_PWM_AXI_LITE_V1_0_0_BASEADDR+44,4000000);

Xil_Out32(XPAR_PWM_AXI_LITE_V1_0_0_BASEADDR+48,40000000);
Xil_Out32(XPAR_PWM_AXI_LITE_V1_0_0_BASEADDR+52,2000000);

Xil_Out32(XPAR_PWM_AXI_LITE_V1_0_0_BASEADDR+56,40000000);
Xil_Out32(XPAR_PWM_AXI_LITE_V1_0_0_BASEADDR+60,100000);

return 0;
}

板子上電,然后Program FPGA,debug as后,在vivado里會自動打開調試界面,觸發后能看到8路波形,在板子上我們可以看到LED燈依次閃爍!

總結:

這里我們達到了led依次閃爍的效果,如同系列(六)達到的效果,但是這里有本質的區別,系列(六)需要CPU一直發送指令控制LED燈,而這次試驗CPU寫入頻率和占空比后,現在8路PWM波自己工作,是PL完成的,不需要CPU發命令,CPU可以去干其他事情。這就是SOPC的優勢!
編輯:hfy


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

    關注

    1632

    文章

    21816

    瀏覽量

    607054
  • 寄存器
    +關注

    關注

    31

    文章

    5386

    瀏覽量

    121514
  • PWM
    PWM
    +關注

    關注

    114

    文章

    5206

    瀏覽量

    215267
收藏 人收藏

    評論

    相關推薦

    用TMS2812開發板通過spi來控制ADS1299開發板的采集,波形非常紊亂是為什么?

    我用的是貴公司提供的ADS1299開發板,用信號發生器產生的正弦信號源作為輸入信號,用TMS2812開發板通過spi來控制ADS1299開發板
    發表于 01-08 07:52

    ZYNQ 7035/7045開發板原理圖

    ZYNQ 7035/7045開發板原理圖
    發表于 12-05 13:46 ?1次下載

    正點原子fpga開發板不同型號

    ZYNQ-7000系列 ZYNQ-7000系列是正點原子的入門級FPGA開發板,適合初學者和教育用途。這些
    的頭像 發表于 11-13 09:30 ?1535次閱讀

    正點原子和野火開發板哪個好

    1.1 正點原子 正點原子開發板通常采用Xilinx公司的ZYNQ系列FPGA芯片,這些芯片集成了ARM處理器和FPGA邏輯單元,能夠實現高性能的嵌入式系統設計。正點原子開發板的硬件
    的頭像 發表于 11-13 09:29 ?2097次閱讀

    【AG32開發板體驗連載】雷達實現與控制

    的項目計劃: 根據文檔,搭建開發環境; 驗證串口通信,并能夠串口控制開發板; 基于內部CPLD資源完成高頻脈沖產生,并能夠通過ARM端實現控制
    發表于 10-26 18:11

    ZYNQ核心學習筆記

    此款開發板使用的是 Xilinx 公司的 Zynq7000 系列的芯片,型號為 XC7Z020-2CLG484I,484 個引腳的 FBGA 封裝。
    的頭像 發表于 10-24 18:08 ?1268次閱讀
    <b class='flag-5'>ZYNQ</b>核心<b class='flag-5'>板</b>學習筆記

    i.MX Linux開發實戰指南—基于野火i.MX系列開發板

    電子發燒友網站提供《i.MX Linux開發實戰指南—基于野火i.MX系列開發板.pdf》資料免費下載
    發表于 10-10 17:23 ?12次下載

    正點原子ZYNQ7015開發板ZYNQ 7000系列、雙核ARM、PCIe2.0、SFPX2,性能強悍,資料豐富!

    ! 正點原子Z15 ZYNQ開發板,搭載Xilinx Zynq7000系列芯片,核心主控芯片的型號是XC7Z015CLG485-2。
    發表于 09-14 10:12

    [XILINX] 正點原子ZYNQ7035/7045/7100開發板發布、ZYNQ 7000系列、雙核ARM、PCIe2.0、SFPX2!

    7000系列芯片,核心支持Xilinx Zynq-7035、Zynq-7045和Zynq-7100三種型號。
    發表于 09-02 17:18

    復旦微PS+PL異構多核開發案例分享,基于FMQL20SM國產處理器平臺

    本文主要介紹復旦微FMQL20S400M的PS + PL異構多核開發案例,開發環境如下: Windows開發環境:Windows 7 64b
    發表于 08-22 14:04

    FM20S用戶手冊-PS + PL異構多核案例開發手冊

    PS端) + FPGA可編程邏輯資源(PL端)異構多核SoC處理器設計的全國產工業評估PS端主頻高達1GHz。核心CPU、ROM、R
    發表于 07-25 16:14

    FT8132Q開發板,使用外部PWM控制調速

    FT8132Q開發板,使用外部PWM控制調速在開發板上怎么設置,GUI里怎么設置,有沒有例程
    發表于 07-19 15:21

    PY32系列單片機開發板 常用型號都有 支持Keil,IAR進行開發

    、IOT、傳感器、電動工具、電機控制等領域。 PY32系列單片機與大部份國產通用型MCU一樣,支持Keil,IAR進行開發。芯嶺技術提供目前PY32系列主流單片機
    的頭像 發表于 05-22 14:48 ?1358次閱讀
    PY32<b class='flag-5'>系列</b>單片機<b class='flag-5'>開發板</b> 常用型號都有 支持Keil,IAR進行<b class='flag-5'>開發</b>

    簡談Xilinx Zynq-7000嵌入式系統設計與實現

    FPGA靈活性和可擴展性,也提供了專用集成電路的相關性能、功耗和易用性。 ZYNQ 7000的結構便于將定制邏輯和軟件分別映射到PLPS中,這樣就可實現獨一無二和差異化的系統功能。 與傳統的FPGA
    發表于 05-08 16:23

    簡談Xilinx Zynq-7000嵌入式系統設計與實現

    PLPS中,這樣就可實現獨一無二和差異化的系統功能。與傳統的FPGA方法不同的是,ZYNQ 7000 SoC總是最先啟動PS內的處理器,這樣允許
    發表于 04-10 16:00
    主站蜘蛛池模板: 免费观看激色视频网站bd | 国产色婷婷亚洲 | 日本免费黄色录像 | 亚洲综合五月天欧美 | 亚洲五月婷 | 大香交伊人 | 欧美色碰碰碰免费观看长视频 | 国产美女精品一区二区三区 | 男男失禁play 把尿bl | 亚洲综合成人网在线观看 | 一级毛片免费不卡直观看 | 色妞网站 | 天堂bt在线网bt | 美国一级毛片免费看成人 | 日本免费视频 | 狠狠色噜噜狠狠狠狠五月婷 | 黄在线观看在线播放720p | 色在线网站免费观看 | jiucao在线观看精品 | 欧美aaaaa| 国内一级野外a一级毛片 | 天天操天天透 | 欧美视频免费一区二区三区 | 日本三级理论片 | 国产在线精品香蕉综合网一区 | 2021色噜噜狠狠综曰曰曰 | 78摸在线 | 李老汉和小花的性生生活 | 欧美肥胖女人bbwbbw视频 | 艹久久 | 激情网站网址 | 国产女人小便视频 | 欧美人与zoxxxx | 观看在线人视频 | 二区久久国产乱子伦免费精品 | 四虎成人免费观看在线网址 | 精品噜噜噜噜久久久久久久久 | 1024久久| 色多多免费视频观看区一区 | 成人在线免费电影 | 精品福利在线视频 |