FPGA开发全攻略—— 调试

原文链接:

FPGA开发全攻略连载之十三:FPGA实战开发技巧(12)

 

5.6 大规模设计的调试经验

在大规模设计的调试应该按照和设计理念相反的顺序,从底层测试,主要依靠ChipScope Pro 工具。下面主要介绍ChipScope Pro、FPGA Editor 组件的使用方法。

5.6.1 ChipScope Pro组件应用实例

在赛灵思软件设计工具中,ISE 可集成赛灵思公司的所有工具和程序。ChipScope Pro 也不例外,在ISE 中将其作为一类源文件,和HDL 源文件、IP Core 以及嵌入式系统的地位是等同的。本节在Xilinx Spartan3E-D开发板上实现一个计数器模块,基于该模块详细介绍如何在ISE 中新建ChipScope 应用以及观察、分析数据的详细操作。

例5.6.1 :在ISE 中实现一个8 比特计数器,利用ChipScope 分析其逻辑输出。

(1) 新建用户工程,添加mycounter.v 的源文件,其内容如下所列:
module mycounter(clk, reset, dout);
  input clk;
  input reset;
  output [7:0] dout;
  reg [7:0] dout;
  always @(posedge clk) begin
    if (reset == 0)
      dout <= 0;
    else
      dout <= dout + 1;
  end
endmodule

然后根据电路连接,添加相应的管脚约束。

(2) 综合工程,然后在ISE 工程管理区,单击右键,选择“Add New Source”命令,在弹出的对话框中选择“ChipScope Definition and Connection File” 类型, 并在“File Name” 栏输入ChipScope 设计名称mychipscope,如图5-41所示。

 

添加ChipScope设计示意图

 

 

图5-41 添加ChipScope设计示意图

 

 

测试模块选择界面

 

 

图5-42 测试模块选择界面

 

单击“Next”按键,进入分析文件选择界面,这里会将该文件夹里所有的HDL 设计、原理图设计都罗列出来( 包括顶层模块和全部底层模块),供用户挑选,用鼠标单击即可选中,本例选择mycounter,如图5-42 所示。单击“Next”按键进入小结页面,单击“Finish”按键完成添加。

(3) 双击工程区mycounter.v 下的子模块mychipscope.cdc,可自动打开Chipscope Pro Core Insterser软件,添加触发单元和触发位宽。其中触发类型选为Basic,位宽为8比特;设置采样深度为4096,各步骤如图5-43到图5-46所示。

 

调试工程配置界面

 

 

图5-43 调试工程配置界面

 

 

ICON核配置界面

 

 

图5-44 ICON核配置界面

 

 

触发信号配置界面

 

 

图5-45 触发信号配置界面

 

 

采集深度配置界面

 

 

图5-46 采集深度配置界面

 

(4) 点击“Next”进入网表连接显示页面,如图5-47 所示。其中如果用户定义的触发和时钟信号线有未连接的情况,则图中“UNIT”、“CLOCKPORT”以及“TRIGGERPORTS”等字样以红色显示;正确完成连接后则变成黑色。

 

网表连接提示界面

 

 

图5-47网表连接提示界面

 

点击图5-47 中“Modify Connection”的按键,进入连接页面,时钟和数据的连接如图5-48、图5-49所示。需要注意的是,ChipScope Pro 只能分析FPGA 设计的内部信号,因此不能直接连接输入信号的网表,所以输入信号网表全部以灰色显示。如果要采样输入信号,可通过连接其输入缓冲信号来实现,时钟信号选择相应的BUFGP,普通信号选择相应的IBUF。如图5-48 中所示,选择采样时钟时,选择了CLK_BUFGP。

 

时钟网表连接界面

 

 

图5-48 时钟网表连接界面

 

 

触发网表连接界面

 

 

图5-49 触发网表连接界面

 

连接完成后,单击“OK”按键返回连接显示界面,发现所有提示字符“UNIT”、“CLOCKPORT”以及“TRIGGERPORTS”没有红色,则单击“Return Project Navigator”,退出Chipscope,返回到ISE 中。否则需要再次点击“Modify Connection”按键重新连接。

(5) 在工程中加入UCF 文件,约束时钟、数据管脚位置。为了简化也可以只添加clk 和reset 这两个控制信号的管脚约束,其内容如下:

NET "clk" LOC = "C9" | IOSTANDARD = LVCMOS33 ;
# Define clock period for 50 MHz oscillator (40%/60% duty-cycle)
NET " clk " PERIOD = 20.0ns HIGH 40%;
NET "reset" LOC = "H13" | IOSTANDARD = LVTTL | PULLDOWN ;

(6) 在ISE 过程控制区中双击“Implement Design”和“Generate Programming File”, 可以完成实现以及生成可编程文件,并将设计人员插入的各类核也将被包含在比特文件中。生成配置文件后,双击图5-50所示的“Analyze Design Using Chipscope”图标,可自动打开Chipscope Pro Analyzer 软件。

 

Chipscope Pro Analyzer启动操作示意图

 

 

图5-50 Chipscope Pro Analyzer启动操作示意图

 

(7) 在Chipscope Analyzer 用户界面上点击工具栏上图标“ ”,初始化边界扫描链。等扫描完成后,单击“Device”菜单下“DEV: 0 My Device0(XC3S500E) → Configure”命令选择.bit 文件配置FPGA。
(8) 芯片配置完成后,选择“File”菜单的“Import”命令,可弹出CDC 文件加载页面,选择相应的CDC 文件,将会把所有以“Dataport”的名称修改为综合后的线网名称。
(9) 组合cnt 总线信号。可按住“Ctrl”键,选择多个总线信号,单击右键,选择“Add to Bus”命令,将其组合成相应的总线信号,如图5-51 所示。

 

添加总线操作示意图

 

 

图5-51 添加总线操作示意图

 

(10) 不设定触发条件采集数据。点击工具栏的“ ”图标,开始采集数据。整体结果如图5-52 所示,单击工具栏的“ ”按键,可放大信号,局部结果如图5-53 所示。从分析结果可以看出,本设计在FPGA中成功地完成了8 比特计数器的功能。

 

Analyzer分析结果整体示意图

 

 

图5-52 Analyzer分析结果整体示意图

 

 

Analyzer分析结果局部示意图

 

 

图5-53 Analyzer分析结果局部示意图

 

(11) 设定触发条件采集数据。在“Trigger Setup”栏Match 区域的“M0: Trigger Port0”行的Value 列输入触发条件“0000_0000”,如图5-54 所示。

 

触发条件设置界面

 

 

图5-54 触发条件设置界面

 

点击工具栏的“ ”图标,开始采集数据,可以看到,采集结果的第一个数为0,如图5-55 所示。当然,
用户可以根据需要设置更复杂的触发条件。

 

触发条件设置界面

 

 

图5-55 触发条件设置界面

 

(12) 利用Bus Plot 功能绘制输出信号波形。在工程区双击“Bus Plot”命令,然后在弹出窗口的“Bus Selection”区域选中“dout”,则会将采集数据以图形方式显示出来,如图5-56 所示。由于本设计是8 比特加1 计数器,因此其波形就是幅度为0 到255 的锯齿波。

 

8计数器的波形示意图

 

 

图5-56 8计数器的波形示意图

 

转载于:https://www.cnblogs.com/synow/p/5500416.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/457903.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle创建表空间和用户授权

确定数据文件的存储地址&#xff0c;有两种情况&#xff0c;一个是明确存储地址&#xff0c;一个是跟其他表空间存在一个地方&#xff0c;但是不知道地址&#xff0c;这时候可以根据如下SQL进行查找&#xff1a;select t.* from sys.dba_data_files t where t.tablespace_name…

linux驱动 cdev,inode结构体

前面我们学习了字符设备结构体cdev Linux 字符设备驱动开发 &#xff08;一&#xff09;—— 字符设备驱动结构&#xff08;上&#xff09; 下面继续学习字符设备另外几个重要的 数据结构。 先看下面这张图&#xff0c;这是Linux 中虚拟文件系统、一般的设备文件与设备驱动程…

如何在VS和CB中配置MySQL环境

这里&#xff0c;由于我的MySQL安装在D盘 MY SQL\MySQL Server 5.6该路径下&#xff0c;所以后面的路径均以D:\MY SQL\MySQL Server 5.6开头 在VS中配置MySQL环境 包含目录&#xff1a; D:\MY SQL\MySQL Server 5.6\include 库目录&#xff1a;D:\MY SQL\MySQL Server 5.…

点乘和叉乘的区别_关于延时和混响的区别与专用延时器与混响器的调控技巧

关于延时和混响的区别与专用延时器与混响器的调控技巧延时器与混响器是模拟室内声场声音信号特性的专用设备。在录音节目制作中&#xff0c;延时器和混响器可以在模拟的艺术声场中传递时间、空间、方位、距离等重要信息&#xff0c;并且可以制作某些特殊效果。延时器与混响器工…

rs232读取智能电表_三相电表怎么看度数 怎么计算总电量

现在的三相电表一般都是在屏幕上面直接看&#xff0c;屏幕上面是有文字提示显示的&#xff0c;三相电表的总度数&#xff0c;上面的文字提醒一般是“正向有功总电量”&#xff0c;三相电表一般屏幕旁边都会上翻键和下翻键&#xff0c;可以上下翻开电表里面的数据。如下图所示&a…

android 学习随笔十六(广播 )

1、广播接收者 BroadcastReceiver接收系统发出的广播现实中的广播&#xff1a;电台为了传达一些消息&#xff0c;而发送的广播&#xff0c;通过广播携带要传达的消息&#xff0c;群众只要买一个收音机&#xff0c;就可以收到广播了 Android中的广播&#xff1a;系统在运行过程中…

Azure运维系列 4:安装和使用Azure PowerShell管理云

前面讲到了很多的管理方式&#xff0c;包括Azure中国最近更新的预览版管理门户和Azure云助理&#xff0c;都是非常不错的管理Azure的方式&#xff0c;今天我们再来介绍一种更加高效的管理方式Azure PowerShell。熟悉命令行的朋友都知道&#xff0c;Linux之所以那么好用是因为其…

python2编码_Python2字符编码

我们通常见到的字符串编码主要是三种GB2312/GBK、Unicode、UTF-8。GB2312/GBK是多字节(multibytes)编码的一种&#xff0c;属于“ASCII的加强版”&#xff0c;与之平行的由Big5、ShiftJIS之类的编码各自为政&#xff0c;所有这些用两个字节表示汉字的多字节编码标准统称为ANSI编…

angularJs关于指令的一些冷门属性

我们使用ng的时候&#xff0c;经常会使用到指令&#xff0c;大家所熟知的属性我在这里就不介绍了&#xff0c;讲讲大家没怎么留意的属性 1.multiElement 这是指定指令作用区间的功能&#xff0c;最常用的就是ng-repeat-start和ng-repeat-end了。 2.priority 指令优先级&#xf…

设备模型2

前言 在上一篇中&#xff0c;我们大致描述了LINUX设备模型&#xff0c;我们先来总结一下三要素的关系。 从图中可以看出,Linux设备模型就是"总线、设备、驱动、类"这四个概念之前的相互关系;这也是Linux2.6内核抽象出来的用于管理系统中所有设备的模型图; 简单地描述…

angular自定义指令详解

指令&#xff08;directive&#xff09;是angular里面最核心也是最难懂的东西&#xff0c;在慕课网看了下大漠穷秋老湿的视频&#xff0c;自己百度半天做了一些小test&#xff0c;总算把一切都搞明白了。 先列出学习来源&#xff1a; 指令中controller和link的区别&#xff1a;…

delphi7aes加密解密与java互转_跨语言(java vs python vs nodejs)的RSA加解密问题探讨

多次被问到这样的问题&#xff1a;java服务端的rsa加密操作已经完成&#xff0c;返回一个16进制的字符串给python平台&#xff0c;但是在python进行私钥解密的时候发现行不通。。。。前端python加密&#xff0c;后端用java解密&#xff0c;解不出来还有诸如nodejs从理论上来说&…

利用dft的定义计算dft的matlab程序_CP2K教程系列之静态计算(Pymatflow篇)

本系列CP2K教程是《CP2K菜根谭》的升级版&#xff0c;在旧版基础上添加了如何结合Pymatflow工具简化计算流程的内容。话不多说&#xff0c;本文将为您带来CP2K系列教程中的静态计算部分。静态计算设置静态计算是大多数人接触第一性原理计算后第一次运行的计算类型。很多其它类型…

微软是如何戏耍程序员们的

2019独角兽企业重金招聘Python工程师标准>>> 别用微软的东西。商业目的性太强&#xff0c;千万别被微软牵着鼻子走&#xff0c;血淋淋的教训。微软推出的垃圾多了去了。它什么都想做&#xff0c;很多都没做好&#xff1a; MFC&#xff1a;Win31时代出生&#xff0c;…

3d立体相册特效html网页代码_新闻类网页正文通用抽取器

项目起源开发这个项目&#xff0c;源自于我在知网发现了一篇关于自动化抽取新闻类网站正文的算法论文——《基于文本及符号密度的网页正文提取方法》这篇论文中描述的算法看起来简洁清晰&#xff0c;并且符合逻辑。但由于论文中只讲了算法原理&#xff0c;并没有具体的语言实现…

字节数组转换为图片_每日一课 | Python 3 TypeError:无法将“字节”对象隐式转换为str...

将Python 2套接字示例转换为Python 3whois.py import sysimport sockets socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.connect(("whois.arin.net", 43))s.send((sys.argv[1] "\r\n").encode())response ""while True: data s.re…

加速度计和陀螺仪数据融合

本帖翻译自 IMU&#xff08;加速度计和陀螺仪设备&#xff09;在嵌入式应用中使用的指南。这篇文章主要介绍加速度计和陀螺仪的数学模型和基本算法&#xff0c;以及如何融合这两者&#xff0c;侧重算法、思想的讨论介绍本指南旨在向兴趣者介绍惯性MEMS&#xff08;微机电系统&a…

循环嵌套练习题

//BOSS://让用户输入一个奇数&#xff0c;打印菱形&#xff0c;最长的行内容个数为用户输入的个数&#xff0c;并且由英文字母拼接而成//比如用户输入了7// A// ABA// ABCBA// ABCDCBA// ABCBA// ABA// A//1、接收并判断用户输入的是不是数字 try{#region 解法一…

python leetcode_leetcode 介绍和 python 数据结构与算法学习资料

for &#xff08;刚入门的编程&#xff09;的高中 or 大学生leetcode 介绍leetcode 可以说是 cs 最核心的一门“课程”了&#xff0c;虽然不是大学开设的&#xff0c;但基本上每一个现代的高水平的程序员都修过这门“课程”&#xff08;或者类似的课程&#xff0c;比如数据结构…

IOS 为UILabel添加长按复制功能

IOS 为UILabel添加长按复制功能 在iOS中下面三个控件&#xff0c;自身就有复制-粘贴的功能&#xff1a; 1、UITextView 2、UITextField 3、UIWebView UIKit framework提供了几个类和协议方便我们在自己的应用程序中实现剪贴板的功能。 1、UIPasteboard&#xff1a;我们可以向其…