Vivado下的集成逻辑分析仪ILA 入门
刚刚开始学习Zynq 7000的时候,看到别人问ILA的问题时,说是集成逻辑分析仪,我觉得这是一个好东西,我一定要学会它。
我是买了黑金的AX7010, 后来换成AC7010,开始学习Zynq 7000的,当然他的平台是Vivado 2015.4 。我一步步按照黑金的教程学习,基本掌握了Zynq 7000的开发过程,但教程只是简单提到了仿真和逻辑分析仪。所以我不断寻找Vivado 下如何仿真以及逻辑分析仪的使用。一直不得要领,出不来。我好希望有一个教人走一遍的入门教程。经过十多天的苦苦思考和资料寻找,测试,前几天,测试出来了Vivado 下的仿真,我就积极地和大家分享了,见我的仿真入门一文。今天我又把集成逻辑分析仪的波形调出来了,我又把他分享给大家。新鲜出炉,有些理解不一定都好,但还是足以带你走一遍。
本文主要参考了xilinx 的ug908-vivado-programming-debugging.pdf,还有http://blog.chinaaet.com/kevinc/p/5100050249 (Vivado中使用逻辑分析仪ILA)。
此文还有2个续集,针对不同的情况:
Vivado下集成逻辑分析仪ILA入门续
Vivado的集成逻辑分析仪ILA 在有sdk 下的应用入门
源代码和工程下载地址: 链接:http://pan.baidu.com/s/1pL4yCR5 密码:ki9s
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个红箭的按钮
点击波形窗口左边的按钮,显示全部,放大,缩小,调整到波形比较清楚一点。这就是实测的波形,我第一次看到的时候很激动。
右键选择模拟方式看数据,看到模拟变化,而不是数据。
不要只是看看,动手自己做一次。右键一下,还有好些功能。就和大家分享到这里,希望对你有用。
在完成本文后,又实验了直接添加集成逻辑分析仪ILA IP核的方法,也就是入门续里面。
Vivado下的集成逻辑分析仪ILA 入门相关推荐
- Vivado下集成逻辑分析仪ILA入门续
在 Vivado下集成逻辑分析仪ILA入门 一文中带着读者走了一遍集成逻辑分析仪ILA的使用过程.当时通过Set up Debug 添加需要监控的点,间接添加了ILA, 本文介绍另外一种方法,直接添加 ...
- Vivado中ILA(集成逻辑分析仪)的使用
Vivado中ILA(集成逻辑分析仪)的使用 一.写在前面 二.ILA(Integrated Logic Analyzer)的使用 2.1 ILA查找 2.2 ILA配置 2.2.1 General ...
- FPGA — Vivado下ILA(逻辑分析仪)详细使用方法
使用软件: Vivado 开发板: EGO1采用Xilinx Artix-7系列XC7A35T-1CSG324C FPGA 使用程序:按键案例 ILA详细使用方法 一.ILA简介 二.ILA的使用方法 ...
- vivado下ila文件的读取和显示
保存ila文件 file-->export-->export ila_data.可以保存为ila格式或者vcd格式 (可以在modelism下转化为wlf文件后打开查看波形.) 打开保存后 ...
- windows下nodejs express安装及入门网站,视频资料,开源项目介绍
windows下nodejs express安装及入门网站,视频资料,开源项目介绍,pm2,supervisor,npm,Pomelo,Grunt安装使用注意事项等总结 第一步:下载安装文件 下载地址 ...
- VS集成Qt开发入门(简易时间显示)
VS集成Qt开发入门(简易时间显示) 软件开发入门 开发环境 简单时间显示(LcdNumber) ui界面设计(clock.ui) 工程文件(clock.h,clock.cpp) 头文件clock.h ...
- 音视频开发(4)---Windows下Red5安装与使用入门
Windows下Red5安装与使用入门 简介 Red5是一个采用Java开发开源的Flash流媒体服务器.它支持:把音频(MP3)和视频(FLV)转换成播放流: 录制客户端播放流(只支持FLV):共享 ...
- 使用在线路线逻辑分析仪ILA调试模块的小技巧
在CSDN这个BLOG中我详细给出了如何在VIVADO中插入在线逻辑分析仪进行信号获取.这里再记录一下自己用的一个小技巧: 实例化一个统一的多款口大位宽的ILA,在多处使用. 我们在一个模块内插入IL ...
- .NET环境下每日集成
本系列主要介绍了.Net环境下如何使用CruiseControl.Net进行每日集成 .NET环境下每日集成(1):简介 .NET环境下每日集成(2):CruiseControl.Net安装 .NET ...
最新文章
- OSPF虚拟链路实验
- Linux服务器下安装配置Nginx的教程
- ubuntu安装WPS
- Spring的IoC与AOP的理解
- ubuntu apache php mysql phpmyadmin_Ubuntu下Apache+PHP+MySQL+phpMyAdmin的快速安装步骤
- 【TensorFlow-windows】keras接口——卷积核可视化
- 具有弹性效果的ListView
- 【算法分析与设计】桶排序
- python网站开发实例 flask_python-flask框架web服务接口开发实例
- 如何使用“启动转换”从 Mac 上移除 Windows?
- 教程——sumolympics
- 算法工程师面试常见问题
- matlab画带方差的柱状图,带方差的柱状图
- linux漏洞分析,Spring-data-commons(CVE-2018-1273)漏洞分析
- 初步了解区块链技术落地——FISCO BCOS 快速搭建区块链
- 【GT跑车】GT跑车是什么意思 GT跑车有哪些
- 电脑突然没有网络,发现电脑无法打开WiFi列表,打开设备管理器,发现intel(R)wireless-ac 9462感叹号
- 金手指(通达信公式 主图 源码 测试图)箱底 箱顶 短趋势线 中趋势线 压力位 支撑位
- Python爬虫实战:抓取淘宝MM照片
- 097 《终结拖延症》简记
热门文章
- HTML生日快乐代码 (粉色主题)(HTML5+CSS3+JS)520表白代码/七夕情人节网页/告白/求婚/生日快乐...
- php做网站步骤_php建一个网站步骤
- 前端学习笔记之CSS3基础语法与盒模型(二)
- mac 文字识别软件ocr_Easy Screen OCR Mac版(Mac文字识别效率助手)V1.1 最新版
- 【文件md5值查看方法详解】:如何获取文件的唯一标识?
- Qt助手(assistant):方便查找Qt类
- 如何自己申请免费的通配符证书(基于 Let‘s Encrypt 的免费证书)
- Onvif/RTSP摄像头直播中云台控制
- RK3288芯片资料技术案例分享
- RNA核糖核酸修饰荧光染料|HiLyte Fluor 488/555/594/647/680/750标记RNA核糖核酸