红绿灯交通信号系统设计说明_第1页
红绿灯交通信号系统设计说明_第2页
红绿灯交通信号系统设计说明_第3页
红绿灯交通信号系统设计说明_第4页
红绿灯交通信号系统设计说明_第5页
已阅读5页,还剩13页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录摘要 1VHDL基本概念2VHDL语言的产生与发展21.2 VHDL语言的特点 21.3 VHDL语言与仿真31.4编译仿真方法与VHDL和C+的类比31.5 VHDL在电子系统硬件设计中的优势4第二章红绿灯交通信号系统52.1 红绿灯交通信号系统功能概述52.2 红绿灯交通信号系统外观52.3 红绿灯交通信号系统的VHDL模块62.4 红绿灯交通信号系统VHDL程序62.4.1 clk_gen时钟产生电路(即分频电路)的VHDL设计 62.4.2 traffic_mnx计秒选择电路的VHDL编程82.4.3 count_down 倒计时控制电路的VHDL编程102.4.4 traffic

2、_fsm红绿灯信号控制电路的VHDL程序设计122.5 构建自己的包 132.5.1 交通灯信号系统电路的VHDL编程15第三章结论 16参考文献 17VHDL交通灯交通信号系统廖凯三峡大学电子信息工程2001级 万州 404000摘要:近年来,随着科学技术的飞速发展,VHDL的应用不断深入,同时也带动了传统控制检测的更新换代。传统的红绿灯控制器大多采用单片机或PLC实现。本文介绍了一种用VHDL实现交通信号系统的设计方法。关键词: VHDL MAXPLUS红绿灯国际化介绍:在现代城市,随着人口和汽车的快速增长,城市交通变得越来越拥挤。如果没有红绿灯作为指挥工具,恐怕车流不断,会因为混乱而造成

3、严重的拥堵。因此,交通信号灯是交通管理部门管理城市交通的重要工具之一。随着电子和计算机技术的飞速发展,电子电路的分析和设计方法发生了重大变化。电子设计自动化技术已成为设计现代电子系统不可或缺的工具和手段。在电子技术领域,为了便于存储、分析和传输,往往对模拟信号进行编码,即将其转换为数字信号,利用数字逻辑这一强大工具来分析和设计复杂的数字信号。电路或数字系统。信号的存储、分析和传输创造了硬件环境。根据本次设计要求,在设计红绿灯时,我们在传统电子设计方法的工程设计基础上,采用模拟与数字、软硬件相结合的综合设计,通过VHDL实现数字控制,引入了电子设计自动化技术。 .系统,设计有可控的交通信号灯。可

4、编程器件的广泛应用为数字系统的设计带来了极大的灵活性。由于可编程器件可以通过软件编程重构硬件结构和工作模式,因此硬件设计可以像软件设计一样快速方便。通常使用硬件描述语言(Hardware DescriPtion Language,HDL)来进行数字电子系统设计。目前广泛使用的硬件描述语言有:VHDL语言、Verilog HDL语言、AHDL语言。 VHDL语言以其强大的行为描述能力和丰富的仿真语句,成为系统设计领域最好的硬件描述语言。红绿灯的出现,可以实现有效的交通管制,对疏通车流、提高道路通行能力、减少交通事故有明显的效果。随着中国加入世贸组织,我们不仅要在经济、文化、科技等方面与国际接轨,

5、在交通管制方面也要与国际接轨。俗话说“要想富,先修路”,但如果修好路,如果交通管制不好,道路就无法保证通行安全。作为交通控制的重要组成部分的红绿灯也应该国际化。VHDL的基本概念电子设计自动化(EDA)的关键技术之一是需要一种形式化的方法来描述数字系统的硬件电路。硬件描述语言HDL在电子设计自动化中发挥着重要作用,是EDA技术研究的重点之一。 VHDL作为一种IEEE标准的硬件描述语言在设计中得到了广泛的应用,其影响也越来越深远。VHDL语言的产生与发展硬件描述语言HDL是一个划时代的进步。它的出现和发展使得设计自上而下的数字系统(集成电路/计算机)方法成为可能,也促进了新一代EDA工具的出现

6、,使电子设计自动化方法成为主流。从传统的自底向上设计方法到自顶向下设计方法。硬件描述语言的发展已有几十年的历史,并已成功应用于系统的仿真和设计。到1980年代后期,已经出现了数百种硬件描述语言,推动和推动了设计自动化,但由于各自针对特定的设计领域,没有统一的标准,一般用户难以使用。广大用户期待的是一种面向设计的多层次、多领域、一致认可的标准硬件描述语言。美国国防部在 1980 年代后期开发的 VHDL 语言满足了上述要求,并于 1987 年 12 月被 IEEE 标准化。它的出现为电子设计自动化的发展和推广奠定了坚实的基础。这一时期,多地形成了VHDL用户组织,VHDL语言的标准化使其得到国际

7、用户的广泛理解和支持,进一步推动了VHDL的发展。随后,VHDL进入了广泛应用的时代。尤其是进入1990年代以后,VHDL语言的发展成为了主流技术。 VHDL语言逐渐成为数字系统设计的主要描述语言,在世界各国得到广泛应用。文献显示,超过 90% 的用户已经使用或将使用 VHDL。VHDL语言的特点VHDL语言可以形式化地表示电路的结构和行为,支持逻辑设计中的层次和场的描述,并借用高级语言的复杂结构来简化对电路的描述。它具有电路仿真和验证机制,以确保设计的正确性并支持电路。描述了从高层到地层的全面转换,易于理解和重用。此外,它是一种独立于实现技术的语言,既不依赖于特定的模拟程序或数字设备,也不将

8、设计方法强加给设计者。它内容设计人员围绕其使用选择流程和方法。为了适应未来的数字硬件技术,VHDL 还提供了促进将新技术引入现有设计的潜力。 VHDL语言最大的特点是描述能力强,可以覆盖逻辑设计的多个领域和层次,支持多种硬件模型。特点包括:(1)设计技术齐全,方法灵活,支持广泛VHDL语言支持自顶向下和基于库的设计方法,也支持同步电路、异步电路等随机逻辑电路的设计。它的广度是其他HDL语言无法比拟的。另外,由于VHDL语言早在1987年12月就已作为IEEE std 1076标准公开发布,目前的EDA工具大多都不同程度地支持VHDL语言。这为VHDL语言的进一步推广和应用创造了良好的环境。(2

9、)系统硬件描述能力强VHDL语言具有从系统的数学模型到门级电路的多层次描述系统硬件功能的能力;并且,高级行为描述可以与低级 RTL(寄存器传输语言)描述和门级描述混合。 VHDL语言可以进行系统级的硬件描述,这是它最突出的优点之一。(3) VHDL语言可以独立于进程进行编程用VHDL语言设计系统硬件时,并没有与进程嵌入相关的信息(当然这些信息也可以用VHDL语言来描述)。与大多数HDL语言的区别在于,门级以上的描述通过仿真验证时,使用相应的工具将设计映射到不同的工艺(如MOS、CMOS等)。这样,当工艺更新时,无需修改原设计,只需更换相应的工艺工具即可。(4) VHDL语言标准、规范、易于共享

10、和重用由于VHDL语言已经成为IEEE的行业标准,本设计的成果易于复用和交流,进而可以进一步推动VHDL语言的推广和完善。另外,VHDL语言的语法比较严格,风格与Ada语言相似,给阅读和使用都带来了极大的方便。VHDL语言和仿真VHDL 是为数字电路的建模和仿真而制定的。它是一种面向模拟的语言,其语法的许多方面都考虑了模拟因素。包括VHDL的硬件相关结构、并发特性以及混合级描述和混合级仿真。HDL中的硬件相关结构VHDL有很多与数字电路结构直接相关的概念,其中最重要的是组件,它是数字硬件结构的抽象“黑匣子”。 VHDL 中的组件由实体和结构两个概念来描述。实体描述了组件与外部环境之间的接口,它

11、的行为和结构是完全隐藏的。实体的功能在称为结构的单独单元中定义,这些单元指定了设计实体的输入和输出之间的关系。一个实体可以有多个对应的结构,通过行为、结构、数据流等各种描述方法来实现。组件的存在使VHDL脱离了普通编程语言的范畴,成为描述数字电路的专用硬件设计语言。信号是对数字电路中布线的抽象,它是组件和进程之间通信的数据路径。 VHDL数的状态影响与信号有关的过程的运行,反映了数字系统各单元的输入输出的状态。process完成了对电路行为的描述,它由一系列顺序语句组成,是VHDL设计中功能描述的基本单元。由于过程的执行是并发的,所以在VHDL中引入了delta delay的概念来表示时间上无

12、限小的仿真步长,这是VHDL中仿真过程同步机制的关键。一个仿真时间包括若干个delta延迟,在一定条件下,所有进程都可以在任意一个delta延迟点同时被激活。设计人员的设计意图有时希望忽略增量延迟点的变化,并专注于在模拟时刻稳定时计算稳定阶段的状态。所以VHDL93引入了延迟过程的概念。此类进程仅在某个时刻的最后一个delta延迟时才被激活,这样可以降低处理频率,尤其是在用于时序检查时。(2) VHDL并发特性VHDL的并发性体现在两个方面。首先,使用VHDL设计数字电路时存在并发性,即VHDL支持设计分解,可以使每个待分解子部分的设计并行完成。模型的设计主要由三部分组成:定义实体部分建立模型

13、与环境的接口;定义结构部分完成模型的功能描述;定义测试部分 - 为模型生成测试向量并捕获模型输出信号状态以进行分析。在设计过程中,在系统分析阶段,系统分析人员可以将设计对象划分为若干个独立的子组件,交由若干个设计团队来实现。在这个阶段,系统分析师严格定义组件接口,并将组件之间的交互记录到每个设计团队。然后各设计团队可以独立并行地进行子组件的详细设计,并对子组件进行仿真验证,确保其正确性。最终,系统设计人员将子组件整合形成一个完整的设计,并对整个设计进行仿真验证。设计并发可以大大加快整体设计过程,提高设计质量。其次,VHDL之所以被称为硬件描述语言,是因为它在仿真执行中具有并发性,非常适合描述电

14、路活动的并发特性,这是其他编程语言所不具备的。并发使得VHDL中的进程类似于UNIX操作系统的进程概念,它们的挂起和活动是独立的。并发使VHDL的设计和仿真可以在一台并行机上进行,大大提高了仿真效率,是解决仿真时间瓶颈的方法之一。在并行仿真中,VHDL源描述编译完成后,结构建立,除了通常的VHDL建立工作外,每个进程都静态映射到特定的处理器,计算负载和通信频带估计来自临时分析和波形传播分析有助于获得合理平衡的静态图。(3) VHDL的描述涵盖系统级、算法级、寄存器传输级和门级,具有连续性和完整性的特点。 VHDL的结构描述方法与行为描述方法有机结合,描述层次相互联系、协调。目前比较常用的大规模

15、集成电路设计方法包括基于标准单元库的自底向上设计方法和便于早期优化的自顶向下设计方法。自上而下设计方法的有机结合。由于设计规模不断扩大,设计复杂度急剧增加,传统的设计起点集中在低级方法上,设计规模巨大,将带来巨大的工作量。因此,提高设计水平,注重早期优化是目前较好的设计方法。目前,一个设计对象的整体设计过程经历了多个层次。首先,在更高的抽象层次上,进行初步的概念设计,优化设计模型;然后通过高级综合工具综合生成寄存器传输级网表;最后,通过底层综合工具,形成最终的设计结果。因此,由于存在多层次的设计,因此需要多层次的仿真。 VHDL仿真器可以完成混合层次的仿真,为各个层次的硬件设计提供有效的仿真,

16、体现设计意图,让设计人员调试自己的设计。它是当前电路设计的最佳选择之一。VHDL与C+的编译仿真方法及类比模拟算法可以分为两种类型:解释型和编译型。解释型模拟器中有一个模拟核心,它不断读取VHDL源描述或其编译的中间格式数据,并解释性地执行每条语句。它的优点是概念清晰,关系清晰,编程实现更简单;它明显的缺点是每条语句的每次执行都必须重新解释执行,会带来很多不必要的预处理,效率很低。 .编译后的模拟器直接将 VHDL 源描述转换为功能等效的可执行二进制代码。这样,在每条语句的模拟执行过程中就消除了冗余的预处理,将大大提高系统性能。编译后的模拟器将VHDL源描述转换成功能等效的C+源代码,主要是基

17、于VHDL和C+的语法特征比较。就语言层次而言,这两种语言都属于高级语言,在很多方面有相似之处。从这种相似性,就可以完成它们之间的转换。这些相似之处主要体现在以下几个方面:(1) VHDL中实体的概念与C+中类的概念类似。对于 VHDL 中的任何实体,都可以将其转换为 C+ 中的类。实体对应的结构(architecture)可以派生自之前的实体类,因此可以共享实体类中定义的所有数据。(2)VHDL中的进程继续从相应的结构类中派生出来,这样就可以共享结构中定义的所有数据。当一个结构包含多个进程时,每个进程都是该结构的派生类。为了避免同一个结构对象的重复定义,可以通过虚拟基类的方式进行派生。(3)

18、 VHDL中的端口概念可以映射到C+中的函数(包括构造函数)参数,泛型可以映射到函数的默认参数。(4) 使用C+定义类,可以为一些VHDL特定的数据类型定义新的数据类型。例如,VHDL中的一个信号(signal)可以为它定义一个类QSignal,并在类中保存该信号的属性值,例如最后一次信号变化的时间和值。这样,对信号类型对象赋值的特殊性就可以通过重载等号运算符来解决。此外,对信号的一些预定义属性的操作也可以转化为调用类对象的成员函数的求解过程。(5)VHDL层次关系的实现主要通过元件描述、图解和组装完成。可以对应C+语言中成员类对象的概念。对于不同结构的组装,在定义成员类对象时,可以通过给不同

19、构造函数的参数来选择不同的结构。(6) VHDL行为描述中的几个顺序语句:变量赋值语句、if语句、case语句、循环语句、next语句、exit语句、return语句、null语句、assert语句、C+语言的过程调用语句。类似的语法或库函数可以通过一些修改来转换。VHDL在电子系统硬件设计中的优势所谓硬件描述语句,就是能够描述硬件电路的功能、信号连接关系和时序关系的语言。它可以比电气原理图更有效地表达硬件电路的特性。目前,各ASIC芯片制造商纷纷为自己的目的开发了HDL语言,但大多没有标准化和通用化。唯一公认的硬件描述语言之一是美国国防部开发的 VHDL 语言,它已成为 IEEE STD_1

20、076 标准。许多公司开发的硬件电路设计工具正在逐渐接近VHDL语言,并提供对VHDL的支持。VHDL在电子系统硬件设计中具有以下优点:(1)设计技术齐全,方法灵活,支持广泛VHDL语言可以支持自顶向下和基于库的设计方法,也支持同步电路、异步电路、FPGA等随机电路的设计。它的广度是其他HDL语言无法比拟的。比如SFL语言和UDL/I语言,它们只能描述同步电路。此外,VHDL语言早在1987年12月就已作为IEEE_STD_1076标准发布。目前大多数EDA工具都不同程度地支持VHDL语言。这为VHDL语言的进一步推广和应用创造了良好的环境。(2)系统硬件描述能力强如果提到,VHDL语言具有从

21、系统的数学模型到门级电路的多层次描述系统硬件功能的能力。此外,高级行为描述可以与低级 RTL 描述和结构描述混合。比如PC扩展槽上要设计一个接口卡,接口卡的硬件设计要满足主机的接口要求。此时主机的部分功能可以通过行为来描述,在系统仿真时可以验证接口卡的工作是否正确。这样,在设计接口卡之前,就可以知道接口卡的工作是否满足系统要求。VHDL语言可以进行系统级的硬件描述,这是它最突出的优点之一。其他的HDL语言,如UDL/I、Verilog等,只能描述IC级和PCB级,而不能很好地描述系统级的硬件。(3) VHDL语言可独立于技术编程使用VHDL语言设计系统硬件时,没有嵌入技术的相关信息。当然,这些

22、信息可以用VHDL语言编写。与大多数HDL语言不同的是,用VHDL语言进行设计时,门级以上的描述经过仿真验证后,使用相应的工具将设计映射到不同的工艺(如MOS、CMOS等)。这样,当流程更新时,无需修改原设计程序,只需更换相应的映射工具即可。可见,修改电路和修改工艺不会相互影响。(4) VHDL语言标准、规范,易于共享和复用由于VHDL语言已经成为IEEE行业标准,设计结果易于复用和交流,进而进一步推动了VHDL语言的推广和完善。另外,VHDL语言的语法比较严格,风格与Ada语言相似,给阅读和使用都带来了极大的便利。第二章交通灯交通信号系统信号灯系统功能概述本文设计的交通信号系统是模拟实际的路

23、口交通信号。因此,外部硬件电路包括:两组红绿灯(用于路口双向指挥控制)、两组七段显示器(用于绿灯亮时的倒计时显示)、一组手动和自动控制开关(供交警指挥控制使用)。软件:本文将介绍(1)电路模块合成的概念:将交通信号系统分成若干个小电路,最后编写一个VHDL程序代码将各个小电路连接起来。好处是可以提高程序的调试速度,还可以细分工作,提高编程速度。 (2)参数化的概念:针对不同的时间段,交警可以调整红绿灯电路(增加或减少电路的计数时间),以增加程序的灵活性。绿灯交通信号系统外部红绿灯交通信号系统外观图如图2-1所示绿灯交通信号系统的VHDL模块该系统由4个子电路组成。(1)clk_gen:时钟脉冲

24、产生电路(即分频电路);(2)traffic_mux:计数秒选择电路;(3)count_down:倒计时控制电路;(4)traffic_fsm:红绿灯信号控制电路。主要红绿灯控制逻辑图如图2所示。2.4红绿灯交通信号系统VHDL程序2.4.1 clk_gen时钟产生电路(即分频电路)的VHDL设计在红绿灯交通信号系统中,大部分情况都是通过自动控制来引导交通的。因此,为了避免意外事件的发生,必须给电路一个稳定的时钟(clock) ,才能让系统正常工作。但是,为了配合高峰时段,防止交通拥堵,有时需要人工控制,即交警可以顺利指挥交通。 clk_gen电路的主要作用是产生一些附加的输出信号,作为后续电

25、路的使能控制和同步信号处理。(1).entity模块程序代码表2.1列出了实体模块的程序代码表 2.1实体模块的 VHDL 代码图书馆 ieee;使用 ieee.std_logic_1164.all;使用 ieee.std_logic_arith.all;使用 ieee.std_logic_unsigned.all;实体 clk_gen 是端口(测试:在 std_ 逻辑中;时钟:在标准逻辑中;ena_scan:输出标准逻辑;ena_1hz:输出标准逻辑;flash_1hz:输出标准逻辑);结尾;(2).架构模块表2.2列出了架构模块的程序代码。架构模块的 VHDL 代码-定义设备的signal

26、_structure snd流程clk_gen 的架构行为是常量scan_bit:正:= 2;常量scan_val:正:= 4;常数two_hz_bit:正:= 7;常数 two_hz_val: 正 := 125;信号 clk_scan_ff:std_logic_vector(scan_bit-1 down to 0);信号 clk_2hz_ff:std_logic_vector(two_hz_bit_downto 0);信号 ena_s:std_logic;信号 ena_one:std_logic;信号 ena_two:std_logic;开始表 2.2 中引用了常量对象。通过使用常量,可以

27、更改和重新编译常量的值,并且常量的所有使用将随着更新使用新的常量值。例如:常量 scan_bit:positive :=value;信号 clk_scan_ff:std_logic_vector(scan_bit-1 down to 0);第一行设置scan_bit为常量对象,value为变量值,根据用户需要。第二行是定义一条信号线,命名为clk_scan_ff,位数为(scan_bit-1 downto 0)。已知scan_bit定义为2,所以clk_scan_ff的位数为(1 downto o),即2bit。因此,如果以后需要改变电路,只需要改变常量对象scan_bit的值即可。这样,程序

28、设计就变得更加灵活,这就是参数化的概念。(3).clk_gen分频电路模块表2.3列出了在 clk_gen 电路中生成ena_scan输出使能的程序代码。clk_gen电路中生成ena 扫描输出使能的 VHDL 代码-通过将 1khz 时钟除以 4 生成 250hz ena_scan扫描:进程(重置,时钟)开始如果重置=1那么clk_scan_ff=“00”;ena_s=scan_val-1 那么clk_scan_ff=”00”;ena_s = 1;别的clk_scan_ff=clk_scan_ff+1;ena_s = 0;万一;万一;结束进程;ena_scan = ena_s;表2.4列出了

29、在clk_gen 电路中产生ena_1hz 和 flash_1hz输出使能的程序代码。表2.4在 clk_gen 电路中产生ena_1hz、flash_1hz输出使能的VHDL 代码将 1hz 时钟除以 two_hz:process(reset,clk,ena_s) 生成 1hz ena_1hz 和 flash_1hz开始如果重置=1那么ena_two= 0;ena_two= 0;clk_2hz_ff=two_hz_val-1 那么clk_2hz_ff,= 0000000;ena_two= 1;ena_one= 不是 ena_one;别的clk_2hz_ff= clk_2hz_ff+1;ena

30、_two= 0;ena_one = ena_onee;万一;万一;万一;结束进程;ena_1hz = ena_one 和 ena_two 和 ena_s;flash_1hz=ena_one;traffic_mux计秒选择电路的VHDL编程过马路时,绿灯的一侧有时会附上一个显示器,告诉行人距离红灯还有几秒钟的时间。因此, traffic_mux电路的主要作用就是输出显示所需的值(即倒计时秒值)作为倒计时显示电路(count_down电路)的计数秒数。(1)。实体模块表2.5列出了实体模块的程序代码。表2.5实体模块的 VHDL 代码图书馆 ieee;使用 ieee.std_logic_1164.

31、all;使用 ieee.std_logic_unsigned.all;使用 ieee.std_logic_arith.all;实体 traffic_mux 是端口(重置:在 std_logic 中;时钟:在标准逻辑中;ena_scan:在 std_logic 中;重新计票:在 std_logic 中;sign_state: 在 std_logic_vector(1 downto 0);加载:输出 std_logic_vector(7 downto 0);结尾;(2).架构模块在这里,我们定义了一些在进程之间作为一个整体共享的电路,以传递信号以集成所有功能。表2.6列出了架构模块的程序代码。表2

32、.6架构模块的 VHDL 代码-定义设备的信号结构和流程traffic_mux 的架构行为是常量黄色0_时间:整数:= 5;常量green0_time:整数:= 20;常量黄色1_时间:整数:= 5;常量green1_time:整数:= 20;开始这里定义yellow0_time (水平路口黄灯)保持5s ,green0_time(横向路口绿灯)保持20s ,yellow1_time(直路口黄灯)保持5s, green1_time(直线路口的绿灯)需要保持20s 。表2.7列出了traffic_mux 电路的程序代码。表2.7 traffic-mux电路(产生输出计数秒数)的VHDL码-通过负

33、载生成计数器的值load_time:process(testet,clk)开始如果重置=1那么加载加载 加载 加载 。加载 = conv_std_logic_vector(yellow1_time,8);结束案例;万一;万一;结束进程;count_down倒计时控制电路的VHDL编程过马路时,绿灯的一侧有时会附上一个显示器,告诉行人距离红灯还有几秒钟的时间。因此count_down电路的主要作用是接收traffic_mux电路输出的值(即倒计时秒值),然后将其转换成BCD码,显示在七段显示器上,这样行人可以清楚地知道需要多长时间。变成红灯。(1)。实体模块表2.8个实体模块的程序代码。表2.8

34、 实体模块的VHDL码图书馆 ieee;使用 ieee.std_logic_1164.all;使用 ieee.std_logic_arith.all;使用 ieee.std_logic_unsigned.all;实体 count_down 是端口(重置:在 std_logic 中;时钟:在标准逻辑中;ena_one:在标准逻辑中;重新计票:在 std_logic 中;ioad:in std_logic_vector(7 down to 0);seg7:out std_logic_vector(15 down to 0);next_state:出标准逻辑);结尾;(2).架构模块表2.9列出了架

35、构模块的程序代码。表2.9架构的 VHDL 代码-定义设备的信号结构和流程count_down 的架构行为是signalt_ff:std_logic_vector(7 down to 0);开始(3)。倒计时电路模块表2.10列出了count_down 模块的程序代码。表2.10倒计时电路的 VHDL 代码(产生输出计数秒)当cnt_ff计数为 1时的脉冲信号 ( next_staset)计数:进程(时钟,重置)开始如果(重置=1)那么t_ff= 00000000;段7=“”;elsif (clk event and clk=1)then如果 ena_1hz= 1 那么如果(重新计数=1)那么

36、t_ff=load-1;别的t_ffseg7(15 下降到 0)seg7(15 下降到 0)seg7(15 下降到 0)seg7(15 down to 0)seg7(15 down to 0)seg7(15 下降到 0)seg7(15 下降到 0)seg7(15 downto 0)seg7(15 下降到 0)seg7(15 下降到 0)seg7(15 down to 0)seg7(15 down to 0)seg7(15 下降到 0)seg7(15 下降到 0)seg7(15 down to 0)seg7(15 down to 0)seg7(15 下降到 0)seg7(15 downto 0)

37、seg7(15 down to 0)seg7(15 down to 0)seg7(15 下降到 0)seg7(15 downto 0)seg7(15 down to 0)seg7(15 down to 0)seg7(15 downto 0)seg7(15 down to 0)seg7(15 down to 0)seg7(15 down to 0)seg7(15 下降到 0)seg7(15 downto 0)= 11011;结束案例;万一;结束进程;next_state = 1whent_ff=1 否则为 0traffic_fsm红绿灯信号控制电路的VHDL编程在红绿灯交通信号系统中,大部分情况

38、都是通过自动控制来引导交通的。但是,为了应对高峰时段和防止交通拥堵,有时需要人工控制,即交警可以自行指挥交通。因此, traffic_fsm电路的主要功能是除了监控路口的红绿灯外,主要功能是利用开关在手动和自动模式之间切换,让交警通过外部输入控制交通信号系统的运行。 .(1)。实体模块表2.11列出了实体模块的程序代码。表 2.11实体模块的 VHDL 代码图书馆 ieee;使用 ieee.std_logic_1164.all;使用 ieee.std_logic_unsigned.all;实体 traffic_fsm 是端口(重置:在标准逻辑中;时钟:在标准逻辑中;ena_scan:在标准逻辑

39、中;ena_1hz:在标准逻辑中;flash_1hz:在标准逻辑中;a_m:在标准逻辑中;st_butt:在标准逻辑中;下一个状态:在标准逻辑中;重新计票:出标准逻辑;sign_state: out std_logic_vector(1 down to 0);红色:输出 std_logic_vector(1 down to 0);绿色:输出 std_logic_vector(1 down to 0);黄色:输出 std_logic_vector(1 down to 0);结尾;(2)。建筑模块表2.12列出了架构模块的程序代码。表2.12架构的 VHDL 代码-定义设备的信号结构和流程traf

40、fic_fsm 的架构行为是类型 sreg0_type 是 (r0gl,r0y1,g0r1,y0r1,y0y1,y0g1,g0y1,r0r1);信号状态:sreg0_type;信号 st_transfer:std_iogic;信号灯:std_iogic_vector(5 down to 0); - r(10)y(10)g(10)开始类别按以下格式定义:类型 type_name 是 type_mark;例如:类型 sreg0_type 是 (r0g1,r0y1,g0r1,y0r1,y0y1,y0g1,g0y1,r0r1 ) ;信号状态:sreg0_type;第一行是使用类型的定义格式列出交通灯交

41、通信号系统中发生的所有情况(表2.12共定义了8种情况)。第二行是定义一条名为state的信号线,设置state的目的是将steg0_type定义的8个条件转换成bits。表2.13列出了traffic_fsm电路中去抖动设备进程的程序代码表 2.13 traffic-fsm 电路中去抖设备(去抖动)的 VHDL 代码-生成去抖电路debounce:process (reset,clk,ena_scan,st_butt)变量 rebn_ff:std_logic_vector(5 down to 0);开始如果(st_butt= 1 或reset= 1 )那么rebn_ff := “ 11111

42、1 ” ;st_transfer = 3)则rebn_ff := rebn_ff-1;st_transfer= 0 ;elsif (rebn_ff=2)则rebn_ff :=rebn_ff-1;st_transfer = 1 ;别的rebn_ff := rebn_ff;st_transfer = 0 ;万一;万一;万一;结束进程;表 2.13 显示了 jitter 去除设备的过程,重点是 st_transfer 为 1 时。当外部按下 st_butt 键时(即 st_butt=0 ) ,外部计数器 rebn_ff 开始计数。当rebn_ff还没有计数到02时,st_butt键被释放,所以状态不

43、会改变。如果开关故障是由电气效应引起的,开关速度很快(小于1ms ) ,所以电路不会发生故障,达到了设计这种消振装置的目的。2.5构建自己的包写过程序的人都知道,在编程语言(如VB、VC)中,程序的开头总会调用一个库(library)来提供设计程序所需的基本命令。但是,如果你想进一步设计一个更复杂的程序,库中的命令可能不被支持。因此,设计者可以设计一个子程序来支持编程的需要。在硬件描述语言(如:VHDL、 Verilog)的设计中也存在同样的问题。 VHDLZ (library ieee;)中的第一行是使用IEEE设计的库文件,但是如果要使用的组件不在库中,则必须自己定义。在本节中,我们将介绍

44、如何将交通信号系统中的 4 个子电路放入我们自己定义的程序包中。表2.14列出了这个包的代码。表2.14程序包的VHDL程序-包括组件“clk_gen”的包traffic_lib的声明-“traffic_mux” “count_down” “traffic_fsm”图书馆 ieee;使用 ieee.std_logic_1164.all;包 traffic_lib 是组件 clk_gen端口(重置:在 std_logic 中;时钟:在标准逻辑中;ena_scan:输出标准逻辑;ena_1hz:输出标准逻辑;flash_1hz:输出标准逻辑);末端组件;组件 traffic_mux端口(重置:在

45、std_logic 中;时钟:在标准逻辑中;ena_scan:在标准逻辑中;重新计票:在标准逻辑中;sign_state:in std_logic_vector(1 down to 0);load:out std_logic_vector(7 downto 0);末端组件;组件 count_down端口(重置:在 std_logic 中;时钟:在标准逻辑中;ena_1hz:在标准逻辑中;重新计票:在标准逻辑中;加载:在 std_logic_vector(7 下降到 0);seg7:out std_logic_vector(15 down to 0);next_state:出标准逻辑);末端组件

46、;组件 traffic_fsm端口(重置:在标准逻辑中;时钟:在标准逻辑中;ena_scan:在标准逻辑中;ena_1hz:在标准逻辑中;flash_1hz:在标准逻辑中;a_m:在标准逻辑中;st_butt:在标准逻辑中;下一个状态:在标准逻辑中;重新计票:输出标准逻辑;sign_state:out std_logic_vector(1 down to 0);red:out std_logic_vector(1 down to 0);绿色:输出标准逻辑向量(1 下降到 0);黄色:out std_logic_vector(1 down to 0);末端组件;结束交通库;2.5.1交通灯信号系

47、统电路的VHDL编程设计本节要做的工作是连接所有子电路并分析时序。程序完成后,下载到FPGA中进行硬件电路的验证。首先,必须完成连接4个子电路的VHDL编程工作。(1)。实体模块表2.15列出了实体模块的程序代码。表2.15实体模块的 VHDL 代码图书馆 ieee;使用 ieee.std_logic_1164.all;使用 ieee.std_logic_arith.all;使用 ieee.std_logic_unsigned.all;使用 work.traffic_lib.all;实体流量是端口(重置:在标准逻辑中;时钟:在标准逻辑中;a_m:在标准逻辑中;st_butt:在标准逻辑中;重新

48、计票:输出标准逻辑;下一个状态:输出标准逻辑;sign_state:out std_logic_vector(1 down to 0);red:out std_logic_vector(1 down to 0);绿色:输出标准逻辑向量(1 下降到 0);黄色:out std_logic_vector(1 down to 0);seg7:out std_logic_vector(15 down to 0);结尾;(2).架构模块表2.16列出了架构模块的程序代码。表2.16架构模块的 VHDL 代码-定义设备的信号结构和流程交通的架构行为是信号 ena_scan_1:std_logic;信号 ena_1hz_1:std_logic;信号 flash_1hz

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论