zynq中純PL程式設計

2021-06-27 07:34:10 字數 1375 閱讀 1953

沒接觸zynq之前,只用過fpga,在fpga中用verilog程式設計簡單明瞭,後來稍微學習過一點nios ii,就在fpga中也用過一點點nios ii。所以在剛接觸zynq的時候,我就感覺zynq跟altera的fpga和nios ii的程式設計肯定會有一些相似的地方。學習zynq的時候,一開始我就想弄清楚三個問題,第一zynq中怎麼使用純pl(programmable logic)部分?(就是把zynq當做普通fpga用)第二zynq中怎麼使用純ps(process system)部分?(就是把zynq當做乙個純arm使用)第三自然而然就是zynq的ps和pl部分怎麼協調工作,誰是主誰是從?

剛接觸的時候好多教程都是教你怎麼用ps部分,我捉摸了一段時間弄清楚了怎麼使用純pl部分了。希望大家在初學的時候能把ps和pl部分的關係弄清楚,對學習也會更有幫助的~

使用純pl部分的時候,就把zynq當做乙個fpga使用,使用fpga的時候,有乙個引腳是時鐘輸入引腳,這個特別重要,這個是源頭,一般在fpga中用verilog程式設計會使用同步操作,也就是在乙個主時鐘訊號下程式設計。

首先新建工程,然後在vivado中project manager中add sources,選擇design sources,新增.v檔案,然後寫乙個簡單verilog程式,如下圖。

附**:

module zynq_led(

input clk_pl,

input rst_n,

output[7:0] led

);reg [31:0]state;

always@(posedge clk_pl, negedge rst_n)

if(!rst_n)

begin

state<=32'b0;

endelse

begin

state<=state+1'b1;

endassign led=state[31:24];

endmodule

**寫好後就綜合,run syhthesis,等待綜合完畢後,開啟systhesized design,開始引腳分配。

首先要找到時鐘引腳,然後在分配引腳的時候,把這個引腳分配給時鐘訊號。我的開發板上k17是時鐘輸入引腳,所以分配這個引腳到clk_pl,且是輸入。然後是復位按鍵和輸出led引腳。(復位按鍵可以不要)

引腳分配好了之後,就可以開始run implemented,然後等待完成。然後就是匯出硬體流,燒寫到zynq的pl中去,這樣就可以啦。

ZYNQ筆記(4) PL觸發中斷

一 zynq中斷框圖 pl到ps部分的中斷經過icd控制器分發器後同時進入cpu1 和cpu0。從下面的 中可以看到中斷向量的具體值。pl到ps部分一共有20個中斷可以使用。其中4個是快速中斷。剩餘的16個是本章中涉及了,可以任意定義。如下表所示。二 zynq中斷分類 1.軟體中斷 sgi zynq...

ZedBaord 學習1 Zynq入門PL之LED

這裡先點亮led吧,參考 遇到的問題 通過zynq晶元的啟動過程可以看到上電或者復位後片內處理器首先啟動,然後根據mode引腳判斷啟動方式,zedboard的啟動可以通過quad spi flash sd卡或者jtag介面,如下表 管腳mio6 mio5 mio4 mio3 mio2 跳線jp11 ...

zynq平台,PS 與 PL共享記憶體的方法

開發環境 ubuntu18.04 軟體環境 linux核心 uboot原始碼及fpga程式 硬體環境 zynq 開發板 mz7100 關於本文中所述問題,ps arm linux 與 fpga 共享的事ps端的記憶體。開發板的記憶體共有1g 0x00000000 0x40000000 其中768m ...