日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Zedboard学习(三):PL下流水灯实验

發布時間:2025/3/21 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Zedboard学习(三):PL下流水灯实验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

zynq系列FPGA分為PS部分和PL部分。
PL: 可編程邏輯 (Progarmmable Logic), 就是FPGA部分。
PS: 處理系統 (Processing System) , 就是與FPGA無關的ARM的SOC的部分,實質是直接操作arm9內核的處理器。
這次先是最簡單地在PL部分編寫一個流水燈實驗的代碼。
使用的開發環境是vivado 2016.4。

1、新建工程,Create New Project。

2、next。

3、選擇工程目錄,和輸入工程名字。

4、選擇RTL Project。

5、還沒有編寫Verilog代碼,跳過這一步,直接next。

6、不選擇IP核,直接跳過,點next。

7、選擇boards,軟件自帶了zedboard的芯片型號等的配置,選擇zedboard即可。

8、工程信息,點next完成工程的創建。

9、vivado整個工程的界面。

10、點add sources。

11、選擇如圖選項,添加源文件。

12、點create file,輸入新建的Verilog文件的名稱:led.v,然后選OK。

接下來有了led.v文件,可以開始編寫Verilog代碼了。

`timescale 1ns / 1ps // // Company: // Engineer: xu_hongbin // // Create Date: 2017/07/05 09:57:09 // Design Name: // Module Name: led // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // //module led(Clk,Rst,Led);input Clk; //時鐘input Rst; //zedboard上是高電平復位output [7:0] Led; //led輸出口reg [31:0] delay_cnt; //分頻延時計數器reg clk_500ms; //分頻后的2HZ信號reg [7:0] Led_r; //LED信號輸出寄存器always @(posedge Clk or posedge Rst)beginif(Rst)begindelay_cnt <= 32'd0;clk_500ms <= 1'd0;endelse if(delay_cnt == 32'd25_000_000 - 32'd1)begindelay_cnt <= 32'd0;clk_500ms <= ~clk_500ms;endelsebegindelay_cnt <= delay_cnt + 1'b1;endendalways @(posedge clk_500ms or posedge Rst)beginif(Rst)Led_r <= 8'd1;elseLed_r <= (Led_r << 1) | (Led_r >> 7);endassign Led = Led_r;endmodule

代碼很簡單不多介紹了。

13、接下來準備編寫約束文件,分配引腳。在constraints下的constrs_1上右擊,在彈出的菜單中選擇Add Sources。

14、選擇Add or create constraints。

15、跟前面創建Led.v文件時一樣,先點create file,創建一個約束文件,名字隨便取,約束文件后綴是.xdc。

我的約束文件pins.xdc,引腳分配可以從官方給的原理圖中找到:

# Led0 set_property PACKAGE_PIN T22 [get_ports {Led[0]}] set_property IOSTANDARD LVCMOS33 [get_ports {Led[0]}]# Led1 set_property PACKAGE_PIN T21 [get_ports {Led[1]}] set_property IOSTANDARD LVCMOS33 [get_ports {Led[1]}]# Led2 set_property PACKAGE_PIN U22 [get_ports {Led[2]}] set_property IOSTANDARD LVCMOS33 [get_ports {Led[2]}]# Led3 set_property PACKAGE_PIN U21 [get_ports {Led[3]}] set_property IOSTANDARD LVCMOS33 [get_ports {Led[3]}]# Led4 set_property PACKAGE_PIN V22 [get_ports {Led[4]}] set_property IOSTANDARD LVCMOS33 [get_ports {Led[4]}]# Led5 set_property PACKAGE_PIN W22 [get_ports {Led[5]}] set_property IOSTANDARD LVCMOS33 [get_ports {Led[5]}]# Led6 set_property PACKAGE_PIN U19 [get_ports {Led[6]}] set_property IOSTANDARD LVCMOS33 [get_ports {Led[6]}]# Led7 set_property PACKAGE_PIN U14 [get_ports {Led[7]}] set_property IOSTANDARD LVCMOS33 [get_ports {Led[7]}]# Clk(板子上的GCLK) set_property PACKAGE_PIN Y9 [get_ports {Clk}] set_property IOSTANDARD LVCMOS33 [get_ports {Clk}]# Rst(板子上的BTNU) set_property PACKAGE_PIN T18 [get_ports {Rst}] set_property IOSTANDARD LVCMOS33 [get_ports {Rst}]

16、代碼都寫完了,剩下的就是分析綜合了。

分析綜合的流程是:Run Synthesis–>Run Implementation–>Generate Bitstream。
Synthesis:對工程進行分析,檢查是否有語法錯誤,生成RTL級的原理圖;
Implementation:對工程進行綜合,會在底層布局布線。
Bitstream:比特流文件,是最后可以下載到FPGA中運行的文件。
我們也可以一步到位,直接點Generate Bitstream,vivado會自動執行上述過程。

17、產生比特流完畢后,給板子上電,然后點擊Open Hardware Manager–>Open Target–>Auto Connect。隨后會彈出HardWare Manager的窗口。

如果識別到了zedboard,會顯示上面的信息。
arm_dap_0表示zynq內的arm9內核;
xc7z020_1表示FPGA處理器。
點擊program device,選擇xc7z020_1。
選擇前面生成的比特流文件,一般自動選好了。

program就行了,最后會看到板子上開始運行流水燈。

總結

以上是生活随笔為你收集整理的Zedboard学习(三):PL下流水灯实验的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。