zynq中纯PL编程

    没接触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程序,如下图。


zynq中纯PL编程_第1张图片

附代码:

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;
end
else
begin
    state<=state+1'b1;
end
assign led=state[31:24];

endmodule


 
  

    代码写好后就综合,run syhthesis,等待综合完毕后,打开systhesized Design,开始引脚分配。

    首先要找到时钟引脚,然后在分配引脚的时候,把这个引脚分配给时钟信号。我的开发板上K17是时钟输入引脚,所以分配这个引脚到clk_pl,且是输入。然后是复位按键和输出led引脚。(复位按键可以不要)

zynq中纯PL编程_第2张图片


引脚分配好了之后,就可以开始run implemented,然后等待完成。然后就是导出硬件流,烧写到zynq的PL中去,这样就可以啦。


你可能感兴趣的:(zynq)