基于fpga电子密码锁的设计内容摘要:
要从 约束、综合、布局布线、 RTL 级代码等环节上找原因,也可以借助时序分析工具找原因。 ( 9) 时序分析 使用 EDA 软件的时序分析功能能够分析所有时钟的频率、周期、关键路径和其他所有时钟路径上的延时信息,进行建立时间和保持时间分析和输入到输出、输入到寄存器、寄存器到输出的延时分析等,从而可以找出不满足时序关系的原因所在。 时序分析是一个辅助功能,有时可以不做。 ( 10) 器件编程 指将适配后产生的编程文件下载到 FPGA/CPLD 器件中。 下载的过程就是一个改写器件内逻辑结构的过程,故称之为编程。 下载使用专用的编程器或者下 载电缆。 器件的编程接口一般使用 10 针 JTAG 插座。 习惯上,对 CPLD 器件的下载叫编程,对 FPGA 器件的下载叫配置。 CPLD 器件基于 E2PROM 工艺或者 FLASH 工艺,掉电后信息不丢失。 而 FGAP 器件基于 SRAM 查找表工艺,掉电后编程信息会丢失,在下次上电后需要重新加载编程文件。 配置方式有多种模式,较常用的是 PS 模式 (调试时用 )和使用配置器件模式 (产品中使用 ),他是使用一个 EPROM 型的配置芯片,先将编程数据烧写到配置芯片中,配置芯片跟 FPGA 使用专用接口引脚相连。 这样,上电后配置芯片自动给 FPGA 加载编程数 据。 也可使用单片机进行配置。 ( 11) 系统验证 先将 FPGA 芯片在测试板上进行功能验证,然后再到实际系统中验证。 系统验证通过后就可以在产品中使用。 至此, FPGA 芯片设计完成。 现在说明系统设计与模块设计的关系。 上述的 FPGA 设计流程是一个具体设计的通用流程,对一个系统适用,对一个模块也是相同的。 一个模块可以划分为多个子模块,子模块又可以再分。 可以将模块看成一个子系统单独进行描述与仿真,但模块设计必须满足系统对他的要求。 模块设计相对简单,所以有些步骤可以省去,如系统行为描述与仿真等。 是否可省视具体情况而定。 系统 与模块的关系是:系统是顶层模块,他调用各个模块并将这些模块连接起来,然后作为一个整体进行 FPGA 设计流程的处理。 第三章 电子密码锁的设计思想 系统原理框图 本系统由主控芯片( FPGA),键盘,显示电路,报警电路和开 /关门电路组成,而主控芯片又可分为按键处理部分,控制部分和译码显示部分。 系统原理框图如图 所示: 图 系统框图 总体实现原理 本系统有 8 个按键, K0,K1,K2,K3,K4,K5 代表数字 09 共 10 个数字和 1 个确 认键, 1个复位键。 密码长度为四位,并且固化在锁内,输入正确密码后,按确认键即可开门,本系统设置为 LED D7 灯亮。 在输入密码的过程中,当用户键入错误密码时,报警灯 LED D0 灯亮。 按下复位键,可使报警停止,同时清除所有密码显示。 第四章 芯片主控 设计 FPGA 有限状态机 本设计是通过 FPGA 有限状态机来实现,设计有限状态机最开始的工作时要确定电路,包括哪些状态,比如某个电路包括四个状态, S0,S1,S2,S3。 然后对所有状态给出一个状态编码,比如为状态 S0 赋予编码 00,为状态 S1 赋予编码01,为状 态 S2 赋予编码 10,为状态 S3赋予编码 11。 状态编码是状态的标识,保存在寄存器当中,对于此编码形式,只需一个 2 位的寄存器就可以了。 FSM Encoding Style 主要有: Binary Encoding One Hot Encoding Gray Encoding 键盘 按键处理 主控部分 译码显示 显示 开 /关门电路 报警电路 FPGA 表 二进制与一位热码的特性比较 状态机可以认为是组合逻辑和寄存器逻辑的特殊租户,它一般包括两个部分:组合逻辑部分和寄存器逻辑部分。 寄存器用于存储状态,组合电路用于状态译码和产生输出信号。 状态机的下一个状态及输出,不 仅与输入信号有关,而且还有寄存器当前所处的状态有关。 设计流程 本次密码锁的设计,有限状态机应该包括以下状态:密码为输入前的等待状态、输入密码时的等待状态、输入密码正确时的通过状态、输入密码错误时的警报状态。 图 主有效状态机的状态转换图 其中当密码输入时又可包括以下状态,正常输入状态、异常输入状态(包括命令状态)、输入确认状态。 下面的图(图是在程序编译后, toolsNetlist_VewersRTL Vewer 得到的)表示了密码输入的时候的次状态机,表示了 4个密码输入的顺序状态,以及输入完成后的等待确认状态。 图 次有效状态机的状态转换 状态编码 状态编码主要有二进制编码、格雷编码和一位独热编码等方式。 格雷编码时,相邻状态每次只有一个比特位产生变化,这样减少了瞬变的次数,也减少了产生毛刺和一些状态的可能。 采用一位独热编码,虽然多用了触发器,当可以有效节省和简化组合电路。 对于寄存器数量多而逻辑相对缺乏的 FPGA 器件来说,采用一位独热编码可以有效提高电路的速度和可靠性,也有利于提高器件资源的利用率。 将产生状态的组合逻辑电路和用于保存状态的寄存器分别写在不同的always 块中。 其中主要包括:输出控制部分、警报计时部分、锁打开后的计时部分、比较密码部分、记录密码部分和记录错误次数的部分 密码的输入 本次密码锁的密码输入采用 FPGA芯片上的 8位单个按键 ,考虑到按键数目不够,采用了一位按键作为功能转换按键;即前 5位按键输入 0~4,同时按下功能转换按键时,按键 0~4 即转换为按键 5~9,这就弥补了按键数目的不足。 最 后两位按键设定为确认输入按键和复位按键。 密码输入完成后可以按确认键检验密码的正误,报警、输入错误或者其他情况可以按复位按键重新输入。 另外由于按键的时候同时会引起状态机的转换,所以如果按键的时候对按键判断次数过多会产生状态的过快转换,记录的密码和数码管的显示就同时会出现错误,因此在按键部分加入了消除多重按键的程序,只检测一次按键的下降沿,解决了这个问题。 密码记录与比较 程序设定了一个寄存器用来记录输入的密码。 当次有效状态机(即密码输入的状态机)发生转换并且有密码输入时,程序会记录下输入的密码在寄 存器的其中 4 位里面,最后次有效状态转换到确认密码的状态时,会将记录下的密码与固化在锁内的密码进行对比,正确即将主状态机转换到通过阶段,错误则将状态机转换到报警阶段。 其中正确错误的状态转换是通过控制相应的标志位实现的。 密码的显示 密码显示采用数码管动态扫描显示,初始时显示密码为 4位 0,当输入密码后数码管的第一位、第二位、第三位、第四位会依次显示输入的密码,错误后复位可以重新输入。 密码显示采用的是记录密码的寄存器的数据,显示扫描的扫描时间设置为 1ms 左右,这样显示不会出现闪烁或者残影。 第五章 编程、 编译与 仿真 本节主要是阐述设计在 Quartus II 软件中实现编译与仿真。 在 Quartus II 在输入源程序后,我们需要建立一个工程,在工程中我们要把设计文件加入工程中;然后选择仿真器和综合器类型值得注意的是如果选择默认的“ NONE” ,表示选择 Quartus II 软件中自带的仿真器和综合器,结合自己的设计,在此我选择默认项“ NONE”;最后选择目标芯片。 在“ Family”栏选择芯片系列,在此我选择“ Cyclone”系列再选择此系列的具体芯片 EP1C6Q240C8。 工程建立以后,可以进行源程序的编 译。 选择“ Processing” Start Compilation,启动全程编译。 编译后产生的报告如下所示: 图 编译后产生的统计报告 编译成功后,就可以进行波形的仿真。基于fpga电子密码锁的设计
相关推荐
al strobe : std_logic。 begin process (sysreset,reset0,on_off0) begin if (sysreset=’ 1’ or reset0 = ’ 1’ ) then strobe = ‘ 0’。 elsif (on_off0’ event and on_off0 = ’ 1’ ) then strobe = not strobe。 end
WHEN 0010 = 发送第 2 位 IF (clkbaud_tras = 39。 139。 ) THEN txd_reg = txd_buf(0)。 txd_buf(6 DOWNTO 0) = txd_buf(7 DOWNTO 1)。 南昌航空大学学士学位论文 14 state_tras = state_tras + 0001。 END IF。 WHEN 0011 = 发送第 3 位 IF
_tinmeout)then count_k_end=39。 139。 else counter_k=Counter_k+1。 end if。 end if。 end process Count_key。 Count_alarm:process(Enable_count_a,clk) begin if(enable_count_a=39。 139。 )then counter_a=39。 039
和在编写程序简单,把 13 脚直接 GND; 14 脚串行数据输出端作为芯片级联端,实现更多数据的级联。 硬件电路总体设计实现 本课题设计用的是 88 的双基色点阵屏,使用四块点阵屏经过设计组合成的 1616 LED 点阵屏用来显示汉字和图片,所谓的 1616,是每一个汉字在纵、横行各用 16 像素点的区域内显示,满足了本次设计的要求。 由于本次使用的点阵屏是双基色的,所以要用 四个
.....................................43图 43 原信号频谱图(线性幅度) ................................................................................................43图 44 测试信号波形 ................................
可以实现三输入( F′、G′和块外信号 H1)的任意布尔函数。 由函数发生器生成的信号 F′或 H′可以被连到X 输出端, G′或 H′可以被连到 y 输出端。 从而使一个 CLB 可以实现两个独立的多达四变量的任意函数,或单个 五变量任意函数,或一个任意的四变量函数连同一个五变量函数,或多达九变量的一些函数。 在单一逻辑块上实现如此宽的逻辑函数