1、11 设计内容及其分析1.1 设计的内容用 8 个发光二极管模拟 8 个汽车尾灯(左、右各 4 个,高电平点亮) ,用四个开关作为左转弯、右转弯、刹车、双闪控制信号(高电平有效) 。当汽车往前行驶时,8 灯全灭。当汽车转弯时(左、右转弯开关不会同时有效) ,若右转弯,右边 4 个尾灯从左至右循环点亮,左边 4 个灯全灭。若左转弯,左边 4 个尾灯从右至左循环点亮,右边 4 个灯全灭。汽车刹车时(第 2 优先级) ,8 个灯全亮。双闪信号有效时(优先级最高)时,8 个灯明、暗闪烁。1.2 设计内容分析当汽车转弯时(左、右转弯开关不会同时有效) ,若右转弯,右边 4 个尾灯从左至右循环点亮,左边
2、4 个灯全灭。若左转弯,左边 4 个尾灯从右至左循环点亮,右边 4 个灯全灭。汽车刹车时(第 2 优先级) ,8 个灯全亮。双闪信号有效时(优先级最高)时,8个灯明、暗闪烁。根据以上分析可以画出尾灯和汽车运行关系表如下所示:开关控制 左边灯 右边灯LEFTL0L1L2L3分频电路图 3.1 汽车尾灯控制电路设计总体框图32 功能表根据设计项目要求和电路原理框图可以画出汽车尾灯控制功能表如下所示:表 3.1 汽车尾灯控制功能表开关控制 左边灯 右边灯LEFTUSE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY fp
3、ISPORT ( clk :IN STD_LOGIC;q1:OUT STD_LOGIC);END ENTITY fp;ARCHITECTURE zero OF fp ISSIGNAL temp1: STD_LOGIC_VECTOR(5 DOWNTO 0);SIGNAL temp2: STD_LOGIC;BEGINPROCESS(clk)BEGINIF(clkEVENT AND clk = 1) THEN IF temp1=“100110“ THEN temp2lplprprplp=0;rp=0;sc=0;ss=1;end case;end process;end bh;3.3.4 左边灯控制模
4、块 左边灯控制模块的工作框图如图 3.4 所示。7图 3.4 左边灯控制模块的工作框图左边灯控制模块由 VHDL 程序来实现,下面是其中的一段 VHDL 代码:library ieee;use ieee.std_logic_1164.all;entity lc isport(lp,clk,ss,sc:in std_logic;l3,l2,l1,l0:out std_logic);end lc;architecture one of lc isbeginprocess(clk,ss,sc)variable tmp:std_logic_vector(3 downto 0);beginIF clkE
5、VENT AND clk=1 THENIF ss=1 THEN tmp:=not tmp;ELSIF sc=1 THEN tmp:=“1111“;-ELSIF clkEVENT AND clk=1 THENELSIF lp=1 THEN IF tmp =“0000“ THEN tmp:=“0001“;ELSE tmp:= tmp (2 DOWNTO 0)END IF;ELSIF lp=0 THEN tmp:=“0000“;END IF;END IF;l3= tmp(3)l2= tmp(2);l1= tmp(1);l0= tmp(0);end process;end one;3.3.5 右边灯控
6、制模块右边灯控制模块的工作框图如图 3.5 所示。8图 3.5 右边灯控制模块的工作框图右边灯控制模块由 VHDL 程序来实现,下面是其中的一段 VHDL 代码:library ieee;use ieee.std_logic_1164.all;entity rc isport(rp,clk,sc,ss:in std_logic;r3, r2,r1,r0:out std_logic);end rc;architecture two of rc isbeginprocess(clk,sc,ss)variable tmp:std_logic_vector(3 downto 0);beginIF cl
7、kEVENT AND clk=1 THENIF ss=1 THEN tmp:=not tmp;ELSIF sc=1 THEN tmp:=“1111“;-ELSIF clkEVENT AND clk=1 THENELSIF rp=1 THEN IF tmp=“0000“ THEN tmp:=“1000“;ELSE tmp:=0 END IF;ELSIF rp=0 THEN tmp:=“0000“;END IF;END IF;r3= tmp(3)r2= tmp(2);r1= tmp(1);r0= tmp(0); end process;end two;4 系统仿真与调试94.1 分频模块仿真及分析
8、分频模块仿真图如图 4.1 所示。图 4.1 分频模块仿真图对其仿真图进行仿真分析:如图所示,首先生成一个 0.8us 的时钟脉冲,通过时钟分频把 0.8us 的脉冲分成一个 3.2us 的脉冲,实现了信号同步。4.2 汽车尾灯主控模块仿真及分析汽车尾灯主控模块由 VHDL 程序实现后,其仿真图如图 4.2 所示。图 4.2 主控模块时序仿真图对时序仿真图进行分析:right,left,flash,brake 为输入信号,right 为 1 表示右转,left 为 1 表示左转,flash 为 1 表示双闪,brake 为 1 表示刹车。ss,sc,lp,clk 为输出信号。如图所示:当 ri
9、ght 为 1 时,产生一个 rp 为 1 的信号脉冲输出,当 left 为 1 时,产生一个 lp 为 1 的信号脉冲输出,当 flash 为 1 时,产生一个 ss 为 1 的信号脉冲输出。当 brake 为 1 时,产生一个 sc 为 1 的信号脉冲输出。4.3 左边灯控制模块仿真及分析左边灯控制模块由 VHDL 程序实现后,其仿真图如下图 4.3 所示。10图 4.3 左边灯控制模块时序仿真图对时序仿真图进行分析:ss,sc,lp,clk 为输入信号,l3,l2,l1,l0 为输出信号,表示汽车左侧的四盏灯。如图所示:当 lp 为 1 时,左侧四盏灯从右到左顺序点亮。当 ss 为 1
10、时,左侧四盏灯同时明暗闪烁。当 sc 为 1 时,左侧四盏灯同时点亮。4.4 右边灯控制模块仿真及分析右边灯控制模块由 VHDL 程序实现后,其仿真图如图 4.4 所示。图 4.4 右边灯控制模块时序仿真图对时序仿真图进行分析:ss,sc,rp,clk 为输入信号,r3,r2,r1,r0 为输出信号,表示汽车右侧的四盏灯。如图所示:当 rp 为 1 时,右侧四盏灯从左到右顺序点亮。当 ss 为 1 时,右侧四盏灯同时明暗闪烁。当 sc 为 1 时,右侧四盏灯同时点亮。4.5 整个系统仿真及分析按图 2.3 组装系统后的仿真图如下图 4.5 所示。11图 4.5 整个系统仿真图对时序仿真图进行分
11、析:right,left,flash,brake 为输入信号,right 为 1 表示右转,left 为 1 表示左转,flash 为 1 表示双闪,brake 为 1 表示刹车。r3,r2,r1,r0为输出信号,表示汽车右侧的四盏灯。l3,l2,l1,l0 为输出信号,表示汽车左侧的四盏灯。如图所示:当 right 为 1 时,右侧四盏灯从左到右顺序点亮;当 left 为 1 时,左侧四盏灯从右到左顺序点亮;当 brake 为 1 时,r3,r2,r1,r0,l3,l2,l1,l0 输出均为 1,表示八盏灯全亮。当 flash 为 1 时,八盏灯输出为高低电平交替出现,表示八盏灯同时明暗闪烁
12、。4.6 总体设计电路图图 4.6 总体设计电路图4.7 硬件仿真管脚锁定输入管脚锁定如图 4.7 所示。12图 4.7 输入管脚锁定输出管脚锁定如图 4.8 所示。图 4.8 输出管脚锁定134.8 总体电路图总体电路图如图 4.9 所示。图 4.9 汽车尾灯设计总体电路图5 总结通过设计汽车尾灯控制电路,我们查阅各种 VHDL 语言资料及思考讨论而完成这次设计项目。在设计的过程中经过了选题的彷徨以及设计程序的繁复等阶段,提高了思考、编程能力和团队的协作能力,更加加深了我们对于硬件描述语言这门课程的理解和学习。我们设计的汽车尾灯控制电路有我们自己团队的创新。对于设计中遇到的难题,我们明白了应
13、该自己积极动脑思考的同时,还要请教老师和同学,要以积极的态度去设计和分析设计项目,最终完成设计。这次设计使我们明白了只有书本上的知识是不够的,还应该加强自己的动手能力,将理论应用于实践,才能学到真正的知识。通过本次设计,不仅培养了我们实际操作能力,也培养了我们灵活运用知识,理论联系实际,独立自主的进行设计的能力。这次设计不仅是一个学习新知识、新方法的机会,同时也是对我们所学知识的一次综合的检验和复习,使我们明白了知己的缺陷所在,从而及时的查缺补漏。这样的设计,真正的让我们学以致用。在设计中要求我们要有耐心和毅力,还要细心,稍不谨慎,一个小小的错误就会导致结果的不正确,二对错误的检查要求我们要有足够的耐心。通过这次设计和设计在遇到14的问题,我们也积累了一定的经验,以后从事集成电路设计工作会有一定的帮助。在应用 VHDL 的过程中让我们真正领会到了其并行运行与其它软件顺序运行的差别及其在电路设计上的优越性。用 VHDL 硬件描述语言来进行数字系统的设计方便灵活。这样的设计方法不但降低了开发的成本,而且缩短了开发的周期。在这次设计中用到的技巧有:用了至上而下的顺序设计方式;其中用到了 if 语句、case 语句、进程语句(process)等。