一、AJE2JTAG文档CLK时序描述
1、1.6.2.2 延时校准章节描述
该章节描述TCK进行校验,开启RUNTEST_CALIBRATION后,是为了验证Anlogic_Calibration(),如下:

2、代码理解
/* process runtest num tck */
void Anlogic_ProcessRunTestTck(int num)
{
int i = 0;
TDI_Wr(0);
TMS_Wr(0);
#ifdef RUNTEST_CALIBRATION
for (i = 0; i < num; ++i)
{
TCK_Wr(0);
TCK_Wr(0);
}
#else
for (i = 0; i < num; ++i)
{
TCK_Wr(1);
TCK_Wr(0);
}
#endif
#ifdef AJE_DEBUG
printf("RUNTEST %d TCK;\n", num);
#endif
}
void Anlogic_WritePulseTck(void)
{
TCK_Wr(1);
TCK_Wr(0);
}
这个函数按照文档描述,会产生一段脉冲,时间最少为1ms,但是文档上时序图是持续高电平维持在1ms以上?但是看代码这段脉冲应该是一直拉低才对呀?


图1 整个波形

图2 波形头部

图3 波形尾部
3、下载验证
将开发板的TDO、TDI、TMS、TCK接到外部MCU的GPIO上(模拟JTAG),其映射管脚如下:

FPGA生成的bin文件,通过Device Chain转成SVF文件,然后通过小工具转成aje格式文件,理论上不需要其他条件限制,转换成功结果如下:

然后将led_crt.aje文件导入到MCU的SD卡中,上电后,测试结果如下:

测试结果显示能读到led_crt.aje文件,但是显示数据验证失败,请问是什么环节出了问题?


版主
博主,你可以看看这个有什么问题吗?目前逻辑分析仪监听TDO是无应答信号。
FPGA的SVF文件设置,如下:
还有一个问题,关于时延的问题,这个函数有什么需要特殊优化的地方吗?如下
这里我加了各种延时,结果还是一样的效果,TDO无应答信号。博主,你看看还有什么其他问题导致的?ESP32系统信息打印结果如下:
博主,我后面没用开发板,用的是硬件画的板子,提示运行成功,那说明不能在开发板飞线出来进行调试,但是jtag下载时间接近4秒,与PDF描述<1s还是差别很大,这个是什么问题引起的呢?
上图是使用开发板的烧录器抓取的指令,很吻合,所以提示烧录成功。但是我使用ESP32模拟JTAG,重启ESP32读取aje文件,下发数据时使用逻辑分析仪抓取波形发现缺少了第一个命令和第二个命令,直接跳到第三个命令,如下图:
所以我怀疑是不是模拟jtag代码中缺少了发送某些命令导致?希望博主帮忙分析一下,谢谢

