沒(méi)接觸zynq之前,只用過(guò)FPGA,在FPGA中用verilog編程簡(jiǎn)單明了,后來(lái)稍微學(xué)習(xí)過(guò)一點(diǎn)nios ii,就在FPGA中也用過(guò)一點(diǎn)點(diǎn)nios ii。所以在剛接觸zynq的時(shí)候,我就感覺(jué)zynq跟altera的FPGA和nios ii的編程肯定會(huì)有一些相似的地方。學(xué)習(xí)zynq的時(shí)候,一開(kāi)始我就想弄清楚三個(gè)問(wèn)題,第一zynq中怎么使用純PL(programmable logic)部分?(就是把zynq當(dāng)做普通FPGA用)第二zynq中怎么使用純PS(process system)部分?(就是把zynq當(dāng)做一個(gè)純arm使用)第三自然而然就是zynq的PS和PL部分怎么協(xié)調(diào)工作,誰(shuí)是主誰(shuí)是從? 剛接觸的時(shí)候好多教程都是教你怎么用PS部分,我捉摸了一段時(shí)間弄清楚了怎么使用純PL部分了。希望大家在初學(xué)的時(shí)候能把PS和PL部分的關(guān)系弄清楚,對(duì)學(xué)習(xí)也會(huì)更有幫助的~ 使用純PL部分的時(shí)候,就把zynq當(dāng)做一個(gè)FPGA使用,使用FPGA的時(shí)候,有一個(gè)引腳是時(shí)鐘輸入引腳,這個(gè)特別重要,這個(gè)是源頭,一般在FPGA中用verilog編程會(huì)使用同步操作,也就是在一個(gè)主時(shí)鐘信號(hào)下編程。 首先新建工程,然后在vivado中project manager中add sources,選擇design sources,添加.v文件,然后寫(xiě)一個(gè)簡(jiǎn)單verilog程序,如下圖。 附代碼: <pre name='code' class='cpp'>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;endelsebegin state<=state+1'b1;endassign led=state[31:24];endmodule 代碼寫(xiě)好后就綜合,run syhthesis,等待綜合完畢后,打開(kāi)systhesized Design,開(kāi)始引腳分配。 首先要找到時(shí)鐘引腳,然后在分配引腳的時(shí)候,把這個(gè)引腳分配給時(shí)鐘信號(hào)。我的開(kāi)發(fā)板上K17是時(shí)鐘輸入引腳,所以分配這個(gè)引腳到clk_pl,且是輸入。然后是復(fù)位按鍵和輸出led引腳。(復(fù)位按鍵可以不要) 引腳分配好了之后,就可以開(kāi)始run implemented,然后等待完成。然后就是導(dǎo)出硬件流,燒寫(xiě)到zynq的PL中去,這樣就可以啦。 |
|
來(lái)自: Smartyy > 《待分類(lèi)》