前言
和 Quartus 的 SingleTapII 类似, ISE 也有自己的内置在线逻辑分析仪 Chipscope,在这里记录一下 Chipscope 的主要使用方法,以便以后回顾。
本文使用 UART 串口回环模块进行验证,我们要抓取的信号是子模块 UART_RX 中的波特率计数器:cnt_baud,位宽 13bit,理论计数范围是0~5207,使能 rx_en 拉高的时候进行循环计数。
创建Chipscope文件
首先打开一个已经调试好的工程文件,选择工程文件,右击添加 new source。
选择 chipscope definition and connection file,文件这里就命名为 CS,保存在工程 project 目录下,点击 Next ,下一界面直接点 Finish,完成 Chip Scope文件创建。
配置chip Scope文件
双击打开 CS文件,前面两个界面直接next跳过。
Number of input trigger port 为设置触发接口的数量,这里设置为 1 。TRIGO 是我们设置的触发接口,因为需要抓取的cnt_baud以及使能信号rx_en一共是14bit 。所以这里 Trigger width 设为14bit 。Match unit 是我们使用的比较器的数量。决定了后面触发条件能够设置的复杂程度。这里只需要对 rx_en 判断,所以设为1即可。 Max number of squares levels.默认为16即可,指的是一个信号可以做一个最大16个序列的匹配,也就是说一个信号可以最多匹配16种情况并作为触发条件,设置好后点击 next 。
设置采集信号存储深度。
Chipscope 实际上是在综合的RTL代码中插入RAM,使得数据经过RAM,再通过JTAG数据线把RAM当中的数据传回PC以供观察,所以这里设置的是RAM的深度。需要根据器件的资源合理设置。因为计数器 cnt_baud 最大为 5207 所以这里设置深度为8192,点击next。
设置采样时钟和数据信号。
双击 Clock port 。
在筛选栏中输入clk,点击 clk_BUFGP 再点击make connections ,建立好时钟连接。
选择trigger data singles。在筛选栏中。输入cnt_baud,找到计数器信号。如果高低位顺序和要连接的数据相反,可以点击net name把调整数据高低位顺序。再选中,通道CH0~12, 点击Make a connection 。
同样的方法找到 rx_en 信号,建立连接。完成后点击OK 。
完成 CS文件配置后,返回工程并保存文件。
在线调试
完成以上操作后。在工程文件中重新生成比特文件。连接好开发板并上电。
点击analyze design using chip scope,打开。
点击 ok 。
选择 Configure
点击OK 。
打开触发设置界面,将触发信号改为 rx_en 信号上升沿触发,位置 Position.改为100。
点击启动。
串口发送数据后。显示样本缓冲区已经满了。点击waveform打开波形界面,就可以看到我们采样的点了。
如果波形中显示的bit不全。,可以在左侧的data port中把其他bit信号添加到波形界面。
参考资料:
[1] V3学院FPGA教程