国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

ZYNQ——PL端流水燈的實現(xiàn)

這篇具有很好參考價值的文章主要介紹了ZYNQ——PL端流水燈的實現(xiàn)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


一、介紹

本文介紹的是在ZYNQ 7020黑金開發(fā)板上實現(xiàn)PL端流水燈的例子,開發(fā)板上PL端的LED燈總共有4個,在原理圖中找到 PL LED 如下圖所示,通過看圖可知,給 LED 置低電平時燈才亮。
ZYNQ——PL端流水燈的實現(xiàn)
這里預(yù)想的實驗結(jié)果是:在1秒鐘內(nèi),4個LED各亮0.25秒,看起來就像流水燈一樣。
LED:4個,賦值為0時即點亮。
時鐘:50MHz。
復(fù)位:低電平有效,按鍵設(shè)為開發(fā)板上的 PL KEY1。
計數(shù):電平每變化一次就加1,加到49999999后重新置為0。


二、代碼編寫

工程的創(chuàng)建這里不再過多介紹,之前的文章已經(jīng)介紹過了。
下面的代碼就是在計數(shù)到0,0.25,0.5,0.75秒這些時刻時,點亮對應(yīng)的1個LED燈。

`timescale 1ns / 1ps

module led(
    input sys_clk,
    input rst_n,
    output reg[3:0] led
    );
    
reg[31:0] timer_counter;

always@(posedge sys_clk or negedge rst_n)
begin
    if(!rst_n)
    begin
        led <= 4'b1111;  //置0時燈才亮
        timer_counter <= 32'd0;
    end
    else if(timer_counter == 32'd0)
    begin
        led <= 4'b1110;
        timer_counter <= timer_counter +32'd1;
    end
    else if(timer_counter == 32'd12_500_000)
    begin
        led <= 4'b1101;
        timer_counter <= timer_counter +32'd1;
    end
    else if(timer_counter == 32'd25_000_000)
    begin
        led <= 4'b1011;
        timer_counter <= timer_counter +32'd1;
    end
    else if(timer_counter == 32'd37_500_000)
    begin
        led <= 4'b0111;
        timer_counter <= timer_counter +32'd1;
    end
    else if(timer_counter == 32'd49_999_999)
    begin
        timer_counter <= 32'd0;
    end
    else
    begin
        led <= led;
        timer_counter <= timer_counter +32'd1;
    end
end
endmodule

下面代碼實現(xiàn)的功能與上面代碼一致,其中引入了case語句。

`timescale 1ns / 1ps

module led(
    input sys_clk,
    input rst_n,
    output reg[3:0] led
    );
    
reg[31:0] timer_counter;

always@(posedge sys_clk or negedge rst_n)
begin
    if(!rst_n)
    begin
        led <= 4'b1111;
        timer_counter <= 32'd0;
    end
    else if(timer_counter == 32'd49_999_999)
//  else if(timer_counter == 32'd19)  //用于測試
        begin
            timer_counter <= 32'd0;
        end
    else
    begin
        case(timer_counter)
            32'd0          : led <= 4'b1110;
            32'd12_500_000 : led <= 4'b1101;
            32'd25_000_000 : led <= 4'b1011;
            32'd37_500_000 : led <= 4'b0111;
//            32'd0  : led <= 4'b1110;  //用于測試
//            32'd5  : led <= 4'b1101;
//            32'd10 : led <= 4'b1011;
//            32'd15 : led <= 4'b0111;
        endcase
        timer_counter <= timer_counter + 32'd1;
    end
end
endmodule

代碼編寫完成后系統(tǒng)會自動保存,注意看右側(cè)邊欄處是綠色還是紅色,是綠色就說明代碼沒有錯誤,把鼠標(biāo)放在綠色框上面就會顯示下面的信息。
ZYNQ——PL端流水燈的實現(xiàn)
如果是紅色就說明代碼中有錯誤,代碼出錯的地方也會有紅色的波浪線,如下圖所示。
ZYNQ——PL端流水燈的實現(xiàn)
順便提一下,這個Vivado默認(rèn)的代碼字體太小了,在菜單欄點擊Tools——>Settings打開設(shè)置窗口,找到Text Editor——>Fonts and Colors,在右側(cè)就可以設(shè)置代碼的字體大小了。
ZYNQ——PL端流水燈的實現(xiàn)


三、引腳分配

在左側(cè) RTL ANALYSIS 下點擊 Open Elaborated Design 查看原理圖,如下圖所示。
ZYNQ——PL端流水燈的實現(xiàn)
如果在底部沒有 I/O Ports 可以點擊頂部菜單欄 Window 下的 I/O Ports 選項調(diào)出。
ZYNQ——PL端流水燈的實現(xiàn)
然后就要參考原理圖給這些端口分配引腳。
復(fù)位是低電平有效的,將其和開發(fā)板上PL的一個按鍵進(jìn)行綁定,如下圖所示,選擇開發(fā)板上的第四個實體鍵 PL KEY1(前三個分別是復(fù)位和兩個PS端的按鍵),對應(yīng)的原理圖引腳是KEY1。
ZYNQ——PL端流水燈的實現(xiàn)
開發(fā)板上的PL端實體按鍵如下圖所示。
ZYNQ——PL端流水燈的實現(xiàn)
四個 LED 和按鍵 KEY1 對應(yīng)的引腳如下圖所示。
ZYNQ——PL端流水燈的實現(xiàn)
時鐘選擇的是 50MHz,在原理圖中找到相應(yīng)的名稱,如下圖。
ZYNQ——PL端流水燈的實現(xiàn)
然后找到該名稱對應(yīng)的引腳是U18,如下圖所示。
ZYNQ——PL端流水燈的實現(xiàn)
其中頂部的VCC3V3代表3.3V,因此將其VCC設(shè)置為LVCMOS33*,如下圖所示就分配完成了。
ZYNQ——PL端流水燈的實現(xiàn)
命名并保存該文件,該文件是后綴為xdc的約束文件,打開后如下圖所示。
ZYNQ——PL端流水燈的實現(xiàn)
后續(xù)也可以通過編輯該文件實現(xiàn)引腳的分配或者修改。
接下來運行綜合,完成后打開約束向?qū)姘?,設(shè)置系統(tǒng)時鐘為50MHz。
ZYNQ——PL端流水燈的實現(xiàn)
這時候約束文件中也會多一行代碼,如下圖所示。
ZYNQ——PL端流水燈的實現(xiàn)


四、仿真分析

在下載比特流文件到開發(fā)板之前,之所以先在Vivado軟件中仿真,是因為生成比特流的過程太慢了,如果你每改動一次就在板子上驗證一下實在是太費時間了,所以提前在仿真中調(diào)試好代碼,有把握后到開發(fā)板上驗證即可。
上面提供的代碼中,用于測試的代碼可以將計數(shù)量縮小,這樣在仿真中就可以縮短仿真時間,這對整體的功能實現(xiàn)沒有任何影響,不過要在生成比特流文件時記得將代碼改過來。
在 Simulation Settings下可以設(shè)置仿真的運行時長,這里根據(jù)需要設(shè)置。
ZYNQ——PL端流水燈的實現(xiàn)
新建一個用于仿真的源文件,如下圖。
ZYNQ——PL端流水燈的實現(xiàn)
完成后在文件中寫入下面的仿真測試代碼。

`timescale 1ns / 1ps

module sim_led();
reg sys_clk; 
reg rst_n;
wire [3:0] led;

initial 
begin 
sys_clk = 1; 
rst_n = 0 ; 
#100;  //延遲100ns
rst_n = 1; 
end 

//Create clock 
always #10 sys_clk = ~ sys_clk; //時鐘頻率為50MHZ,周期為20ns,因此每延遲10ns,時鐘翻轉(zhuǎn)一次

// Instantiate the Unit Under Test (UUT) 例化待測設(shè)計
led  uut_led(
	.sys_clk (sys_clk),
	.rst_n (rst_n),
	.led (led)
	);
	
endmodule

先用Vivado自帶的仿真工具進(jìn)行簡單的行為仿真,得到的結(jié)果如下圖所示。仿真這部分的操作如果不太熟悉可以參考文章:Vivado中Simulator仿真軟件的使用。
ZYNQ——PL端流水燈的實現(xiàn)
通過上述仿真,其結(jié)果與代碼中預(yù)設(shè)的一致,那下面就可以到開發(fā)板上驗證了。如果仿真結(jié)果與自己的預(yù)想不一致,就要修改代碼,重新仿真,直到結(jié)果與自己的預(yù)期相符,然后再到開發(fā)板上驗證。


五、添加 ILA IP

ILA(Integrated Logic Analyzer),即集成邏輯分析儀,這里添加兩個探針,分別設(shè)置為4位和32位,對應(yīng)代碼中的 led 和 timer_counter。這一部分的詳細(xì)介紹可以參考文章:使用Vivado軟件進(jìn)行硬件調(diào)試。
ZYNQ——PL端流水燈的實現(xiàn)
生成后打開ila_0文件,復(fù)制84-90行的內(nèi)容,注意有多個探針時的位數(shù)設(shè)置,在代碼中不要搞錯。
ZYNQ——PL端流水燈的實現(xiàn)
在led.v文件的endmodule前添加下面的代碼。
ZYNQ——PL端流水燈的實現(xiàn)
ILA 就添加完成了。


六、板上驗證

接下來點擊生成比特流(Generate Bitstream),這個時間會比較長,完成后彈出下面對話框,選擇Open Hardware Manager。
ZYNQ——PL端流水燈的實現(xiàn)
連接好開發(fā)板的JTAG接口,給開發(fā)板上電,然后下載比特流文件到開發(fā)板。
ZYNQ——PL端流水燈的實現(xiàn)
添加ILA后Debug probes file這里也會有文件。
ZYNQ——PL端流水燈的實現(xiàn)
下載進(jìn)度條滿了之后就說明下載成功了,PL端流水燈的演示如下動圖所示。
ZYNQ——PL端流水燈的實現(xiàn)
使用集成邏輯分析儀查看,給其設(shè)置一個觸發(fā)值25000000,可以看到,從25000001開始,LED的值發(fā)生了變化,如下圖所示。
ZYNQ——PL端流水燈的實現(xiàn)
當(dāng)然,在12500000和37500000處,LED的值也會發(fā)生變化。通過仿真、開發(fā)板上LED的動圖以及ILA分析,其結(jié)果是按照代碼中設(shè)置的那樣輸出的。


以上就是 ZYNQ——PL端流水燈的實現(xiàn)的全部內(nèi)容了!
參考資料:
ZYNQ 開發(fā)平臺 FPGA 教程 AX7020文章來源地址http://www.zghlxwxcb.cn/news/detail-493843.html

到了這里,關(guān)于ZYNQ——PL端流水燈的實現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 51單片機實現(xiàn)流水燈

    51單片機實現(xiàn)流水燈

    我們之前說過可以控制管腳口電平來控制LED的亮滅,低電平燈亮,高電平燈滅,具體可以看我之前的博客。 P20~P27可以用八位二進(jìn)制數(shù)來表示每一位的電平,第八位是P20,第一位是P27,那么11111110就代表P20亮,其他滅,11101111就代表P24亮,其他滅。流水燈的代碼就可以寫成這樣

    2024年02月11日
    瀏覽(18)
  • 基于stm32的流水燈實現(xiàn)

    主控芯片:? 正點原子STM32F103ZET6精英開發(fā)板 oled:中景園七針腳0.96寸oled 代碼編程軟件: keil5 代碼下載地址:?stm32流水燈項目 希望大家仔細(xì)看一看是否符合自己的需求,實際上本文中寫到的很多東西已經(jīng)能為課設(shè)所用,理清邏輯后自己編程也很方便的,但如果想直接copy我的項目

    2024年02月07日
    瀏覽(24)
  • 利用STM32實現(xiàn)流水燈程序

    利用STM32實現(xiàn)流水燈程序

    keil MDK安裝與新建工程 在KEIL MDK官網(wǎng)中下載KEIL MDK ARM,下載鏈接如下:MDK-ARM Version 5.38a Evaluation Software Request (keil.com),在填寫信息后進(jìn)行安裝和下載。 安裝后進(jìn)行以下操作: 右鍵keil5圖標(biāo),點擊“以管理員身份運行” 進(jìn)入之后, 點擊“ file ”里邊的選項“ License Management ”

    2024年02月06日
    瀏覽(23)
  • FPGA學(xué)習(xí)——verilog實現(xiàn)流水燈

    FPGA學(xué)習(xí)——verilog實現(xiàn)流水燈

    學(xué)習(xí)芯片: EP4CE6F17C8 verilog代碼如下: 配置引腳,查看芯片的指導(dǎo)書: 燒錄運行結(jié)果如下: 如圖我們可以看見開發(fā)板上四個led燈同時被電亮。 代碼如下: 配置引腳,查看clock和key的引腳: 運行結(jié)果如下圖: 此時可以看見四個led燈同時閃爍。 流水燈代碼實現(xiàn): 實驗效果圖如

    2024年02月16日
    瀏覽(34)
  • 基于Nios-II實現(xiàn)流水燈

    基于Nios-II實現(xiàn)流水燈

    1、新建Quartus項目,選擇使用的芯片 這里我選擇的芯片類型為EP4CE115F29C7,你也可以根據(jù)自己需要,選擇其他芯片。 注意,部分芯片(例如MAX10-02SCM)經(jīng)過筆者測試,似乎使用不了Nios-II,因為會提示無法使用mif文件。 2、Qsys設(shè)計 2.1 進(jìn)入Tools - Platform Designer 進(jìn)入后,首先點擊

    2023年04月11日
    瀏覽(15)
  • ARM入門(實現(xiàn)LED流水燈)超簡單

    ARM入門(實現(xiàn)LED流水燈)超簡單

    ????????實現(xiàn)效果將LDE2到LED5依次點亮再依次熄滅。點亮LED燈就像我們接觸編程語言的第一天輸出一個\\\"hello world\\\"一樣,這是一個最基礎(chǔ)的入門操作。這里我們以點亮LED2的過程進(jìn)行詳細(xì)講解,因其他LED燈的點亮過程都是一樣的,所以就不做一一介紹了。 1、首先第一步我們需

    2023年04月10日
    瀏覽(18)
  • 51單片機流水燈三種實現(xiàn)方法

    51單片機流水燈三種實現(xiàn)方法

    流水燈可以用三種方法實現(xiàn) 一.通過移位函數(shù) ?_crol_() ?和 ?_cror_() 二.位移實現(xiàn)流水燈 三.數(shù)組流水燈實現(xiàn) 首先說一下流水燈的原理 讓0從左往右位移或者從右往左位移 從而實現(xiàn)流水燈依次點亮 電路圖如下,使用軟件是project 使用左移函數(shù)代碼如下 ?///運行結(jié)果是LED燈從上到

    2023年04月09日
    瀏覽(21)
  • FPGA學(xué)習(xí)分享--01 led流水燈的實現(xiàn)

    FPGA學(xué)習(xí)分享--01 led流水燈的實現(xiàn)

    需求 : 博宸電子的ZYNQ7020DEV開發(fā)板 Vivado 2018.3 一定的verilog語言基礎(chǔ) 博主目前學(xué)習(xí)的是 博宸電子的ZYNQ7020DEV開發(fā)板 ,下面是關(guān)于本次分享led流水燈的原理圖 圖1 涉及本次led流水燈的電路 首先,從圖1來看,每個led端口都和一個阻值為4.7k的電阻和一個發(fā)光二極管相連,并且發(fā)光

    2024年02月04日
    瀏覽(20)
  • FPGA 學(xué)習(xí)筆記:Verilog 實現(xiàn)LED流水燈控制

    在初步了解 Xilinx Vivado 的使用后,開啟了FPGA Hello World 程序:LED 流水燈控制 在嵌入式MCU中,流水燈需要延時來實現(xiàn),F(xiàn)PGA的延時,使用外部晶振來實現(xiàn) 實現(xiàn) 3個 LED 流水燈控制,也就是循環(huán)依次點亮, LED 低電平亮, 高電平滅,F(xiàn)PGA 有一個40MHz的外部晶振,作為系統(tǒng)時鐘輸入開

    2023年04月08日
    瀏覽(32)
  • 設(shè)計分享|74LS138譯碼器實現(xiàn)流水燈

    設(shè)計分享|74LS138譯碼器實現(xiàn)流水燈

    具體實現(xiàn)功能: 74LS138譯碼器實現(xiàn)流水燈的控制。 設(shè)計介紹 51單片機簡介 51單片是一種低功耗、高性能CMOS-8位微控制器,具有8K可編程Flash存儲器,使得其為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。 51系列單片機具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,512字節(jié)RAM,

    2024年02月06日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包