EDA技术与VHDL语言课程设计

合集下载

eda技术与vhdl设计答案

eda技术与vhdl设计答案

eda技术与vhdl设计答案eda技术与vhdl设计答案【篇一:eda技术与vhdl复习练习题】/p> 一、填空题1、pld的中文含义是:________。

2、asic的中文含义是:________。

3、“与-或”结构的可编程逻辑器件主要由四部分构成:________、________、____________和____________。

4、可编程逻辑器件结构图中一般用“x”表示此编程单元为________。

6、可编程逻辑器件结构图中无任何标记表示此编程单元为________。

7、可编程逻辑器件按规模的大小一般分为________和_________。

8、低密度可编程逻辑器件的主要有________和_________。

9、gal器件________取代全部pal器件。

10、pal器件只能________次编程。

11、gal器件能________次编程。

12、gal器件________取代ttl器件。

13、gal器件采用________擦除。

14、pal和gal器件________在系统编程。

15、pal和gal器件需要使用________编程。

二、选择题1、可编程逻辑器件pld的基本结构形式是_______:a:与——与b:与——或c:或——与d:或——或2、可以多次编程的器件是_______:a:prom b:plac:pal d:gal3、pld器件未编程时_______:a:有逻辑功能 b:没有逻辑功能c:pal器件有逻辑功能d:gal 器件有逻辑功能 4、gal器件可以用擦除:a:普通光 b:紫外线c:红外线 d:电5、gal16v8器件的输出引脚最多有______:a:16b:4 c:8 d:206、pal16v8器件的输入引脚最多有_______:a:16 b:4 c:8 d:207、gal16v8不能取代_________:a:pal16v b:74ls138c:74ls373 d:isplsi1032e-70plcc848、gal16v8的_______不可编程:a:与阵列b:或阵列c:输出逻辑宏单元olmc d:a、b都三、判断题1、gal器件的输出逻辑宏单元olmc不能实现pal器件的所有输出形式。

EDA技术-VHDL-四选一数据选择器程序设计与仿真实验

EDA技术-VHDL-四选一数据选择器程序设计与仿真实验

EDA技术-VHDL-四选⼀数据选择器程序设计与仿真实验四选⼀数据选择器程序设计与仿真实验1 实验⽬的(1) 熟悉在QuartusⅡ软件平台上建⽴⼯作库⽂件和编辑设计⽂件的⽅法。

(2) 熟悉创建⼯程⽂件⽅法。

(3) 熟悉编译前设置和启动全程编译设置的⽅法。

(4) 熟悉波形编辑器的使⽤⽅法(5) 熟悉在QuartusⅡ软件平台上对设计进⾏仿真的操作全过程(6) 会⽤VHDL语⾔设计⼀个四选⼀数据选择器。

2 实验原理数据选择器⼜叫“多路开关”。

数据选择器在地址码(或叫选择控制)电位的控制下,从⼏个数据输⼊中选择⼀个并将其送到⼀个公共的输出端。

数据选择器的功能类似⼀个多掷开关,如图3.2.1所⽰,图中有四路数据a、b、c、d输⼊,通过选择控制信号 s1、s2(地址码)从四路数据中选中某⼀路数据送⾄输出端y。

逻辑功能如表3.2.1所⽰。

图3.2.1 四选1数据选择器⽰意图表3.2.1 四选⼀数据选择器逻辑功能表从表3.2.1中可知使能端en=1时,不论a~c输⼊状态如何,均⽆输出(y=1,因为所⽤器件的显⽰电路是共阳极),多路开关被禁⽌。

使能端en=0时,多路开关正常⼯作,根据地址码s2、s1的状态选择a~c输⼊信号中某⼀个通道的数据输送到输出端y。

3 实验内容(1) 建⽴⼀个四选⼀数据选择器的⽂件夹。

(2) 在定义好的VHDL模型中完成四选⼀数据选择器的描述,并创建⼯程。

(3) 设计完成后进⾏全程编译,检查源程序编写是否正确。

(4) 建⽴波形编辑⽂件并对输⼊波形进⾏编辑。

(5) 启动仿真器进⾏仿真,并分析仿真结果。

4 实验预习与思考(1) 进⼀步学习在QuartusⅡ软件平台上建⽴⼯作库⽂件和编辑设计⽂件的⽅法。

(2) 进⼀步学习建⽴波形编辑器⽂件编辑输⼊波形的⽅法。

(3) VHDL语⾔的结构体在整个程序中起什么作⽤。

5 VHDL仿真实验(1)新建⼀个⽂件夹。

本例中⽂件夹名为mux。

(2)输⼊源程序,打开计算机桌⾯上图标。

eda课程设计报告

eda课程设计报告

eda课程设计报告一、课程目标知识目标:1. 学生能理解EDA(电子设计自动化)的基本概念,掌握EDA工具的使用方法。

2. 学生能运用EDA软件进行电路设计与仿真,理解并掌握数字电路的设计原理。

3. 学生了解并掌握基础的硬件描述语言(如VHDL/Verilog),能完成简单的数字系统设计。

技能目标:1. 学生通过EDA软件的操作,培养电子电路设计、仿真与验证的实际操作能力。

2. 学生通过小组合作完成设计项目,提高团队协作与沟通技巧。

3. 学生能够运用所学知识解决实际问题,具备一定的创新意识和动手能力。

情感态度价值观目标:1. 学生在EDA课程学习中,培养对电子科学技术的兴趣和探究精神。

2. 学生通过课程实践,增强自信心和成就感,激发进一步学习的动力。

3. 学生在学习过程中,树立正确的工程伦理观念,认识到技术发展对社会的责任和影响。

课程性质:本课程为电子信息工程及相关专业高年级学生的专业核心课程,旨在通过理论与实践相结合的教学,提高学生的电子设计能力。

学生特点:学生已具备一定的电子技术基础,具有较强的学习能力和实践欲望,对新技术和新工具充满好奇心。

教学要求:结合学生特点,注重培养实际操作能力,鼓励学生创新思维,提高解决实际问题的能力。

通过课程目标分解,确保学生在知识、技能和情感态度价值观方面的全面成长。

后续教学设计和评估将以此为基础,关注学生的学习成果。

二、教学内容根据课程目标,教学内容分为以下三个模块:1. EDA基本概念与工具使用- 教材章节:第一章 EDA技术概述,第二章 EDA工具简介- 内容列举:EDA发展历程,常用EDA软件介绍,软件安装与配置,基本操作流程。

2. 数字电路设计与仿真- 教材章节:第三章 数字电路设计基础,第四章 仿真技术- 内容列举:数字电路设计原理,EDA软件电路设计流程,仿真参数设置,波形分析与验证。

3. 硬件描述语言与数字系统设计- 教材章节:第五章 硬件描述语言,第六章 数字系统设计实例- 内容列举:硬件描述语言基础,VHDL/Verilog语法要点,简单数字系统设计方法,设计实例分析与实操。

第4章 应用VHDL语言方法设计八位二进制加法器 《EDA技术》PPT 教学课件

第4章  应用VHDL语言方法设计八位二进制加法器 《EDA技术》PPT 教学课件
五、检查
对所设计的八位二进制加法器的各个底层模块和顶层模块进行编译 仿真,以验证所设计电路否符合设计的要求。
上一页 下一页
§2 完成工作任务的引导
六、评估
应用第一种方案设计八位二进制加法器在编译后,可以看到它的 延时情况,如图4-1所示。
第一种设计方案占用资源的情况如图4-2所示。 应用第一种方案设计八位二进制加法器在编译后,可以看到它的 延时情况,如图4-3所示。 第一种设计方案占用资源的情况如图4-4所示。 所以,无论从输出信号对输入信号的延迟时间或占用资源的情况 来看,第一种方案性能都好一些。
返回
§4.2 完成工作任务的引导
第三种方案在设计上不是很简单,但性能好,在加法器的位数比 较大时应采用此法。可在学习第5章时再做练习。
四、实施
在应用第一种方案设计时,请参考下一节例4.1或例4.2。先设计 底层模块全加器,再在顶层文件中调用全加器元件,构成八位二进制 加法器。在应用第一种方案设计时,请参考下一节例4.3。
上一页 下一页
§4.3 相关技术基础知识与基本技能
对于弹出的选择其他EDA工具的对话框,由于我们使用 Quartus且的集成环境进行开发,因此不需做任何改动。单击Next 按钮进入如图4-11所示工程的信息总概对话框。
在图4-11中单击Finish按钮就建立了一个空的工程项目。 2.建立VHDL文件
如图4-12所示,执行File=>New命令,弹出如图4-13所示的 新建文件对话框。
在新建文件对话框中选择“VHDL File”,单击OK按钮即建立一 个空的文件。执行File=>SaVe as命令,把它另存为文件名是 fulladd 的 VHDL文件,文件后缀为.vhd。
上一页 下一页

EDA技术与VHDL程序开发基础教程_教学资料_第一章

EDA技术与VHDL程序开发基础教程_教学资料_第一章

1.8.1填空1.EDA的英文全称是Electronic Design Automation2.EDA技术经历了计算机辅助设计CAD阶段、计算机辅助工程设计CAE阶段、现代电子系统设计自动化EDA阶段三个发展阶段3. EDA技术的应用可概括为PCB设计、ASIC设计、CPLD/FPGA设计三个方向4.目前比较流行的主流厂家的EDA软件有Quartus II、ISE、ModelSim、ispLEVER5.常用的设计输入方式有原理图输入、文本输入、状态机输入6.常用的硬件描述语言有VHDL、Verilog7.逻辑综合后生成的网表文件为EDIF8.布局布线主要完成将综合器生成的网表文件转换成所需的下载文件9.时序仿真较功能仿真多考虑了器件的物理模型参数10.常用的第三方EDA工具软件有Synplify/Synplify Pro、Leonardo Spectrum11.2000年推出的Pentium4微处理器芯片的集成度达(4200 )万只晶体管。

12.在EDA发展的(CAD )阶段,人们只能借助计算机对电路进行模拟、预测,以及辅助进行集成电路版图编辑、印刷电路板(PCB)布局布线等工作。

13.在EDA发展的(CAE )阶段,人们可以将计算机作为单点设计工具,并建立各种设计单元库,开始用计算机将很多单点工具集成在一起使用。

14.EDA设计输入主要包括图形输入、HDL文本输入和状态机输入。

15.时序仿真是在设计输入完成之后,选择具体器件并完成布局、布线之后进行的时序关系仿真,因此又称为功能仿真。

16.VHDL的数据对象包括变量、常量和信号,它们是用来存放各种类型数据的容器。

17.图形文件设计结束后一定要通过仿真,检查设计文件是否正确。

18.以EDA方式设计实现的电路设计文件,最终可以编程下载到FPGA 和CPLD芯片中,完成硬件设计和验证。

19.MAX+PLUS的文本文件类型是(后缀名).VHD 。

20.在PC上利用VHDL进行项目设计,不允许在根目录下进行,必须在根目录为设计建立一个工程目录(即文件夹)。

配套课件 EDA技术与VHDL程序设计基础教程

配套课件 EDA技术与VHDL程序设计基础教程
Quartus II
它支持原理图、VHDL和Verilog 语言文本输入方式和波形或EDIF 格式的文件作为输入,且支持这 些文件的混合设计。
Quartus II的GUI界面
EDA技术与VHDL程序开发基础教程
五、EDA集成开发工具
ISE+ModelSim
ispLEVER
EDA技术与VHDL程序开发基础教程
。(b)中三条竖线A、B、C也为输入线,输入到或门的横线为和线。和线与
输入线的交叉点为编程点。
当输入线与和线相连通时,
在编程点处以“×”表示。
Y=AB
可以看出,图中电路表示
Y=A+B+C
的逻辑表达式分别为Y=AB
和Y=A+B+C。
ABC
ABC
(a)
(b)
EDA技术与VHDL程序开发基础教程
三、 CPLD的基本结构和工作原理
EDA技术与VHDL程序开发基础教程
第1章 EDA概述
重点内容:
EDA技术发展和应用 EDA工程设计流程 EDA集成开发工具
EDA技术与VHDL程序开发基础教程
一、EDA工程简介
EDA(Electronic Design Automation)工程是现代电子信息工程领 域中一门发展迅速的新技术。
流程
需求分析
算法设计 (Algorithm Optimization)
构架设计 (Architecture Exploration)
RTL 设计 (RTL Design)
RTL 验证 (RTL Verification)
综合 (Synthesis)
门级验证 (Gate-level Verification)

《EDA(VHDL)课程设计》任务书

《EDA(VHDL)课程设计》任务书
时钟信号提供秒信号(1HZ);四位数码管静态显示,高位high(3 downto 0)显示分,低位low(3 downto 0)显示秒。
3.四组数字智力抢答器的VHDL设计(每班1-30号的双号选择)
系统设计要求是:
(1)设计制作一个可容纳四组参赛者的数字智力抢答器,每组设置一个抢答按钮供抢答者使用。
(1)主、支干道各设有一个绿、黄、红指示灯,两个显示数码管。
(2)主干道处于常允许通行状态,而支干道有车来才允许通行。
(3)当主、支道均有车时,两者交替允许通行,主干道每次放行45s,支干道每次放行25s,在每次由亮绿灯变成亮红灯的转换过程中,要亮5s的黄灯作为过渡,并进行减计时显示。
设计的基本要求
3.输入、输出接口说明
4.报告中有分频器、定时器相关模块的功能仿真和时序仿真结果。
5.编写内容充实、完整和规范的课程设计报告书。
6.课程设计报告要求校对仔细,无错字,A4纸打印,左侧装订。
主要参考文献
[1]谭会生,张昌凡.EDA技术及应用.西安:西安电子科技大学出版社,2006,12.
[2]潘松,黄继业.EDA技术实用教程.北京:科学出版社,2008,8.
2.99分钟定时器的VHDL设计(每班1-30号的单号选择)
任务要求:具有整体清零(reset)功能,定时99分钟。以秒速度递增至99分钟停止,启动报警(cout)5秒钟。具有置位(cn)控制,即cn高电平时,clk脉冲上升沿到来,计数加一;cn低电平时,置位结束,进入倒计时阶段,以秒速度使输出计数减一至零结束,并同时报警(cout)5秒钟。
为了防止雷同,建议每班1-4号设计2.5分频,5-8号设计3.5分频,9-12号设计4.5分频,13-16号设计5.5分频,17-20号设计6.5分频,21-24号设计7.5分频,25-28设计8.5分频,29-32设计9.5分频,33-36设计10.5分频,37-40号设计11.5分频,41-44号设计12.5分频计数器。

《VHDL语言程序设计》课程教学大纲

《VHDL语言程序设计》课程教学大纲

《VHDL语言程序设计》课程教学大纲课程简介课程简介:本课程为软件工程专业嵌入式专业方向的专业课,是开发基于FPGA/CPLD嵌入式系统的必备基础。

主要内容包括FPGA/CPLD目标器件的结构和工作原理、EDA技术和工作流程、VHDL基础知识、VHDL实用方法和设计深入、原理图输入法、LPM宏功能模块实用方法、状态机设计以及EDA优化设计。

目的是为后续课程的学习和嵌入式系统的设计作必须的基础准备。

课程大纲一、课程的性质与任务:本课程是软件工程专业的专业方向课程。

教学任务主要包括使学生了解EDA技术的工作流程,正确使用开发平台,掌握以VHDL为代表的硬件描述语言的基本知识、编程实用方法和工程设计方法,掌握原理图设计法、状态机设计法,能够正确使用IP Core和LPM等宏功能模块。

本课程是软件工程专业嵌入式专业方向的第一门专业方向课,是后续课程的必备基础,具有较重要的地位。

二、课程的目的与基本要求:本课程涉及到的学科基础知识面广,要求软硬件兼备,需要较好的学科基础。

通过本课程的学习,最终达到能够设计基于FPGA/CPLD的ASIC,并能进行EDA优化的目的。

三、面向专业:软件工程四、先修课程:《计算系统基础》五、本课程与其它课程的联系:本课程的先行课程是计算系统基础。

服务的主要后续课程包括基于FPGA的嵌入式软件开发、基于ARM的嵌入式软件开发等。

六、教学内容安排、要求、学时分配及作业:第一章概述(2学时)1.1 EDA技术及其发展(C)1.2 硬件描述语言硬件描述语言种类、自顶向下设计方法、EDA工程设计流程。

(A)1.3 面向FPGA/CPLD的开发流程设计输入、分析综合、布局布线、仿真、下载和硬件测试。

(A)1.4 IP Core 及EDA技术发展趋势。

(C)第二章 FPGA硬件特性与编程技术(8学时)2.1 PLD发展历程及其分类(c)2.2 低密度PLD工作原理PROM、PLA、PAL、GAL。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

EDA技术与VHDL语言课程设计课程设计EDA技术与VHDL语言课程设计报告班级: 电信11-2班姓名: 董元伟学号: 1106110205指导教师: 李铁成绩:电子与信息工程学院信息与通信工程系- 2 - 课程设计;数字密码锁目录摘要 ..................................................................... .......................................... - 3 - 一、设计目的 ..................................................................... ............................ - 4 - 二、设计内容和要求 ..................................................................... .................. - 4 -1、用户开锁 ..................................................................... ......................... - 5 -2、管理员解除警报 ..................................................................... .............. - 5 -3、管理员修改密码 ..................................................................... .............. - 5 -4、定时返回 ..................................................................... ......................... - 6 - 三、设计思路和系统结构...................................................................... ............ - 6 -1、设计模块 ..................................................................... ......................... - 6 -2、系统结构和数字密码锁原理图 .............................................................. - 7 -3、设计思路 ..................................................................... ......................... - 8 - 四、实验设计程序如 ..................................................................... ................... - 9 - 五、创建测试平台仿真结果 ..................................................................... ....... - 21 - 参考文献 ..................................................................... ................................... - 24 -- 2 -- 3 - 课程设计;数字密码锁摘要本文介绍一种利用 EDA 技术和 VHDL 语言,在 MAX+PLUS?环境下,设计了一种新型的智能密码锁。

它体积小、功耗低、价格便宜、安全可靠,维护和升级都十分方便,具有较好的应用前景。

随着社会物质财富的日益增长,安全防盗已成为全社会问题。

人们对锁的要求越来越高,既要安全可靠地防盗,又要使用方便。

弹子锁由于结构上的局限已难以满足当前社会管理和防盗要求,特别是在人员经常变动的公共场所,如办公室、宾馆等地方。

电子密码锁由于其自身的优势,越来越受到人们的青睐,但是目前使用的电子密码锁大部分是基于单片机用分离元件实现的,其成本较高且可靠性得不保证。

本文采用先进的 EDA 技术,利用 MAX +PLUX?工作平台和 VHDL 语言,设计了一种新型的智能密码锁。

该密码锁具有密码预置和误码报警等功能,用一片FPGA 芯片实现,从而大大简化了系统结构,降低了成本,提高了系统的保密性和可靠性。

采用这种器件开发的数字系统,其升级与改进极其方便。

- 3 -- 4 - 电子与信息董元伟 1106110205 一、设计目的1.掌握VHDL语言的使用,学会用VHDL语言来编程解决实际问题。

2.学会使用EDA开发软件设计小型综合电路,掌握仿真的技巧。

3.学会应用开发系统实现数字密码锁的设计。

二、设计内容和要求用VHDL语言设计一个密码锁,用波形仿真验证其功能后,实现到GW48实验系统。

1、功能描述:用于模仿密码锁的工作过程。

完成密码锁的核心控制功能。

2、功能要求:设计一个密码锁,平时处于等待状态。

管理员可以设置或更改密码。

如果不预置密码,密码缺省为“1234”。

用户如果需要开锁,按相应的按键进入输入密码状态,输入4位密码,按下确定键后,若密码正确,锁打开;若密码错误,将提示密码错误,要求重新输入,三次输入都错误,将发出报警信号。

报警后,只有管理员作相应的处理才能停止报警。

用户输入密码时,若输入错误,在按下确定键之前,可以通过按取消键重新输入。

正确开锁后,用户处理完毕后,按下确定键,系统回到等待状态。

系统操作过程中,只要密码锁没有打开,如果60秒没有对系统操作,系统回到等待状态。

要求密码在输入过程中被依次显示,即先输入的为密码的第一位,总是显示在最左边。

用两个发光二极管模拟显示,其中一个显示当前的工作模式,灭表示用户模式,亮表示管理员模式;另- 4 -- 5 - 课程设计;数字密码锁外一个指示锁的状态,灭表示锁处于锁定,亮表示锁被开启。

注意:用两个按键实现密码输入,Key1选择输入的是第几位密码,KEY2输入密码数字。

3、功能描述: 初始状态:初次使用密码锁时,要先用Reset键初始化。

初始状态下,用户密码为“1234”,管理员密码为“0000”。

(1)用户开锁:默认情况下,密码锁处于用户使用状态。

如果当前为管理员状态,则按下user 键回到用户状态。

用户开锁时,输入四位数用户密码,可以从out_code6的输出状态确定密码输入状态。

如输入错误则按下clear清除前一位输入。

输入完毕后按enter,如果密码正确,则开锁,否则重新输入密码。

开锁后再次按下enter键则关锁,回到等待状态。

三次密码输入错误,警报器alarming为1。

要管理员输入管理员密码解除警报。

此时哪怕用户再输对密码也没用。

(2)管理员解除警报:当用户三次密码输入错误的时候,alarming为1,此时,只要管理员密码输入正确后,按下clear键,alarming为0,报警取消。

(3)管理员修改密码:在非警报和为开锁状态下,任何时候按admin键进入管理员状态。

按chgcode选择修改密码,先选择修改的是用户密码还是管理员密码。

修改用户密码则按user键,修改管理员密码则按admin键。

然后分别输入旧密码,新密码,新密码要输入两次。

旧密码与所要修改的密码对应。

如旧密码输入错误,则无法修改;当验证不成功即两次新密- 5 -- 6 - 电子与信息董元伟 1106110205码不相同时,修改密码失败。

返回等待状态。

成功后也返回等待状态。

(4)定时返回:用户在未开锁状态下,60s没有按键输入,则返回等待状态,但不包括alarming状态。

只要是alarming,则只有管理输入管理员密码才能解锁并按下clear消除警报。

三、设计思路和系统结构1、设计模块设计密码锁时,采用自顶向下的设计方法。

将整个系统分成几个子模块:输入输出模块,控制模块,按键设置模块和60s计时器模块。

控制模块是整个程序的主要部分,采用状态循环的办法,以用户每按下一次按键为计量单位,划分状态,以实现各种功能。

60s计时器模块是完成60s没有按键则返回等待状态这一功能的主要模块。

这个模块的核心思想是一个变量numtime计数。

变量numtime的初始值为0,在无报警为开锁的情况下,时钟每秒发出一个上升沿信号,计数一次,如有按键则numtime清零,否则计数到60即“111100”则返回信号back变为1,返回等待状态。

按键设置模块是将各种功能按键用高低电平赋值,便于调用。

- 6 -- 7 - 课程设计;数字密码锁2、系统结构和数字密码锁原理图结合实际实验板的资源分配和考虑到数字密码锁的实现较为简易,故整个系统的设计根据功能要求,将系统分为 keyread、stating、showing 三个进程,系统结构图大概如下图所示:Clk时钟输入进程keyread拨码开关输入codeLed-7数码管输出进程showingLed-list数码管位选进程startingControl led灯输出Alam蜂鸣器输出- 7 -- 8 - 电子与信息董元伟 1106110205 数字密码锁原理图如下:3、设计思路利用实验本上的四个按键实现四个密码数列的输入以及密码输入的最终确认,这部分功能的实现由进程 keyread 实现完成;利用实验本上四个拨码开关的不同组合区分密码锁的不同功能状态,包括密码重置、密码重置清除、密码输入、密码输入清除、密码锁锁闭、钥匙插入开锁,这部分由进程 stating 实现,进程 stating 还实现了相应状态下,蜂鸣器、数码管、led 灯控制信号的输出以实现相应提示和显示。

- 8 -- 9 - 课程设计;数字密码锁四、实验设计程序如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;---- Uncomment the following library declaration if instantiating ---- any Xilinx primitives in this code.--library UNISIM;--use UNISIM.VComponents.all;entity lock isPORT(clk,user,admin,clear,enter,chgcode,res,numenter ,number:IN STD_L OGIC;openlock:buffer std_logic;alarming,model:OUT STD_LOGIC;shuma2,shuma1,shuma0:out std_logic_vector(6 downto 0));end lock;architecture Behavioral of lock isTYPE STATES IS (sw,s1,s2,s3,s4,s5,s6,s7); SIGNAL state:STATES;SIGNAL one_key,code0,code1,code2:STD_LOGIC_VECTOR(3 DOWNTO- 9 -- 10 - 电子与信息董元伟 11061102050);SIGNAL user_code,admin_code:STD_LOGIC_VECTOR(11 DOWNTO 0); SIGNAL temp_code,old_code:STD_LOGIC_VECTOR(11 DOWNTO 0);SIGNAL key:std_logic_vector(3 downto 0);signal alarm,ifnum,s_model,chg_c,c_ua:std_logic; signalk :std_logic_vector(3 downto 0);begintemp_code<=code2&code1&code0;model<=s_model;alarming<=alarm;main:PROCESS(res,admin,user,clear,chgcode,number,numenter,enter)variable n,m:std_logic_vector(1 downto 0):="00";variable new1_code,new2_code:std_logic_vector(11 downto 0); BEGIN if (res='1') thenstate<=s1;--出厂状态user_code<="001000010001";--211admin_code<="001000010000";--210n:="00";s_model<='0';c_ua<='0';chg_c<='0';K<="0000";- 10 -- 11 - 课程设计;数字密码锁openlock<='0';alarm<='0';shuma2<="0000000";shuma1<="0000000";shuma0<="0000000";ifnum<='0';elseif (number='1') thenk<=k+1;Elsif numenter='1' thenifnum<='1';End if;case state iswhen s1=>if ( admin='1' and chg_c='0' )thens_model<='1';state<=s1;elsif (user='1' and chg_c='0' and alarm='0') then s_model<='0';state<=s1;- 11 -- 12 - 电子与信息董元伟 1106110205elsif (ifnum='1' and alarm='0' and chg_c='0' ) then code2<=k;ifnum<='0';CASE k ISWHEN"0000"=>shuma2<="0111111";WHEN"0001"=> shuma2 <="0000110"; WHEN"0010"=> shuma2<="1011011";WHEN"0011"=> shuma2<="1001111";WHEN"0100"=> shuma2<="1100110";WHEN"0101"=> shuma2<="1101101";WHEN"0110"=> shuma2<="1111101";WHEN"0111"=> shuma2<="0000111";WHEN"1000"=> shuma2<="1111111";WHEN"1001"=> shuma2<="1101111";WHEN OTHERS=> shuma2<="0000000";END CASE;k<="0000";state<=s2;elsif (ifnum='1' and c_ua='0' and chg_c='1' ) then old_code<=user_code;code2<=k;- 12 -- 13 - 课程设计;数字密码锁ifnum<='0';CASE k ISWHEN"0000"=>shuma2<="0111111";WHEN"0001"=> shuma2 <="0000110"; WHEN"0010"=> shuma2<="1011011"; WHEN"0011"=> shuma2<="1001111"; WHEN"0100"=> shuma2<="1100110"; WHEN"0101"=> shuma2<="1101101"; WHEN"0110"=> shuma2<="1111101"; WHEN"0111"=> shuma2<="0000111"; WHEN"1000"=> shuma2<="1111111"; WHEN"1001"=> shuma2<="1101111";WHEN OTHERS=> shuma2<="0000000";END CASE;k<="0000";state<=s2;elsif (ifnum='1' and alarm='1' and s_model='1' and chg_c='0' ) then code2<=k;ifnum<='0';CASE k ISWHEN"0000"=>shuma2<="0111111";WHEN"0001"=> shuma2 <="0000110";WHEN"0010"=> shuma2<="1011011";WHEN"0011"=> shuma2<="1001111";WHEN"0100"=> shuma2<="1100110";- 13 -- 14 - 电子与信息董元伟 1106110205WHEN"0101"=> shuma2<="1101101";WHEN"0110"=> shuma2<="1111101";WHEN"0111"=> shuma2<="0000111";WHEN"1000"=> shuma2<="1111111";WHEN"1001"=> shuma2<="1101111";WHEN OTHERS=> shuma2<="0000000";END CASE;k<="0000";state<=s2;elsif (ifnum='1' and c_ua='1' and chg_c='1' ) thenold_code<=admin_code;code2<=k;ifnum<='0';CASE k ISWHEN"0000"=>shuma2<="0111111"; WHEN"0001"=> shuma2 <="0000110"; WHEN"0010"=> shuma2<="1011011"; WHEN"0011"=> shuma2<="1001111"; WHEN"0100"=> shuma2<="1100110"; WHEN"0101"=> shuma2<="1101101"; WHEN"0110"=> shuma2<="1111101"; WHEN"0111"=> shuma2<="0000111"; WHEN"1000"=> shuma2<="1111111"; WHEN"1001"=> shuma2<="1101111";WHEN OTHERS=> shuma2<="0000000";END CASE;- 14 -- 15 - 课程设计;数字密码锁k<="0000";state<=s2;elsif (clear='1')then --clearstate<=s1;end if;when s2=>if (user='1' and chg_c='0') then --users_model<='0';state<=s1;elsif (admin='1' and chg_c='0') then --admin s_model<='1';state<=s1;elsif(ifnum='1')thencode1<=k;ifnum<='0';CASE k ISWHEN"0000"=>shuma1<="0111111"; WHEN"0001"=> shuma1<="0000110"; WHEN"0010"=> shuma1<="1011011"; WHEN"0011"=> shuma1<="1001111"; WHEN"0100"=> shuma1<="1100110"; WHEN"0101"=> shuma1<="1101101"; WHEN"0110"=> shuma1<="1111101"; WHEN"0111"=> shuma1<="0000111";- 15 -- 16 - 电子与信息董元伟 1106110205 WHEN"1000"=> shuma1<="1111111"; WHEN"1001"=> shuma1<="1101111";WHEN OTHERS=> shuma1<="0000000";END CASE;k<="0000";state<=s3;elsif (clear='1')then --clearstate<=s1;end if;when s3=>if(user='1' and chg_c='0') thens_model<='0';state<=s1;elsif (admin='1' and chg_c='0') then s_model<='1';state<=s1;elsif (ifnum='1')thencode0<=k;ifnum<='0';CASE k ISWHEN"0000"=>shuma0<="0111111"; WHEN"0001"=> shuma0<="0000110"; WHEN"0010"=> shuma0<="1011011";- 16 -- 17 - 课程设计;数字密码锁WHEN"0011"=> shuma0<="1001111"; WHEN"0100"=> shuma0<="1100110"; WHEN"0101"=> shuma0<="1101101"; WHEN"0110"=> shuma0<="1111101";WHEN"0111"=> shuma0<="0000111";WHEN"1000"=> shuma0<="1111111";WHEN"1001"=> shuma0<="1101111";WHEN OTHERS=> shuma0<="0000000";END CASE;k<="0000";state<=s4;elsif(clear='1')thenstate<=s2;end if;when s4=>if (enter='1' and chg_c='0')then --enterstate<=s5;elsif (enter='1' and chg_c='1'and m="00")then --enter if (old_code=temp_code) thenm:="01";state<=s1;else state<=sw;- 17 -- 18 - 电子与信息董元伟 1106110205end if;elsif (enter='1' and chg_c='1'and m="01")then --enter new1_code:=temp_code;m:="10";state<=s1;elsif (enter='1' and chg_c='1'and m="10")then --enter new2_code:=temp_code;if (new1_code=new2_code and c_ua='0') thenuser_code<=new2_code;state<=sw;elsif(new1_code=new2_code and c_ua='1')thenadmin_code<=new2_code;state<=sw;elsif(new1_code/=new2_code) thenstate<=sw;end if;elsif(clear='1')thenstate<=s3;end if;when s5=>if (s_model='0' and temp_code=user_code) then openlock<='1';state<=s6;elsif (s_model='0'and temp_code/=user_code) then- 18 -- 19 - 课程设计;数字密码锁n:=n+1;if n="11" thenalarm<='1';state<=s1;elsestate<=s1;end if;elsif (s_model='1' and temp_code=admin_code) then state<=s6;elsif(s_model='1' and temp_code/=admin_code) then state<=sw;end if;when s6=>if(enter='1')then--enterstate<=sw;elsif(clear='1' and alarm='1') then --clearalarm<='0';state<=sw;elsif(chgcode='1') thenchg_c<='1';state<=s7;end if;when s7=>- 19 -- 20 - 电子与信息董元伟 1106110205m:="00";if(user='1')thenc_ua<='0';old_code<=user_code; state<=s1elsif(admin='1')then c_ua<='1';old_code<=admin_code; state<=s1;end if;when sw=>alarm<='0';s_model<='0';c_ua<='0';m:="00";n:="00";openlock<='0';chg_c<='0';shuma2<="0000000"; shuma1<="0000000"; shuma0<="0000000"; state<=s1;end case;END if;END PROCESS main;end Behavioral;- 20 -- 21 - 课程设计;数字密码锁五、创建测试平台仿真结果:1、输入密码,期间有清除,并且密码输入正确。

相关文档
最新文档