zybo的资料不多,vivado又是一个全新的设计环境,第一次接触xilinx在这个陌生的领域里,沿着前人的足迹一步步前进,同时也留下一点记号,方便后来的人. 
 
zybo拿到后,第一个念头就是用FPGA点灯 
安装好开发环境,据介绍ISE适合于传统的FPGA,而像ZYNQ的话,还是要VIVADO支持的比较好些,所以安装了vivado 2014.2.申请了试用Licenses. 
 
 
建立新的工程,存放目录,选择器件,zynq-7000,clg400,-1,7z010 ... 一路默认下去. 工程建立完成. 
 
 
在左边是流程向导,(Flow Navigator), Add Sources 建立或加入源文件, 
建立一个 top.v 并加到工程中. 
 
 
4.时钟,PLL...要点灯就要有时钟,肯定有PLL,所以还是左边,IP Catalog可以打开里面的IP核 
 fpga features and design -> clocking -> clocking wizard. 上面有 MMCM,PLL MMCM不知道是什么,所以先选了PLL 
 
  输入时钟从电路图上查到是50M,输出时钟 20M,一路默认生成. 
 
 
5.top模块里开始连线, 
   找到刚才生成的IP核 clk_wiz0.v文件,在 ed2\led2.srcs\sources_1\ip\clk_wiz_0 下面 
   可以看到刚才的模块  
module clk_wiz_0  
( 
// Clock in ports 
  input         clk_in1, 
  // Clock out ports 
  output        clk_out1, 
  // Status and control signals 
  input         reset, 
  output        locked 
); 
拷到top.v里面 
module top( 
    input iClk, 
    input iRst_n, 
    output [2:0] oLed 
    ); 
 
wire    clk_50m=iClk; 
wire    clk_20m; 
wire    pll_lock; 
wire    reset=~pll_lock; 
wire [31:0] the_cnt; 
 
assign oLed=the_cnt[23-:3]; 
 
clk_wiz_0 thepll  (// Clock in ports 
  .clk_in1(clk_50m),  // Clock out ports 
  .clk_out1(clk_20m),  // Status and control signals 
  .reset(), 
  .locked(pll_lock) 
);      
counter #(.WIDTH(25)) gcnt1 (.clock(clk_20m),.reset(reset),.en(1),.cnt_out(the_cnt)); 
 
endmodule 
 
然后自己写了个计数器也加进来 
 
module counter 
#(parameter WIDTH=16) 
( 
input clock,reset,en, 
output wire [WIDTH-1:0] cnt_out 
); 
reg [WIDTH-1:0] count; 
// Reset if needed, or increment if counting is enabled 
assign cnt_out = count; 
always @ (posedge clock or posedge reset) 
begin 
if (reset) 
count<=0; 
else if(en) 
count <= count + 1; 
end 
endmodule 
 
一切都好了后开始编译,左边 synthesis 下的 run synthesis, 
 
然后按提示implementation... 
然后生成Bitstream结果出错了,因为还没指定管脚. 
点implementation的implemented design可以看到右下有I/O ports在这里可以指定管脚. 
 
如果没看到这个,可以从Layout->IO Planing 下面找到它 
 
板上的50M接到E7,所以把clk_in指定到E7,死活不行,后面才发现,E7是PS(ARM9)预留的时钟口. 
ARM9还有很多端口也是预留的,所以不能指派给FGPA用. 只好重新想办法 
查电路图,还有一个L16,是从以太网口过来的125M,反正试一下,把时钟指派到L16,指派LED1,2,3到M14,M15,G14 
然后回到最上面,把PLL的输入改成125M.重新编译生成BitStream,顺利完成,下载到板上,LED开始闪烁,一切正常. 
 
 |