汽车电子
Abstract
在DE2上用FSM实现汽车尾灯控制电路。
Introduction
使用环境:Quartus II 9.1 web edition + DE2
假设汽车尾部左右两侧各有3个指示灯,要求设计一个电路实现如下功能:
1. 汽车正常行驶时,尾部两侧的6个灯全灭;
2. 刹车时,尾部两侧的灯全亮,即紧急状态;
3. 右转弯时,右侧3个灯按向右的顺序循环点亮,每次只有一个灯亮,左侧灯全灭;
4. 左转弯时,左侧3个灯按向左的顺序循环点亮,每次只有一个灯亮,右侧灯全灭;
5. 右转弯刹车时,右侧的3个灯顺序循环点亮,左侧的灯全亮;左转弯刹车时,左侧的3个灯顺序循环点亮,右侧的灯全亮;
6. 倒车时,尾部两侧的6个灯不停的按一定频率闪烁。
假设电路的输入钟信号为cp,cp的频率等于汽车尾灯所要求的闪烁频率。Specification
State diagram
1. 输出状态表
2. 状态图如图 1 汽车尾灯状态图
图 1 汽车尾灯状态图
完成状态图后,这个系统的设计就完成一大部分,剩下的工作就是用HDL描述电路,仿真、下载、验证功能。
完整代码
/*
(C) yf.x 2010 http://halflife.cnblogs.com/
Filename : part1.v
Compiler : Quartus II 9.1 Web Edition
Description : Demo how to use Switch and led
Release : 03/23/2010 1.0
*/
taillight.v
指定
Conclusion
整个设计最具创意也是最难的部分就是设计状态图,在状态转移描述的部分,我采用了独热码(one-hot code)同时在状态编码的后6位包含输出状态,这样做的优点是简化了译码电路,同时避免毛刺。因为针对DE2上的fpga设计,所以相对占用触发器的资源比其他编码方式要多。但fpga的优点就是触发器资源多。J
目前验证已知存在的问题,汽车尾灯作为一个经典的课设,在John.F wakerly的《数字设计—原理与实践》的第7章有详细的描述,但不包括第5条(转弯时刹车),所以设计状态图,还是不确定足够完美。在DE2上验证时,转弯时刹车必须先转弯(激活转弯的信号)再刹车才会正常显示上述输出状态表的状态。当然这也是刹车的优先级最高决定的,还没发现大问题,但总觉得不够完美,希望有兴趣的同好,能测试一下,看如何改进。
Reference
1. John,F, Wakerly 《数字设计原理与实践(4th)》 机工
2. 罗杰 《Verilog HDL与数字ASIC设计基础》 华科
全部0条评论
快来发表一下你的评论吧 !