西安交通大学数字逻辑电路实验报告

时间:2020-11-04 09:44:22 手机站 来源:网友投稿

电子技术实验报告

——交通控制器的分析与设计

班级: 姓名: 学号:

日期: 2016 年 6 月联系电话:

目 录

一、实验目的? 3

二、项目设计概要 3

三、系统设计方案 4

四、测试结果及分析? 9

五、项目总结? 10

六、结束语 10

七、参考书 10

一.实验目的

数字逻辑电路专题实验是紧紧围绕数字逻辑这门课程进行的一个有实践性特质的课程,主要考察的是对于数字逻辑这门课程中比较重要的知识点的掌握程度 和灵活运用程度,也考察了实际操作能力和对于特殊情况和意外情况的处理能力。通过对于译码器编码器等器件的实际操作和对相应变成软件的实际应用,达到对 于这门课程更为深入理解这一目的。

同时,为解决实际生活中的问题有一定的指导意义,也能更好地对实际生活中的一些组合部件有更好地认识。

二.项目设计概要

设计实现的目标

设计一个由一条主干道和一条支干道的汇合点形成的十字交叉路口的交通灯控制器,具体要求如下:

主、支干道各设有一个绿、黄、红指示灯,两个显示数码管。

主干道处于常允许通行状态,而支干道有车来才允许通行。

当主、支道均有车时,两者交替允许通行,主干道每次放行 45 s,支干道每次放行 25 s,在每次由亮绿灯变成亮红灯的转换过程中,要亮 5 s 的黄灯作为过渡,并进行减计时显示。

整体设计概述

交通控制器拟由单片的 CPLD/FPGA来实现,经分析设计要求,拟定整个系统由 9 个单元电路组成,如图所示。

项目设计特点

我们在项目设计过程中采用模块化设计思想,同时用变量的方式来完成计数的设计,用计数器来实现显示这一特点,使得设计变得简单。

三.系统设计方案

系统功能模块设计示意图:

时钟输入

时钟输入 (1000Hz)

总控电路

显示电路

计时电路

实验板 LED7段数码管

电路模块设计

输入:实验板时钟输出:七段数码管

电路模块的设计:

交通灯控制器:

将题设的要求把电路分为 ABCD四个状态, A 为主干道为绿灯, B为主干道为黄灯, C为主干道为红灯, D为主干道为红灯,旁道为黄灯。

用特设的一个变量 S,完成电路的即使功能,使得电路可以区分 45s,25s 等时间点,并且通过 if 语句完成状态之间的改变。

源 程 序 : LIBRARY IEEE; USE JTDKZ IS

PORT(CLK,SM,SB,CLD:IN STD_LOGIC;

MR ,MY,MG,BR,BY, BG: OUT STD_LOGIC);

END ENTITY JTDKZ; ARCHITECTURE ART OF JTDKZ IS TYPE STATE_TYPE IS(A,B,C,D); SIGNAL STATE: STATE_TYPE; BEGIN

CNT:PROCESS(CLK) IS

VARIABLE S:INTEGER RANGE 0 TO 45; VARIABLE CLR ,EN:BIT;

BEGIN

IF(CLK'EVENT AND CLK='1')THEN IF CLR='0'THEN

S:=0;

ELSIF EN='0' THEN S:=S;

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=45 THEN

STATE<=B; CLR:='0'; EN:='0'; ELSE

STATE<=A; CLR:='1'; EN:='1';

END IF;

ELSIF(SB AND (NOT SM))='1' THEN STATE<=B; CLR:='0'; EN:='0';

ELSE

STATE<=A; CLR:='1'; EN:='1'; END IF;

WHEN B=>MR<='0'; MY<='1'; MG<='0';

BR<='1'; BY<='0'; BG<='0'; IF S=5 THEN

STATE<=C;CLR:='0'; EN:='0';

ELSE

STATE<=B; CLR:='1'; EN:='1'; END IF;

WHEN C=>MR<='1'; MY<='0'; MG<='0'; BR<='0'; BY<='0'; BG<='1'; IF(SM AND SB)='1' THEN

IF S=25 THEN

STATE<=D; CLR:='0'; EN:='0'; ELSE

STATE<=C; CLR:='1'; EN:='1'; END IF;

ELSIF SB='0' THEN

STATE<=D; CLR:='0'; EN:='0'; ELSE

STATE<=C; CLR:='1'; EN:='1'; END IF;

WHEN D=>MR<='1'; MY<='0'; MG<='0';

BR<='0'; BY<='1'; BG<='0'; IF S=5 THEN

STATE<=A;CLR:='0'; EN:='0'; ELSE

STATE<=D; CLR:='1'; EN:='1'; END IF;

END CASE;

END IF;

END PROCESS CNT; END ARCHITECTURE ART;

定时单元电路:

当符合题设条件中的时间要求时, 相应的定时单元电路开始工作, 左后可以达成输出合适的 BCD码的要求。

源代码:

LIBRARY IEEE;

USE CNT45S IS

PORT(SB,CLK,EN45:IN STD_LOGIC;

DOUT45M ,DOUT45B:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END ENTITY CNT45S;

ARCHITECTURE ART OF CNT45S IS

SIGNAL CNT6B: STD_LOGIC_VECTOR(5 DOWNTO 0); BEGIN

PROCESS(S,B

BEGIN

CLK,EN45) IS

IF SB='0'THEN CNT6B<=CNT6B-CNT6B-1; ELSIF(CLK'EVENT AND CLK= '1')THEN IF EN45='1'THEN CNT6B<=CNT6B+1;

ELSIF EN45='0'THEN CNT6B<=CNT6B-CNT6B-1; END IF;

END IF;

END PROCESS; PROCESS(CNT6B) IS BEGIN

CASE CNT6B IS

WHEN "000000"=>DOUT45M<=; DOUT45B<=; WHEN "000001"=>DOUT45M<=; DOUT45B<=; WHEN "000010"=>DOUT45M<=; DOUT45B<=; WHEN "000011"=>DOUT45M<=; DOUT45B<=; WHEN "000100"=>DOUT45M<=; DOUT45B<=; WHEN "000101"=>DOUT45M<=; DOUT45B<=; WHEN "000110"=>DOUT45M<=; DOUT45B<=; WHEN "000111"=>DOUT45M<=; DOUT45B<=; WHEN "001000"=>DOUT45M<=; DOUT45B<=; WHEN "001001"=>DOUT45M<=; DOUT45B<=; WHEN "001010"=>DOUT45M<=;DOUT45B<=;

WHEN "001011"=>DOUT45M<=; DOUT45B<=; WHEN "001100"=>DOUT45M<=; DOUT45B<=; WHEN "001101"=>DOUT45M<=; DOUT45B<=; WHEN "001110"=>DOUT45M<=; DOUT45B<=; WHEN "001111"=>DOUT45M<=; DOUT45B<=; WHEN "010000"=>DOUT45M<=; DOUT45B<=; WHEN "010001"=>DOUT45M<=; DOUT45B<=; WHEN "010010"=>DOUT45M<=; DOUT45B<=; WHEN "010011"=>DOUT45M<=; DOUT45B<=; WHEN "010100"=>DOUT45M<=; DOUT45B<=; WHEN "010101"=>DOUT45M<=; DOUT45B<=; WHEN "010110"=>DOUT45M<=; DOUT45B<=;

WHEN "010111"=>DOUT45M<=; DOUT45B<=;

WHEN "011000"=>DOUT45M<=; DOUT45B<=; WHEN "011001"=>DOUT45M<=; DOUT45B<=; WHEN "011010"=>DOUT45M<=; DOUT45B<=; WHEN "011011"=>DOUT45M<=; DOUT45B<=; WHEN "011100"=>DOUT45M<=; DOUT45B<=; WHEN "011101"=>DOUT45M<=; DOUT45B<=; WHEN "011110"=>DOUT45M<=; DOUT45B<=; WHEN "011111"=>DOUT45M<=; DOUT45B<=; WHEN "100000"=>DOUT45M<=; DOUT45B<=; WHEN "100001"=>DOUT45M<=; DOUT45B<=;

WHEN "100010"=>DOUT45M<=; DOUT45B<=; WHEN "100011"=>DOUT45M<=; DOUT45B<=; WHEN "100100"=>DOUT45M<=; DOUT45B<=; WHEN "100101"=>DOUT45M<=; DOUT45B<=; WHEN "100110"=>DOUT45M<=; DOUT45B<=; WHEN "100111"=>DOUT45M<=; DOUT45B<=;

WHEN "101000"=>DOUT45M<=; DOUT45B<=;

WHEN "101001"=>DOUT45M<=; DOUT45B<=; WHEN "101010"=>DOUT45M<=; DOUT45B<=;

WHEN "101011"=>DOUT45M<=; DOUT45B<=; WHEN "101100"=>DOUT45M<=; DOUT45B<=; WHEN OTHERS=>DOUT45M<=; DOUT45B<=;

END CASE;

END PROCESS;

END ARCHITECTURE ART;

译码器电路:

完成 BCD码转换为相应数字的要求,使得在七段译码器中得到合适的显示。LIBRARY IEEE;

USE YMQ IS

PORT(AIN4:IN STD_LOGIC_VECTOR(3 DOWNTO 0); DOUT7: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));

END ENTITY YMQ;

ARCHITECTURE ART OF YMQ IS BEGIN

PROCESS(AIN4) IS

BEGIN

CASE AIN4 IS

WHEN "0000"=>DOUT7<="0111111"; WHEN "0001"=>DOUT7<="0000110"; WHEN "0010"=>DOUT7<="1011011"; WHEN "0011"=>DOUT7<="1001111"; WHEN "0100"=>DOUT7<="1100110";

WHEN "0101"=>DOUT7<="1101101"; WHEN "0110"=>DOUT7<="1111101"; WHEN "0111"=>DOUT7<="0000111"; WHEN "1000"=>DOUT7<="1111111"; WHEN "1001"=>DOUT7<="1101111"; WHEN OTHERS=>DOUT7<="0000000"; END CASE;

END PROCESS;

END ARCHITECTURE ART;

电路图:

四.测试结果及分析1.

四.测试结果及分析

1. 模拟仿真测试方案:

通过建立仿真图,将电路进行波形仿真测试。

2. 模拟仿真测试波形图

五.项目总结

设计过程比较顺利,并完成了预期的设计任务,达到了对于题目所列出的三个要求。在实验中很好地采用了变量这个很好的媒介来完成对于总控制电路的计数特点,这点能使得所有的功能都可以很简单地用 if 语句完成。

计数器在电路中也得到了很好的使用,用计数器得到显示的特点。在电路中需要一个倒计时,达到在每次 ABCD的状态中对于时间的倒计时。

六.结束语

数字逻辑专题实验对我们进一步理解所学理论知识、深化对数字逻辑电路的认识有着不可替代的重要作用。通过计算机对于器件的编写,不仅仅可以锻炼编程能力,同时也可以对于数字逻辑的器件和知识点有很好地理解。

七.参考书

《数字逻辑与数学系统》

推荐访问:实验报告 电路 西安交通大学 逻辑 西安交通大学数字逻辑电路实验报告

版权声明 :以上文章中选用的图片文字均来源于网络或用户投稿 ,如果有侵权请立即联系我们 , 我们立即删除 。