1、6. 计数器的计时时间长短XYZ可以任意设定。.三:设计方案1 系统设计方案根据系统设计要求有两种实现方法,一种是采用EDA的实验软件来实现系统要求;另一种采用基本门电路和各种触发器电路元件来实现。方案一:EDA设计方法(软件:max_plus10.0)根据系统设计要求,系统设计采用自顶而下的设计方法,顶层设计采用原理图设计方法,系统的整体设计原理图如图(1)所示,它右去抖模块设置计数模块和交通灯控制三部分组成。(1) 去抖模块去抖模块的作用在于消除按键的抖动,因为当输入信号在高低电平之间转换时,在转换的瞬间会产生毛刺,使信号波形不稳定,从而使系统不能正常工作,因此要加入去抖模块。(2) 设置
2、计数模块设置计数模块的是设置并存储主干道方向和步行街道方向的时间长短。主干道方向需要设置的时间包括主干道黄灯信号时间,红灯信号时间和主干道车辆允许通行的最短时间,步行街道方向需要设置的时间为步行街道的闪烁时间。(3) 交通灯控制模块(4) 交通灯模块通过采用状态机来实现,用于存储交通灯的五种状态。五种状态的集体说明如下表。状态主干道信号灯步行街信号灯主干道步行街道R红G绿Y黄S01通行禁行S1车停靠S2S3通行(绿灯闪烁S4方案二:用硬件来实现本系统要求的功能其基本组成部分和方案一一样,但不同的是用硬件来实现三个模块的逻辑功能。对于去抖模块,可采用下图所示的防抖动输出电路来解决。课本P216
3、4.4题对于计数模块,设置计数模块的是设置并存储主干道方向和步行街道方向的时间长短。所以需要两个可以计数并存储的计数器来实现,综上所述,两个方案各有各的优点,但根据时代的发展要求,选择方案一是首选!因为方案二要焊接的电路板太多,对于有实际用处的逻辑电路一般是进行设计仿真后有功能实现就大批量生产,如果采用电路板焊接来实现,会增加工作时间,并且不一定能买到合适的元件来满足设计要求,而方案一采用EDA技术来实现实验功能,在出现问题后容易进行解决并进行修正。所以本实验采用方案二进行设计。.四:设计过程1:根据系统设计方案二编写各模块的元程序如下:(1) 去抖模块的VHDL源程序(dither.vhd)
4、 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DITHER ISPORT ( UPIN: IN STD_LOGIC; -按键弹起DOWNIN: -按键压下KEYOUT: OUT STD_LOGIC ); -按键输出信号END DITHER;ARCHITECTURE BEHAVE OF DITHER ISSIGNAL OUT1: STD_LOGIC;SIGNAL OUT2:BEGINOUT1=NOT( OUT2 AND UP
5、IN );OUT2=NOT( OUT1 AND DOWNIN );KEYOUT=OUT1;END BEHAVE;产生图形如下(2):设置计数模块的VHDL源程序如下(count.vhd)ENTITY COUNT IS PORT(CLK: CLEAR: CLKADD: CLKSUB: PRE_SET: HUMAN_SET: RST: GHUMAN_TIME: OUT INTEGER RANGE 31 DOWNTO 0; GHUMAN_CLKT: GVEHICLE_TIME: OUT INTEGER RANGE 31 DOWNTO 0);END COUNT;ARCHITECTURE BEHAVE
6、OF COUNT IS SIGNAL HUMAN_TIME: INTEGER RANGE 31 DOWNTO 0; SIGNAL VEHICLE_TIME: SIGNAL SSTATE: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL SCLK: SIGNAL DSCLK: BEGIN SSTATE=000WHEN PRE_SET=0 ELSE HUMAN_SET & CLEAR & CLKADD & CLKSUB; SCLK=CLKADD OR CLKSUB OR CLEAR; PROCESS (CLK) IF(CLK EVENT AND CLK=1)THEN DS
7、CLK=SCLK; END IF; END PROCESS; PROCESS(RST,CLEAR,DSCLK) BEGIN IF(RST= VEHICLE_TIME= 0;0101011001110001= VEHICLE_TIME-1;0010= VEHICLE_TIME+1; WHEN OTHERS = VEHICLE_TIME; END CASE;END PROCESS;PROCESS (CLEAR,DSCLK) HUMAN_TIME=0;1101111011111001=HUMAN_TIME-1;1010=HUMAN_TIME+1; WHEN OTHERS=HUMAN_TIME;END
8、 IF;PROCESS(PRE_SET,RST) GHUMAN_TIME=5; GHUMAN_CLKT=7; GVEHICLE_TIME=15; ELSIF(PRE_SET EVENT AND PRE_SET=HUMAN_TIME+3;=HUMAN_TIME+VEHICLE_TIME+3;产生图形如下:(3)交通灯控制模块的VHDL源程序(SR.VHD)ENTITY LIGHT IS PORT(SRED: OUT STD_LOGIC; ERED: SGREEN: EYELLOW: EGREEN: GT_SET: IN INTEGER RANGE 31 DOWNTO 0; REQUEST: CLK: IN STD_LOGIC);END LIGHT;ARCHITECTURE BEHAVE OF LIGHT IS TYPE IN_STATES IS (ST0,ST1,ST2,ST3,ST4); SIGNAL CURRENT_STATE: IN_STATES; SIGNAL NEXT_STATE: SIGNAL START: SIGNAL SIG: PROCESS(CURRENT_STATE,RST) OR CURRENT_STATE=ST0)THEN START=; ELSE A:PROCESS(START,CLK) SIG ELSIF(CLK IF(START=)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1