FPGA PUF 项目使用教程
1. 项目的目录结构及介绍
fpga_puf/
├── rtl/
│ ├── fpga_puf.vhd
│ └── ...
├── sw/
│ ├── main.c
│ └── ...
├── .gitignore
├── LICENSE
└── README.md
- rtl/: 该目录包含项目的硬件描述语言 (HDL) 文件,主要用于定义 FPGA 的物理不可克隆功能 (PUF) 模块。
- sw/: 该目录包含软件相关的文件,例如用于后处理的 C 代码。
- .gitignore: 用于指定 Git 版本控制系统忽略的文件和目录。
- LICENSE: 项目的开源许可证文件,本项目使用 BSD-3-Clause 许可证。
- README.md: 项目的介绍文档,包含项目的概述、使用方法和相关信息。
2. 项目的启动文件介绍
启动文件:rtl/fpga_puf.vhd
fpga_puf.vhd
是项目的核心启动文件,定义了 PUF 模块的顶层实体。该文件可以直接实例化,无需任何特殊库。
entity fpga_puf is
port (
clk_i : in std_ulogic; -- 全局时钟线
rstn_i : in std_ulogic; -- 同步复位,低电平有效
trig_i : in std_ulogic; -- 触发 ID 采样,高电平有效
busy_o : out std_ulogic; -- 采样时忙,高电平有效
id_o : out std_ulogic_vector(95 downto 0) -- PUF ID,采样完成后有效
);
end fpga_puf;
主要功能
- clk_i: 全局时钟输入。
- rstn_i: 同步复位信号,低电平有效。
- trig_i: 触发信号,高电平触发 ID 采样。
- busy_o: 忙信号,采样时输出高电平。
- id_o: 96 位 PUF ID 输出,采样完成后有效。
3. 项目的配置文件介绍
配置文件:sw/main.c
sw/main.c
文件包含了用于后处理的 C 代码,主要用于对原始 PUF ID 进行稳定化处理。
// 示例代码片段
void post_processing(uint8_t raw_id[96], uint8_t stable_id[96]) {
// 对 raw_id 进行多次采样,计算稳定 ID
// ...
}
主要功能
- post_processing: 该函数对原始 PUF ID 进行多次采样,通过计算每个位的稳定值来生成最终的稳定 PUF ID。
通过以上步骤,您可以了解并使用 fpga_puf
项目的基本功能和配置方法。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考