数字系统课程设计报告
数字系统设计技术课程设计报告
数字系统设计技术课程设计报告深圳职业技术学院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数字系统课程设计一、课程目标知识目标: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. 引言数字系统设计是计算机科学与工程中的重要领域之一。
本实验旨在通过设计一个基本的数字系统,深入理解数字系统的原理和设计过程。
本文将按照以下步骤详细介绍实验的设计和实施。
2. 实验目标本实验旨在设计一个简单的数字系统,包括输入、处理和输出三个模块。
具体目标如下: - 设计一个输入模块,用于接收用户的输入数据。
- 设计一个处理模块,对输入数据进行特定的处理。
- 设计一个输出模块,将处理结果展示给用户。
3. 实验设计3.1 输入模块设计输入模块主要用于接收用户的输入数据,并将其传递给处理模块进行处理。
在本实验中,我们选择使用键盘作为输入设备。
具体设计步骤如下: 1. 初始化输入设备,确保能够正确接收用户输入。
2. 设计输入缓冲区,用于存储用户输入的数据。
3. 实现输入函数,将用户输入的数据存储到输入缓冲区中。
3.2 处理模块设计处理模块是数字系统的核心部分,负责对输入数据进行特定的处理。
在本实验中,我们选择设计一个简单的加法器作为处理模块。
具体设计步骤如下: 1. 定义输入数据的格式和表示方法。
2. 实现加法器的逻辑电路,可以通过使用逻辑门和触发器等基本组件来完成。
3. 设计加法器的控制电路,用于控制加法器的运算过程。
4. 验证加法器的正确性,可以通过给定一些输入数据进行测试。
3.3 输出模块设计输出模块用于将处理结果展示给用户。
在本实验中,我们选择使用显示器作为输出设备。
具体设计步骤如下: 1. 初始化输出设备,确保能够正确显示处理结果。
2. 设计输出缓冲区,用于存储待显示的数据。
3. 实现输出函数,将输出数据从输出缓冲区中传输到显示器上。
4. 实验实施4.1 输入模块实施根据3.1节中的设计步骤,我们首先初始化输入设备,然后设计输入缓冲区,并实现相应的输入函数。
4.2 处理模块实施根据3.2节中的设计步骤,我们定义输入数据的格式和表示方法,然后实现加法器的逻辑电路和控制电路。
tlc549数字系统课程设计
tlc549数字系统课程设计一、课程目标知识目标:1. 学生能够理解tlc549数字系统的基础知识,掌握其工作原理和功能特点。
2. 学生能够运用数字系统相关知识,分析并设计简单的tlc549应用电路。
3. 学生了解数字系统的基本组成部分,掌握数字信号处理的基本概念。
技能目标:1. 学生能够运用所学知识,使用相关软件或工具进行tlc549数字系统的设计和仿真。
2. 学生具备实际操作能力,能够搭建并调试简单的tlc549应用电路。
3. 学生能够独立解决数字系统设计中遇到的问题,具备一定的故障排查和优化能力。
情感态度价值观目标:1. 学生对数字系统产生兴趣,提高学习积极性,培养良好的学习习惯。
2. 学生通过课程学习,认识到数字技术在现实生活中的重要性,增强对科技创新的热情。
3. 学生在团队合作中,学会尊重他人意见,培养沟通协作能力和解决问题的能力。
课程性质:本课程为实践性较强的数字系统设计课程,结合理论知识与实际操作,培养学生的实际应用能力。
学生特点:学生已具备一定的电子基础和数字电路知识,具有较强的学习能力和动手能力。
教学要求:课程要求学生掌握tlc549数字系统的基础知识,能够运用所学知识进行实际设计和操作,注重培养学生的实践能力和创新精神。
通过课程目标的分解,使学生在知识、技能和情感态度价值观方面取得具体的学习成果,为后续教学设计和评估提供明确方向。
二、教学内容1. 数字系统基础知识回顾:数字信号与模拟信号的区别,数字系统的基本组成部分,数字电路的基本原理。
教材章节:第一章 数字系统概述2. tlc549芯片原理与功能:介绍tlc549芯片的工作原理,性能参数,应用领域。
教材章节:第三章 数字电路器件3. tlc549应用电路设计:分析并设计简单的tlc549应用电路,如模数转换电路、信号采集电路等。
教材章节:第四章 数字电路设计与实践4. 数字系统设计与仿真:运用相关软件或工具,如Multisim、Proteus等,进行tlc549数字系统的设计与仿真。
东南大学自动化学院---《数字系统课程设计》-专业综合设计报告
东南大学自动化学院《数字系统课程设计》专业综合设计报告姓名:学号:专业:自动化实验室:电工电子四楼组别:无同组人员:无设计时间:2012年8 月8日—- 2010 年9 月15 日评定成绩:审阅教师:目录一.课程设计的目的与要求(含设计指标)……………………………………………3页码二.原理设计(或基本原理)……………………………………………………………3页码三。
架构设计(架构设计)………………………………………………………………4页码四。
方案实现与测试(或调试)…………………………………………………………5页码五.分析与总结……………………………………………………………………………15页码一。
课程设计的目的与要求(含设计指标)主干道与乡村公路十字交叉路口在现代化的农村星罗棋布,为确保车辆安全、迅速地通过,在交叉路口的每个入口处设置了红、绿、黄三色信号灯。
红灯禁止通行;绿灯允许通行;黄灯亮则给行驶中的车辆有时间行驶到禁行线之外。
主干道和乡村公路都安装了传感器,检测车辆通行情况,用于主干道的优先权控制。
具体要求如下:(1)当乡村公路无车时,始终保持乡村公路红灯亮,主干道绿灯亮。
(2)当乡村公路有车时,而主干道通车时间已经超过它的最短通车时间时,禁止主干道通行,让乡村公路通行。
主干道最短通车时间为25s 。
(3)当乡村公路和主干道都有车时,按主干道通车25s,乡村公路通车16s交替进行。
(4)不论主干道情况如何,乡村公路通车最长时间为16s。
(5)在每次由绿灯亮变成红灯亮的转换过程中间,要亮5s时间的黄灯作为过渡。
(6)用开关代替传感器作为检测车辆是否到来的信号。
用红、绿、黄三种颜色的发光二极管作交通灯。
要求显示时间,倒计时二。
原理设计(或基本原理)本设计用了Verilog HDL语言, TOP—DOWN设计,设计方法从系统设计入手,在顶层进行功能方框图的划分和结构设计。
具体过程如下:该系统中输入变量有:set(使能开关),c(乡村道路开关), clk(系统时钟),该控制系统打开后共有两种状态: 一种是只有主干道交通灯亮,这种情况比较简单,此时主干道绿灯一直亮着。
数字系统课程设计报告_中央空调
中央空调控制系统设计报告组员:040040一.设计要求大楼分为1,2,3号楼,共用某型号中央空调,但是1,2,3号都有独立的2级控制器,大楼另有总控制器1级控制开关。
1,2,3号楼均有一定的房间(假设为3个,001-003)。
每个房间又有自己的控制面板3级控制。
如果总控1级打开,则2级可以使用,而且2级可以控制下一级的设置,意思是如果2级选择了制热模式,则3级所在的房间就只能选择制热,通风,除湿模式,不能设置为制冷方式,如果2级是制冷,3级就不能制热;如果2级是通风,3级就只能是通风或除湿,如果2级是除湿,3级也只能是通风或除湿。
但是2级又本身是每号楼的001号房间的3级控制器。
另外,二级控制器可以选择是否控制温度范围,根据政府的规定,夏天制冷不得低于26度,冬季制冷不得高于20度,可以通过2级控制器设置限制并且控制。
对于3级控制器,根据2级控制器的选择做出相应的动作并提供相应的指示。
二.设计思路根据设计要求,系统有模式如下:1:以上框架从左到右分别表示一级,二级,三级开关,其中二级开关又是每号楼001号房间的开关,只有当上级开关打开时下级开关才有效,否则无效。
2:根据实际情况,每个房间除了有开关以外还有一个模式调节信号,当这个信号出现一个上升沿,相应房间的模式便会改变到我们设定的循环的下一个状态各输入输出信号如下:例:一号楼floor1_sel2:001号房间模式选择开关floor1_sel12:002号房间模式选择开关floor1_sel13:003号房间模式选择开关floor1_modeout_room1:001号房间模式输出floor1_modeout_room2:002号房间模式输出floor1_modeout_room3:002号房间模式输出floor1_mode2:二级开关的模式(中间变量,用于控制2号三号房间的模式循环模式)floor1_modein_room2:002号房间循环模式floor1_modein_room3:003号房间循环模式floor1_modeout2:2级开关循环模式二级开关的循环模式关(000)制冷(001)制热(010)除湿(100)通风(011)如果二级开关是制冷:三级开关模式循环模式关(000)制冷(001)通风(011)除湿(100)如果二级开关是制热:三级开关模式循环模式关(000)制热(001)通风(011)除湿(100)如果二级开关是通风:三级开关模式循环模式关(000)通风(011)除湿(100)如果二级开关是除湿:三级开关模式循环模式关(000)除湿(100)通风(011 )各个房间的模式变换由下列进程完成process(floor1_k2,floor1_sel2,key_all)process(pr_mode1)process(floor1_mode2)process(floor1_k12,floor1_sel12,floor1_k2,key_all)process(pr_moderoom312,nx_moderoom212,floor1_modein_room2)process(floor1_k13,floor1_sel13,floor1_k2,key_all)process(pr_moderoom313,pr_moderoom213,floor1_modein_room3)另外,二号楼和三号楼变量和一号楼一样,且各自独立。
数字系统设计课程设计报告
《数字系统设计》课程设计报告多功能数字钟一:设计任务1.能正常计时。
显示模式分为24小时制和12小时制。
其中12小时制须显示上、下午。
“时”、“分”、“秒”都要显示。
2.具有快速校准时、分、秒的功能。
手动校准,用一个功能键选择校时、校分功能,用另一功能键调校对应时、分数值。
3.整点自动报时。
在离整点10s时,便自动发出鸣叫声,步长1s,每隔1s鸣叫一次,前四响是低音,最后一响为高音,最后一响结束为整点。
二:设计方案对于这个比较大型的系统,我认为应该将各个功能都设计为模块,而后再组合在一些,这样就会使设计思路清晰,同时也不容易出错,因此,我根据实验要求设计如下:1.数字钟顶层设计外部输入信号有(1)、1kHz时钟信号clk(由硬件分频得到),(2)、按键的行与列的输入信号col[3..0]与row[3..0](作为按键扫描用),外部输出有:(3)、整点报时信号braz(59分51/3/5/7秒时未500Hz低频声,59分59秒时为1kHz高频声)、(4)、显示信号led的位选weiH,weiL,hourH,hourL,minH,minL,secH,secL、(5)、显示信号的数据:mux_out[4..0](经过一译码器)2. 内部功能模块主要有:1、div1000的分频模块:作为时钟的秒计时,因为总输入信号是1000HZ,分频后,变为1HZ,时间下好为1S。
2、fz500Hz的分频模块:用作整点报时的低频输出信号。
3、day :用作对24小时制和12小时制模式的切换与判断,当为12小时制时,上午,最高二位显示10,下午时,最高两位显示01。
当为24小时制时,一直显示00。
count60:用于秒钟的计数,当计数到60时,输出一个脉冲给分钟计数模块。
同时将计数值转换为bcd译码器的输入4、mincount60:用于分钟的计数,当计数到60时,输出一个脉冲给小时计数模块同时用于分钟的调整加1。
同时将计数值转换为bcd译码器的输入5、count24: 用于小时的计数,同时用于小时的调整加1。
数字系统课程设计报告
基于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和E,每一处的要求如下:每一处都有3个灯指示左转,直行和右转A车辆,并且灯也分红色和黄色绿色,并配八有时间显示,调研实际的运行情况并设计 ---------------出对应的电路。
并且要完成以下附加功___________能:第一,可以将系统根据时间来调整,在白天某一路段比较繁忙对应的通行时间较长,晚上因为另一路段繁忙则做适当的调整;第二,如系统出现故障不能正常p显示,则黄灯全部闪烁以提醒车辆注意。
D要求系统有一个系统时钟,按照24小时 _______________计时,A处和E处早上7点到晚上8点,南北方向绿灯通行时间为5 0秒,黄灯 5 秒,左拐灯15秒,黄灯5秒,红灯4 0 秒。
其余时间分别为60秒,5秒,20秒,5秒,30秒。
A处和B处的交通灯是联动的,即A处驶往B处的车辆,在A处南北方向交通灯绿灯后的南北方向交通灯绿灯通行。
20秒钟后B处方案设计(1)总体方案设计我们小组成员展开讨论,结合本题目的要求,并且参考了实际路灯的运行情况和查阅了相关资料后,提出了一种切实可行的路灯控制方案一一即路灯八状态轮换循环控制方案。
从单一方向上看,单个路口红绿灯转换顺序为:绿灯(50s—黄灯(5s)—左拐灯(15s—黄灯(5s)—红灯(40s)。
(当此方向上路灯为红灯时,即40s的时间内,另一方向上的路灯要完成,绿灯(15s)—黄灯(5s)—左拐灯(15s)—黄灯(5s),的转换。
现代数字系统设计--课程设计报告
现代电子系统课程设计Modernelectronicsystem course design学分:2 周数:2一、进度安排布置课题和讲解:1天查阅资料、设计:4天实验:3天撰写报告:2天二、成绩考核达标要求:1、根据据设计题目进展系统功能分析,根据系统功能分析的结果给出系统的逻辑算法,系统框架;给出采用流程图或描述语言等手段描述的系统逻辑功能;据此完成系统方案设计并进展论证,根据该方案进展系统设计。
提交实现受控器及控制器的VHDL源程序以及仿真结果。
2、在GW48-SOPC实验开发系统上完成系统的物理实现。
3、对试验结果进展必要的分析。
4、根据要求完成课程设计报告书。
考核方式:可根据学生设计的VHDL源程序、硬件原理图、软件流程图和课程设计报告书的质量及实验完成情况评定成绩,在条件容许时也可进展辩论考核。
报告〔包括辩论〕成绩占70%,实验成绩占30%。
三、课程设计报告格式、容要求课程设计报告应包括方案设计与论证、电路图、VHLD源程序及软件流程图等设计文件、FPGA时序仿真结果、实验结果分析等方面,报告书要求字迹工整,语言简练、文字通顺。
报告书应以十六开纸书写,四周留有边框,并装订成册。
其格式要求如下:1.封面〔模板从学校校园网上下载〕封面应包括题目、学生、学号、班级、日期等相关信息。
2.任务书〔由指导教师提供〕3.摘要摘要要求400字以。
主要包括总体方案,实现方法,实现的功能、特点等。
4.目录可采用二~三级目录构造。
5.正文正文应包含课程设计报告容要求中所列出的每一方面的容,一般可按章节构造撰写。
1)方案设计与论证本章应包含方案的比拟与对为何采用此方案的论证。
在方案比拟中应至少提供两种以上的实现方案,每种方案只需提供原理框图并说明每个方案的特点,说明各自的优缺点。
在原理框图的根底上应采用现代电子系统设计方法进展系统设计,对系统的各组成环节进展原理说明。
2)电路图及设计文件电路图应采用Protel或Orcad等电路设计CAD软件绘制,软件流程图应采用Visio绘制,VHDL源程序容应规、清晰、工整、符合规。
数字系统课程设计报告
xx学院数字系统课程设计报告书课题名称基于FPGA的数字钟设计院系信息工程学院姓名学号 xx专业班级信息工程、信工121指导教师xx设计时间2013-2014学年第2学期15、16周2014年 06月 18 日目录摘要 (1)1设计目的 (2)2设计内容及要求 (2)3系统整体方案及设计原理 (2)4各模块电路设计与实现 (2)4.1 分频模块设计与实现 (2)4.2 计数器模块设计与实现 (4)4.3 1602显示驱动模块设计与实现 (6)5系统仿真及硬件下载 (15)5.1系统仿真 (15)5.2硬件下载 (21)6设计总结 (24)参考文献 (24)摘要:本设计为一个多功能的数字钟具有时、分、秒计数显示功能以24小时循环计数,采用EDA技术以硬件描述语言VerilogHDL为系统逻辑描述手段设计文件在QUARTUS II工具软件环境下采用自顶向下的设计方法由各个基本模块共同构建了一个基于FPGA的数字钟。
系统主芯片采用EP2C5T144C8由时钟模块、控制模块、计时模块、数据译码模块、显示以及报时模块组成。
经编译和仿真所设计的程序在可编程逻辑器件上下载验证本系统能够完成时、分、秒的分别显示由按键输入进行数字钟的清零功能。
本设计采用的VerilogHDL是一种全方位的硬件描述语言具有极强的描述能力能支持系统行为级、寄存器传输级和逻辑门级三个不同层次的设计支持结构、数据流、行为三种描述形式的混合描述、覆盖面广、抽象能力强因此在实际应用中越来越广泛。
而FPGA是特殊的ASIC芯片与其他的ASIC芯片相比它具有设计开发周期短、设计制造成本低、开发工具先进、标准产品无需测试、质量稳定以及可实时在线检测等优点。
钟表的数字化给人们生产生活带来了极大的方便而且大大地扩展了钟表原先的报时功能。
诸如定时自动报警、定时启闭电路等都是以钟表数字化为基础的。
因此研究数字钟及扩大其应用有着非常现实的意义。
关键词:FPGA QuartusⅡ VerilogHDL 数字钟1、课程实习目的电子实习是电类各专业教学中的重要实习环节,是加强专业知识、提高动手能力和激发创新意识的重要途径。
数字系统设计实践课程设计报告(数字钟)
评分:________ 数字系统设计实践课程设计报告设计题目:数字钟的设计程序班级:姓名:学号:指导教师:实验日期:年月日1.秒、分60进制计数模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SECOND ISPORT(CLK,RESET:IN STD_LOGIC;DATEOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);COUT:OUT STD_LOGIC);END SECOND;ARCHITECTURE BEHAV OF SECOND ISSIGNAL OLBR:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL OHBR:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINPROCESS(CLK,RESET)BEGINIF(RESET='1')THENOLBR<="0000";OHBR<="0000";COUT<='0';ELSIF(CLK'EVENT AND CLK='1')THENIF(OLBR=9 AND OHBR>4)THENOLBR<="0000";OHBR<="0000";COUT<='1';ELSIF(OLBR>8)THENOLBR<="0000";OHBR<=OHBR+1;ELSEOLBR<=OLBR+1;OHBR<=OHBR;COUT<='0';END IF;END IF;END PROCESS;DATEOUT(3 DOWNTO 0)<=OLBR;DATEOUT(7 DOWNTO 4)<=OHBR;END BEHAV;2.时24进制计数模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY HOUR ISPORT(CLK,RESET:IN STD_LOGIC;DATEOUT:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END HOUR;ARCHITECTURE BEHAV OF HOUR ISSIGNAL OLBR:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL OHBR:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGINPROCESS(CLK,RESET)BEGINIF(RESET='1')THENOLBR<="0000";OHBR<="0000";ELSIF(CLK'EVENT AND CLK='1')THENIF(OLBR=3 AND OHBR>1)THENOLBR<="0000";OHBR<="0000";ELSIF(OLBR>8)THENOLBR<="0000";OHBR<=OHBR+1;ELSEOLBR<=OLBR+1;OHBR<=OHBR;END IF;END IF;END PROCESS;DATEOUT(3 DOWNTO 0)<=OLBR;DATEOUT(7 DOWNTO 4)<=OHBR;END BEHAV;3.扫描模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SELTIME ISPORT(CLK1,RESET:IN STD_LOGIC;HOUR:IN STD_LOGIC_VECTOR(7 DOWNTO 0);MIN,SEC:IN STD_LOGIC_VECTOR(7 DOWNTO 0);SEL:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);DAOUT:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END ENTITY SELTIME;ARCHITECTURE FUN OF SELTIME ISSIGNAL TIME:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGINSEL<=TIME;PROCESS(CLK1,RESET)BEGINIF(CLK1'EVENT AND CLK1='1')THENIF(RESET='1')THENTIME<="000";ELSIF(TIME="101")THENTIME<="000";ELSETIME<=TIME+1 after 1000000 ns;END IF;END IF;CASE TIME ISWHEN"000"=>DAOUT<=SEC(3 DOWNTO 0); WHEN"001"=>DAOUT<=SEC(7 DOWNTO 4); WHEN"010"=>DAOUT<=MIN(3 DOWNTO 0); WHEN"011"=>DAOUT<=MIN(7 DOWNTO 4); WHEN"100"=>DAOUT<=HOUR(3 DOWNTO 0); WHEN"101"=>DAOUT<=HOUR(7 DOWNTO 4);WHEN OTHERS=>NULL;END CASE;END PROCESS;END FUN;4.译码模块Library ieee;use ieee.std_logic_1164.all;entity show1 isport(num:in std_logic_vector(3 downto 0);Y:out std_logic_VECTOR(6 DOWNTO 0)); end show1;architecture behav of show1 isbeginprocessbegincase num iswhen"0000"=>y<="1111110"; when"0001"=>y<="0110000"; when"0010"=>y<="1101101"; when"0011"=>y<="1111001"; when"0100"=>y<="0110011"; when"0101"=>y<="1011011"; when"0110"=>y<="0011111"; when"0111"=>y<="1110000"; when"1000"=>y<="1111111"; when"1001"=>y<="1110011";when others=>y<="0000000";end case;end process;end behav;5.调时模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SETCTL ISPORT(SEL,SET:IN STD_LOGIC;HOR,MIN,SEC:OUT STD_LOGIC;SCTL,MCTL,HCTL:OUT STD_LOGIC);END SETCTL;ARCHITECTURE BEHAV OF SETCTL ISSIGNAL CHOISE:INTEGER RANGE 0 TO 3;SIGNAL FLAG:STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINP1: PROCESS(SEL,CHOISE)BEGINIF(SEL'EVENT AND SEL='1') THENCHOISE<=CHOISE+1;ELSECHOISE<=CHOISE;END IF;END PROCESS P1;P2: PROCESS(SET,CHOISE)BEGINCASE CHOISE ISWHEN 0=>HOR<='0';MIN<='0';SEC<='0';FLAG<="000";--正常显示WHEN 1=>HOR<='0';MIN<='0';SEC<=SET;FLAG<="100";--调整秒位闪烁WHEN 2=>HOR<='0';MIN<=SET;SEC<='0';FLAG<="010";--调整分位闪烁WHEN 3=>HOR<=SET;MIN<='0';SEC<='0';FLAG<="001";--调整时位闪烁WHEN OTHERS=>NULL;END CASE;END PROCESS P2;SCTL<=FLAG(2);MCTL<=FLAG(1);HCTL<=FLAG(0);END BEHAV;6.整点报时以及花样显示模块报时程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SPEAK ISPORT(CLK:IN STD_LOGIC;START:IN STD_LOGIC;SPEAKER:OUT STD_LOGIC);END SPEAK;ARCHITECTURE BEHAV OF SPEAK ISBEGINPROCESS(START)BEGINCASE START ISWHEN '0'=>SPEAKER<='0';WHEN '1'=>SPEAKER<=CLK;WHEN OTHERS=>NULL;END CASE;END PROCESS;END BEHAV;花样显示程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COLOR1 ISPORT(CLK:IN STD_LOGIC;LED:OUT STD_LOGIC_VECTOR(11 DOWNTO 0));END COLOR1;ARCHITECTURE BEHAV OF COLOR1 IS SIGNAL COUNT:INTEGER RANGE 0 TO 15; BEGINP1:PROCESS(CLK)BEGINIF(CLK'EVENT AND CLK='1')THEN COUNT<=COUNT+1;END IF;END PROCESS P1;P2:PROCESS(COUNT)BEGINCASE COUNT ISWHEN 0=>LED<="000000001111";WHEN 1=>LED<="000011110000";WHEN 2=>LED<="111100000000";WHEN 3=>LED<="000000001111";WHEN 4=>LED<="000011110000";WHEN 5=>LED<="111100000000";WHEN 6=>LED<="000000001111";WHEN 7=>LED<="000011110000";WHEN 8=>LED<="111100000000";WHEN 9=>LED<="000000001111";WHEN 10=>LED<="000011110000";WHEN 11=>LED<="111100000000";WHEN 12=>LED<="000000001111";WHEN 13=>LED<="000011110000";WHEN 14=>LED<="111100000000";WHEN 15=>LED<="111111111111";END CASE;END PROCESS P2;END BEHAV;整点宝石:花样显示:7.信号选择模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY MUX21 ISPORT(S,CLK,BOTTON:IN STD_LOGIC;Y:OUT STD_LOGIC);END MUX21;ARCHITECTURE BEHAV OF MUX21 IS BEGINY<=CLK WHEN S='0'ELSE BOTTON;END BEHAV;8顶层模块。
数字系统设计报告
基于FPGA旳cordic算法设计及实现1.FPGA简介由于本次cordic算法旳设计和实现是基于FPGA旳,因此,先对FPGA做一种简朴简介。
FPGA(Field-Programmable Gate Array),即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件旳基础上深入发展旳产物。
FPGA由6部分构成,分别为可编程输入/输出单元、基本可编程逻辑单元、嵌入式块RAM、丰富旳布线资源、底层嵌入功能单元和内嵌专用硬核等。
FPGA设计旳基本流程如下:2.Cordic算法原理如图所示,初始向量旋转角度之后得到向量,此向量有(x0,y0)θ(x1,y1)如下关系:x1=x0cosθ‒y0sinθy 1=y 0cosθ+x 0sinθ注:为待求角θ假设初始向量通过N 次旋转之后得到新向量,且每次旋转角度正切值δ都为2旳倍数,则第次旋转角度为,即i δ=arctan (2‒i )cosδ=轻易得到角度,其中或-1,体现旋转角度(1(1+2‒2i ))0.5θ≈∑s i δi s i =1旳方向,第步旋转可以体现为:i x i +1=(1(1+2‒2i ))0.5(x i ‒s i y i 2‒i )y i +1=(1(1+2‒2i ))0.5(y i +x i 2‒i )其中称为校模因子,当旋转次数一定期,趋于一种常(1(1+2‒2i ))0.5数,∏(1(1+2‒2i ))0.5≈0.6063而由极限 可知,算法每一步就可以简化为:lim i→∞1(1+2‒i )=1x i +1=x i ‒s i y i 2‒iy i +1=y i +s i x i 2‒i从而可以看出,对于移动旳角度,目前只需要硬件加减法器和移位器θ就可以算出成果。
引入Z ,体现次旋转后相位累加旳部分和,则:z i +1=z i ‒s i arctan 2‒i通过n 次旋转之后,Z →0,即与目旳角重叠。
3.算法设计思绪1)进行端口阐明和数据类型定义。
数字系统综合设计实验报告
实验十二 数字系统综合设计一. 实验目的1.进一步提高独立分析问题和解决问题的能力。
2.掌握数字系统的分析和设计方法。
3.对数字集成电路的综合应用有进一步的认识和理解。
二. 设计题目:制作一个简易的电子秒表功能要求:(1) 具有两位数码显示。
分别显示1/10秒和秒计数。
(2) 有两个按键分别控制启动(开始计时)/停止和清零。
功能表如下:三、概述:要完成题目要求的电子秒表功能,系统应具有如下几部分电路:1、 定时电路;题目要求最小计时单位为1/10秒,即100ms 。
这部分电路必须能准确的产生周期为100ms (频率为10Hz )的时钟信号。
2、 计时电路:题目要求系统具有两位显示器,分别显示秒和1/10秒信号。
所以本系统应具有两个十进制计数器,分别对定时信号进行计数,以产生1/10秒和秒计数。
系统计数范围从0.0~9.9秒。
3、 显示译码驱动电路:将计数器的计数结果(BCD 码)通过译码器译成七段显示码并驱动LED 数码管显示出来。
4、 控制电路:根据题目要求,本电子秒表应具有两个按键。
其中一个控制秒表的启/停,本按键应有自锁功能,按一次启动计时,再按一次停止计时。
另一个按键控制清“0”,本按键不需自锁,按下时系统清“0”;放开时系统回复正常计时功能。
系统电路结构框图如图1所示。
图1 系统结构框图四、电路设计方案:1、定时电路:系统的定时电路要求产生周期为100ms的时钟信号。
根据我们学过的知识,此电路可由下述几种方案实现:方案1:用555定时器构成多谐振荡器。
定时器是电子秒表的核心,其作用是产生一个标准频率的脉冲信号。
振荡频率的精度和稳定度决定了秒表的质量。
图2采用集成电路555定时器与RC组成的多谐振荡器。
输出的脉冲频率为f S=1/[(R1+2R2)C1ln2],周期T=0.69(R1+2R2)C1。
若参数选择:R1= K 、R2= K欧姆,C1=4.7 uF时,可以得到100毫秒脉冲信号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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;。