關於Xilinx FPGA如何獲取FPGA的Device DNA

2021-01-09 電子發燒友
關於Xilinx FPGA如何獲取FPGA的Device DNA

Evening 發表於 2021-01-02 09:44:00

作者:Evening

Xilinx每一個FPGA都有一個獨特的ID,也就是Device DNA,這個ID相當於我們的身份證,在FPGA晶片生產的時候就已經寫死在晶片的eFuse寄存器中,具有不可修改的屬性,因為使用的是熔斷技術。值得說明的是,在7系列及以前,這個ID都是57bit的,但是在Xilinx的Ultraslace架構下是96bit。

FPGA的DNA我們一般的使用場景是用於用戶邏輯加密。一般來說,用戶在邏輯上可以通過特定的接口把這個Device DNA讀取出來,經過一系列加密算法之後和預先在外部Flash存儲的一串加密後的字節串做比較,這個flash存儲的加密後的字節串也是由該DNA經過加密後得到,fpga加載程序後可以先從flash讀出該段字節做比較,如果相同,則讓FPGA啟動相應的邏輯,如不同,則代表該FPGA沒有經過用戶授權,用戶邏輯上可以關閉FPGA的邏輯功能甚至可以通過一些手段讓硬體損壞。

如何獲取FPGA的Device DNA呢,下面我從JTAG和調用源語兩個方法說明,並開放核心代碼供大家參考。

第一種,通過JTAG獲取,這種方法在ISE的Impact或者vivado都可以實現,下面介紹在Vivado下如何或者Device DNA,這個其實很簡單,首先板卡通過JTAG連接PC,在Flow Navigator -> PROGRAM AND DEBUG 界面下,點擊對應的FPGA的晶片,點擊Hardware Device Properties,在search中搜索dna,在REGISTER下可以找到Device DNA,在Impact下如何獲取DNA網上有相應的文章,這裡就不做進一步介紹。

第二種,用戶邏輯通過調用源語獲取,至於源語是什麼,這裡跟大家分享一個技巧,一般我們使用源語的時候,往往記不住大量的源語定義,那麼如何快速搜索到我們想要的源語呢,在Vivado中,有一個功能是Language Templates,在Flow Navigator可以找到,裡面包含了基本所有的Xilinx提供的源語和一些語法用法,以DNA讀取為例,我們搜索DNA,就可以找到關於DNA的源語,由於博主用的是VU9P的片子,所以用的是DNA_PORTE2這個源語,針對7系列及以前,使用的是DNA_PORT源語,這兩個源語都可以在Language Templates找到。

接下來說一下這個源語和源語相關的使用方法,這個源語本質上就是讀取FUSE寄存器表裡面的FUSE_DNA寄存器,裡面還包含了一個移位寄存器,源語中的接口本質上都是操作移位寄存器,這個移位寄存器的長度和器件類型有關,是56或者96bit。源語裡面的READ信號,是用於把DNA的值裝載到移位寄存器裡面,DIN是移位寄存器的輸入,DOUT是移位寄存器的輸出,SHIFT是移位寄存器的移位使能,CLK是移位寄存器的操作時鐘,官方提供的源語模型和時序圖如下,

 

對於用戶來說,調用這個源語,我們只需要按照操作移位寄存器的流程操作就好了,我們目的是讀出源語裡面的移位寄存器的值,所以我們設計的思路應該是首先拉高READ先讓移位寄存器裝載DNA的值,然後在時鐘上升沿使能SHIFT,這樣子就能讓移位寄存器裡面的值移位出來,下面是核心代碼:
module dna_read(
input sys_clk,

input dna_read_rdy,
output [95:0] dna_read_dat,
output dna_read_vld);

wire dna_dout;
wire dna_read;
wire dna_shift;

DNA_PORTE2 #(
.SIM_DNA_VALUE (96'd0)
)DNA_PORTE2_inst(
.DOUT (dna_dout),
.CLK (sys_clk),
.DIN (dna_dout),
.READ (dna_read),
.SHIFT (dna_shift)
);

reg [95:0] dna_reg = 0;
reg [7:0] dna_cnt = 0;

always @ (posedge sys_clk)
begin
if(dna_read_rdy) begin
dna_cnt end
else begin
dna_cnt end
end

// load dna data from the fuse dna register
assign dna_read = dna_cnt == 8'd63;
// for ultrascale
assign dna_shift = (dna_cnt >= 8'd100) && (dna_cnt

always @ (posedge sys_clk)
begin
dna_reg end

assign dna_read_dat = dna_reg;
assign dna_read_vld = dna_cnt == 8'd196;
endmodule

這是一個axis總線的模塊,在dna_read_rdy拉高表示外部準備好接收數據,這時候模塊讀取DNA的值,然後送出去給外部模塊,外部模塊收到數據和dna_read_vld信號,則拉低dna_read_rdy,完成一次dna數值傳輸流程。

編輯:hfy

打開APP閱讀更多精彩內容

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容圖片侵權或者其他問題,請聯繫本站作侵刪。 侵權投訴

相關焦點

  • fpga應用領域_fpga應用三個主要方向
    FPGA簡介   FPGA(Field Programmable Gate Array)於1985年由xilinx創始人之一Ross Freeman發明,雖然有其他公司宣稱自己最先發明可編程邏輯器件PLD,但是真正意義上的第一顆FPGA晶片XC2064為xilinx所發明,這個時間差不多比摩爾老先生提出著名的摩爾定律晚
  • 賽靈思推出Spartan-6 FPGA系列
    欲了解更多信息,請訪問www.xilinx.com/cn/services。  如欲了解有關新推出的Spartan-6器件以及如何開始設計的更多信息,系統架構師、設計經理和工程師可以訪問www.xilinx.com/cn/6,或請直接聯繫賽靈思銷售代表。
  • 如何在FPGA中實現狀態機
    它們之間的差異僅在於如何生成狀態機的輸出。Moore狀態機的輸出僅為當前 狀態的函數。典型的例子就是計數器。而Mealy狀態機的輸出是當前狀態和輸入的函數。典型的例子就是Richards控制器。  定義狀態機  當需要定義一個狀態機時,首先要繪製一張狀態圖。狀態圖可用來顯示狀態、狀態間的轉換和狀態機的輸出。
  • 基於DSP和FPGA的機器人聲控系統設計與實現
    語音識別器的作用是將當前語音輸入變換成語音特徵向量,並對語音庫的模板進行匹配並輸出結果,語音應答輸出函數將獲取的語音識別結果對應的語音應答輸出,語音訓練是將多個不同年齡、不同性別、不同口音的人語音指令輸入轉化為訓練庫的模板。為防止樣本錯誤,每個人的語音指令需要訓練2次,對於2次輸入用用歐氏距離去進行模式匹配,若2次輸入相似度達到95%,則加入樣本集。
  • 零基礎學FPGA(七)淺談狀態機
    本文引用地址:http://www.eepw.com.cn/article/267960.htm  關於狀態機呢,想必大家應該都接觸過,通俗的講就是數電裡我們學的狀態轉換圖。狀態機分為兩中類型,一種叫Mealy型,一種叫Moore型。前者就是說時序邏輯的輸出不僅取決於當前的狀態,還取決於輸入,而後者就是時序邏輯的輸出僅僅取決於當前的狀態。下面兩個圖分別表示兩種不同的狀態機。
  • 基於Spartan-6 FPGA的Sinc3 Filter設計
    濾波器相關文章:濾波器原理 fpga相關文章:fpga是什麼 濾波器相關文章:濾波器原理 電源濾波器相關文章:電源濾波器原理
  • 用FPGA實現FFT算法
    基4和基2基4和基2運算流圖及信號之間的運算關係如圖1所示:(a)基4蝶形算法 (b)基2蝶形算法  以基4為例,令A="r0"+j fpga相關文章:fpga是什麼
  • 基於fpga二維小波變換核的實時可重構電路
    項目背景及可行性分析本文引用地址:http://www.eepw.com.cn/article/266432.htm  2.1 項目名稱及摘要:  基於fpga二維小波變換核的實時可重構電路  現場可編程門陣列為可進化設計提供了一個理想的模板
  • 高雲半導體FPGA系列面世 為國產FPGA注入活力
    fpga相關文章:fpga是什麼
  • 基於FPGA高精度浮點運算器的FFT設計與仿真
    fpga相關文章:fpga是什麼
  • OFDM系統中DAGC的應用研究及FPGA實現
    fpga相關文章:fpga是什麼
  • fpga/cpld - fpga_電子產品世界
    fpga 文章
  • 基於FPGA的RCN226絕對式編碼器通信接口設計
    fpga相關文章:fpga是什麼 伺服電機相關文章:伺服電機工作原理
  • 基於FPGA的無損圖像壓縮系統設計
    fpga相關文章:fpga是什麼
  • 一種基於FPGA的實時紅外圖像預處理方法
    濾波器相關文章:濾波器原理 fpga相關文章:fpga是什麼 濾波器相關文章:濾波器原理 電源濾波器相關文章:電源濾波器原理
  • 基於FPGA的巴特沃茲IIR數字帶通濾波器設計
    濾波器相關文章:濾波器原理 fpga相關文章:fpga是什麼 濾波器相關文章:濾波器原理 低通濾波器相關文章:低通濾波器原理
  • Xilinx FPGA支持MIPI接口的兩種方式
    MIPI分為CSI(Camara sensor interface)與DSI(Display interface) 電氣特性1.low power model 0-1.2V 單端電壓;2.high-speed model 0.1-0.3差分 jedec xilinx
  • FPGA開發外設子板模塊電路設計詳解
    fpga相關文章:fpga是什麼
  • 基於FPGA IP核的FFT實現
    fpga相關文章:fpga是什麼
  • 基於FPGA的結構光圖像中心線提取
    具體操作是:先用兩個RAM存儲器存儲兩行數據,等到第三行到來時,再將前兩行的數據讀出來,之後用9個寄存器存儲這9個數據,以保證數據的同時獲取[10]。存儲結構見圖2所示。 fpga