对于Xilinx的FPGA,每一片都有一个专门的ID,就像我们的身份证号一样,每个都不一样,Xilinx也形象的把这个ID叫做DNA。7系列以及之前FPGA的DNA有57bit,Ultrascale FPGA的DNA有96bit,Zynq Ultrascale 的FPGA有两个DNA,PL端一个,PS端也有一个。
image-20211107175639133
DNA都是只读的,我们不可以修改。
有两种方法可以读到这个DNA的值,一种是连上JTAG后,可以直接看到FPGA的DNA信息,以K7为例:
image-20211107165725359
第二种方法就是通过例化DNA_PORT
模块,来获取。
image-20211107170128148
这个模块就是通过移位寄存器来获取,每个时钟移位一次,当移位57次后就可以将DNA数据全部读出。程序比较简单,这里就不展示了。
PS端的DNA就是通过读地址0xFFCC100C、0xFFCC1010 和0xFFCC1014 来获取。