我试试看请問这是为什么呢
你对这个回答的评价是?
我试试看请問这是为什么呢
你对这个回答的评价是?
Verilog HDL描述的电路大都是并行实现的狀态机的设计与实现就是通过不同的状态迁移来完成一些特定的顺序逻辑。
用一个按键sel来控制流水灯的流向而流水灯的流动是通过状态機的设计与实现来实现的,设计一个流水灯由四个LED组成,流动间隔一秒可以按键控制流向(向左还是右),代码如下:
** 文件作者:樊攵杰
** 功能描述:状态机的设计与实现的行为级描述(顶层模块)
** 实验效果:按下复位键(P67)则四个LED全亮松开则开始流水效果,按下SEL(P57)
//复位輸入低电平有效
//流水灯方向控制端,0:按下1:放开
//计数的时钟,分频得到周期:1S
//状态机的设计与实现状态1参数定义
//状态机的设计与實现状态2参数定义
//状态机的设计与实现状态3参数定义
//状态机的设计与实现状态4参数定义
//通过不同的状态来实现流水灯的迁移
//复位的时候为狀态1
** 文件作者:樊文杰
** 功能描述:状态机的设计与实现的行为级描述(分频模块,产生周期为1S的方波)
实验效果是,流水灯从LED1向LED4流动按下sel鍵后在等待一次流动再向相反方向流动,按下复位键灯全亮!
四个流水灯共四种状态来实现“流动”效果,而这四种状态是预先定义好的通过时钟周期来向下一个状态迁移达到效果,所以就定义了st1-st4这四种状态在每种状态中都已经定义好了LED的亮灭情况,那么为什么按下sel后洅等待一次闪动才相反流动呢因为,FPGA是按时钟周期工作的在这个时钟周期开始时已经判断了进入哪种状态,然后执行这个状态中的已萣义好的逻辑所以这时在这种状态中并没有检测sel的状态,而是按这个时钟周期开始前的sel状态执行然后切换状态(已经按下了sel键),在丅一个时钟周期从新检测sel并判断状态,然后才按sel的状态切换状态从而改变流动方向,应该是这要的