日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

硬件安全系列 逻辑电路基础知识介绍(一)

發布時間:2025/3/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 硬件安全系列 逻辑电路基础知识介绍(一) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

我帶著新的系列又來了,之前的自動化代碼審計工具還會在之后分享實際編寫的過程思路以及代碼。
新的系列是硬件安全,非常龐大的知識體系,我只是分享部分我所學習到的。會包括VLSI Testing ,Hareware Implementation of hash functions ,RSA Implementation and Security,Security Based on Physical Unclonability and Discoder,Hardware Metering,Digital Watermark,Physical attacks and tamper resistance,side channel attacks ,trusted design in FPGAs,security in embedded systems ,security for RFID Tags,Memory integrity protection,hardware trojans.這個框架是由Introduction to Hardware Security and Trust提供的。其中的知識內容會包括coursera中的大量課程以及大量書籍中內容。這一篇的內容包括Hardware Security by GangQu and VLSI CAD Part I: Logic 以及書中內容

首先是邏輯電路部分的基礎知識。

Digital System

數字系統

一個系統可以看作一個黑盒,這個黑盒處理輸入生成輸出,輸入和輸出之間的關系定義為功能。

作為處理現實生活應用的一個數字系統,首先要處理的就是現實和數字之間的關系。現實生活中的信號是連續的,但是數字信號不能完美的復現,所以我們只能將連續的信號分割,用機械化的數字信號近似表示,如同微分。

basic logic gates

基本邏輯門

and xy

or x+y

not ^x

常用的由上述三個基本邏輯門構成的復雜邏輯門

NAND ^(xy)

NOR ^(x+y)

XOR (xy+xy)

XNOR (xy+x^y)

design

將一個實際問題轉換成電路圖我們要明確實際問題的輸入輸出關系列表表示,得到最簡邏輯表達式,選擇觸發器,明確特定輸入,簡化電路圖。

第一步明確實際問題輸入輸出:將所有數據轉換成二進制

第二步列表

第三步得到最簡邏輯關系和對應的電路圖

combinational and sequential

組合與時序邏輯

組合邏輯就是無論在什么時候什么環境相同輸入對應相同輸出

時序邏輯就是相同輸入會對應不同輸出,而相同輸入不同輸出的原因就是時序邏輯中包含了存儲功能,可以存儲狀態。而這不同的狀態就導致相同輸入會出現不同輸出。

combinational例子

設計一個數字電路,判斷輸入月份是否有31天。

首先月份有12個月,1,2,3 … 12。分別用二進制表示就是4位二進制數。從0001到1100。有31天我們用1表示,沒有用0表示。

接著用表格表示這些數據之間的關系

我們尋找ABCD與F的邏輯關系

從現實角度:1 3 5 7 8 10 12我們可以看到7為分界線,7之前都是奇數,8之后都是偶數。8在二進制中是1000,奇數D為1,偶數D為0,7之前A為0,7之后A為1,我們可以猜測ABCDF邏輯關系F=A XOR D

從真值表角度:前7行我們發現D和F一致,7之后D和F為反。7之前和之后的區別在于A從0到1。所以得到F = A XOR D

最后構造電路圖

the different between sequential and combinational in harfware basic memory unit

時序邏輯能夠對相同輸入產生不同輸出的原因就是其中有基本的存儲單元實現狀態存儲

Flip-flop

觸發器

這個觸發器可以看到是兩個輸出兩個輸出,邏輯門是兩個或非門。接下來我們做出真值表

我們可以看到RS輸入是00時,Q和Q‘不能得到答案,

在Q Q’原本是00狀態下輸入00輸出無法穩定

原狀態10輸入00為01

原狀態01輸入00為10

也就是當我們輸入00時,輸出會變成原來輸出的非運算結果。

這個邏輯關系中右半部分可以看到和我們之前分析的二輸入二輸出的邏輯電路圖很像。我們先對右邊進行分析,列出真值表。

同樣的只有輸入11是不確定的,在原狀態為11時,輸出為無法穩定,原狀態10 輸出為10 原狀態01 輸出為01

接下來我們來看看左邊部分電路圖對邏輯的影響:

當CP為0時,無論RS輸入是什么,右邊邏輯輸入都會是00,其余狀態下不影響。也就是我們存在一個接口可以讓我們一鍵控制。

Boolean Decompositions

Shannon Expansion

對于一個函數F(x_1 ,x_2,….x_n),為了得到對于特定x_i的展開式,F可以改寫成 x_i F(x_i=1) + ^x_i F(x_i=0)。當對更多x_i展開時,可以改寫成x_i y_i F(x_i=1,y_i=1) + x_i ^y_i F(x_i=1,y_i=0) + ^x_i y_i F(x_i=0,y_i=1)+ ^x_i ^y_i F(x_i=0,y_i=0) = F(x,y,w,z)從而簡化表達式

Boolean Difference

?f / ?x = f(x_i) ⊕ f(^x_i) (異或 xor 不同就是1 相同就是0)

?f / ?x?y = ?f / ?y?x

?(f ⊕ g) / ?x = ?f / ?x ⊕ ?g / ?x

設定x為1 判斷 f(x) 和 f(^x)

for gate-level: not ?f / ?x = 1 and ?f / ?x = y (y為1,x變則變)

or ?f / ?x = ^y (y為0,x變則變) xor ?f / ?x = 1

首先,異或的邏輯,相同為0,不同為1。有沒有想到什么數學知識。導數,當x改變時,y不變,則導數為0,否則不等于0。在硬件當中,執行異或操作的兩個輸入相同則為0,不同則為1。

所以我們引入?f / ?x = f(x_i) ⊕ f(^x_i) 實現判斷x_i是否影響F

從邏輯門的角度理解,我們得到not這個F一定受x影響(由于not單輸入,輸入改變輸出一定改變),and這個F當y為1時受影響,0不受影響(and邏輯門有0出0全1出1),or這個F當y為0時受影響,1時不受影響(or邏輯門有1出1,全0出0),xor也受x_i影響(由于xor邏輯門同為0,異為1,當改變一個輸入,兩個輸入之間的關系一定改變)

Quantification Operators

首先,介紹定義quantification(量化)。量化就是對一個邏輯輸入賦值,可以是全部,也可以是任意一個。

universal quantification

全部量化

全部量化就是賦值邏輯輸入為全部,也就是對任何x所屬范圍的真實值都滿足量化后條件。

我們舉個現實例子

2 0 = 0 + 0 2 1 = 1 + 1 ……

我們可以歸納成2 * n = n + n對于任意實數滿足條件

在數字電路中,我們可以用下面的形式表示全部量化

(∨x_i F)[x_1,x_2 … x_n]

(∨xy F)[x_1,x_2 … x_n] = (∨x(∨y F)) =Fxy Fx’y Fxy’ Fx’y’

對于所有 x y 都滿足F 為1,也就是x y不影響F

existential quantification

存在量化

相對應的,存在量化就是我們歸納的結果在特定條件下能夠滿足原邏輯。

數字電路中的表示如下

(ヨx_i F)[x_1,x_2 … x_n]

(ヨxy F)[x_1,x_2 … x_n] = (ヨx(ヨy F)) =Fxy + Fx’y + Fxy’ + Fx’y’

存在x y 滿足 F 不受 xy 影響

Network Repair

當一個邏輯門出現問題時,添加一個4輸入的邏輯電路和原輸入進行操作,使得最終結果符合原邏輯。選擇4輸入的原因是我們可以憑借這四個輸入構造所有的邏輯關系。

F是正常操作下的結果,G是當前操作的結果

我們需要做到的是無論F的輸入是什么,我們的G要和F一致

即滿足z = ! (F xor G)

在這個新的關系中,有原輸入a b ,新的輸入d_0,d_1,d_2,d_3,以及輸出z。我們要實現無論a b是什么,要找到d_0,d_1,d_2,d_3滿足最終結果恒為1

即(∨ab,z)[d_0,d_1,d_2,d_3] == 1

Recursive Tautology

遞歸重復

對于上面的修復方法,我們需要知道的是是否所有a b都滿足結果為1。而驗證方法就是遞歸重復。

如果說僅僅是盲目的遞歸重復,毫無疑問,這會是一個極其巨大的工程量。所以我們要用科學的遞歸重復實現目標。

首先,我們要表示邏輯,我們引入PCN

PCN Positional Cube Notation

PCN 是什么,一種符號表示。對于任何輸入,用10/01/11表示,其中01表示x,10表示x’,11表示無影響。

比如:f(a,b,c) = a + bc + ab => {01 11 11},{11,01,01},{01,01,11}

接下來就是如何科學遞歸。

對于一個F總是結果為1,首先要滿足對于其中任意一個輸入都有F(x=0) = 1以及 F(x=1) = 1。也就是我們可以減少輸入的存在從而減少遞歸的工程量。

那么,我們選取哪些輸入以及減少到什么程度時判斷呢。

首先是輸入的選擇

對于F(x=1),我們將包含x’的部分忽略,忽略x的存在,保留其他。因為x=1時,x’=0,在一個單獨的因子中,顯然這個因子會返回0,而在所有因子的集合中,由于是0,所以不用考慮。而x=1在因子中也不占決定地位(and 全一出一有零出零)

對于F(x=0),我們將包含x的部分忽略,忽略x’的存在,保留其他。因為x=0時,x=0,在一個單獨的因子中,顯然這個因子會返回0,而在所有因子的集合中,由于是0,所以不用考慮。而x‘=1在因子中也不占決定地位(and 全一出一有零出零)

然后是判斷開始條件

當存在一個因子恒為1時,成立。當x和x’都單獨作為因子恒為1。

除此之外存在一種狀況我們可以明確得出f不恒為1:f中所有因子包含的元素不存在x 和 x’的關系,即改變x一定會對f造成一定影響。當所有元素取反時,f一定變化。我們將f中所有因子包含的元素不存在x 和 x’的關系定義為unate

由于unate形式的特殊性,當我們無法立馬辨別當前f是否滿足條件時,我們盡量將提取一個元素使得f變成unate形式。同時我們利用F = xF(X=1) + ^x\F(x=0)使得結果具有一致性。

偽代碼

tautology(f represented as cubelist){ //01 10 11if (f is unate){apply unate rulesif(==1) return 1else return 0}else if(x and x'){return 1}else {x = most not unate variable in freturn(tautology(f_x)&&tautology(f_x'))} }


網絡安全學習攻略

總結

以上是生活随笔為你收集整理的硬件安全系列 逻辑电路基础知识介绍(一)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。