学习如何通过创建一个4位二进制计数器,在VHDL中实现有限状态机。编译后,它将在连接到带有输入开关和LED显示器的自定义PCB的Altera CPLD开发板上运行。
本文引用地址:https://www.eepw.com.cn/article/202409/462551.htm
本项目是我“从VHDL代码到真实硬件”系列的第二部分,在该系列中,我们使用基于硬件的方法和可编程逻辑IC设计简单的电子系统。这些系统为重要设计概念提供了极好的介绍,这些概念也可以应用于更复杂的项目。
有限状态机项目概述
在这个项目中,我将介绍有限状态机(FSM)的开发。具体来说,我将构建一个4位二进制计数器,带有四个输出LED和一个四位DIP开关模式输入
逻辑将使用VHDL(一种硬件描述编程语言)编写,并上传到复杂可编程逻辑(CPLD)芯片。CPLD是一种可重复编程的现成逻辑门IC,类似于FPGA。
本项目将使用与我之前设计的8位算术逻辑单元(ALU)相同的硬件和软件设置:
1.png
Altera Max II EPM240 CPLD开发板,
英特尔的Quartus Prime Lite版IDE。
如果您想复习可编程逻辑集成电路和Quartus Prime套件的基础知识,您需要查看之前的项目。
什么是有限状态机?
在深入设计之前,我们先快速回顾一下有限状态机。有限状态机是顺序逻辑电路的抽象数学模型,在任何给定时刻,它只能在有限数量的状态中运行。
FSM可以在每个时钟周期在其状态之间转换一次。下一个状态基于外部输入和当前状态(这意味着它使用了记忆逻辑)。
有限状态机可用于检测或生成序列,是电梯、交通灯、自动售货机和电子锁等系统的基础。
二进制计数器
有限状态机(FSM)的一种特殊实现是二进制计数器。这些电路的设计目标是迭代并显示所需的二进制数序列,通常使用一系列相互连接的触发器构建。二进制计数器的每个新状态都必须由输入脉冲触发,该脉冲可以来自外部源或电路自己的时钟信号。
有了这些背景知识,让我们深入了解一下4位二进制计数器的代码。
FSM二进制计数器的VHDL代码
我们将在VHDL文件的顶部声明几个库,开始为二进制计数器编写代码:
2.png
港口定义
接下来,我们将为我们的电路创建一个名为fsm的实体,并定义其输入和输出端口:
3.png
在此代码片段中,我们定义了:
4.png
流程和数据类型定义
既然我们已经定义了FSM实体,我们就可以为我们的电路创建一个架构。这个架构将有三个过程:
状态记忆。
下一个状态逻辑。
输出逻辑。
全文链接:https://www.eepw.com.cn/article/202409/462551.htm