基于Verilog HDL和有限状态机(FSM)架构的FPGA数字门禁控制系统
本项目展示了一种基于DE1-SoC FPGA板采用有限状态机(FSM)构建的安全数字访问控制系统。该系统允许用户通过键盘或开关输入4位密码,硬件验证密码,并通过LED灯、七段数码管、TFT屏幕和蜂鸣器提供反馈。为增强安全性,系统设置了非活动超时功能,以及在连续三次失败后触发15秒锁定机制。整个硬件组件被集成于一个定制的3D打印外壳内,使其成为适用于门禁控制应用的实用FPGA原型系统。
1、我为何要建造这个
该项目最初是作为我的逻辑系统设计作业的一部分而开发的,任务是使用有限状态机和可综合的Verilog HDL设计一个现实世界中的嵌入式控制系统。我选择构建一个安全的数字访问控制系统,因为这是一个实际的安全应用,能够清晰地展示如何利用数字逻辑来控制密码输入、访问验证、失败尝试、超时以及锁定行为。
我不仅想通过仿真完成设计,更希望利用DE1-SoC开发板将项目应用于真实的FPGA硬件,使项目更具实际意义。该系统允许用户输入四位密码,检查密码是否正确,并通过LED灯、七段数码管、TFT显示屏和蜂鸣器提供反馈;连续三次输入错误后,系统将触发15秒的锁定。这使得本任务不再仅仅是基于理论的有限状态机(FSM)设计,最终成果成为了一个可测试并实现物理演示的实用门禁控制原型。
2、项目目标
本项目的主要目标是使用DE1-SoC FPGA板设计并实现一个安全的数字访问控制系统。该系统旨在演示如何利用有限状态机来控制一个实际的安全应用,其中每个输入、输出和系统响应都必须以可靠且有序的方式运行。
该项目旨在创建一个四位密码输入系统,用于验证输入的密码是否正确。用户可通过键盘、滑动开关或按钮输入密码,输入的数字将显示在7段数码管上,并在TFT显示屏上重复显示,以提供更清晰的用户反馈。
另一个目标是通过添加重要的安全保护功能来提升系统的安全性与可用性,例如非活动超时、尝试失败计数、蜂鸣器反馈、LED状态指示,以及连续三次失败后15秒的锁定机制。这些功能有助于使系统更加实用,更接近实际的门禁控制应用。
3、 DE1-SoC FPGA 板载概览
DE1-SoC FPGA 板是一款强大的嵌入式开发系统平台,专为支持嵌入式应用和数字系统设计而开发。该板基于 Altera 系统级芯片(SoC)FPGA 构建,将双核 ARM Cortex-A9 处理器与可编程逻辑集成于同一芯片上。这种集成使设计者能够以高度的灵活性和性能,将硬件与软件功能整合到单一系统中。该板采用 12V 电源适配器,并通过 USB Type-A 到 Type-B 数据线与计算机通信,便于使用板载的 USB-Blaster II 接口在 JTAG 模式下进行编程和调试。
图 1 显示了 DE1-SoC FPGA 板。
图2展示了Cyclone V的器件编号。
在物理布局方面,该电路板具有多种多样的内部组件,如图3(俯视图)和图4(侧视图)所示。这些模型展示了连接器、接口及其他重要硬件组件的位置,有助于系统开发。电路板分为两个主要部分:FPGA(可编程逻辑)部分和硬处理器系统(HPS)部分,分别提供多种功能以实现系统的各项应用。
FPGA部分采用Altera Cyclone5CSEMA5F31C6N器件,并具备一些关键的硬件功能,有助于数字设计的开发与测试:
•使用JTAG模式进行FPGA配置的USB-Blaster II
•64MB SDRAM,带16位数据总线
•四个按钮和十个滑动开关,用于用户输入
• 10个红色用户LED灯和6个7段数码管用于输出指示
• 4个来自车载时钟发生器的50 MHz时钟源
•两个带二极管保护电路的40针GPIO扩展头
•带4针SPI接口的A/D转换器
此外,通过采用基于ARM的处理器和外围设备,在HPS部分提供了嵌入式处理功能:
•800 MHz 双核 ARM Cortex-A9 MPCore 处理器
•1GB DDR3 SDRAM,带32位数据总线
•带RJ45接口的千兆以太网接口
•两个USB主机端口(Type-A)
•用于存储的Micro SD卡插槽
•带I2C接口和中断支持的加速度计
•使用USB Mini-B连接器的UART转USB接口
•温热复位和冷复位按钮
•一个用户按钮和一个用户LED
• LTC 2×7 扩展头
DE1-SoC板是一款功能完整且高度集成的硬件平台,适用于FPGA上的逻辑设计和嵌入式系统开发。其具备丰富的内置外设、输入/输出接口以及良好的可扩展性,非常适合作为实现复杂系统的平台,例如本项目中开发的基于有限状态机(FSM)的安全数字门禁控制系统。
4、DE1-SoC板的原理图
DE1-SoC FPGA 板的方框图如图5所示,展示了系统各部分通过核心 Cyclone V SoC FPGA 核心相互连接的方式。该架构高度灵活,FPGA 可编程,使用户能够构建自己的数字系统,并利用嵌入式处理器执行更复杂的控制和处理任务。总体而言,该方框图呈现了一个高度集成的系统,所有元件均通过 Cyclone V SoC 相互连接。
5、GPIO扩展引脚概述
DE1-SoC FPGA 板具有多个 GPIO 扩展接口,可用于连接外部外设,如图 6 所示。该板提供两个 40 引脚的 GPIO 扩展接口,每个接口均包含 36 个可配置的 I/O 引脚,可直接与 Cyclone V SoC FPGA 相连。除了数据引脚外,每个接口还具备额外的连接功能,具体包括电源连接(+5V,即 VCC5 和 +3.3V,即 VCC3P3)以及地线(GND)。这些电源引脚可直接连接至显示屏、键盘和传感器等外部设备,从而简化硬件配置。然而,必须注意这些供电线路所承载的电流大小:5V 电源的最大电流应不超过 1A,3.3V 电源的最大电流应不超过 1.5A,以确保所连接的外部硬件不会超出安全工作电流范围。
所有GPIO引脚并非直接暴露,而是通过一个串联电阻连接,并由一组与3.3V电源和地相连的二极管进行钳位。该保护电路有助于防止FPGA受到电压尖峰或信号电平异常的影响。如果意外施加超过3.3V的电压,VCC3P3上的二极管将导通并限制电压,而另一侧的二极管则将负压限制在地线上。串联电阻还能限制流入FPGA引脚的电流,从而降低引脚损坏的风险。这种布局使GPIO引脚具有较强的抗干扰能力,当与其他模块配合使用时,只要保持适当的电压电平,即可安全通信。
通常情况下,GPIO扩展接口为FPGA提供了灵活性和保护,使其作为与外设的主要接口。
6、方法论
6.1 整体硬件架构的方框图
图7展示了整体硬件架构的框图。该框图说明了所有输入和输出组件如何连接到DE1-SoC FPGA板,从而构成完整的安全数字访问控制系统。FPGA板位于系统核心位置,作为主要的处理单元,负责处理所有输入信号,根据有限状态机(FSM)实现控制逻辑,并生成相应的输出。在输入端,有多个设备连接到FPGA,包括4x4键盘、内置开关、内置按钮以及三个外部按钮。这些输入设备允许用户输入密码、验证或清除输入内容,以及重置系统。键盘和开关主要用于输入数字,而按钮则用于执行确认和系统重置等控制功能。
FPGA控制输出端的多个显示和指示设备。内置的7段数码管用于显示输入的密码数字,为用户提供即时的视觉反馈。此外,还配备了一个3.5英寸TFT显示屏,用于显示系统更详细的信息,例如状态提示消息。同时,系统还提供一个有源蜂鸣器作为输出设备,当输入错误密码或系统被锁定时,可发出声音提示。
12V电源用于为系统供电,并连接至FPGA板,以确保所有组件的稳定运行。此外,还使用一台配备Quartus II软件的笔记本电脑通过USB接口与FPGA连接,该接口用于对FPGA进行编程、上传Verilog设计以及调试或测试开发过程。
6.2 外部设备原理图
图8展示了外部外设的原理图。该原理图显示了DE1-SoC FPGA板上安全数字访问控制系统在物理上的实现方式,所有外部组件均通过辅助扩展GPIO0和GPIO1接口相互连接。从GPIO0开始,该接口主要用于用户交互设备,包括TFT显示屏和4×4键盘。对于3.5英寸TFT显示屏,分配了多个特定的GPIO引脚用于SPI通信。具体而言,TFT_CS(芯片选中)、TFT_DC(数据/命令选择)、TFT_MOSI(数据输入)、TFT_SCK(时钟)、TFT_LED(背光控制)以及TFT_RST(复位)信号分别连接到不同的GPIO0信号线上。这些互连使得FPGA能够向显示屏传输指令和图形数据,从而显示密码输入、访问授权或错误信息等提示内容。此外,电源连接也已明确界定:显示屏VCC连接至+3.3V,GND连接至电路板地线,以确保系统运行稳定。
4×4键盘也通过一个由八个信号线组成的矩阵连接,这些信号线位于相同的GPIO0引脚上。按键R1、R2、R3和R4用作行线,按键C1、C2、C3和C4用作列线。所有这些线路都被分配到对应的GPIO0引脚上。FPGA通过推高行线并读取列线来控制键盘,从而检测到按键的按下状态。这种扫描技术高效且能最大限度减少所需引脚数量,同时仍可支持16个按键。
该引脚连接至GPIO1,用作控制输入和输出报警信号。外部金属按钮(分别标为button1、button2和button3)连接到不同的GPIO1引脚。每个按钮的其中一个端子连接到一个GPIO引脚,另一个端子接地,并使用上拉电阻确保在未按下按钮时,默认状态保持稳定。通过这些按钮可实现系统复位、密码输入确认或特殊模式触发等特定控制功能。此外,GPIO1上还连接了一个有控制引脚的主动蜂鸣器,其地线连接至GND。当FPGA向该引脚发送高电平信号时,蜂鸣器会发出声音,从而为用户提供即时的音频反馈,例如错误密码提示或锁定通知。
6.3 外部外设引脚分配总结
6.4 车载外设与显示屏的原理图
图9展示了板载外设和显示屏的原理图。除了外部组件外,该设计还利用了DE1-SoC FPGA板上的部分选定的板载外设,以支持并复制系统的功能。板载按键KEY0、KEY1和KEY2通过74HC245缓冲器和施密特触发器电路与FPGA引脚AA14、AA15和W15内部连接,从而实现硬件去抖动和稳定的信号切换。这些按钮为低电平有效,即按下时输出逻辑0,松开时输出逻辑1。在本系统中,KEY0为确认键,用于确认输入的四位密码;KEY1为清零键,用于清除此前输入的所有字符;KEY2为全系统复位键,用于清除已输入的密码以及错误尝试计数器。添加施密特触发器是为了防止按键机械噪声导致误触发。
机载滑动开关 SW0 至 SW9 直接连接到 FPGA 的引脚,如 AB12、AC12、AF9、AF10、AD11、AD12、AE11、AC9、AD10 和 AE12。这些开关具有去抖功能,并对电平敏感。开关采用二进制输入方式,向上(UP)位置输出逻辑 1,向下(DOWN)位置输出逻辑 0。该设计中的开关用于表示数字 0 到 9,可作为替代外部键盘的密码输入方式。在测试和调试时,这一功能非常实用。
为了指示输出,系统使用五个内置LED(LED0至LED4),它们直接连接到V16、W16、V17、V18和W17的FPGA引脚。这些LED为高电平激活,即当接收到逻辑1时才会亮起。LED0表示系统处于空闲或锁定状态;当输入正确的密码时,LED1亮起,此时LED0熄灭。LED2、LED3和LED4用于显示尝试输入错误密码的次数:第一次尝试后LED2亮起,第二次尝试后LED2和LED3亮起,第三次尝试后LED2、LED3和LED4均亮起。当达到第三次尝试时,蜂鸣器也会被触发,发出声音提示,以向系统安全反馈装置提供 audible 警告。
此外,系统内置四个7段数码显示(HEX0-HEX3),用于显示输入的密码数字。每个显示屏由七个段组成,分别标记为HEXX[0]至HEXX[6],通过限流电阻驱动至FPGA输出引脚。这些显示屏采用共阳极方式编程,即逻辑0使某一段点亮,逻辑1使其熄灭。数字按顺序显示,其中HEX3表示第一个输入的数字,HEX0表示最后一个输入的数字。这种布局在用户输入密码时,提供实时且直观的反馈信息。
总体而言,该原理图展示了一种逻辑清晰且便于使用的硬件设计。GPIO0 用于与显示和按键等高交互性组件连接,而 GPS1 则处理较为简单的控制输入和输出指示。通过采用选定的板载组件,系统在提供多种输入和输出方式方面更具灵活性和实用性。这使得即使在没有外部外设的情况下,系统仍可进行测试和运行,同时确保信号处理稳定,并能轻松集成到 FPGA 中运行的基于有限状态机(FSM)的控制逻辑中。
6.5 机载外设和显示屏引脚分配总结
6.6 安全数字门禁控制系统的3D外壳设计
图10展示了安全数字访问控制系统3D外壳设计。该3D设计采用Autodesk Fusion软件创建,旨在为系统所有组件提供紧凑、系统化且易于操作的外壳。外壳尺寸为160.88毫米×178毫米×85.8毫米,预计足够大以容纳DE1-SoC FPGA板及所有外部外设。外壳分为上下两部分,上部(前部)用于安装用户界面,如TFT显示屏、按键和三个外部按钮;下部则用于牢固固定FPGA板。内部布局设计确保FPGA能够紧密贴合在壳体内,无需额外安装空间,从而使系统具备稳定性和简洁紧凑的设计。
图11展示了3D外壳设计的尺寸图,而图12则显示了包含元件布局的3D外壳设计。外壳内还集成了一种线材铰链系统,通过直接将一根1.75毫米的线材嵌入外壳中,作为柔性铰链,确保外壳的两个部分能够轻松开合。该设计无需额外机械铰链,组装简便。在前面板顶部设置了三个圆形孔位,用于安装外部按钮,同时在显示屏下方开有一个较大的矩形开口,以容纳TFT显示屏。显示屏下方另设一个开孔,用于安装按键,使用户的所有输入和输出接口均可方便触及。此外,外壳侧面设有开口,可安装锁具开启装置,以便在调试或故障排查时手动激活电磁锁,从而安全打开外壳,无需依赖电子控制系统即可访问内部线路。
总体而言,外壳设计注重实用性、易用性和集成性。通过将所有组件集成于紧凑结构中,并正确布置输入和输出接口,该设计确保了高效的用户交互,并保护内部硬件。
6.7 3D打印
安全数字访问控制系统外壳采用熔融沉积建模(FDM)3D打印技术设计和制造,为定制化硬件外壳提供了低成本、高效的解决方案。该外壳使用樱花粉PETG线材进行3D打印,因其耐用性、一定的柔韧性以及比标准PLA材料更优异的耐热性能而被选中。打印过程分为两个主要部分:外壳的上部和下部。上部重量约为95克,下部重量约为143克。外壳外表面采用了“模糊纹理”(Fuzzy skin)工艺,这种工艺有意营造出轻微的纹理效果,从而有效减少FDM打印中常见的层间线条可见度。因此,最终成型的外壳外观更加整洁,更接近成品效果。
6.8 外壳中组装硬件的集成
图14展示了组装后的硬件。完成的硬件可用于将所有设计好的组件装配到一个小型功能外壳中,从而构建完整的安全数字门禁控制系统。该外壳由两个主要部分组成:右侧安装DE1-SoC FPGA板,左侧则包含支撑电路、面包板、电磁锁机构和有源蜂鸣器。FPGA板通过固定方式牢固安装以确保稳定性,GPIO0和GPIO1接口使用扁平电缆连接,以便接入外部硬件,如4x4键盘、TFT显示屏以及外部按钮。
总体而言,该系统是硬件的结构良好且现实的实现。系统重量轻,总重量约为700克。
6.9 在DE1-SoC上配置Cyclone V SoC FPGA
DE1-SoC FPGA 板的 Cyclone V SoC FPGA 配置是将设计好的数字系统加载到硬件中的必要步骤。该板主要有两种编程方式:JTAG 编程和主动串行(AS)编程。通过 JTAG 编程,配置生成的比特流可直接通过板载的 USB-Blaster II 接口下载到 FPGA 中。这种方法操作简便,在开发过程中最常用,因为它支持快速测试和调试。然而,这种配置具有易丢失性,即一旦断电,已编程的数据就会丢失,每次开机都需要重新对 FPGA 进行编程。
本项目采用JTAG编程技术,因为在开发和测试过程中非常方便。其设置流程基于一个结构完善的JTAG链,该链作为计算机与FPGA之间的通信通道。图15展示了JTAG链如何通过Cypress CY7C68013A接口,经由MAX II设备(EPM570GF100),连接至USB-Blaster II接口,并最终接入Cyclone V SoC FPGA。
6.10 整体系统流程图
通用系统流程图展示了安全数字访问控制系统从通电到用户交互以及最终输出结果的整个运行过程。该流程图清晰、有序地呈现了系统内各个模块之间的相互作用,例如输入处理、数据处理、状态控制和输出生成等环节。
系统启动时会经过一个初始化阶段,在此期间会等待片刻(约1.3毫秒),以确保所有硬件组件和信号都已稳定。系统初始化完成后,将进入就绪状态,等待用户与系统进行交互。如果在某个时刻按下了复位按钮,系统将重新启动此过程。
系统启动后,会持续检查各种输入源,例如4×4键盘、滑动开关和按钮。键盘采用扫描系统工作,通过依次扫描行和列来识别所按的键位。滑动开关也可作为另一种输入方式,因为它能直接显示所选的数字;而按钮则用于执行提交和清零等控制功能。一旦检测到有效输入,系统即将其标记为数字输入,并进入下一阶段。
数字存储模块是处理所有输入信息的模块。按下清空按钮后,已存储的所有数字将被清除,用户可重新开始输入过程。当输入数字时,系统会按顺序保存最多四个数字。按下提交按钮后,系统会对输入的数字进行分析。若四位密码正确输入,则允许进入,门将自动打开;若密码错误,访问将被拒绝,并且失败次数计数器将增加。当连续失败三次后,系统将进入锁定状态,此后任何进一步的输入操作将被暂时禁用(15秒)。
除了密码验证外,系统还设有空闲计时器机制,以提高可靠性和可用性。当用户处于不活动状态时,计时器会在其重新活跃后重置。若在规定时间内(例如10秒)无任何输入,系统将自动删除已输入的数字。当用户长时间未操作时,系统会进入超时状态,从而避免保存半完成或未完成的输入内容。系统在锁定期间实施延迟,然后允许继续交互,从而提升安全性。
FSM 是该系统的中枢,它通过由七个状态组成的摩尔机(Moore machine)结构来管理所有操作:IDLE(空闲)、ENTRY(进入)、VERIFY(验证)、GRANTED(允许)、DENIED(拒绝)、LOCKOUT(锁定)和 TIMEOUT(超时)。FSM 规定了系统根据输入条件和内部信号如何进行状态转换。例如,当按下数字键时,系统将进入 ENTRY 状态;按下提交按钮后,系统将进入 VERIFY 状态;根据验证结果,系统会转为 GRANTED 或 DENIED 状态。而 TIMEOUT 和 LOCKOUT 状态的切换则由特定条件触发,如无操作或连续失败。每次操作完成后,系统将返回 IDLE 状态,准备进入下一个循环。
最后,系统会根据当前状态产生相应的输出。蜂鸣器提供声音反馈,成功进入、错误尝试、超时和成功时发出不同的声音。LED指示灯显示系统的状态,例如锁定、解锁以及失败次数。视觉反馈则通过7段数码管和TFT屏幕呈现,实时显示输入的数字。
6.11 状态表
安全数字访问控制系统包含一个控制子系统,该系统基于摩尔有限状态机(FSM)架构实现。在摩尔机中,输出仅受当前状态影响,而不受输入信号的影响,从而提高了系统的稳定性,并消除了输入切换过程中的错误。
6.12 状态图
FSM 有七个状态(S0、S1、S2、S3、S4、S5、S6):空闲(S0)、进入(S1)、验证(S2)、授权(S3)、拒绝(S4)、锁定(S5)和超时(S6)。每个状态代表系统工作的一个独立阶段,系统在等待用户激活、认证结果以及安全措施的期间处于该状态。系统从空闲状态开始,并根据诸如 key_valid、提交请求、清除请求和无活动超时等条件输入信号在各状态之间切换,从而确保系统行为具有结构化和可控性。
状态以二进制和一维编码模式表示,以便于FPGA实现和地址工程约束。选择采用一维编码是因为它能提供更快的解码过程和更简单的组合逻辑,从而提升FPGA硬件的时序性能。
状态转换表是根据输入条件列出所有可能状态之间转换的表格。例如,系统只有在检测到提交请求后才会切换到“验证”状态,这意味着未完成的输入将不会被处理。同样,只有在第三次失败时才会切换到“锁定”状态,以实现安全限制。当系统处于无操作状态时,将触发“超时”条件,此时未被监控的输入不会保留在系统中。这些转换也经过设计,以防止出现无效状态、死锁以及意外循环的情况。
输出表具有摩尔机的特性,其输出仅根据当前状态产生,例如授予脉冲、拒绝脉冲和超时脉冲。例如,GRANTED 状态设置解锁信号,DENIED 和 TIMEOUT 状态发送反馈信号。其他状态不产生任何输出,从而实现系统响应的干净与可控。
它提供安全的密码验证功能,连续三次输入错误后锁定账户,并具备非活动时间功能。
FMC与系统中的其他模块密切协作。输入处理模块在将信号输入FMC之前提供稳定的信号,数据路径模块用于存储和比较密码,输出控制模块则根据FMC的状态生成视觉和音频信号。这种同步通信体现了实际数字设计中所必需的系统级集成。
7、结果与讨论
7.1 模拟
使用ModelSim对安全数字访问控制系统进行仿真,以确保在硬件实现前,基于有限状态机(FSM)的设计功能上是正确的。整个仿真的持续时间为4500纳秒,波形将分为五个部分,以便于分析系统在不同阶段的行为。与实际硬件测试不同,仿真环境不受开关弹跳、信号噪声或布线延迟等物理因素影响,因此非常适合用于在受控条件下验证FSM、数据通路以及模块间交互的逻辑功能。
图18展示了从0纳秒到900纳秒的仿真波形。系统初始化发生在仿真开始时(0 ns至900 ns)。复位信号确保了内部寄存器(如数字寄存器、计数器和状态寄存器)被清零。在此阶段,有限状态机处于空闲状态,无任何输出信号被触发,包括允许脉冲、拒绝脉冲和超时脉冲。
图19显示了从900纳秒到1800纳秒的仿真波形。在波形的后续部分,系统开始接收用户输入。digit_valid信号被激活,并监控digit_value信号,表示数字正通过测试平台输入到系统中。每当接收到一个有效的输入时,有限状态机(FSM)会切换到ENTRY状态,数字将依次存储在数据通路中,同时计数器也会递增。
图20显示了从1800纳秒到2700纳秒的仿真波形。随着仿真继续进行,提交信号被接收,导致ENTRY状态变为VERIFY状态。在此阶段,数据通路将比较输入的四位序列与预设密码。波形显示该比较结果正确,由此触发后续的状态转换。如果输入的密码与存储的密码一致,状态机将转为GRANTED状态,并发送授权脉冲信号,表示认证成功。若密码不正确,则状态机切换至DENIED状态,发送拒绝脉冲信号,并增加尝试次数计数器。
图21显示了从2700纳秒到3600纳秒的仿真波形。在进一步的仿真过程中,重复输入错误密码以测试系统的安全特性。如波形所示,每次尝试达到最多三次且失败时,尝试计数器会增加;当计数器达到最大阈值后,有限状态机(FSM)将进入锁定(LOCKOUT)状态。在此状态下,所有输入信号均被忽略,直到锁定期满后方可执行其他操作。
图22展示了从3600ns到4500ns的仿真波形。除了锁存功能外,该仿真还测试了无活动时间机制。当在预设时间段内没有输入活动时,系统将进入TIMEOUT状态。在此状态下,会触发超时脉冲信号,并将数据通路中所有部分输入的数字清除。超时事件发生后,有限状态机(FSM)将返回IDLE状态,准备开始新的输入周期。
7.2 硬件测试结果与讨论
使用DE1-SoC FPGA板对安全数字访问控制系统进行硬件测试,以验证所实现的Verilog设计的实时功能。该系统基于目标状态机(FSM)和数据通路行为运行,接收并检查用户输入。
当系统处于初始状态时,LEDR0 会亮起,系统进入锁定状态。在测试过程中,验证了多种输入方式均能正常工作。系统不仅接收车载滑动开关的输入,还支持外部 4×4 键盘的输入。如图 23(b) 所示,当按下开关 ON SW5 时,7 段数码显示将正确显示数字 5;当在键盘上按下一个键时,同样会显示该数字。这表明系统的两个输入源均已正确集成并映射。外部按钮的功能与车载 KEY 按钮相同,用于确认、清零和复位操作,为用户提供了灵活的系统交互方式。
每个数字按特定顺序输入,如图24(c)所示,所有输入的数字都能清晰地显示在7段数码管上。同时,TFT显示屏能够复制输入的密码,为用户提供了另一种视觉交互界面。这种双屏系统使界面更加人性化,便于用户更轻松地确认输入内容。
点击确认按钮后,系统将开始验证输入的密码。如果密码正确,系统将切换至解锁状态,此时LEDR1亮起,LEDR0熄灭。若密码错误,系统将保持锁定状态,LEDR0持续亮起。无论哪种情况,验证完成后系统都会自动清除已输入的数字,并准备进入新的输入循环。这使得每次认证尝试都像重新开始一样,不留任何残留信息。
系统还显示了对失败尝试和安全的妥善管理。每次输入错误密码时,蜂鸣器会响起,并且失败次数计数器会增加,该信息通过LEDR2、LEDR3和LEDR4指示灯显示。当系统连续三次失败后,将自动停用系统并启动锁定机制,在约15秒内不再接受任何输入。此举旨在确保保护机制正常运行,从而提升整体系统的安全性。
此外,无操作时间选项已得到有效测试。当用户输入数字后未能在规定时间内完成交易时,系统会自动清除输入内容并发出蜂鸣声。这可确保未完成的输入不会被系统保存,从而提高系统的可靠性。同时,蜂鸣声还能对错误尝试和超时等事件提供反馈,使系统更加人性化。
总体而言,硬件测试表明该系统在所需稳定性下正常运行,并符合设计要求。多种输入模式(开关和键盘)、双显示(7段数码管和TFT)以及通过内置和外部按钮实现的统一控制,均证明了该系统的功能清晰且具备高度灵活性。在实际硬件实现中,数字输入、密码验证、自动清零、无操作时间设定、蜂鸣器反馈,以及连续三次失败后15秒锁定等主要功能均运行良好。
7.3 硬件限制
根据硬件测试结果,系统在高可靠性下能够实现其预期功能,但在实际硬件实施过程中发现存在若干实际限制。这些限制主要与系统的物理特性、用户交互以及实时行为有关。
使用外部键盘时,响应时间和输入稳定性是主要限制因素之一。虽然键盘可以正常工作,但在快速按键时,由于信号扫描和去抖限制造成的轻微延迟或不一致问题,有时会影响用户体验,尤其是在需要快速输入数字的情况下。相比之下,内置的滑动开关输入更稳定,但对实际使用环境的适应性较差。
从硬件集成的角度来看,FPGA板、按键、TFT显示屏及其他外设之间使用多个有线连接,可能会引入松动连接或信号干扰等问题,尤其是在安装在机箱内部时更为明显。尽管系统在测试中运行正常,但长期使用可能需要更坚固的布线或PCB集成方案,以提高系统的可靠性。
最后,整体系统尺寸和重量(约700克)使其相比典型的门禁控制设备不够紧凑。这主要是由于采用了DE1-SoC开发板,该板专为原型设计而打造,而非用于最终产品的部署。
简而言之,这些局限性不会影响系统的主功能,但有助于识别未来系统改进的方向,尤其是在用户体验、硬件集成和系统优化方面。
8、结论
总之,本项目成功完成了基于有限状态机(FSM)架构的可安全数字访问控制系统的设计与实现,该系统运行于DE1-SoC FPGA板上。系统采用可综合的Verilog HDL语言开发,并按主要模块进行了设计,包括FSM控制、数据通路、输入预处理、输出控制以及顶层集成模块。
所实现的系统能够有效执行所有必需功能,包括四位密码输入、密码验证、自动清空输入、三次尝试锁定以及无操作超时。根据硬件测试结果,可以得出结论:该系统在实际硬件环境下运行良好。状态机(FSM)能正确地在IDLE、ENTRY、VERIFY、GRANTED、DENIED、LOCKOUT和TIMEOUT等状态之间切换,数据路径(Datapath)可准确存储数字、比较密码并统计尝试次数。已部署的安全措施,特别是15秒的锁定时间间隔和无操作闲置时间,有效确保了系统访问权限仅限于授权用户,并增强了系统的抗干扰能力。此外,时钟使能设计也有助于减少FPGA中的切换活动,并实现更有效的时序控制。
该项目还展示了成功的硬件集成,所有组件被整合进一个专为项目量身设计的3D打印外壳中。整个系统体现了数字设计、硬件实现和物理产品开发相结合的集成嵌入式解决方案。尽管在开发过程中发现了若干限制因素,例如输入延迟较明显、蜂鸣器反馈简单以及使用了开发板硬件,但这些因素对系统的整体功能影响并不显著。
总体而言,本项目展示了基于有限状态机(FSM)概念的数字系统设计知识,以及在FPGA和硬件集成领域的实践经验。
本文编译自hackster.io





