嗨,我正在尝试在Zybo
FPGA板的PL区域设计一个系统。
该系统用于在比特流加载完成后回读配置存储器,并对读取数据进行一些计算。
我已阅读7系列FPGA配置用户指南(UG470),并了解到必须在我的HDL代码中使用ICAPE2原语来实现这一目标。
我的困惑如下:
1)使用ICAP时,配置模式引脚M [2:0]不应设置为JTAG模式。
如果我打算在配置后使用ICAP,这是否意味着我不允许首先配置JTAG?
或者我可以使用JTAG编程,但在开始使用ICAP之前,我应该从JTAG模式切换(通过更改配置模式开关/跳线)?
或者我需要先用其他技术(QSPI或SD卡)对比特流进行编程?
2)如果我使用Xilinx集成逻辑分析仪(ILA)来观察行为,那是否意味着我正在使用JTAG资源?
是否进一步认为通过使用ILA进行调试,我阻止了ICAP的操作?
不幸的是,ILA很方便,我不确定还有哪些不使用JTAG的输出转储机制。
3)为了检查前两点,我在Zybo板中实例化了一个ICAPE2原语,并实现了一些简单的模块。
我将ILA探针与ICAPE2实例化的数据输出(信号:icap_data_reg_o),RDWR和CSIB信号连接起来。
并试图观察它。
RDWR和CSIB连接到交换机。
我用JTAG编程,但编程后我将模式引脚跳线切换到其他位置。
我尝试了应该导致ABORT的各种RDWR和CSIB值。
至少可以让我知道ICAP是否正常运作。
但是我没有在输入总线上写任何东西。
但是我得到的输出并不代表ABORT状态。
无论我提供什么作为RDWR和CSIB的输入,32位ICAP输出都保持在FFFF FF9b中。
这里,重要的位是icap_data_reg_o [7:0] = 1001 1011. icap_data_reg_o [31:8]为高(请参阅unnamed.png)。
根据ICAP输出,您能否建议ICAP是否正常运作?
我试图确保在写入整个HDL代码之前读出配置位。谢谢。