前言
我带着新的系列又来了,之前的自动化代码审计工具还会在之后分享实际编写的过程思路以及代码。
新的系列是硬件安全,非常庞大的知识体系,我只是分享部分我所学习到的。会包括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表示。
接着用表格表示这些数据之间的关系