FPGA DNA 獲取

Hello-FPGA發表於2024-07-19

FPGA DNA

DNA 是 FPGA 晶片的唯一標識, FPGA 都有一個獨特的 ID ,也就是 Device DNA ,這個 ID 相當於我們的身份證,在 FPGA 晶片生產的時候就已經固定在晶片的 eFuse 暫存器中,具有不可修改的屬性。在 xilinx 7series 和 7series 以前,ID 都是 57bit
的,但是在 Xilinx 的 Ultraslace 架構下是 96bit 。

The 7 series FPGA contains an embedded, 64-bit device identifier which is used to provide a 57-bit Device DNA value. The identifier is nonvolatile, permanently programmed by Xilinx into the FPGA, and is unchangeable making it tamper resistant. Each device is programmed with a 57-bit DNA value that is most often unique. However, up to 32 devices within the family can contain the same DNA value. The JTAG FUSE_DNA command can be used to read the entire 64-bit value that is always unique. Device DNA is
composed of bits 0 to 56 of the 64-bit FUSE_DNA value. External applications can access the Device DNA or FUSE_DNA values through the JTAG port, and FPGA designs can access the DNA only through a Device DNA Access Port (DNA_PORT).

意思是說JTAG可以拿到57bit的DNA_PORT和64 bit的FUZE_DNA,DNA_PORT值最多會有32個器件有相同的值,FUZE_DNA就是唯一的。而如果要透過FPGA資源區讀取,只能用DNA_PORT,也就是說你寫邏輯的話得用57bit的DNA_PORT。

如何讀取

JTAG

可以使用 JTAG 檢視當前 FPGA 的 DNA 碼。

其中 FUSE_DNA 即為我們要獲取的 DNA 編碼資訊,copy 即可。

程式碼獲取

呼叫DNA_PORT實現。https://fpga.eetrend.com/files-eetrend-xilinx/download/201408/7594-13761-ug4707seriesconfig.pdf

         DNA_PORT #(
            .SIM_DNA_VALUE(57'h123456789abcdef)  // Specifies a sample 57-bit DNA value for simulation
         )
         DNA_PORT_inst (
            .DOUT(dna_dout),   // 1-bit output: DNA output data.
            .CLK(sys_clk),     // 1-bit input: Clock input.
            .DIN(1'b0),     // 1-bit input: User data input pin.
            .READ(dna_read),   // 1-bit input: Active high load DNA, active low read input.
            .SHIFT(dna_shift)  // 1-bit input: Active high shift enable input.
         );

使用DNA_PORT獲取的DNA和JTAG讀取的DNA對比

參考
https://www.xilinx.com/support/answers/64178.html JTAG 獲取 DNA

相關文章