赞
踩
没接触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;endelsebegin state<=state+1'b1;endassign led=state[31:24];endmodule
代码写好后就综合,run syhthesis,等待综合完毕后,打开systhesized Design,开始引脚分配。
首先要找到时钟引脚,然后在分配引脚的时候,把这个引脚分配给时钟信号。我的开发板上K17是时钟输入引脚,所以分配这个引脚到clk_pl,且是输入。然后是复位按键和输出led引脚。(复位按键可以不要)
引脚分配好了之后,就可以开始run implemented,然后等待完成。然后就是导出硬件流,烧写到zynq的PL中去,这样就可以啦。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。