版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第7章 EDA技术综合应用设计举例,7.1 彩灯控制器设计 7.2 电子钟设计 7.3 电子抢答器设计 7.4 交通灯控制器设计 7.5 简易数字频率计设计 小结,7.1 彩灯控制器设计,7.1.1彩灯控制器设计要求 1.要有多种花型变化(至少设计4种)。 2.多种花型可以自动变换,循环往复。 3.彩灯变换的快慢节拍可以选择。 4.具有清零开关。 7.1.2系统设计方案 根据系统设计要求可知,整个系统共有三个输入信号:控制彩灯节奏快慢的基准时钟信号(CLK)CLK_IN,系统清零信号CLR,彩灯节奏快慢选择开关SPEED_KEY;共有16个输出信号LED15.0,分别用于控制十六路彩灯。,下一
2、页,返回,7.1 彩灯控制器设计,据此,我们可将整个彩灯控制器CDKZQ分为两大部分:时序控制电路SXKZ和显示控制电路XSKZ,整个系统的组成原理图如图7-1所示。 7.1.3各模块VHDL源程序设计 1.时序控制电路的VHDL源程序 -SXKZ.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY SXKZ IS,下一页,返回,上一页,7.1 彩灯控制器设计,PORT(CHOSE_KEY:IN STD_LOGIC; CLK:IN STD_LOGIC; CLR:IN STD
3、_LOGIC; CLK1:OUT STD_LOGIC); END ENTITY SXKZ; ARCHITECTURE ART OF SXKZ IS SIGNAL TEMP_CLK:STD_LOGIC; BEGIN PROCESS(CLK,CLR,CHOSE_KEY) IS VARIABLE TEMP:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN,下一页,返回,上一页,7.1 彩灯控制器设计,IF CLR=1 THEN -当CLR=1时清零,否则正常工作 TEMP_CLK=0;TEMP:=000; ELSIF RISING_EDGE(CLK) THEN IF CHOSE
4、_KEY=1 THEN IF TEMP=011 THEN TEMP:=000; TEMP_CLK=NOT TEMP_CLK ; ELSE TEMP:=TEMP+1; END IF;,下一页,返回,上一页,7.1 彩灯控制器设计,-当CHOSE_KEY=1时产生基准时钟频率的1/4的时钟信号,否则产生基准时钟 -频率的1/8的时钟信号 ELSE IF TEMP=111 THEN TEMP:=000; TEMP_CLK=NOT TEMP_CLK ; ELSE TEMP:=TEMP+1; END IF; END IF; END IF;,下一页,返回,上一页,7.1 彩灯控制器设计,END PROCE
5、SS; CLK1=TEMP_CLK; END ARCHITECTURE ART; 2. 显示控制电路的VHDL源程序 -XSKZ.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY XSKZ IS PORT(CLK1:IN STD_LOGIC; CLR:IN STD_LOGIC; LED:OUT STD_LOGIC_VECTOR(15 DOWNTO 0); END ENTITY XSKZ;,下一页,返回,上一页,7.1 彩灯控制器设计,ARCHITECTURE ART OF XSKZ IS TYPE STATE IS(S0,S1,S2,S
6、3,S4,S5,S6); SIGNAL CURRENT_STATE:STATE; SIGNAL FLOWER:STD_LOGIC_VECTOR(15 DOWNTO 0); BEGIN PROCESS(CLR,CLK1) IS CONSTANT F1:STD_LOGIC_VECTOR(15 DOWNTO 0):=0001000100010001; CONSTANT F2:STD_LOGIC_VECTOR(15 DOWNTO 0):=1010101010101010; CONSTANT F3:STD_LOGIC_VECTOR(15 DOWNTO 0):=0011001100110011;,下一页,
7、返回,上一页,7.1 彩灯控制器设计,CONSTANT F4:STD_LOGIC_VECTOR(15 DOWNTO 0):=0100100100100100; CONSTANT F5:STD_LOGIC_VECTOR(15 DOWNTO 0):=1001010010100101; CONSTANT F6:STD_LOGIC_VECTOR(15 DOWNTO 0):=1101101101100110; -六种花型的定义 BEGIN IF CLR=1 THEN CURRENT_STATE=S0; ELSIF RISING_EDGE(CLK1) THEN,下一页,返回,上一页,7.1 彩灯控制器设计
8、,CASE CURRENT_STATE IS WHEN S0= FLOWER FLOWER FLOWER=F2; CURRENT_STATE=S3;,下一页,返回,上一页,7.1 彩灯控制器设计,WHEN S3= FLOWER FLOWER FLOWER FLOWER=F6; CURRENT_STATE=S1;,下一页,返回,上一页,7.1 彩灯控制器设计,END CASE; END IF; END PROCESS; LED=FLOWER; END ARCHITECTURE ART; 3. 整个电路系统的VHDL源程序 -CDKZQ.VHD LIBRARY IEEE; USE IEEE.STD
9、_LOGIC_1164.ALL; ENTITY CDKZQ IS PORT(CLK:IN STD_LOGIC;,下一页,返回,上一页,7.1 彩灯控制器设计,CLR:IN STD_LOGIC; SPEED_KEY:IN STD_LOGIC; LED:OUT STD_LOGIC_VECTOR(15 DOWNTO 0); END ENTITY CDKZQ; ARCHITECTURE ART OF CDKZQ IS COMPONENT SXKZ IS PORT(SPEED_KEY:IN STD_LOGIC; CLK:IN STD_LOGIC; CLR:IN STD_LOGIC; CLK1:OUT S
10、TD_LOGIC); END COMPONENT SXKZ;,下一页,返回,上一页,7.1 彩灯控制器设计,COMPONENT XSKZ IS PORT(CLK1:IN STD_LOGIC; CLR:IN STD_LOGIC; LED:OUT STD_LOGIC_VECTOR(15 DOWNTO 0); END COMPONENT XSKZ; SIGNAL S1:STD_LOGIC; BEGIN U1:SXKZ PORT MAP(SPEED_KEY,CLK,CLR,S1); U2:XSKZ PORT MAP(S1,CLR,LED); END ARCHITECTURE ART;,下一页,返回,上
11、一页,7.1 彩灯控制器设计,7.1.4系统仿真波形 系统仿真后的结果分别如图7-2、图7-3、图7-4所示。,返回,上一页,7.2 电子钟设计,7.2.1电子钟设计要求 1.具有时、分、秒计数功能,且以24小时循环计时。 2.计时结果要用6个数码管分别显示时、分、秒的十位和个位。 3.具有清零的功能。 7.2.2系统设计方案 根据系统设计要求,系统设计采用自顶向下的设计方法,系统的顶层原理图如图7-5所示,它由分频模块(FENPIN)、分和时60进制BCD码计数模块(CNT60)、七段译码显示模块(SEG7)、选择显示数据模块(MUX24_4)、动态扫描控制模块(SCAN)和片选信号(SEL
12、)模块等组成。 在图7-5中,60进制BCD码计数模块采用原理图设计,其余模块均为VHDL程序设计。60进制BCD码计数模块的原理图如图7-6所示。,下一页,返回,7.2 电子钟设计,FENPIN分频将1M时钟信号分频为1Hz,作为电子钟的秒脉冲,送入六十进制计数器CNT60进行秒计时,秒计时满60秒产生一个进位信号CO,送入分计数器进行分计数。当分计数器计满60分时,将其进位信co号送至时计数器。 MUX24_4模块为一个24选4数据选择器。在SEL模块输出控制下将时、分、秒计数器的输出6组BCD选出其中一组送入SEG7模块进行译码。 扫描控制模块SCAN,在SEL模块输出控制下轮流点亮6数
13、码管来显示相对应的数据。 7.2.3各模块VHDL源程序设计 1二十四进制计数器的VHDL源程序 -cnt24.vhd LIBRARY IEEE;,下一页,返回,上一页,7.2 电子钟设计,USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT24 IS PORT(CLK ,CLR:IN STD_LOGIC; CO:OUT STD_LOGIC; ten:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); one:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);
14、 END CNT24; ARCHITECTURE ART OF CNT24 IS BEGIN,下一页,返回,上一页,7.2 电子钟设计,CO=1WHEN(ten=0010AND one=0011 )ELSE0; PROCESS(CLK,CLR) BEGIN IF(CLR=0)THEN ten=0000; one=0000; ELSIF(CLKEVENT AND CLK=1)THEN IF(one=3)THEN one=0000; IF(ten=2)THEN ten=0000,下一页,返回,上一页,7.2 电子钟设计,ELSE ten=ten+1; END IF; ELSe one=one+1;
15、 END IF; END IF; END PROCESS; END ART; 2. MUX24_4模块的VHDL源程序 选择显示数据的模块MUX24_4可根据不同的片选信号送出不同的要显示的数据。,下一页,返回,上一页,7.2 电子钟设计,-mux24_4.VHD LIBRARY IEEE; USE IEEE. STD_LOGIC_1164.ALL; ENTITY mux24_4 IS PORT(sel:IN STD_LOGIC_VECTOR(2 DOWNTO 0); tenh,oneh:IN STD_LOGIC_VECTOR(3 DOWNTO 0); tenm,onem:IN STD_LOG
16、IC_VECTOR(3 DOWNTO 0); tens,ones:IN STD_LOGIC_VECTOR(3 DOWNTO 0); bcd:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END mux24_4; ARCHITECTURE behav OF mux24_4 IS,下一页,返回,上一页,7.2 电子钟设计,BEGIN PROCESS(sel) BEGIN CASE sel IS WHEN000=bcdbcdbcdbcdbcdbcdbcd=1111 ; END CASE;,下一页,返回,上一页,7.2 电子钟设计,END PROCESS; END behav;
17、3. 片选信号SEL模块的VHDL程序 SEL模块是一个3位二进制计数器,用来控制数码管的片选信号。 -sel.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY sel IS PORT(clk:IN STD_LOGIC; sel:OUT STD_LOGIC_VECTOR(2 DOWNTO 0);,下一页,返回,上一页,7.2 电子钟设计,END sel; ARCHITECTURE arc OF sel IS BEGIN PROCESS(clk) VARIABLE cnt:
18、STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN IF clkEVENT AND clk=1 THEN cnt:=cnt+1; END IF; sel=cnt; END PROCESS; END arc;,下一页,返回,上一页,7.2 电子钟设计,4.分频模块FENPIN的VHDL源程序 模块可实现十分频,为提供l Hz的秒脉冲信号做好准备。 -FENPIN.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY fenpin IS PORT(clk:IN STD_LOGIC; q:OUT STD_LOGIC); END
19、 fenpin; ARCHITECTURE arc OF fenpin IS BEGIN,下一页,返回,上一页,7.2 电子钟设计,PROCESS(clk) VARIABLE cnt: INTEGER RANGE 0 TO 999; BEGIN IF clkEVENT AND clk=1THEN IF cnt999 THEN cnt:=cnt+1; q=0; ELSE cnt:=0; q=1; END IF; END IF; END PROCESS; END arc;,下一页,返回,上一页,7.2 电子钟设计,5. SEG7译码器的VHDL源程序 DISP模块是BCD/ 7段译码器,完成BCD
20、向7段显示码的变换作用。 -SEG7.VHD LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY seg7 IS PORT ( BCD: INSTD_LOGIC_VECTOR(3 downto 0); SEGOUT : OUTSTD_LOGIC_VECTOR(6 downto 0) );,下一页,返回,上一页,7.2 电子钟设计,END seg7 ; ARCHITECTURE a OF seg7 IS BEGIN PROCESS (bcd) BEGIN CASE bcd IS WHEN x0 = SEGOUT SEGOUT SEGOUT SEGO
21、UT SEGOUT =0110110;,下一页,返回,上一页,7.2 电子钟设计,WHEN x5 = SEGOUT SEGOUT SEGOUT SEGOUT SEGOUT SEGOUT =0000000; END CASE; END PROCESS ; END a;,下一页,返回,上一页,7.2 电子钟设计,6.扫描控制SCAN模块的VHDL源程序 SCAN模块完成对6个LED数码管的扫描控制功能。 -scan.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY scan IS PORT(sel:IN STD_LOGIC_VECTOR(2
22、 DOWNTO 0); seg6_com:OUT STD_LOGIC_VECTOR(5 DOWNTO 0); END scan; ARCHITECTURE behav OF scan IS BEGIN,下一页,返回,上一页,7.2 电子钟设计,PROCESS(clk) VARIABLE cnt: INTEGER RANGE 0 TO 999; BEGIN IF clkEVENT AND clk=1THEN IF cnt999 THEN cnt:=cnt+1; q=0; ELSE cnt:=0; q=1; END IF; END IF; END PROCESS; END arc;,下一页,返回,
23、上一页,7.2 电子钟设计,PROCESS(sel) BEGIN CASE sel IS WHEN000=seg6_comseg6_comseg6_comseg6_comseg6_comseg6_comseg6_com=111111; END CASE; END PROCESS; END behav;,下一页,返回,上一页,7.2 电子钟设计,7.2.4系统仿真波形 系统仿真后的结果分别如图7-7、图7-8和图7-9所示。,返回,上一页,7.3 电子抢答器设计,7.3.1抢答器设计要求 在许多比赛活动中,为了准确、公正、直观地判断出第一抢答者,通常设置一台抢答器,通过数显、灯光及音响等多种手段
24、指示出第一抢答者。同时,还可以设置计分、犯规及奖惩计录等多种功能。本设计的具体要求是: 1.设计制作一个可容纳四组参赛者的电子抢答器,每组设置一个抢答按钮供抢答者使用。 2.电路具有第一抢答信号的鉴别和锁存功能。 3.设置计分电路。 4. 设置犯规电路,下一页,返回,7.3 电子抢答器设计,7.3.2系统设计方案 根据系统设计要求可知,系统的输入信号有:各组的抢答按钮A、B、C、D,系统清零信号CLR,系统时钟信号CLK,计分复位端RST,加分按钮端ADD,计时预置控制端LDN,计时使能端EN,计时预置数据调整按钮TA、TB;系统的输出信号有:四个组抢答成功与否的指示灯控制信号输出口LEDA、
25、LEDB、LEDC、LEDD,四个组抢答时的计时数码显示控制信号若干,抢答成功组别显示的控制信号若干,各组计分动态显示的控制信号若干。 根据以上的分析,我们可将整个系统分为三个主要模块:抢答鉴别模块QDJB;抢答计时模块JSQ;抢答计分模块JFQ。对于需显示的信息,需增加或外接译码器,进行显示译码。考虑到FPGA/CPLD的可用接口及一般EDA实验开发系统提供的输出显示资源的限制,这里我们将组别显示和计时显示的译码器内设,而将各组的计分显示的译码器外接。整个系统的组成框图如图7-10所示。,下一页,返回,上一页,7.3 电子抢答器设计,7.3.3各模块VHDL源程序设计 1. 抢答鉴别电路QD
26、JB的VHDL源程序 -QDJB.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY QDJB IS PORT(CLR: IN STD_LOGIC; A, B, C, D: IN STD_LOGIC; A1,B1,C1,D1: OUT STD_LOGIC; STATES: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);,下一页,返回,上一页,7.3 电子抢答器设计,END ENTITY QDJB; ARCHITECTURE ART OF QDJB IS CONSTANT W1: STD_LOGIC_VECTOR:=00
27、01; CONSTANT W2: STD_LOGIC_VECTOR:=0010; CONSTANT W3: STD_LOGIC_VECTOR:=0100; CONSTANT W4: STD_LOGIC_VECTOR:=1000; BEGIN PROCESS(CLR,A,B,C,D) IS BEGIN IF CLR=1 THEN STATES=0000; ELSIF (A=1AND B=0AND C=0AND D=0) THEN,下一页,返回,上一页,7.3 电子抢答器设计,A1=1; B1=0; C1=0; D1=0; STATES=W1; ELSIF (A=0AND B=1AND C=0AN
28、D D=0) THEN A1=0; B1=1; C1=0; D1=0; STATES=W2; ELSIF (A=0AND B=0AND C=1AND D=0) THEN A1=1; B1=0; C1=1; D1=0; STATES=W3; ELSIF (A=0AND B=0AND C=0AND D=1) THEN A1=0; B1=0; C1=0; D1=1; STATES=W4; END IF; END PROCESS; END ARCHITECTURE ART;,下一页,返回,上一页,7.3 电子抢答器设计,2. 计分器电路JFQ的VHDL源程序 -JFQ.VHD LIBRARY IEEE
29、; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY JFQ IS PORT(RST: IN STD_LOGIC; ADD: IN STD_LOGIC; CHOS: IN STD_LOGIC_VECTOR(3 DOWNTO 0); AA2,AA1,AA0,BB2,BB1,BB0: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CC2,CC1,CC0,DD2,DD1,DD0: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);,下一页,返回,上一页,7.3 电子抢答器设计
30、,END ENTITY JFQ ; ARCHITECTURE ART OF JFQ IS BEGIN PROCESS(RST,ADD,CHOS) IS VARIABLE POINTS_A2,POINTS_A1: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_B2,POINTS_B1: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_C2,POINTS_C1: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE POINTS_D2,POINTS_D1: STD_LOGIC_VECT
31、OR(3 DOWNTO 0); BEGIN IF (ADDEVENT AND ADD=1) THEN IF RST=1 THEN,下一页,返回,上一页,7.3 电子抢答器设计,POINTS_A2:=0001; POINTS_A1:=0000; POINTS_B2:=0001; POINTS_B1:=0000; POINTS_C2:=0001; POINTS_C1:=0000; POINTS_D2:=0001; POINTS_D1:=0000; ELSIF CHOS=0001 THEN IF POINTS_A1=1001 THEN POINTS_A1:=0000; IF POINTS_A2=10
32、01 THEN POINTS_A2:=0000; ELSE POINTS_A2:=POINTS_A2+1; END IF;,下一页,返回,上一页,7.3 电子抢答器设计,ELSE POINTS_A1:=POINTS_A1+1; END IF; ELSIF CHOS=0010 THEN IF POINTS_B1=1001 THEN POINTS_B1:=0000; IF POINTS_B2=1001 THEN POINTS_B2:=0000; ELSE POINTS_B2:=POINTS_B2+1; END IF;,下一页,返回,上一页,7.3 电子抢答器设计,ELSE POINTS_B1:=P
33、OINTS_B1+1; END IF; ELSIF CHOS=0100 THEN IF POINTS_C1=1001 THEN POINTS_C1:=0000; IF POINTS_C2=1001 THEN POINTS_C2:=0000; ELSE POINTS_C2:=POINTS_C2+1; END IF;,下一页,返回,上一页,7.3 电子抢答器设计,ELSE POINTS_C1:=POINTS_C1+1; END IF; ELSIF CHOS=1000 THEN IF POINTS_D1=1001 THEN POINTS_D1:=0000; IF POINTS_D2=1001 THE
34、N POINTS_D2:=0000; ELSE POINTS_D2:=POINTS_D2+1; END IF;,下一页,返回,上一页,7.3 电子抢答器设计,ELSE POINTS_D1:=POINTS_D1+1; END IF; END IF; END IF; AA2=POINTS_A2; AA1=POINTS_A1; AA0=0000; BB2=POINTS_B2; BB1=POINTS_B1; BB0=0000; CC2=POINTS_C2; CC1=POINTS_C1; CC0=0000; DD2=POINTS_D2; DD1=POINTS_D1; DD0=0000; END PROC
35、ESS; END ARCHITECTURE ART;,下一页,返回,上一页,7.3 电子抢答器设计,3.计时器电路JSQ的VHDL源程序 -JSQ.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY JSQ IS PORT(CLR,LDN,EN,CLK: IN STD_LOGIC; TA,TB: IN STD_LOGIC; QA: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); QB: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
36、END ENTITY JSQ;,下一页,返回,上一页,7.3 电子抢答器设计,ARCHITECTURE ART OF JSQ IS SIGNAL DA: STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL DB: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(TA,TB,CLR) IS BEGIN IF CLR=1 THEN DA=0000; DB=0000; ELSE IF TA=1 THEN,下一页,返回,上一页,7.3 电子抢答器设计,DA=DA+1 ; END IF; IF TB=1 THEN DB=DB+1; END I
37、F; END IF; END PROCESS; PROCESS(CLK) IS VARIABLE TMPA: STD_LOGIC_VECTOR(3 DOWNTO 0); VARIABLE TMPB: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN,下一页,返回,上一页,7.3 电子抢答器设计,IF CLR=1 THEN TMPA:=0000; TMPB:=0110; ELSIF CLKEVENT AND CLK=1 THEN IF LDN=1 THEN TMPA:=DA; TMPB:=DB; ELSIF EN=1 THEN IF TMPA=0000 THEN TMPA:
38、=1001; IF TMPB=0000 THEN TMPB:=0110; ELSE TMPB:=TMPB-1; END IF; ELSE TMPA:=TMPA-1; END IF;,下一页,返回,上一页,7.3 电子抢答器设计,END IF; END IF; QA=TMPA; QB=TMPB; END PROCESS; END ARCHITECTURE ART; 4. 译码器电路YMQ的VHDL源程序 -YMQ.VHD LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY YMQ I
39、S,下一页,返回,上一页,7.3 电子抢答器设计,PORT(AIN4: IN STD_LOGIC_VECTOR(3 DOWNTO 0); DOUT7: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END YMQ; ARCHITECTURE ART OF YMQ IS BEGIN PROCESS(AIN4) BEGIN CASE AIN4 IS WHEN 0000=DOUT7DOUT7DOUT7=1011011; -2,下一页,返回,上一页,7.3 电子抢答器设计,WHEN 0011=DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7DOUT7=000
40、0000; END CASE; END PROCESS; END ARCHITECTURE ART;,下一页,返回,上一页,7.3 电子抢答器设计,7.3.4系统仿真波形 系统仿真后的结果分别如图7-11、图7-12、图7-13和图7-14所示。,返回,上一页,7.4 交通灯控制器设计,7.4.1交通灯控制器设计要求 设计一个由一条主干道和一条支干道的汇合点形成的十字交叉路口的交通灯控制器,具体要求如下: 1. 主、支干道各设有一个绿、黄、红指示灯。 2. 主干道处于常允许通行状态,而支干道有车来才允许通行。 3. 当主、支道均有车时,两者交替允许通行。 4.主干道,支干道每次放行时间不得短于
41、30 s,在每次由亮绿灯变成亮红灯的转换过程中,要亮4 s的黄灯作为过渡,并进行减计时显示。,下一页,返回,7.4 交通灯控制器设计,7.4.2系统设计方案 根据交通灯信号控制的要求,我们可用状态机来实现交通灯控制器。控制器由定时器和两部分组成,其原理方框图如图7-所示。SM,SB分别为主干道和支干道来车信号检测,MR、MY、MG为主干道红、黄、绿灯驱动信号输出,BR、BY、BG为支干道红、黄、绿灯驱动信号输出。 7.4.3 VHDL源程序设计 -JTDKZ.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY JTDKZ IS PORT(
42、CLK,SM,SB:IN BIT;-这里要求CLK为1 kHz,下一页,返回,上一页,7.4 交通灯控制器设计,IF (CLKEVENT AND CLK=1) THEN IF CLR = 0 THEN S:=0; ELSIF EN = 0 THEN S:=1; ELSE S:=S+1; END IF; CASE STATE IS WHEN A=MR=0;MY=0;MG=1; BR= 1;BY= 0;BG= 0; IF (SB AND SM)= 1 THEN IF S=29 THEN STATE=B;CLR:=0;EN:=0;,下一页,返回,上一页,7.4 交通灯控制器设计,ELSE STATE
43、MR= 0;MY= 1;MG= 0; BR= 1;BY= 0;BG= 0; IF S=3 THEN,下一页,返回,上一页,7.4 交通灯控制器设计,STATE MR= 1;MY= 0;MG= 0; BR= 0;BY= 0;BG = 1; IF (SM AND SB) = 1 THEN IF S=29 THEN STATE=D;CLR:=0;EN:=0; ELSE STATE=C;CLR:= 1;EN:=1; END IF;,下一页,返回,上一页,7.4 交通灯控制器设计,ELSIF SB = 0 THEN STATE MR= 1;MY=0;MG=0; BR=0;BY=1;BG= 0; IF S
44、 =3 THEN STATE=A;CLR:=0; EN:=0; ELSE STATE=D;CLR:=1;EN:=1;,下一页,返回,上一页,7.4 交通灯控制器设计,END IF ; END CASE; END IF; END PROCESS CNT; END ART; 7.4.4 系统仿真波形 系统仿真波形如图7-15,图7-16和图7-17所示。,返回,上一页,7.5 简易数字频率计设计,7.5.1数字频率设计要求 设计一个四位十进制的数字频率计,要求具有以下功能: 1. 测量范围:1 Hz10kHz 。 2. 测量误差1。 3. 响应时间15s。 4.显示时间不少于1s。 5. 具有记忆
45、显示的功能,即在测量过程中不刷新数据,等数据过程结束后才显示测量结果,给出待测信号的频率值,并保存到下一次测量结束。,下一页,返回,7.5 简易数字频率计设计,7.5.2系统设计方案 根据系统设计要求,系统的组成框图如图7-5所示,包括时基产生与测频时序控制电路模块,以及待测信号脉冲计数电路模块和锁存与译码显示控制电路模块。 1. 时基产生与测频时序控制电路模块 时基产生与测频时序控制电路主要产生计数允许信号EN,清零信号CLR和锁存信号LUCK。 2. 待测信号脉冲计数电路模块 待测信号脉冲计数电路是对待测脉冲信号的频率进行测量,它可由4个十进制加法计数器组成,其中EN为计数选通控制信号,C
46、LR为计数器清零信号。在计数器清零信号CLR清零后,当计数选通控制信号EN有效时,开始对待测信号进行计数。,下一页,返回,上一页,7.5 简易数字频率计设计,如果计数选通控制信号EN的宽度为Is,那么计数结果就为待测信号的频率;如果计数选通控制信号EN的宽度为looms,那么待测信号的频率等于计数结果10。 3. 锁存与译码显示控制电路模块 锁存与译码显示控制电路用于实现记忆显示,在测量过程中不刷新新的数据,直到测量过程结束后,锁存显示测量结果,并且保存到下一次测量结束。 锁存与译码显示电路的功能是对四位BCD码进行锁存,并转换为对应的4组七段码,用于驱动数码管。,下一页,返回,上一页,7.5
47、 简易数字频率计设计,7.5.3各模块VHDL源程序设计 1. 时基产生与测频时序控制电路模块的VHDL源程序 -clk_sx_CTRL LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY clk_sx_CTRL IS PORT(CLK: IN STD_LOGIC; -系统时钟 LOCK: OUT STD_LOGIC; -锁存信号 EN: OUT STD_LOGIC; -计数允许信号 CLR: OUT STD_LOGIC); -清零信号,下一页,返回,上一页,7.5 简易数字频率计
48、设计,END; ARCHITECTURE ART OF clk_sx_CTRL IS SIGNAL Q : STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLK) BEGIN IF(CLKEVENT AND CLK =1)THEN IF Q=1111 THEN Q=0000; ELSE Q=Q+1;,下一页,返回,上一页,7.5 简易数字频率计设计,END IF; END IF; EN=NOT Q(3); LOCK=Q(3) AND NOT(Q(2) AND Q(1); CLR= Q(3) AND Q(2) AND NOT(Q(1); END PROC
49、ESS; END ART; 2. 待测信号脉冲计数电路模块的VHDL源程序 (1)十进制加法计数器的VHDL源程序 -Cnt10.vhd LIBRARY IEEE;,下一页,返回,上一页,7.5 简易数字频率计设计,USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY Cnt10 IS PORT(CLK,EN,CLR : IN STD_LOGIC; COUNT10 : BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); -计数输出信号 END Cnt10; ARCHITECTURE one
50、 OF Cnt10 IS BEGIN PROCESS(CLK,CLR,EN) BEGIN IF CLR =1 THEN,下一页,返回,上一页,7.5 简易数字频率计设计,COUNT10=0000; ELSIF (clkEVENT AND clk=1) THEN IF (EN = 1) then IF COUNT10 = 1001 THEN COUNT10=0000; ELSE COUNT10=COUNT10 + 1; END IF; END IF; END IF; END PROCESS; END one;,下一页,返回,上一页,7.5 简易数字频率计设计,(2)待测信号脉冲计数器的VHDL源
51、程序 -F_IN_CNT.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164. ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY F_IN_CNT IS PORT(CLK: IN STD_LOGIC;-待测时钟信号 EN: IN STD_LOGIC;-计数选通控制信号 CLR:IN STD_LOGIC;-计数器清零信号 QA,QB, QC, QD:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);-结果输出信号 END F_IN_CNT;,下一页,返回,上一页,7.5 简易数字频率计设计,ARCHIT
52、ECTURE ART OF F_IN_CNT IS COMPONENT CNT10 PORT(CLK,EN,CLR:IN STD_LOGIC; COUNT10:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); END COMPONENT; SIGNAL s2:STD_LOGIC; SIGNAL s3:STD_LOGIC; SIGNAL s4:STD_LOGIC; BEGIN,下一页,返回,上一页,7.5 简易数字频率计设计,s2=NOT QA(3); s3=NOT QB(3); s4=NOT QC(3); U1:CNT10 PORT MAP(CLK,EN,CLR,QA)
53、; U2:CNT10 PORT MAP(s2,EN,CLR,QB); U3:CNT10 PORT MAP(s3,EN,CLR,QC); U4:CNT10 PORT MAP(s4,EN,CLR,QD); END ART; 3. 锁存与译码显示控制电路模块的VHDL源程序 (1)译码显示电路的VHDL源程序 - seg7,下一页,返回,上一页,7.5 简易数字频率计设计,LIBRARY ieee; USE ieee.std_logic_1164.ALL; ENTITY seg7 IS PORT ( bcd: IN STD_LOGIC_VECTOR(3 downto 0); dout: OUTSTD
54、_LOGIC_VECTOR(6 downto 0) ); END seg7 ; ARCHITECTURE a OF seg7 IS BEGIN,下一页,返回,上一页,7.5 简易数字频率计设计,PROCESS (bcd) BEGIN CASE bcd IS WHEN x0 = dout dout dout dout dout dout dout dout =0000111;,下一页,返回,上一页,7.5 简易数字频率计设计,WHEN x8 = dout dout dout =0000000; END CASE; END PROCESS ; END a; (2)锁存与译码显示控制模块的VHDL源
55、程序 -LOCK.vhd LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY LOCK IS,下一页,返回,上一页,7.5 简易数字频率计设计,PORT(LOCK:IN STD_LOGIC; QA,QB,QC,QD:IN STD_LOGIC_VECTOR(3 DOWNTO 0); LEDA,LEDB,LEDC,LEDD:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END; ARCHITECTURE ART OF LOCK IS SIGNAL L0,L1,L2,L3:STD_LOGIC_VECTOR(3 DOWNTO 0);
56、 COMPONENT SEG7 PORT(BCD:IN STD_LOGIC_VECTOR(3 DOWNTO 0); DOUT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END COMPONENT; BEGIN,下一页,返回,上一页,7.5 简易数字频率计设计,PROCESS(LOCK) BEGIN IF(LOCKEVENT AND LOCK=1)THEN L0= QA; L1= QB; L2= QC; L3= QD; END IF; END PROCESS; UO:SEG7 PORT MAP(L0,LEDA); U1:SEG7 PORT MAP(L1,LEDB);,下一页,返回,上一页,7.5 简易数字频率计设计
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年工业机器人运维维修服务人才队伍建设
- 护理礼仪与护理工作满意度
- 护理通讯小组护理服务满意度调查分析汇报
- 护理心理支持技巧与实践
- 2026年四川省成都市高新区中考英语模拟试卷(含答案)
- 铸管工安全专项测试考核试卷含答案
- 风机操作工岗前履职考核试卷含答案
- 2026年新科教版高中高一生物上册第一单元细胞分子组成综合卷含答案
- 啤酒花栽培工安全专项能力考核试卷含答案
- 2026年新科教版高中高二物理下册第一单元交变电流综合应用卷含答案
- 《LTE基本原理》课件
- 2025届山东省青岛市、淄博市高三二模地理试题及答案
- 健康管理师操作技能考试题库(含答案)
- 卵巢黄体破裂术后护理查房
- 电商直播主播培训课程
- 2025年云南省中考模拟英语试题(原卷版+解析版)
- 《中国石油化工集团财务管控存在的问题及完善对策研究》9900字(论文)
- 专题07 直角三角形斜边上的中线 带解析
- 《你当像鸟飞往你的山》读书分享读书分享笔记
- 二零二五年光伏发电工程造价咨询合同3篇
- 一例股骨颈骨折的个案护理
评论
0/150
提交评论