Vivado下的集成逻辑分析仪ILA 入门

1:  建立工程并准备文件


打开Vivado, 并新建一个工程,取名dividerIla ,类型(type),选择RTL Projecct,Default Part 根据你的硬件平台选择。这个一定要选择正确,因为需要下载并运行的。我的平台是AC7010, 选择的是xc7z010clg400-1。

接下来是添加下载的源程序文件:Divider_Multiple.v 到Design Sources 下, Divider.xdc 到 Constarnts下。最后的效果如下图,其操作过程不详述,如果操作不来,请去查看我写的 Vivado 下的仿真入门一文,那有详细图示。


这里特别注意,如果你的硬件平台不一样,你需要修改Divider.xdc文件。这里分配硬件的管脚,需要与你的硬件一致,特别是clk_i, div1hz_o。 clk_i 是时钟输入脚,我的硬件是U18, div1hz_o 是led 闪灯控制,我的是R19, rst_n_i 是复位脚,我的是L15(其实没有使用)。

在这一步的时候,如果你综合(Synthesis), 执行(Implementation),产生比特流(Genrate Bitstream), 并下载 运行,应该看到你的一个LED 在一闪一闪的。这就是说,如果硬件平台不一致,你就要保证程序是正确无误的,否则,你要修改好。

如果你不想下载,这里提供copy 程序,就是这2个程序的代码。

Divider_Multiple.v 代码:

`timescale 1ns / 1ps
module Divider_Multiple(
    input clk_i,
    input rst_n_i,
    output div2_o,
    output div3_o,
    output div4_o,
    output div8_o,
    output div1hz_o
    );

reg div2_o_r=1'b0;
always@(posedge clk_i)
    div2_o_r=~div2_o_r;
    
  reg [1:0]div_cnt1=2'b00;
  always@(posedge clk_i)
    div_cnt1<=div_cnt1+2'b1;
    
  reg div4_o_r=1'b0;
  reg div8_o_r=1'b0;
 
  always@(posedge clk_i)
  begin
       if(div_cnt1==2'b00 || div_cnt1==2'b10)
            div4_o_r=~div4_o_r;
        else
            div4_o_r=div4_o_r;
end

always @ (posedge clk_i)
begin
       if((~div_cnt1[0]) && (~div_cnt1[1]))
            div8_o_r=~div8_o_r;
        else
            div8_o_r=div8_o_r;
end
            
   reg[1:0] pos_cnt=2'b00;
   reg[1:0] neg_cnt=2'b00;
   
 always@(posedge div2_o_r)
 begin
      if(pos_cnt==2'd2)
          pos_cnt<=2'b00;
      else
          pos_cnt<=pos_cnt+2'b01;
 end
 
  always@(negedge div2_o_r)
 begin
      if(neg_cnt==2'd2)
          neg_cnt<=2'b00;
      else
          neg_cnt<=neg_cnt+2'b01;
 end
 
 reg div3_o_r0;
 reg div3_o_r1;
 
 always@(posedge div2_o_r)
 if(pos_cnt<2'd1)
    div3_o_r0<=1'b1;
 else
    div3_o_r0<=1'b0;
    
 always@(posedge div2_o_r)
    if(neg_cnt<2'd1)
       div3_o_r1<=1'b1;
    else
       div3_o_r1<=1'b0;
       
reg div1hz_o_r=0;
reg [25:0] div1hz_cnt=0;
always @(posedge clk_i)
if(div1hz_cnt<26'd50_000_000)
    div1hz_cnt<=div1hz_cnt+1'b1;
 else
    div1hz_cnt<=0;
    
always@(posedge clk_i)
    if(div1hz_cnt==26'd49_999_999)
        div1hz_o_r<=~div1hz_o_r;
    else
        div1hz_o_r<=div1hz_o_r;

assign  div2_o=div2_o_r;
assign  div3_o=div3_o_r1;
assign  div4_o=div4_o_r;
assign  div8_o=div8_o_r;
assign  div1hz_o=div1hz_o_r;

endmodule


Divider.XDC代码:

create_clock -period 10.000 -name clk100MHZ [get_ports clk_i]
set_property IOSTANDARD LVCMOS33 [get_ports clk_i]
set_property IOSTANDARD LVCMOS33 [get_ports rst_n_i]
set_property IOSTANDARD LVCMOS33 [get_ports div2_o]
set_property IOSTANDARD LVCMOS33 [get_ports div3_o]
set_property IOSTANDARD LVCMOS33 [get_ports div4_o]
set_property IOSTANDARD LVCMOS33 [get_ports div8_o]
set_property IOSTANDARD LVCMOS33 [get_ports div1hz_o]
set_property PACKAGE_PIN U18 [get_ports clk_i]
set_property PACKAGE_PIN L15 [get_ports rst_n_i]
set_property PACKAGE_PIN M14 [get_ports div2_o]
set_property PACKAGE_PIN M15 [get_ports div3_o]
set_property PACKAGE_PIN K16 [get_ports div4_o]
set_property PACKAGE_PIN J16 [get_ports div8_o]
set_property PACKAGE_PIN R19 [get_ports div1hz_o]


2 :设置调试参数

如果你还没有综合,那就先执行综合(Run Synthesis),需要一点时间, 然后按下图打开Synthesis -> Set up Debug



下面就是Set Up Debug 的开始对话框,一个网点也没有。我们需要添加要监控或触发条件的Net。

点击Netlist View:



这个时候出现了Netlist View, 点开Nets, 可以看到很多Nets ,右键加入或者直接拖拉













点击Finish,设置完成,出现如下视图,可以看到Debug 窗口。



3:后续操作

设置完成后,运行执行 (Run Implementation), 这个时候弹出一个对话框,我选择Save



原来我们做的这些设置,就是修改Divider.XDC 文件的内容,如下图点击Reload:



我们看到约束文件Divider.XDC 增加了好些内容。你能看懂吗,ug908都有介绍,



漫长的等待后,Implementation 终于结束了,这里我选择了红箭头选择,产生比特流。



比特流也产生完了,我选择打开硬件管理



硬件管理的界面是这样的, 硬件目标还没打开。这时要打开你的硬件,其实我是一开始就准备好了,包括JTAG。

这是选择红箭 Open target



连接好目标是这样的,下面还有错误提示。什么意思,原来还没有下载。



那我就下载,看上去要送2个文件下去,我还勾上直接启动。



是的吧,下载后错误消失了。现在我们就要采样,看波形了。



4:波形采样和显示控制

通过上面一连串的操作,终于到了显示界面。左上方有3个红箭标注的就是采样控制操作,分别是:

Triger:触发控制,这个要设置触发条件,
Auto 直接触发

Stop 停止触发

这个就和示波器类似。


一定要触发采样,右边才有密密麻麻的波形出现。


点击Wavefore 最大化,再最大化。容易看清楚一点。看看左边3个红箭的按钮



点击波形窗口左边的按钮,显示全部,放大,缩小,调整到波形比较清楚一点。这就是实测的波形,我第一次看到的时候很激动。




右键选择模拟方式看数据,看到模拟变化,而不是数据。


不要只是看看,动手自己做一次。右键一下,还有好些功能。就和大家分享到这里,希望对你有用。

阅读更多

没有更多推荐了,返回首页