可编程课程设计报告-汽车尾灯控制电路

编号:1104020112

 

课程设计

(可编程逻辑器件与应用)

         题目:汽车尾灯控制电路设计与实现

院 (系)   计算机与信息工程学院 

专    业         信息工程        

班    级         信息111         

学生姓名          李会希          

20##年6月


摘要

本次设计旨在完成汽车尾灯的控制电路,汽车尾灯控制电路使得汽车的行驶更加有秩序,更加方便操作。分析汽车尾灯控制电路设计原理, 采用Verilog HDL硬件描述语言实现汽车尾灯控制电路的设计, 具有可编程性、线路简单、可靠性高等特点,采用Quartus II 开发平台进行逻辑综合和时序仿真,并下载到PEC12Q240C8芯片上进行验证,获得了预期的结果。实验结果表明,该系统没有传统设计中的接线问题,硬件功能可以像软件一样通过编程来修改,可靠性高、体积小,极大地提高了电子系统设计的灵活性和通用性。

关键词:汽车尾灯控制电路; Verilog HDL ;Quartus II ;PEC12Q240C8芯片
目录

1.         1 绪论... 1

2.         2 设计方案分析... 1

3.         2.1 汽车尾灯控制电路的基本功能... 1

4.         2.2汽车尾灯控制电路设计原理... 1

5.         2.3汽车尾灯控制电路FPGA 的实现... 2

6.         3 汽车尾灯控制方案实施... 2

a)         3.1利用 Verilog HDL语言实现主控模块... 2

b)         3.3 实验箱连线... 5

7.         4 系统测试分析... 6

a)         4.1 功能仿真测试分析... 6

b)         4.2 电路下载测试分析... 6

8.         5 结论... 6

9.          

参考文献... 7


1 绪论  

随着集成电路工艺EDA技术的高速发展, 电子系统的设计技术和工具发生了深刻的变化,以现场可编程门阵列(FPGA)为代表的ASIC器件得到了迅速普及和发展,器件集成度和速度都在高速增长。FPGA既具有门阵列的高逻辑密度和高可靠性, 又具有可编程特性。利用它进行产品开发,不仅微功耗、成本低、周期短、可靠性高, 而且可以实现静态可重复编程、动态在系统重构、硬件功能可以像软件一样通过编程来修改,因此极大地提高了电子系统设计的灵活性和通用性。

在汽车运行过程中,驾车司机通过尾灯通知后继车辆本人的运行意图,对于维持正常的交通秩序,保障安全具有极其重要的意义。汽车尾灯控制电路是随汽车智能化技术的发展而迅速发展起来的,汽车尾灯一般是用基于微处理的硬件电路构成, 正因为硬件电路的局限性,不能随意的更改电路的功能和性能,且可靠性得不到保证,因此对汽车尾灯控制系统的发展带来一定的局限性,难以满足现代汽车的智能化发展。

本设计使用复杂可编程逻辑器件FPGA,用Verilog HDL语言对汽车尾灯控制电路进行设计,并用Quartus II 软件进行FPGA芯片的编译和下载,生成的是集成化的数字电路,没有传统设计中的接线问题,硬件功能的改变可以通过编程来修改,所以故障率低、可靠性高,而且体积小,体现了EDA 技术在数字电路设计中的优越性。

2 设计方案分析

2.1 汽车尾灯控制电路的基本功能

用6个发光管模拟6个汽车尾灯(左右各3个),用4个开关作为汽车控制信号,分别为:左拐、右拐、故障和刹车。

车匀速行驶时,6个汽车尾灯全灭;

右拐时,车右边3个尾灯从左至右顺序亮灭;

左拐时,车左边3个尾灯从右至左顺序亮灭;

故障时,车6个尾灯一起明灭闪烁;

刹车时,6个尾灯全亮。

2.2汽车尾灯控制电路设计原理

汽车尾部两侧各有三个指示灯。按一般规律,汽车正常行驶时尾部的指示灯全灭; 右转弯时, 右侧的三个指示灯按右循环的顺序点亮; 左转弯时,左侧的三个指示灯按左循环的顺序点亮; 刹车时,所有指示灯随clk脉冲同步闪烁。表1中列出汽车尾灯点亮和汽车运行状态之间的关系, 其中clk为控制灯闪烁的脉冲信号,left1~left3为左侧指示灯,right1~right3为右侧指示灯,L1~L4为状态控制开关。

2.3汽车尾灯控制电路FPGA 的实现

本控制电路采用Verilog HDL语言设计, 运用自顶而下的设计思想, 按功能逐层分割实现层次化设计根据汽车尾灯控制电路设计原理, 将整个控制电路分为主控模块、右侧灯控制模块和左侧灯控制模块, 然后利用Verilog HDL语言编程描述各模块的接口及电路功能, 最后利用原理图方式实现顶层电路设计。

表2-1 汽车尾灯点亮与汽车运行状态之间的关系

3 汽车尾灯控制方案实施

3.1利用 Verilog HDL语言实现主控模块

module carled(clk,cro,cout,VGA);

input clk;

input [3:0] cro;                  //开关控制

output reg[5:0] cout;         //6个输出

output [3:0] VGA;

assign VGA = 4'b0001;

reg[3:0] i=4'b0000;            //初始时灯为全亮

always @(posedge clk)

       begin

              if(i!=cro)              //判断汽车不为匀速行驶时

                     begin

                            if(cro==4'b0000)

                                          cout<=6'b111111;

                            else if(cro==4'b1000)

                                          cout<=6'b110111;

                            else if(cro==4'b0100)

                                          cout<=6'b111011;

                            else if(cro==4'b0010)

                                          cout<=6'b000000;

                            else if(cro==4'b0001)

                                          cout<=6'b000000;

                     end

              else if(i==cro)             //判断汽车为匀速行驶时

                     begin

                            if(cro==4'b0000)              //匀速行驶,灯全灭

                                   cout<=6'b111111;

                            else if(cro==4'b1000)       //左拐

                                   begin

                                          if(cout==6'b011111)

                                                 cout<=6'b110111;

                                          else    cout<=(cout<<1)|6'b000001;

                                   end

                            else if(cro==4'b0100)              //右拐

                                   begin

                                          if(cout==6'b111110)

                                                 cout<=6'b111011;

                                          else    cout<=(cout>>1)|6'b100000;

                                   end

                            else if(cro==4'b0010)               //故障

                                   cout<=~cout;

                            else if(cro==4'b0001)               //刹车

                                   cout<=6'b000000;

                            else cout<=6'b111111;

                     end

              i=cro;

       end

endmodule

3.2 功能仿真及下载验证

各模块Verilog HDL程序经过编译优化后, 选择合适的目标芯片进行综合、管脚配置。本电路选用ALTERA公司的可编程逻辑芯片PEC12Q240C8, 在QuartusⅡ软件上进行编程仿真并采用第三方验证工具EDI-VI试验箱验证所有预期功能, 根据现象对程序进行修改,以至准确实现所有功能。用EDI-VI试验箱验证时管脚定义及配置管脚图如表2-2、图2-1所示。

表2-2 管脚定义

图2-1 配置管脚

3.3 实验箱连线

如图3-1为硬件实验箱验证的连线图。

             

  图3-1 硬件实验箱仿真连线图

4 系统测试分析

4.1 功能仿真测试分析

如图4-1为用QuartusⅡ软件仿真得到的结果。

图4-1 功能仿真的波形图

该汽车尾灯控制电路在Quartus II中进行仿真, 仿真波形如图4-1所示。其中clk为时钟源提供连续时钟信号;cro寄存器是控制左、右转弯、匀速、刹车以及故障的模拟开关,负责接收系统外的输入信号,cout寄存器显示的是左侧尾灯left1~left3及右侧尾灯right1~right3的相应状态。通过对仿真图进行分析,可以看出,本设计的输入输出逻辑关系已符合预期要求:车匀速行驶时,6个汽车尾灯全灭;右拐时,车右边3个尾灯从左至右顺序亮灭;左拐时,车左边3个尾灯从右至左顺序亮灭;故障时,车6个尾灯一起明灭闪烁;刹车时6个尾灯全亮。这说明软件部分设计基本完成。

4.2 电路下载测试分析

将所设计的程序下载到Altera公司的FPGA器件PEC12Q240C8芯片中(注意:往实验箱烧程序之前要将所有管脚状态设置为三态As input tri-stated),并进行在线测试。根据各输入端的逻辑功能,分别赋予相应的值。通过观察输出指示灯的变化,设计电路符合要求。

5 结论

本设计基于完成汽车尾灯控制电路,在确立总体预期实现功能的前提下,分层次进行描述, 满足设计要求。在Quartus II环境下,用语言实现该电路,根据Verilog HDL的语法规则,对系统的逻辑行为进行描述, 然后通过综合工具进行电路结构的综合、编译、优化,利用波形仿真工具,可在短时间内设计出高效、稳定、符合设计要求的电路。这种利用FPGA设计的汽车尾灯电路,具有较强的灵活性,具备系统可编程能力,便于扩展,而且使用一块核心芯片就可以完成多项功能。另外,使用Verilog HDL进行编程,易学易用,便于调试。随着电子设计自动化技术的发展和普及, 利用EDA工具, 采用可编程逻辑器件缩短了电子产品的设计周期, 为设计者提供了方便。

参考文献

[1] 王金明. 数字系统设计与Verilog HDL(第四版) [M]. 北京:电子工业出版社. 2012.

[2] 李皓瑜. 汽车尾灯控制电路设计[J]. 软件导刊, 2013,12(8):33-34.

[3] 刘宗佳. 汽车尾灯控制电路设计[J]. 科技资讯, 2013, 34(8):100.

相关推荐