基于随身FPGA的密码锁设计
实验题目:基于随身 FPGA 的密码锁设计
1. 课程简要信息
课程名称:数字系统设计
课程学时: 56
项目学时:课内 2学时、课外8学时
适用专业:信息与通信工程
学生年级:大二年级第一学期
2. 实验内容与任务(限 500 字,可与“实验过程及要求”合并)
项目需要完成的任务(如需要观察的现象,分析某种现象的成因、需要解决的问题等);是否设计有不同层次的任务。
本实验包括基础密码锁模块、创新“硅指纹”模块和扩展功能模块三个阶段任务,以及方案设计、仿真分析、测试验证三个平行任务。具体内容和任务分别如下:
(1)密码锁模块
此模块用于实现基本的密码锁功能,包括密码输入、密码显示、错误密码计数、密码比较、开锁结果指示等。实验任务是设计、实现各子模块,并对其进行仿真分析和测试验证。
(2)“硅指纹”模块
此模块用于实现新型“硅指纹”密码升级功能,包括“硅指纹”生成、指纹密码纠错等。实验任务结合实验板的资源情况,自行选择合适的“硅指纹”方案,设计、实现稳定的“硅指纹”密码电路。
(3)功能扩展模块
此模块用于实现密码锁功能的开放式扩展,例如,添加密码设置功能、多用户密码功能、开锁后的资产存取功能等。实验任务是结合市场调研和生活经验,自行选择有卖点的扩展功能,并设计实现或优化改进密码箱电路设计。
上述三个阶段任务均需分步骤完成以下内容:
首先,对目标电路进行功能分析、分解、原理设计;
然后,在 EDA 平台上描述所涉及的电路模型,并进行仿真分析;
接着,将所设计的电路模型烧录到实验用 FPGA 开发板,并测试电路功能;
最后,根据测试结果整理设计优化方案。
3. 实验过程及要求(限 300 字)
如对学生在实验过程中在需求分析、资料查询、自学预习、思考讨论、方法设计、进程规划、软件仿真、平台构建、器件选择、表格设计、现象观察、数据测试、问题分析、总结报告、验收答辩、演讲交流等各方面的要求。
1)知识巩固:通过新型密码锁系统的设计与展示,强化对数字系统设计课程知识的理解,以及对多学科交叉知识的综合运用,包括但不限于掌握组合逻辑电路、时序逻辑电路的基础知识,理解“硅指纹”原理及其与数字电路相关知识体系的联系;能够在教师的引导下自主学习“硅指纹”、检错纠错算法等新知识,主动拓展所学知识与科技前沿之间的内在联系;
2)团队协作:要求学生以团队协作方式开展实验,由 2-3 人组队,根据实验内容拆解任务、制定计划、实施任务,并以小组为单位撰写实验报告、展示交流实验成果;
3)外显过程:要求学生主动学习、有序学习,通过文档整理、会议交流等形式把学习和实验过程外显,体现过程价值;
4)探索创新:要求学生大胆想象,敢于尝试与众不同的新思路、新方法,鼓励创新、允许失败;
5)经济实用:要求学生具有工程思维,兼顾高性能、低成本和实用性;能够根据实验任务和实验开发板参数,设计精巧的密码锁电路,具备对复杂数字系统的模块拆分和整体优化能力。
4. 相关知识及背景(限 150 字)
项目涉及所需的知识方法、实践技能、应用背景、工程案例。
在经典密码锁实验为基础上增加了“硅指纹”功能,涉及数据选择器、译码器、数据比较器等组合逻辑的基本知识,以及哈希运算等密码学的交叉学科知识;“硅指纹”电路正向利用了数字电路在工程实践中的时延现象,既能反映实际电路的非理想运行问题,又能训练辩证思维能力;基于随身FPGA 的数字电路设计,可训练精益求精的工匠精神。
5. 实验环境条件
项目实施需要实验资源,包括实验装置功能、实验仪器设备、设计软件工具、主要电子元器件等。
(1)硬件环境
硬件平台需要计算机、FPGA开发板、USB传输线。其中,FPGA采用 MAX10 FPGA开发板,如图 5-1 所示,该板集成了 Altera 公司 MAX10 系列的 10M08SCM153/10M02SCM153 芯片;采用 DIP40封装,小巧携带、易于扩展;板载资源包含 4 路轻触按键、4 路拨码开关、8 路 LED、2 路 RGB LED三色灯、2位7段数码管以及 36路可扩展I/O;采用集成板载编程器和下载器,使用 Micro-USB数据线完成开发板的供电与下载。10M08SCM153/10M02SCM153 包含 8000/2000 个逻辑资源,最大172KB/12KB 闪存,378KB/108KB RAM,2 路 PLL,24/16 路硬件乘法器,112 路 GPIO,支持DDR2/DDR3L/DDR3 存储器等。

图 5-1 MAX10 FPGA 开发板
(2)软件环境
本实验需要用到的软件工具主要包括 FPGA 开发软件采用 Quartus Prime、FPGA 仿真软件ModelSim等。此外,可选用 KiCad、Eagle等软件完成制版绘图。
6. 教学目标与目的(限 150 字)
如学习、运用知识、技术、方法等;培养、提升技能、能力、素质等。
将“硅指纹”、密码学知识融入实验教学,扩展知识维度,训练学生对综合知识的创新应用能力;基于简易FPGA上的有限数字逻辑资源完成丰富多样的密码锁功及展示效果,可训练学生解决复杂工程问题的能力和精益求精的工匠精神;通过多学科知识交叉融合、课堂讲授与课下自学的适当搭配等,使实验更加具挑战性、趣味性、灵活性。
7. 教学设计与实施进程
课堂知识讲解、方法引导、背景解释;实验中的方法指导,问题设置、思路引导等。教学模式、实验渠道、研讨主题、观察节点、验收重点、质询问题等方面设计等。实验实施进程的各个环节(如任务安排、预习自学、现场教学、分组研讨、现场操作、结果验收、总结演讲、报告批改等)中教学设计的思路、目的,教师、学生各自需要完成的工作任务,需要关注的重点与细节。
本实验引导学生综合运用所学数字电路知识,并与交叉学科知识相融合,完成具有前沿性、趣味性、创新性、实用性的数字系统设计,达到提升学生综合素质的目的。具体包括:
(1)加深数字系统基础知识的全面理解:本实验涉及数字系统与数字逻辑的多个主要知识点,包括组合逻辑、时序逻辑、竞争冒险、数据存数、数据运算等,通过对这些知识点的全方位、系统化复习,可加深学生深入理解课程知识体系架构。
(2)提升数字系统设计的工程实践能力:本实验紧密结合科技前沿,引入的“硅指纹”模块具有新颖性和挑战性,对学生的自主学习能力、解决复杂工程问题的能力提出更高要求。通过分阶段的任务设计,循序渐进地训练提升学生的工程实践能力。
(3)融入工程伦理教育和辩证思维培养:本实验鼓励学生基于简易 FPGA 开发板实现尽量丰富的密码锁功能,以此训练学生精益求精的工匠精神。同时,“硅指纹”本身利用了电路运行的非完美参数,帮助学生理解事物的两面性,培养其辩证思维能力。
本实验遵循以人为本的设计理念,一方面通过结合科技前沿提升实验的趣味性,激发学生的创新激情;另一方面,通过由简单到复杂、由基础到扩展的分阶段实验任务划分,保护学生的成就感和自由探索意识。具体思路如下:
(1)基于自主学习的基础知识储备:教师推荐数字系统基础知识、“硅指纹”基础知识资料清单,由学生自行收集、整理、学习相应资料,为理解实验要求、完成实验设计奠定基础;(2)基于小组协作的实验实施:教师制定实验目标、实验任务及考核要求,由学生自行组队,协作完成实验设计、代码实验、仿真分析、测试验证、展示说明等工作,并完成实验报告、多媒体资料的制作。(3)基于项目答辩的实验验收:教师组织验收会议,由每个小组准备答辩资料并共同完成演示解说、现场答辩等,所有学生均为答辩评委打分,并可为喜欢的作品投票,相应评价结果将作为最终评价的参考。
本实验的实施周期为 3个教学周,共计约10个学时。其中,密码锁基本功能模块的设计与实现分配 4 个学时,“硅指纹”模块的添加分配 4 个学时,其他扩展功能模块分配 2 个学时。具
体实施步骤如下:
(1)相关理论知识的复习和自主学习:数字系统的相关理论知识、EDA 软件的操作使用已在前期的课堂授课过程中完成学习;“硅指纹”相关知识要点、参考资料等由教师发布在教学平台,学生自主查阅、学习。
(2)实验题目发布及实验要求讲解:教师将具体实验任务发布在教学平台,并在课堂上详细讲述实验要求、考核方式,保证学生能够理解实验目标、实验内容、阶段任务指标等。
(3)实验实施:以小组为单位完成实验,在此过程中,教师和助教全程指导、即时答疑。
(4)实验验收:以小组为单位验收实验。首先,收取实验报告,通过教学平台对实验报告进行批阅。然后,组织现场验收,由学生完成胶片、海报或视频,并出现场展示、讲解实验效果,并由全部学生完成对不同作品的打分评价。
8. 实验原理及方案
实验的基本原理、设计依据、完成任务的思路方法,可能采用的方法、技术、电路、器件。
【密码输入/输出模块】
建议采用 6~8 位十进制密码。由于所用实验板只具备拨码和拨码开关两种二进制数输入端口,需要设计 BCD 编码器将输入的二进制序列转化为十进制密码序列。若使用按键开关作为密码输入,还需设计按键开关的抖动消除电路。此外,可使用 1 个拨码开关指示密码输入结束;使用 1 个 7 段数码管顺序显示十进制密码;使用 1个7段数码管指示错误密码的输入次数。
【逻辑控制模块】
密码锁的控制模块主要完成密码设置、开锁两个基本功能的切换控制。
可使用一个拨码开关描述密码设置/开锁状态,例如,当拨向高电平时,表示处于开锁状态,此时可输入开锁密码,进行开锁操作;当拨向低电平时,表示处于设置状态,此时可以设置密码。
可使用1个RGB 三色 LED 灯描述密码锁的状态,例如,当显示绿色时,表示正常可开锁状态;当显示黄色时,表示正处于密码设置状态;当显示红色时,表示禁止使用/锁定状态。
【开锁功能模块】
开锁模块的主要功能是比较输入的开锁密码与预设的开锁密码,例如,如果是混淆的开锁密码,则显示开锁成功,同时发送报警信息;如果是正确的开锁密码,则显示开锁成功;如果是错误的开锁密码,则提示密码错误,并记录密码错误的次数,当输入错误密码超过 3 次,发出警报并禁止密码输入。
可使用一个RGB 三色灯描述密码输入后的结果,例如,当显示绿色时,表示开锁成功;当显示黄色时,表示发布预警;当显示红色时,表示开锁失败。
【“硅指纹”密码模块】
密码模块的主要功能是存取开锁密码。为更好地保护数字密码,增强密码安全性,本实验使用掉电即失的“硅指纹”密码替代传统密码。
设置密码(即密码注册)时,将“硅指纹”电路的即时响应R 映射为辅助码A;如果设置多个密码,可将多个不同的 R 映射为多个不同的辅助码A。开锁(即密码使用)时,利用“硅指纹”电路的即时响应 R’和辅助码 A 产生开锁密码 K,如图 8-1 所示。该方案的优势是不需要存储密钥,用完密码即消失,增强了密码安全。

图8-1 “硅指纹”密码的设置与使用原理
“硅指纹”生成电路的主要功能是可根据不同的挑战(Challenge,C)激励输入,生成不同的响应(Response,R)密码输出;C 可由外部输入或预存储。
“硅指纹”也被成为物理不可克隆函数(Physical Unclonable Function,PUF),其基本原理是利用数字电路的微小制造差异形成具有随机性的数字序列,具有多种不同的实现方式,例如常见的仲裁器结构、环形振荡器结构、静态存储器结构等。以仲裁器 PUF 为例,如图8-2 所示,该电路由多组二选一数据选择器和一个仲裁器组成。其中,仲裁器一般可采用 D 触发器或 RS 锁存器。当一个上升沿信号输入到PUF 电路后,信号会分成两路并沿着两条完全对称的路径到达仲裁器。理想状态下,由于上下两条路径完全对称,故两路信号应同时到达仲裁器。然而由于芯片制造过程中存在随机工艺误差,两路信号不可能同时到达。根据两路信号到达仲裁器的先后顺序,仲裁器输出 0或1。重复改电路模块可获得多位密码。

图8-2 仲裁器 PUF原理图
模糊提取器主要用于实现稳定的密码输出。由于环境变化、电路老化等因素,PUF 电路的输出结果可能存在随机差异,为保证生成密码的一致性,可使用模糊提取器对每次输出结果进行检错和纠错。常用的纠错编码方式包括重复码、汉明码、BDH 码、Polar 码等。以 8 位重复码纠错机制为例,如图 8-3 所示,在密码设置阶段,使用 8 位重复码与 $R$ 进行异或运算,生成辅助码 $A$ ;在密码使用阶段,将新生成的 $R$ ’与辅助码 $A$ 进行异或运算可以发现哪些位置上的数码存在差异,对这些
位置上的数码进行翻转,即可得到一致密码。

图8-3 模糊提取器的一种简单实现原理
【整体方案与步骤】
实验方案与实验步骤由学生自行组织,这里提供一种示例方案及步骤。

图8-4 功能划分及整体架构
整体功能构成如图8-4所示,包括密码锁基本功能模块、“硅指纹”模块、输入输出模块。实验板配置如图8-5所示,使用按键开关作为控制输入、拨码开关作为密码输入、单色LED显示器用于数字显示、3色LED用于状态指示。

图 8-5 STEPFPGA 开发板的输入与输出设置

图 8-6 电路工作流程
电路工作流程如图8-6所示,上电后加载PUF的激励输入,自动生成响应密码序列,并通过模糊提取电路检测、纠正密码序列中的随机错误得到正确密码;PUF 密码与输入密码相比较,如果密码错误,将记录错误次数,例如,设置三次密码输入机会,超过三次将锁定设备;如果密码正确则判定是否为混淆密码,如果是混淆密码,则显示输出混淆数据,同时报警;如果是正确的用户密码,则显示输出真实的用户数据。此外,还可设置其他功能,例如,对用户真实数据的加解密功能、修改用户数据功能等。
基于上述设计,可参照如下要点验证电路功能:
(1) 用户上电后,设备生成“硅指纹”数字序列,通过存储的“硅指纹”数字序列与校验码生成的辅助数据修正“硅指纹”数字序列,同时设备进入待机状态,屏幕指示三次密码输入次数,如图 8-7(a)所示。

(a) 设备待机状态 (b) 密码错误,还有 2 次机会(2) 用户使用数据输入薄码开关和确认键输入密码后,随密码输入失败次数的增加,密码警报灯会增加亮起数量,失败次数达三次后,锁定设备无法解锁,如图 8-7所示。

图 8-7 密码输入显示
(3) 用户利用删除键修改输入内容,输入用户密码后,设备解锁(状态指示灯为绿色),屏幕显示真实的用户数据,如图8-8(a)所示;若用户输入混淆密码,则设备报警(状态指示灯为红色),同时显示混淆数据以迷惑“小偷”,确保用户真实数据资产的安全性,如图 8-8(b)所示。

图8-8 密码锁开锁后的数据显示状态
(4) 用户在正确解锁后,使用功能键实现修改用户密码、修改数据、修改混淆数据功能切换。为保证混淆密码和用户密码的非重复性,当其中一个密码被用户修改为另一个密码时,系统会拒绝执行此操作并亮起密码警示灯,要求重新修改密码。

(a) 修改用户数据(将 66 改为 22)

图 8-9 数据或密码修改界面展示
(5) 用户密码与混淆密码均为 4 位十进制数,用户数据为 2 位十进制数。当单次输入数据超出 0-9 范围时,交互屏幕显示横线要求重新输入。
9. 实验报告要求
需要学生在实验报告中反映的工作(如:实验需求分析、实现方案论证、理论推导计算、设计仿真分析、电路参数选择、实验过程设计、数据测量记录、数据处理
分析、实验结果总结等等),如:
实验报告采用书面报告和多媒体报告两种形式。其中,书面报告详细阐述实验原理、设计思路、实施步骤、结果分析等内容,完整呈现学生对实验内容的理解程度、对实验实施的熟练程度;多媒体报告则以海报、胶片、视频等形式呈现实验效果,更生动直观地展示电路功能、性能。
实验报告可包括但不限于对以下内容的阐述:
1)实验方案设计:包括功能模块划分、FPGA 资源分配方案等;
2)实验电路原理:包括整体电路结构、各功能模块的电路设计图等;
3) 实验代码设计:包括整体代码框架、各模块代码框架、核心代码示例等;
4) 仿真结果分析:包括仿真波形图及相应功能性分析、可靠性分析等;
5) 调试结果分析:包括 FPGA 板上电路调试结果及分析、主要测试流程及结论等;
6) 实验特色创新:包括实验设计的特色、创新点、先进性等;
7) 实验组织过程:包括团队分工、组织形式、进度安排等;
8)实验反思展望:包括经验总结、收获、展望、后续计划等。
10.考核要求与方法(限 300 字)
考核的节点、时间、标准及考核方法。
本案例采用多元考核评价机制,综合评估学生的创新探索能力、工程实践能力、合作交流能力、自主学习能力等综合素质,并注重过程考核。根据学生的实验报告、现场操作、展示介绍等方面的表现进行综合考评,并引入组内互评、组间互评机制,促进小组协作成效以及学生之间的学习交流。此外,将思政要素融入考评体系,通过在实验报告及现场展示中设置总结与感想模块,引导学生自主发掘实验实施过程中的经验、教训及对自身的启发。
考评成绩包括教师评价成绩 $4 0 % +$ 小组互评成绩 $3 0 %$ ,并通过投票方式选出前 $1 0 %$ 的设计作为优秀实验,给予额外 $1 0 %$ 的成绩奖励。剩余 $2 0 %$ 的成绩为过程考察成绩,即是否按时提交阶段作业、是否按要求撰写实验报告、是否遵守教学纪律等。
11.项目特色或创新(可空缺,限 150 字)
(1)以科技前沿激发创新激情:通过引入“硅指纹”的新概念,帮助学生打开思路,提升实验兴趣和创新激情。(2)以学科交叉扩展课程价值:“硅指纹”是数字电路与密码技术的交叉应用,帮助学生更好地理解课程价值。(3)以实践训练承载课程思政:在随身 FPGA 上完成尽量丰富的工程设计,可训练学生精益求精的工匠精神。