问题描述
Spartan-3器件有一个名为IDCODE的配置寄存器。它是什么,我如何访问它?
解决/修复方法
IDCODE寄存器是一个配置寄存器,与同名的JTAG寄存器分开。比特流的开头包含一个命令,该命令将表示目标器件的IDCODE的值写入此IDCODE寄存器。将此值与表示器件的真实IDCODE的内部常量进行比较。如果这些值相同,则可以继续配置。如果它们不同,则比特流定位错误,配置停止,INIT引脚变为低电平。因此,不可能将Spartan-3器件配置为用于不同器件尺寸或架构的比特流。
要通过SelectMAP端口读取IDCODE寄存器(无法通过串行模式进行回读),SelectMAP端口必须在配置后保留(设置BitGen选项“-g Persist:Yes”)。这会强制配置引脚在配置完成后保留其功能。
在( Xilinx XAPP452 ):“Spartan-3高级配置架构”中,您可以找到IDCODE寄存器的地址(“01110”)以及类型1数据包的详细信息。这是流程:
1.发送同步字(0xAA995566)。
2.发送命令以读取IDCODE寄存器。数据包包含类型(“001”),读操作(“01),地址(”00000000001110“),RSVD位(”00“)和字数(”00000000001“)。这会产生32位包头:0x2801C001。
3.发送全0的32位字以刷新目标器件的命令管道。这可确保配置逻辑正确处理读命令。
4.对一个CCLK周期取消置位/ CS和/ RDWR,并将数据总线置于三态状态。
5.断言/ CS。
6.从SelectMAP数据总线读取IDCODE – 每个周期一个字节,持续四个周期。
没有回复内容