原文: 《Reveal in Crosslink》
作者: Srikanth Chekoti
大纲
- Reveal概述
- Crosslink中的Reveal
- 怎样在Crosslink中使用Reveal
- 测试DEMO
Reveal
什么是Reveal?
- FPGA的片上调试工具
- 所有逻辑容量大于1200 LUTs的LATTICE器件,包括Crosslink, ECP3/5, Mach XO2/3都可以使用它。
- 通过JTAG接口与PC通讯
- 包含两个主要组成部分:
- Reveal Inserter
- Reveal Analyzer
Reveal Inserter
- 可包含被跟踪的调试信号
- 可加入触发信号及触发条件
- 其于触发单元和触发表达式的触发架构
- 可以指定需要捕获的数据量
Reveal Analyzer
- 内嵌的逻辑分析仪
- 将Reveal Inserter工程中设置的触发条件对要跟踪的信号进行捕获,然后将捕获的数据传到PC上。
- 通过JATG接口给一个已编程器件配置触发设置和更准确的信息。
- 依据设置显示捕获的数据
ECP和MachXO系列器件中的Reveal
- 使用专用的JTAG IO口
- 不需要手动指定JTAG脚,Diamond软件会自动分配JTAG引脚。
Crosslink中的Reveal
- 在Crosslink中没有专用的JTAG引脚
- Diamond不会自动分配JTAG引脚,需要手动的指定TCK、TDI、TDO、TMS引脚到GPIO上。
设计流程
- 创建/打开一个Lattice Diamond工程。
- 创建/配置一个Reveal Inserter
- 添加Reveal Inserter,对Crosslink而言即指定软JTAG管脚
- 生成比特流并烧写FPGA
- 创建/打开Reveal Analyzer
- 运行Reveal Analyzer
打开或者创建Diamond工程
- 在File菜单点击”New->Project”创建新的Diamond工程
- 在File菜单点击“Open->Project”打开一个已有的Diamond工程
- 以运行在Master Link Board开发板上的 2:1MIPI CSI-2 聚合桥接DEMO为例
创建或者打开一个Reveal Inserter工程
- 在Crosslink中添加Reveal的步聚跟在其它器件中添加Reveal的步骤是一样的。只是需要手动指定JTAG引脚。
- 创建一个新的Reveal Inserter, 可以点击Reveal Inserter按钮图标或者点击菜单 Tools->Reveal Inserter
配置 Reveal Inserter
配置 Reveal Inserter
- 添加要追踪的信号
- 图中的reset_n_i, byte_clk_o 和 byte_data_i 信号将会被捕获
- 指定采样时钟
- 在这个例子中,我们将用PLL产生一个Reveal 采样时钟。
- 指定存储信号的缓冲深度
-本例中选择的采样缓冲深度是512
设置触发单元
- 如图采用reset_n_i信号的上升沿进行触发
- 也可以手动触发
设置触发表达式
保存Reveal Inserter
将Reveal Inserter 添加到diamond工程中
- 在crosslink器件上没有专用的JTAG接口
- 当Reveal被插入到设计中时工具会自动添加软的JTAG逻辑到工程中。
- 需要手动指定引脚
点击 OK 按钮以继续
请确保Reveal Inserter处理**active状态。
- 如果Reveal Inserter处理**状态,这个reveal inserter文件的名字将会高亮加粗
- 在一个Reveal Inserter文件上右击选择“Set as Active Debug File”将Reveal插入到设计中。
分配软JTAG的管脚
- 综合设计,然后用Spreadsheet指定软JTAG的IO管脚
- 也可以用LPF文件进行约束
- 软JTAG管脚可以使用任意的IO
- 如果Reveal被取消**,那么JTAG管脚将会被自动移除
- 需要使用HW-USBN-2A或者HW-USBN-2B的下载线
- 图中使用Bank0作为JTAG IO
- JTAG_TCK -> F2(CLK_SCL)
- JTAG_TDI -> J2(CLK_SDA)
- JTAG_TMS -> J1(SPISO)
- JTAG_TDO -> H1(MCLK)
生成比特流Bitsteram
- 余下的步骤都是和其它器件一样
烧录FPGA
- 使用Reveal Analyzer,需要器件上运行了Reveal Inserter
- 打开Programmer对器件进行编程
- 如果你扫描到的器件是MachXO3LF而不是Crosslink,那和换个别的端口试一试。
- 烧录FPGA的过程状态如下图
连接USBN-2A/2B下载线
- 把下载线的TCK、TDI、TDO和TMS与板子上的对应引脚连接起来。
- 下载线的GND和VCC也要连上,将VCC连到JTAG管脚所在的VCCIO上,本例中VCC连到VCCIO0上。
启动Reveal Analyzer
创建Reveal Analyzer
- 点击 Reveal Analyzer的快捷图标按钮创建一个新的Reveal Analyzer工程。
- 或者通过点击菜单 “Tools -> Reveal Analyzer”进行创建
运行Reveal Analyzer
- Reveal Analyzer的界面如下
点击图中红色框标出的开始按钮以运行Reveal Analyzer
第一次配置Reveal Analyzer需要选择正确的触发条件,然后等待条件发生。
- 一旦Reveal Analyzer运行,如果触发条件一直没有满足,Reveal Analyzer将会始终处理Running状态,如下图
- 可以点击下图中的红色按钮停止运行
如果触发条件满足,Reveal Analyzer将会显示捕获的数据,如下图
-
下图是一个非常常见的错误,请作如下检查:
- 确保器件已经烧录了包含有Reveal Inserter的程序,并且程序已经在运行。
- 检查Reveal的采样时钟频率
- 检查JTAG下载线和下载线的连接状态
- USB2.0 Mini-B的下载线是不被支持的
- USB2.0 Mini-B的下载线是不被支持的
- 如果问题仍然没有解决,可以试试下面的步骤
- 打开Windows的任务管理器,然后点击进程选项卡
- 右键点击“cableserver.exe”,然先选择“终止进程”
- 最大化Reveal Analyzer
- 点击菜单Desing -> Cable Connection Manager,打开Cable Connection Manager。
- 点击”Detect”按钮扫描Lattice编程下载线
- 在检测到可用的下载线之前,OK按钮都是被禁用的。
- 一旦Cable Connection Manager 检测到下载线,请点击’OK’按钮
- 最后运行Reveal Analyzer
更多关于Reveal的信息
- 可以在Diamond的Start Page页找到Reveal User Guide and Troubleshooting Guide 获取更多关于Reveal异常处理的信息