1、汽车工作状态空闲1左转弯右转弯告警xX汽车有四个工作状态:空闲,左转弯,右转弯和告警状态,汽车的左转弯状态和右转弯状态又分为四个状态:0、1、2、3个灯亮。因此,本设计用一个时钟同步Moore状态机来实现,这个状态机有8个状态,每个状态的输出入表:状态输出IDLE空闲状态,6个灯全灭L1左边1灯亮L2左边2灯亮L3左边3灯亮R1右边1灯亮R2右边2灯亮R3右边3灯亮ERR告警状态,6个灯全亮状态转换约定:在进入左转弯状态时,状态机在IDLE,L1,L2和L3四个状态间循环,此时只有在IDLE状态可以接收任何其他信号输入,并选择进入相应状态。在L1和L2状态只接收告警状态输入,如果有告警信号,结
2、束在左转弯循环,进入告警状态。进入L3状态后部接收任何信号输入,直接进入IDLE状态。右转弯状态类似左转弯状态。告警状态在ERR状态和IDLE状态循环转换。没有任何输入时,状态机保持在IDLE状态。状态图如下:HAZLEFT.HAZ.RIGHT(HAZ+LEFT+RIFHT)HAZ+LEFT.RIFHTLEFT.HAZ.RIGHT根据上述分析,设计雷鸟车尾灯控制器。根据要求,实验所需的Verilog HDL程序如下:module lights( input clk, LEFT, RIGHT, HAZ, output reg 2:0 L,0 R); / Declare the state reg
3、ister to be safe to implement / a safe state machine that can recover gracefully from / an illegal state (by returning to the reset state). (* syn_encoding = *) reg 2:0 state; / Declare states parameter IDLE = 0, L1 = 1, L2 = 2, L3 = 3, R1 = 4, R2 = 5, R3 = 6, ERR = 7; / Output depends only on the s
4、tate always (state) begin case (state) IDLE: begin L = 3b000; R = 3 end L1:b001; L2:b011; L3:b111; R1: R2: R3: ERR: default: endcase end / Determine the next state always (posedge clk) begin case (state) IDLE: if (HAZ+LEFT*RIGHT) state = ERR; else if (LEFT*HAZ*RIGHT)= L1; else if (HAZ+LEFT+RIGHT)= I
5、DLE; else if (LEFT*HAZ*RIGHT) state = R1; L1: if (HAZ) else= L2; L2:= L3; L3: R1:= R2; R2:= R3; R3: ERR: default: endcaseendmodule五、 实验的测试序列或验证方法根据状态转移图,初始化为IDLE状态,然后按照顺序将左转方向走一遍回到IDLE,再将右转方向进行一遍,再验证一下跳转到ERR状态是否正确。六、 实验过程(验收实验的过程)1.建立工程,设计输入,建立波形文件进行功能仿真:2.用state machine viewer查看生成的状态转移图:3.用RTL View
6、er 和Technology Map Viewer查看生成的电路图和在FPGA板中的电路实现:4.分配引脚进行全编译,并将设计下载到FPGA板上进行验证:七、 实验结果本次实验设计了雷鸟车灯控制器,进一步了解了状态机。八、 实验中遇到的问题及解决方案1. 程序中有这么一段语言: case (state)这里也可以将三个信号定义为一个数组hrl,利用卡诺图或者真值表把每个表达式为1的情况计算直接写在括号中:case (state) If (hlr=3 | hlr2 =1)else if(hlr = 2)else if(hlr = 0) if(hlr = 1) 2. 在进行功能仿真时,对于状态图中为1即必然发生的转移,一定要空出一个时钟让其发生,不要以为是直接跳转,还是要经过时钟的触发。九、 实验的启示/意见和建议1.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1