非常感谢你的解答!参照《MCU模拟JTAG接口对LATTICE CPLD进行在线编程加载》我已近研究了lattice生成的svf文件,也明白了SIR和SDR的数据的含义,及svf文件所包含的器件程序流程。另外查看JTAG协议文档也明白了JTAG的状态表。Svf文件流程中检查器件ID、编程BSCAN 寄存器、使能编程…….等对于每个生成的文件都是相同的,差异性在于Program Fuse Map编程的内容和Program USERCODE校验的内容。[图片]
我用lattice的deploy工具将jed文件转成hex文件,得到如下数据[图片]
在用你给的.tcl文件将hex变成.C数组数据,就是把hex的数据变成数组,而且数据也是能一一对应的上。[图片]
但是这个bitmap数组中的元素代表什么意思呢?(或者说hex文件中的每一行代表什么意思?),它就是CPLD要编程到地址的数据吗?是SVF文件中Shift in Row = 1中TDI写入的数据吗?我分析发现,svf中要编程的TDI数据行数目和生成的bitmap数组元素数目是一样的,如我的文件都是551行数据,当时数据却对应不上,如Svf的Shift in Row = 1数据为:
SDR 236 TDI (FFF7BFF3DEFFCDEBFF3DFFFFF7FFFFDFFFFF7FFFF7AFFCF7FFFFDEFFCFF);``
Bitmap数组元素的第一个元素为:
FF3FF7BFFFFEF3FF5EFFFFEFFFFFBFFFFEFFFFFBFFFFEF3FF7BCFFDEFFFF
所以我是以bitmap数据为准,把他写入Shift in Row = 1中就可以了吗?还是它还包含了其他信息,把SIR/SDR命令或步骤都包含在里面了?另外如果我把这个bitmap数组直接包含在工程中编译,那么写入的就是一次的cpld程序。如果我把这个数组在上位机上通过串口传入dsp,那么我只要更新数组就可以写入不同的cpld程序是这样吗?本人天生愚钝,还望再次解答,万分感谢!
非常感谢你的回答,我还有一些疑问,可以再解答一下吗?新的问题在本提问下面。
ChipDebug入站需知
如发现帐号发垃圾帖或垃圾评论的一律封号!
ChipDebug是一个芯片开发调试分享网站 欢迎您的到来!如果您没有帐户请先点击下方按钮进行注册
非常感谢你的解答!
参照《MCU模拟JTAG接口对LATTICE CPLD进行在线编程加载》我已近研究了lattice生成的svf文件,也明白了SIR和SDR的数据的含义,及svf文件所包含的器件程序流程。另外查看JTAG协议文档也明白了JTAG的状态表。
Svf文件流程中检查器件ID、编程BSCAN 寄存器、使能编程…….等对于每个生成的文件都是相同的,差异性在于Program Fuse Map编程的内容和Program USERCODE校验的内容。
[图片]
我用lattice的deploy工具将jed文件转成hex文件,得到如下数据
[图片]
在用你给的.tcl文件将hex变成.C数组数据,就是把hex的数据变成数组,而且数据也是能一一对应的上。
[图片]
但是这个bitmap数组中的元素代表什么意思呢?(或者说hex文件中的每一行代表什么意思?),它就是CPLD要编程到地址的数据吗?是SVF文件中Shift in Row = 1中TDI写入的数据吗?
我分析发现,svf中要编程的TDI数据行数目和生成的bitmap数组元素数目是一样的,如我的文件都是551行数据,当时数据却对应不上,如
Svf的Shift in Row = 1数据为:
Bitmap数组元素的第一个元素为:
所以我是以bitmap数据为准,把他写入Shift in Row = 1中就可以了吗?还是它还包含了其他信息,把SIR/SDR命令或步骤都包含在里面了?
另外如果我把这个bitmap数组直接包含在工程中编译,那么写入的就是一次的cpld程序。如果我把这个数组在上位机上通过串口传入dsp,那么我只要更新数组就可以写入不同的cpld程序是这样吗?
本人天生愚钝,还望再次解答,万分感谢!