数字系统课程设计报告

合集下载

数字系统设计技术课程设计报告

数字系统设计技术课程设计报告

数字系统设计技术课程设计报告深圳职业技术学院Shenzhen Polytechnic 数字系统设计技术课程设计课题名称:电⼦售货机学院:电⼦与通信⼯程学院班级:组员:学号:指导⽼师:⽬录⼀、设计⽅案 (1)1、功能简介 (1)2、开发测试环境选择 (1)⼆、售货机EDA程序设计 (1)1、定义端⼝与信号说明 (1)1.1输⼊端⼝ (1)1.2输出端⼝ (1)1.3信号 (2)2、状态模块说明 (2)2.1状态转换图 (2)2.2购买1元商品模块 (2)2.2购买5元商品模块 (3)2.3购买7元商品模块 (4)2.4顶层电路结构 (4)三、⼩结 (5)四、附录 (5)1、使⽤说明 (5)2、参考⽂献资料 (5)3、附表 (6)⼀、设计⽅案1、功能简介本⽂采⽤状态机的⽅法所设计的简易电⼦售货机可出售1元、5元、7元的商品,可接受1元、5元、10元的投币,可显⽰选择商品的价格,可找回购买后的余额。

若投币⾦额充⾜则⾃动给出对应的商品和⾃动找零,且在投币购买过程中若投币余额不⾜会开发和仿真软件选择了Altera公司的综合性PLD/FPGA开发软件Quartus II 8.0,⾸先在Quartus II 8.0下进⾏程序设计,编译通过后⽤Quartus II 8.0进⾏功能仿真并检查对应的功能。

⼆、售货机EDA程序设计1、定义端⼝与信号说明1.1输⼊端⼝reset:异步复位端⼝,低电平有效;clk:时钟信号端⼝,控制状态的转换;item1:1元商品选择端⼝;item5:5元商品选择端⼝;item7:7元商品选择端⼝;ok:商品选择确认端⼝;coin1:1元投币信号端⼝;coin5:5元投币信号端⼝;coin10:10元投币信号端⼝。

1.2输出端⼝zhaoqian:退钱信号端⼝;jiage:对应商品价格显⽰端⼝;get1:1元商品输出端⼝:get5:5元商品输出端⼝;get7:7元商品输出端⼝;warn:投币⾦额不⾜提⽰窗⼝。

数字系统设计实验报告

数字系统设计实验报告

一、实验目的1. 理解数字系统设计的基本概念和流程。

2. 掌握数字电路的基本设计方法和技巧。

3. 熟悉常用数字集成电路的使用方法。

4. 培养实际动手能力和团队协作精神。

二、实验内容本次实验主要围绕数字系统设计展开,包括以下几个方面:1. 数字电路原理图绘制与仿真2. 数字系统硬件描述语言(HDL)编程3. 顶层模块设计4. 系统仿真与调试三、实验步骤1. 数字电路原理图绘制与仿真(1)根据实验要求,设计数字电路原理图,如数字时钟、移位寄存器等。

(2)使用Multisim等仿真软件对原理图进行仿真,验证电路功能。

2. 数字系统硬件描述语言(HDL)编程(1)根据原理图,使用Verilog或VHDL等HDL语言编写代码。

(2)对代码进行语法检查,确保代码正确。

3. 顶层模块设计(1)根据实验要求,设计顶层模块,如数字时钟控制器、移位寄存器控制器等。

(2)将底层模块(如计数器、触发器等)集成到顶层模块中。

4. 系统仿真与调试(1)使用仿真软件对顶层模块进行仿真,验证系统功能。

(2)根据仿真结果,对代码进行修改和优化,直至系统功能满足要求。

四、实验结果与分析1. 数字电路原理图绘制与仿真(1)原理图设计:根据实验要求,设计了一个数字时钟电路原理图,包括分频器、计数器、触发器等模块。

(2)仿真结果:通过仿真软件对原理图进行仿真,验证了电路功能。

2. 数字系统硬件描述语言(HDL)编程(1)代码编写:使用Verilog语言编写了数字时钟电路的代码,包括分频器、计数器、触发器等模块。

(2)代码验证:通过语法检查,确保代码正确。

3. 顶层模块设计(1)顶层模块设计:根据实验要求,设计了一个数字时钟控制器顶层模块,将底层模块集成到顶层模块中。

(2)系统仿真:通过仿真软件对顶层模块进行仿真,验证了系统功能。

4. 系统仿真与调试(1)系统仿真:通过仿真软件对顶层模块进行仿真,验证了系统功能。

(2)调试:根据仿真结果,对代码进行修改和优化,直至系统功能满足要求。

pld数字系统课程设计

pld数字系统课程设计

pld数字系统课程设计一、课程目标知识目标:1. 理解PLD数字系统的基本概念,掌握其组成原理和应用领域。

2. 学会使用硬件描述语言(如VHDL/Verilog)进行数字电路设计和描述。

3. 掌握数字系统的测试和验证方法,能够对设计进行功能仿真和时序分析。

技能目标:1. 培养学生运用所学知识,独立完成简单的PLD数字系统设计能力。

2. 培养学生运用硬件描述语言进行数字电路编程的能力。

3. 培养学生运用相关软件工具(如ModelSim、Quartus等)进行数字系统仿真、综合和布局布线的能力。

情感态度价值观目标:1. 激发学生对数字系统设计和PLD技术的兴趣,培养其主动学习和探索的精神。

2. 培养学生的团队合作意识,使其在项目实践中学会相互协作、共同解决问题。

3. 培养学生严谨、细致、负责的学习态度,注重实际操作和工程实践能力的培养。

本课程针对高年级学生,课程性质为专业核心课程。

结合学生已具备的电子技术和计算机基础,明确课程目标,将目标分解为具体的学习成果。

在教学过程中,注重理论与实践相结合,以项目为导向,强化学生的实际操作能力和创新能力。

通过本课程的学习,使学生能够掌握PLD数字系统设计的基本方法和技能,为后续专业课程学习和未来职业发展奠定基础。

二、教学内容1. PLD数字系统基本概念:介绍可编程逻辑器件(PLD)的原理、分类及其在数字系统中的应用。

- 教材章节:第1章 数字系统概述2. 硬件描述语言:学习VHDL/Verilog硬件描述语言的基本语法、结构及编程规范。

- 教材章节:第2章 硬件描述语言基础3. 数字电路设计:运用硬件描述语言进行组合逻辑电路和时序逻辑电路设计。

- 教材章节:第3章 组合逻辑电路设计、第4章 时序逻辑电路设计4. 数字系统仿真与验证:介绍ModelSim、Quartus等软件工具的使用,进行功能仿真及时序分析。

- 教材章节:第5章 数字系统仿真与验证5. PLD数字系统设计实例:分析典型PLD数字系统设计案例,如计数器、状态机、数字信号处理器等。

数字系统设计实验报告

数字系统设计实验报告

数字系统设计实验共八个实验报告课程:数字系统设计班级:08电52姓名:马帼英实验日期:2011/4/11~2011/4/30目录1实验一基本组合逻辑电路设计实验 (3)2实验二加法器设计 (4)3实验三译码器设计 (6)4实验四计数器设计 (8)5实验五阻塞与非阻塞区别验证 (10)6实验六累加器设计 (12)7实验七数码管扫描电路设计 (14)8实验八数字频率计设计 (17)实验一实验名称:基本组合逻辑电路设计实验第1 组同组人:刘秀秀,马帼英一、实验目的:熟悉MAX+plus 软件的使用二、实验电路:三、波形图:实验二实验名称:加法器设计第1 组同组人:刘秀秀,马帼英一、实验目的:(1)复习加法器的分类及工作原理;(2)掌握用图形法设计半加器的方法;(3)掌握用元件例化法设计全加器的方法;(4)掌握用元件例化法设计多位加法器的方法;(5)掌握用Verilog HDL语言设计多位加法器的方法;(6)学习运用波形仿真验证程序的正确性;学习定时分析工具的使用方法。

二、实验电路:三、实验步骤:1)首先在原理图输入方式下设计出1位的半加器,并进行仿真验证;2)在原理图输入方式下采用调用半加器元件的方式设计出1位的全加器,并进行仿真验证;3)下载全加器电路,并进行在线测试。

四、实验结果分析、体会:实验过程中需注意的几点:1)保存所设计的原理图文件时,注意后缀名为.gdf;2)编程下载前一定要进行时序编译;3)分配引脚时要注意输入输出端口编号一定要与实验箱上的输入输出端口引脚号相对应。

五、思考题:1时序仿真波形图上出现了什么现象?其产生的原因是什么呢?如何进行消除?答:在组合逻辑中,由于多少输入信号变化先后不同、信号传输的路径不同,或是各种器件延迟时间不同(这种现象称为竞争)都有可能造成输出波形产生不应有的尖脉冲(俗称毛刺),这种现象成为冒险。

解决方法:一是添加布尔式的消去项,二是在芯片外部加电容。

2请比较分析用元件例化法与语言进行设计的4位加法器的定时分析结果。

数字逻辑与数字系统课程设计报告

数字逻辑与数字系统课程设计报告

课程设计报告课程:数字逻辑与数字系统课题:多功能数字电子钟姓名:学号:学院:班级:指导老师:设计日期:一、设计要求1.具有以二十四小时制计时、显示、整点报时、时间设置和闹钟的功能。

2.精度要求为1s。

二、系统功能简介1.计时:正常工作状态下每天按24小时制计时并显示,蜂鸣器无声,逢整点报时。

2.整点报时:蜂鸣器在59分钟的51、53、55、57秒时发出频率为512hz的低音,在59秒时发出1024hz的高音,结束时为整点。

3.显示:要求采用扫描显示方式驱动8个LED数码管显示小时、分、秒、横线。

4.闹钟:闹钟定时时间到,蜂鸣器发出周期1秒的“滴、滴”声,持续时间30秒钟。

5.调时和校时:按动开关mode使计时与闹钟时间显示切换。

按下按动set键进入“小时”定时状态,同时显示小时的两位闪烁,此时如果按下k键,小时进位;然后继续按set键“分钟”的两位闪烁,按下k键,分进位;再按下set键“秒“的两位闪烁,按下k键,秒清零。

闹钟调时方法类似。

三、系统简介1.开发系统:windows xp/982.开发软件:MAX+PIUS II3.开发芯片:EP1K10TC100—3四、主要模块简介此系统由控制器(crt)、计时调时模块(time)、闹钟模块(baoshi)、定时模块(dingshi)、动显模块(dongxian1)和分频模块(fenpin)组成。

数字钟系统总体结构框图:1.控制模块:此模块主要为控制系统整体变换的模块,有f4hz,k,set,reset,mode五个控制时钟输入,f4hz驱动控制模块,mode键是让闹钟显示和计时显示两种状态互相切换的。

当set有效时,小时闪烁,当按下k键时,小时进行校时加1;当继续按下set键时,分闪烁,当按下k键时,分进行校时加1;当继续按下set键时,秒闪烁,当按下k键时,秒清零,继续按下set键,回复正常计时状态。

当按下mode键时,进行计时和闹钟时间切换。

数字系统设计_实验报告

数字系统设计_实验报告

一、实验目的1. 熟悉数字系统设计的基本流程和方法;2. 掌握数字系统硬件描述语言(如Verilog)的基本语法和设计方法;3. 培养动手实践能力,提高数字系统设计水平;4. 了解数字系统设计中常用模块的功能和实现方法。

二、实验内容1. 数字系统硬件描述语言(Verilog)编程2. 数字系统模块设计3. 数字系统仿真与调试三、实验步骤1. 设计数字系统模块(1)分析数字系统功能需求,确定模块功能;(2)根据模块功能,设计模块的输入输出端口和内部结构;(3)使用Verilog语言编写模块代码。

2. 编写顶层模块(1)根据数字系统功能需求,设计顶层模块的输入输出端口和内部结构;(2)将已设计的模块实例化,连接各模块端口;(3)编写顶层模块代码。

3. 仿真与调试(1)使用仿真工具(如ModelSim)对顶层模块进行仿真;(2)观察仿真波形,分析模块功能是否满足设计要求;(3)根据仿真结果,对模块代码进行修改和优化;(4)重复步骤(2)和(3),直至模块功能满足设计要求。

四、实验结果与分析1. 数字系统模块设计(1)设计了一个4位加法器模块,包括两个4位输入端口、一个4位输出端口和两个进位输出端口;(2)设计了一个2位乘法器模块,包括两个2位输入端口和一个4位输出端口;(3)设计了一个8位存储器模块,包括一个8位输入端口、一个8位输出端口和一个地址输入端口。

2. 顶层模块设计(1)根据功能需求,设计了一个包含加法器、乘法器和存储器的数字系统顶层模块;(2)将已设计的模块实例化,连接各模块端口;(3)编写顶层模块代码。

3. 仿真与调试(1)使用ModelSim对顶层模块进行仿真;(2)观察仿真波形,发现加法器和乘法器功能正常,但存储器模块存在错误;(3)分析存储器模块代码,发现地址输入端口的逻辑关系错误;(4)修改存储器模块代码,重新进行仿真,验证模块功能正确。

五、实验总结1. 通过本次实验,掌握了数字系统设计的基本流程和方法;2. 学会了使用Verilog语言进行数字系统模块设计;3. 培养了动手实践能力,提高了数字系统设计水平;4. 了解数字系统设计中常用模块的功能和实现方法。

数字系统设计课程设计报告 冯栋

数字系统设计课程设计报告 冯栋

《数字系统设计》课程设计报告设计题目多路彩灯控制器专业班级2012级通信工程2班姓名冯栋学号201202405219指导老师刘雪锋2014年11月22日目录一、设计要求 (1)二、功能分析 (1)三、设计框图 (1)四、设计过程 (2)五、总结体会 (3)时序控制电路的模块框图,CLK为输入时钟信号,电路在时钟上升沿变化;RESET为复位清零信号,高电平有效,一旦有效时,电路无条件的回到初始状态;C为频率快慢选择信号,低电平节奏快,高电平节奏慢;CQ为输出信号,RESET 有效时输出为零,否则,随C信号的变化而改变。

假设时序控制电路所产生的控制时钟信号的快慢两种节奏分别为输入时钟信号频率的1/4和1/8,因而输出时钟控制信号可以通过对输入时钟的计数来获得。

当C为低电平时,输出没经过两个时钟周期进行翻转,实现四分频的快节奏;当C为高电平时,输出每经过四个时钟周期进行翻转,实现八分频的慢节奏。

4.2 显示控制电路显示控制电路的模块框图,输入信号clk和clr的定义与时序控制电路一样,输入信号led[7...0]能够循环输出8路彩灯6种不同状态的花型。

多路彩灯在多种花型之间的转换可以通过状态机实现,当复位信号clr有效时,彩灯恢复初始状态s0,否则,每个时钟周期,状态都将向下一个状态发生改变,并对应输出的花型,这里的时钟周期即时时序控制电路模块产生的输出信号,它根据control信号的不同取值得到两种快慢不同的时钟频率。

五、总结体会经过将近一周时间的自我学习做设计,课程设计过程中我不仅检验了我以往所学习的理论知识,而且还丰富了课外知识学到了许多在课上没有学过的东西,更重要是经验。

这份宝贵的经验为以后我们步入社会也奠定了基础。

通过这次设计,我的多方面都有所提高,体会到了自己单独做设计时的能力不足,以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补,还有再此期间我通过查阅资料上网搜索有学习到了许多课上学不到的东西,当然对学过的知识也是一种巩固,比如我对VHDL语言掌握更加娴熟。

数字系统设计及实验实验报告

数字系统设计及实验实验报告

数字系统设计及实验实验报告一、实验目的数字系统设计及实验课程旨在让我们深入理解数字逻辑的基本概念和原理,掌握数字系统的设计方法和实现技术。

通过实验,我们能够将理论知识应用于实际,提高解决问题的能力和实践动手能力。

本次实验的具体目的包括:1、熟悉数字电路的基本逻辑门、组合逻辑电路和时序逻辑电路的设计方法。

2、掌握使用硬件描述语言(如 Verilog 或 VHDL)进行数字系统建模和设计。

3、学会使用相关的电子设计自动化(EDA)工具进行电路的仿真、综合和实现。

4、培养团队合作精神和工程实践能力,提高解决实际问题的综合素质。

二、实验设备和工具1、计算机:用于编写代码、进行仿真和综合。

2、 EDA 软件:如 Quartus II、ModelSim 等。

3、实验开发板:提供硬件平台进行电路的下载和测试。

4、数字万用表、示波器等测量仪器:用于检测电路的性能和信号。

三、实验内容1、基本逻辑门电路的设计与实现设计并实现与门、或门、非门、与非门、或非门和异或门等基本逻辑门电路。

使用 EDA 工具进行仿真,验证逻辑功能的正确性。

在实验开发板上下载并测试实际电路。

2、组合逻辑电路的设计与实现设计一个 4 位加法器,实现两个 4 位二进制数的相加。

设计一个编码器和译码器,实现数字信号的编码和解码。

设计一个数据选择器,根据控制信号选择不同的输入数据。

3、时序逻辑电路的设计与实现设计一个同步计数器,实现模 10 计数功能。

设计一个移位寄存器,实现数据的移位存储功能。

设计一个有限状态机(FSM),实现简单的状态转换和控制逻辑。

四、实验步骤1、设计方案的确定根据实验要求,分析问题,确定电路的功能和性能指标。

选择合适的逻辑器件和设计方法,制定详细的设计方案。

2、代码编写使用硬件描述语言(如 Verilog 或 VHDL)编写电路的代码。

遵循代码规范,注重代码的可读性和可维护性。

3、仿真验证在 EDA 工具中对编写的代码进行仿真,输入不同的测试向量,观察输出结果是否符合预期。

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

基于VHDL的交通灯控制器设计作者:叶展(04008136)杨运峰(04008137)史泰龙(04008115)目录1.题目要求 (2)2.方案设计 (2)(1)总体方案设计 (2)(2)单元模块设计 (5)(3)各单元模块的连接 (6)3.仿真调试 (7)4.设计总结 (9)(1)设计的小结和体会 (9)(2)对设计的进一步完善提出意见或建议 (9)5.成员分工 (9)6.参考文献 (10)7.附录 (11)一、题目要求在两个相邻十字路口处各有四处交通灯,标为A和B,每一处的要求如下:每一处都有3个灯指示左转,直行和右转车辆,并且灯也分红色和黄色绿色,并配有时间显示,调研实际的运行情况并设计出对应的电路。

并且要完成以下附加功能:第一,可以将系统根据时间来调整,在白天某一路段比较繁忙对应的通行时间较长,晚上因为另一路段繁忙则做适当的调整;第二,如系统出现故障不能正常显示,则黄灯全部闪烁以提醒车辆注意。

要求系统有一个系统时钟,按照24小时计时,A处和B处早上7点到晚上8点,南北方向绿灯通行时间为50秒,黄灯5秒,左拐灯15秒,黄灯5秒,红灯40秒。

其余时间分别为60秒,5秒,20秒,5秒,30秒。

A处和B处的交通灯是联动的,即A处驶往B处的车辆,在A处南北方向交通灯绿灯后20秒钟后B处的南北方向交通灯绿灯通行。

二、方案设计(1)总体方案设计我们小组成员展开讨论,结合本题目的要求,并且参考了实际路灯的运行情况和查阅了相关资料后,提出了一种切实可行的路灯控制方案——即路灯八状态轮换循环控制方案。

从单一方向上看,单个路口红绿灯转换顺序为:绿灯(50s)—黄灯(5s)—左拐灯(15s)—黄灯(5s)—红灯(40s)。

(当此方向上路灯为红灯时,即40s的时间内,另一方向上的路灯要完成,绿灯(15s)—黄灯(5s)—左拐灯(15s)—黄灯(5s),的转换。

)当路况处于闲暇时间段的时候,路灯工作于另外一种时间机制。

即,绿灯(60s)—黄灯(5s)—左拐灯(20s)—黄灯(5s)—红灯(30s)。

(当此方向上路灯为红灯时,即30s的时间内,另一方向上的路灯要完成,绿灯(5s)—黄灯(5s)—左拐灯(15s)—黄灯(5s),的转换。

)A ,B 路口详细工作情况见下图。

→→→↑ ↓←←→→←←(注:’/’之前的为南北方向的路灯状况,’/’之后的为东西方向的路灯状况;括号内秒数对应为倒计时时间。

)题目要求A,B两路口联动(即A 处驶往B 处的车辆,在A 处南北方向交通灯绿灯后20秒钟后B 处的南北方向交通灯绿灯通行。

),本设计方案中,B 路口从A 的第六状态开始工作,和A 路口的状态刚好相差20s ,从而可以实现A ,B 路口的联动。

图示为A ,B 路口繁忙时段(7a.m~8p.m )的工作情况,一次状态循环用时115s 。

当时间为闲时段的时候,状态循环模式完全一样,只是路灯倒计时时间如前述对应,作相应的改变,此时一次状态循环用时120s 。

综上所述,本设计方案先采用一个总系统时钟进行一天24小时循环计时,并以此时钟来判断当前处于繁忙时段还是闲时段,已决定当前的工作状态。

当系统处于繁忙时段时,采用115s 的计数器来控制路灯的循环工作;当系统转换到闲时段时,则采用另一120s 的计数器来控制路灯的循环。

黄灯(15s )/红灯绿灯(50s )/红灯左拐灯(5s )/红灯黄灯(5s )/红灯红灯/绿灯(15s )红灯/黄灯(5s ) 红灯/左拐灯(15s ) 红灯/黄灯(5s )黄(15s )/红灯绿(50s )/红灯 左拐灯(5s )/红灯黄灯(5s )/红灯 红灯/绿灯(15s ) 红灯/黄灯(5s )红灯/左拐灯(15s )红灯/黄灯(5s )(2)单元模块设计◆系统时钟单元计数:0 ~ 24*3600◆忙时段计数器单元计数:0 ~ 115◆闲时段计数器单元计数:0 ~ 120◆主控制单元根据系统时钟和计数器单元来控制A,B路口的路灯显示状况,并且各自显示路灯倒计时时间。

(3)各单元模块的连接三、仿真调试据题目要求,为系统设定一个时钟输入(clock),突发事件控制输入(hold),和系统重设输入(reset)。

由功能仿真图可以看到,当系统时钟开始输入时,系统时间对应为凌晨0点,即闲时段。

A1路口从第一状态开始循环,绿灯(60s)—黄灯(5s)—左拐灯(20s)—黄灯(5s)—红灯(30s)。

A2路口循环状态为:红灯(90s)—绿灯(5s)—黄灯(5s)—左拐灯(15s)—黄灯(5s),的转换。

)B1路口状态滞后A1路口20s的时间,B2路口滞后A2路口20s的时间,刚好满足两路口的联动性。

当路况处于忙时间段的时候,路灯工作于另外一种时间机制。

A1:绿灯(50s)—黄灯(5s)—左拐灯(15s)—黄灯(5s)—红灯(40s);A2:红灯(75s)—绿灯(15s)—黄灯(5s)—左拐灯(15s)—黄灯(5s);B1路口状态滞后A1路口20s的时间;B2路口状态滞后A2路口20s的时间。

四、设计总结(1)设计的小结和体会此次VHDL设计我们小组进行的比较顺利,从最开始的题目理解,方案设计分析到具体设计以及最后的仿真调试成功,基本上都是水到渠成。

我觉得这其中最重要的一点是我们提出了比较好的方案,实现简单,条理清楚,并且很好的满足题目要求。

比如用先conunt_system时钟来决定当先的闲/忙状态,然后分别用count1和count2来分别实现闲忙时路灯的具体控制。

在控制路灯的同时显示倒计时时间,更符合实际情况。

(2)对设计的进一步完善提出意见或建议此项关于路灯的VHDL设计基本上达到了题目的功能要求。

但是在时间的显示的功能仿真中,波形有一些毛刺,分析考虑主要是时间向量的各位并没有完全同时随着时钟变化,存在微小的偏差。

由于毛刺时间非常小,在实际显示过程中,时间显示不存在跳变问题。

另外一点就是题目对路灯显示时间的限制使得路灯变换时间并不是十分合理。

如闲时段时A2和B2路口的绿灯时间只有5s。

这个与事实不符,如果能调整路灯显示时间,将会使设计更加合理。

五、成员分工小组成员共同讨论查阅资料,确定系统的主要设计方案。

杨运峰——系统具体框架的确立和vhdl主体程序的编写。

叶展——参与程序的编写和检查修改,并完成编写设计报告。

史泰龙——参与设计报告的编写和检查改进。

六、参考文献计算机结构与逻辑设计/黄正瑾编著–北京:高等教育出版社,2001,6现代电子技术—VHDL与数字系统设计/杨刚,龙海燕编著。

北京:电子工业出版社,2004。

4(高等学校电工电子实践系列)数字电路与可编程技术试验教程/武俊鹏,蒙昭林,付小晶主编—哈尔滨:哈尔滨工程大学出版社,2007,3七、附录library ieee;entity Countersystem isport(Clock:in std_logic;Reset:in std_logic;Hold:in std_logic;CountNum:buffer integer range 0 to 24*3600 );end;architecture Behavoir of Countersystem is beginprocess(Reset,Clock)beginif Reset='1' thenCountNum<=0;elsif rising_edge(Clock) thenif Hold='1' thenCountNum<=CountNum;elseif CountNum=24*3600 thenCountNum<=0;elseCountNum<=CountNum+1;end if;end if;end if;end process;end;library ieee;entity Counter115 isport(Clock:in std_logic;Reset:in std_logic;Hold:in std_logic;CountNum:buffer integer range 0 to 114 );end;architecture Behavoir of Counter115 is beginprocess(Reset,Clock)beginif Reset='1' thenCountNum<=0;elsif rising_edge(clock) thenif Hold='1' thenCountNum<=CountNum;elseif CountNum=114 thenCountNum<=0;elseCountNum<=CountNum+1;end if;end if;end if;end process;end;library ieee;entity Counter120 isport(Clock:in std_logic;Reset:in std_logic;Hold:in std_logic;CountNum:buffer integer range 0 to 119 );end;architecture Behavoir of Counter120 is beginprocess(Reset,Clock)beginif Reset='1' thenCountNum<=0;elsif rising_edge(Clock) thenif Hold='1' thenCountNum<=CountNum;elseif CountNum=119 thenCountNum<=0;elseCountNum<=CountNum+1;end if;end if;end if;end process;end;RedB2,YellowB2,GreenB2,LeftB2:out std_logic);end;architecture Behavior of controller isbeginprocess(Clock)beginif falling_edge(Clock) thenif Hold='1' thenRedA1<='0';YellowA1<='1';GreenA1<='0';LeftA1<='0';RedA2<='0';YellowA2<='1';GreenA2<='0';LeftA2<='0';RedB1<='0';YellowB1<='1';GreenB1<='0';LeftB1<='0';RedB2<='0';YellowB2<='1';GreenB2<='0';LeftB2<='0';elseif(Countsystem>=7*3600 and Countsystem<=20*3600) thenif(Countnum1<50) then --state of crossing A when busyRedA1<='0';YellowA1<='0';GreenA1<='1';LeftA1<='0';NumA1<=50-CountNum1; RedA2<='1';YellowA2<='0';GreenA2<='0';LeftA2<='0';NumA2<=75-CountNum1;elsif Countnum1<(50+5) thenRedA1<='0';YellowA1<='1';GreenA1<='0';LeftA1<='0';NumA1<=55-CountNum1; RedA2<='1';YellowA2<='0';GreenA2<='0';LeftA2<='0';NumA2<=75-CountNum1;elsif Countnum1<(50+5+15) thenRedA1<='0';YellowA1<='0';GreenA1<='0';LeftA1<='1';NumA1<=70-CountNum1; RedA2<='1';YellowA2<='0';GreenA2<='0';LeftA2<='0';NumA2<=75-CountNum1;elsif Countnum1<(50+5+15+5) thenRedA1<='0';YellowA1<='1';GreenA1<='0';LeftA1<='0';NumA1<=75-CountNum1; RedA2<='1';YellowA2<='0';GreenA2<='0';LeftA2<='0';NumA2<=75-CountNum1;elsif Countnum1<(50+5+15+5+15) thenRedA1<='1';YellowA1<='0';GreenA1<='0';LeftA1<='0';NumA1<=115-CountNum1; RedA2<='0';YellowA2<='0';GreenA2<='1';LeftA2<='0';NumA2<=90-CountNum1;elsif Countnum1<(50+5+15+5+15+5) thenRedA1<='1';YellowA1<='0';GreenA1<='0';LeftA1<='0';NumA1<=115-CountNum1; RedA2<='0';YellowA2<='1';GreenA2<='0';LeftA2<='0';NumA2<=95-CountNum1;elsif Countnum1<(50+5+15+5+15+5+15) thenRedA1<='1';YellowA1<='0';GreenA1<='0';LeftA1<='0';NumA1<=115-CountNum1; RedA2<='0';YellowA2<='0';GreenA2<='0';LeftA2<='1';NumA2<=110-CountNum1;elseRedA1<='1';YellowA1<='0';GreenA1<='0';LeftA1<='0';NumA1<=115-CountNum1; RedA2<='0';YellowA2<='1';GreenA2<='0';LeftA2<='0';NumA2<=115-CountNum1;end if;if(Countnum1<15) then --state of crossing B when busyRedB1<='1';YellowB1<='0';GreenB1<='0';LeftB1<='0';NumB1<=20-CountNum1; RedB2<='0';YellowB2<='0';GreenB2<='0';LeftB2<='1';NumB2<=15-CountNum1;elsif(Countnum1<20) thenRedB1<='1';YellowB1<='0';GreenB1<='0';LeftB1<='0';NumB1<=20-CountNum1; RedB2<='0';YellowB2<='1';GreenB2<='0';LeftB2<='0';NumB2<=20-CountNum1;elsif Countnum1<(20+50) thenRedB1<='0';YellowB1<='0';GreenB1<='1';LeftB1<='0';NumB1<=70-CountNum1;RedB2<='1';YellowB2<='0';GreenB2<='0';LeftB2<='0';NumB2<=95-CountNum1;elsif Countnum1<(20+50+5) thenRedB1<='0';YellowB1<='1';GreenB1<='0';LeftB1<='0';NumB1<=75-CountNum1; RedB2<='1';YellowB2<='0';GreenB2<='0';LeftB2<='0';NumB2<=95-CountNum1;elsif Countnum1<(20+50+5+15) thenRedB1<='0';YellowB1<='0';GreenB1<='0';LeftB1<='1';NumB1<=90-CountNum1; RedB2<='1';YellowB2<='0';GreenB2<='0';LeftB2<='0';NumB2<=95-CountNum1;elsif Countnum1<(20+50+5+15+5) thenRedB1<='0';YellowB1<='1';GreenB1<='0';LeftB1<='0';NumB1<=95-CountNum1; RedB2<='1';YellowB2<='0';GreenB2<='0';LeftB2<='0';NumB2<=95-CountNum1;elsif Countnum1<(20+50+5+15+5+15) thenRedB1<='1';YellowB1<='0';GreenB1<='0';LeftB1<='0';NumB1<=115-CountNum1+20; RedB2<='0';YellowB2<='0';GreenB2<='1';LeftB2<='0';NumB2<=110-CountNum1;elseRedB1<='1';YellowB1<='0';GreenB1<='0';LeftB1<='0';NumB1<=115-CountNum1+20; RedB2<='0';YellowB2<='1';GreenB2<='0';LeftB2<='0';NumB2<=115-CountNum1;end if;elseif(Countnum2<60) then --state of crossing A when not busy RedA1<='0';YellowA1<='0';GreenA1<='1';LeftA1<='0';NumA1<=60-CountNum2; RedA2<='1';YellowA2<='0';GreenA2<='0';LeftA2<='0';NumA2<=90-CountNum2;elsif Countnum2<65 thenRedA1<='0';YellowA1<='1';GreenA1<='0';LeftA1<='0';NumA1<=65-CountNum2; RedA2<='1';YellowA2<='0';GreenA2<='0';LeftA2<='0';NumA2<=90-CountNum2;elsif Countnum2<85 thenRedA1<='0';YellowA1<='0';GreenA1<='0';LeftA1<='1';NumA1<=85-CountNum2;elsif Countnum2<90 thenRedA1<='0';YellowA1<='1';GreenA1<='0';LeftA1<='0';NumA1<=90-CountNum2; RedA2<='1';YellowA2<='0';GreenA2<='0';LeftA2<='0';NumA2<=90-CountNum2;elsif Countnum2<95 thenRedA1<='1';YellowA1<='0';GreenA1<='0';LeftA1<='0';NumA1<=120-CountNum2; RedA2<='0';YellowA2<='0';GreenA2<='1';LeftA2<='0';NumA2<=95-CountNum2;elsif Countnum2<100 thenRedA1<='1';YellowA1<='0';GreenA1<='0';LeftA1<='0';NumA1<=120-CountNum2; RedA2<='0';YellowA2<='1';GreenA2<='0';LeftA2<='0';NumA2<=100-CountNum2;elsif Countnum2<115 thenRedA1<='1';YellowA1<='0';GreenA1<='0';LeftA1<='0';NumA1<=120-CountNum2; RedA2<='0';YellowA2<='0';GreenA2<='0';LeftA2<='1';NumA2<=115-CountNum2;elseRedA1<='1';YellowA1<='0';GreenA1<='0';LeftA1<='0';NumA1<=120-CountNum2; RedA2<='0';YellowA2<='1';GreenA2<='0';LeftA2<='0';NumA2<=120-CountNum2;end if;if(Countnum2<15) then --state of crossing B when not busy RedB1<='1';YellowB1<='0';GreenB1<='0';LeftB1<='0';NumB1<=20-CountNum2; RedB2<='0';YellowB2<='0';GreenB2<='0';LeftB2<='1';NumB2<=15-CountNum2;elsif(Countnum2<20) thenRedB1<='1';YellowB1<='0';GreenB1<='0';LeftB1<='0';NumB1<=20-CountNum2; RedB2<='0';YellowB2<='1';GreenB2<='0';LeftB2<='0';NumB2<=20-CountNum2;elsif Countnum2<80 thenRedB1<='0';YellowB1<='0';GreenB1<='1';LeftB1<='0';NumB1<=80-CountNum2; RedB2<='1';YellowB2<='0';GreenB2<='0';LeftB2<='0';NumB2<=110-CountNum2;elsif Countnum2<85 thenRedB2<='1';YellowB2<='0';GreenB2<='0';LeftB2<='0';NumB2<=110-CountNum2;elsif Countnum2<105 thenRedB1<='0';YellowB1<='0';GreenB1<='0';LeftB1<='1';NumB1<=105-CountNum2; RedB2<='1';YellowB2<='0';GreenB2<='0';LeftB2<='0';NumB2<=110-CountNum2;elsif Countnum2<110 thenRedB1<='0';YellowB1<='1';GreenB1<='0';LeftB1<='0';NumB1<=110-CountNum2; RedB2<='1';YellowB2<='0';GreenB2<='0';LeftB2<='0';NumB2<=110-CountNum2;elsif Countnum2<115 thenRedB1<='1';YellowB1<='0';GreenB1<='0';LeftB1<='0';NumB1<=120-CountNum2+20; RedB2<='0';YellowB2<='0';GreenB2<='1';LeftB2<='0';NumB2<=115-CountNum2;elseRedB1<='1';YellowB1<='0';GreenB1<='0';LeftB1<='0';NumB1<=120-CountNum2+20; RedB2<='0';YellowB2<='1';GreenB2<='0';LeftB2<='0';NumB2<=120-CountNum2;end if;end if;end if;end if;end process;end;。

相关文档
最新文档