APP下载

在硬件课程设计中引入Quartus Ⅱ状态机编辑器的探索与实践

2019-10-23张永梅

计算机教育 2019年10期
关键词:状态机编辑器时序

吴 磊,张永梅

(北方工业大学 信息学院,北京 100144)

1 将QuartusII状态机编辑器引入硬件课程设计是计算机发展和教改的需要

随着计算机技术的快速发展,社会对计算机系统软件设计和计算机硬件系统设计人才的需要更加迫切。计算机学科具有技术发展快、知识更新快的特点,计算机人才培养只有适应社会需要和计算机技术发展的需要,才具有市场竞争力。

在软件平台功能日渐强大,逐步替代手工编程,完成大部分硬件设计各个层面的时代,如何调动计算机专业学生学习硬件的积极性,构建以硬件为基础的系统化实验与教学体系是目前亟须解决的问题;培养软件和硬件两手都过硬的计算机系统类人才,是目前各个高校计算机实验与教学面临的重要问题。

在国外,硬件描述语言课程中较多采用Quartus Ⅱ状态机编辑器作为工具,而在国内教学与实验中,状态机编辑器还未得到足够的重视。以往有限状态机只是作为设计工具而不是作为编程的实现工具,没有充分利用其强大的状态机编辑器进行有限状态机设计;另外,由于状态机编辑器仅仅是Quartus Ⅱ平台的一个功能,并没有涉及理论,因此大部分介绍Quartus Ⅱ的中文书籍没有包含状态机编辑器这部分内容[1-4]。

2 有限状态机的表述及描述方式

通常,有限状态机FSM 可以用一个6 元组F<S,I,O,F,H,s0> 表示,其中,S是状态的集合{s0,s1,…,sl};I是输入的集合 {i0,i1,…,im};O是输出的集合 {o0,o1,…,on};F是次态集合(S×I→S);H是输出函数,将状态映射到输出(S→O);s0是初始状态。

有限状态机设计中主要包含3 个对象:当前状态(CS)、下一个状态(NS)、输出逻辑(OL)。相应地,在用硬件描述语言VHDL 描述有限状态机时,有以下几种描述方式:①三进程描述方式,即现态、次态、输出逻辑各用一个进程;②双进程描述方式1(CS+NS、OL);③双进程描述方式2(CS、NS+OL);④单进程描述方式(CS+NS+OL)。

设计时序逻辑电路,首先画出有限状态机的状态迁移图,然后根据状态迁移图编写1 个进程、2 个进程或3 个进程的VHDL 程序,设计实现对应的逻辑电路系统。然而,根据状态迁移图用进程编写VHDL 程序并不是一件轻松的事情,特别是当状态机比较复杂时尤其如此[5-7]。

3 用有限状态机描述时序电路是十分重要的设计思想

使用有限状态机描述时序电路不仅是设计时序电路的一种工具,而且是一种设计思想方法,更是扩展设计时序电路的一种重要的思维。

有限状态机的本质就是对具有逻辑顺序或时序规律事件的一种描述方法,逻辑顺序和时序规律是状态机所要描述的核心,换言之,所有具有逻辑顺序和时序规律的事情都适合用有限状态机描述。

4 用QuartusII状态机编辑器改革实验与教学内容的方法与实现

随着EDA 技术的发展,FPGA 逐步成为最广泛的实验平台。将有限状态机应用并融合在基于FPGA 的硬件课程设计中,是一项非常现实而有意义的教学与实验的重要课题[8-10]。

Quartus Ⅱ状态机编辑器(State Machine Edit)作为一个工具,可以灵活地设计、编辑状态迁移图,当状态迁移图完成后,通过Generate HDL File 命令,可以直接生成HDL 代码,因此,用Quartus Ⅱ状态机编辑器直接生成HDL 代码,对初学硬件描述语言,用VHDL 语言编程没有太高的要求,在没有完全掌握硬件描述语言的情况下,也能进行有限状态机的设计。

4.1 使用Quartus Ⅱ状态机编辑器自动生成HDL 代码的过程

具体的设计方法可以跟着Quartus Ⅱ状态机编辑器向导一步一步完成:①新建一个工程;②打开file/new/state machine file;③打开状态机图形编辑窗后,在工程管理窗中选择state machine wizard(状态机生成向导);④在最初的对话框中,选择生成一个新状态机“Create a new state machine design”;⑤在弹出的框中分别选择复位信号控制方式,有效方式为异步和高电平有效:Asynchronous 和active-high;⑥在状态机编辑器对话框中设置状态变量、输入输出信号、状态转换条件等;⑦完成后存盘,文件后缀是.smf,可以从状态机图形编辑器上看到转换图形,还可以利用左侧的工具进行修改补充,将这个图形状态机存盘后,可以以此文件作为工程进行设计;⑧在tool/generate HDL 中,可以将状态机转换成VHDL 或其他HDL 文件。

概括起来,使用Quartus Ⅱ状态机编辑器进行有限状态机设计的流程如下:①分析并抽象设计对象,初步建立有限状态机迁移图;②分析被控对象的时序状态,确定控制有限状态机的各个状态及输入和输出条件;③在Quartus Ⅱ状态机编辑器中编辑有限状态机迁移图,自动产生VHDL 代码。

学生的主要工作在第1 步和第2 步。第3 步通过Quartus Ⅱ状态机编辑器完成状态迁移图并自动生成HDL 代码。通过阅读HDL 代码,分析、改进状态迁移图,完善逻辑电路系统。

当状态数目增多、状态图迁移不易画出时,可以用状态迁移表描述状态之间的关系。

4.2 使用Quartus II 状态机编辑器的优点

用Quartus Ⅱ状态机编辑器设计时序逻辑电路正逐渐成为一种规范方法,生成的VHDL 程序规范而清晰,不必进行繁杂的状态分配,状态表绘制和化简,状态寄存器分配,根据状态表求出状态方程、次态方程及输出方程等工作,不需要考虑所设计逻辑电路的内部结构和逻辑关系,更不必画电路原理图和搭建与测试逻辑电路,很好地解决了对有限状态机复杂的编程和调试事务,降低了对编程的要求。

当需要修改逻辑电路时,可以直接修改直观的状态迁移图,达到修改VHDL 程序,因此,修改VHDL 程序更容易了,同时,提高了设计逻辑电路的灵活性,降低了编写VHDL 程序的复杂度,从而推动了硬件课程设计的改革,增强了对学生数字系统电路设计能力的培养,也为学生设计CPU 做了铺垫。Quartus II 状态机编辑器是实现对状态机进行VHDL 软件编程的较好的可选方法,是设计时序电路的重要工具。

5 状态迁移图是否完善和完整直接影响硬件课程设计的实验与教学内容的质量

状态迁移图的设计方法和内容在有限状态机的实验与教学中十分重要,可以在课堂上以数字检测为例,讲授状态图的设计方法,以状态迁移条件为基础,引导状态的迁移,启发学生理解状态迁移过程。通过以状态迁移图为导向,优化运用VHDL 进行硬件设计内容,兼顾学生接受知识由浅入深的学习要求,构建以状态迁移图进行逻辑时序电路设计的实验与教学体系,提高学生的学习效率,学生就可以做其他更多复杂的实验。

6 硬件课程设计实验教学内容与方法的探索与实践

针对北方工业大学计算机专业学生的具体情况,设计和安排了3 个难度梯度的基于FPGA 的7 个实验,实验内容由简单到复杂,由基础到复杂,逐步深入;通过不同的实验题目,学生逐步掌握逻辑电路的原理与设计方法。这些题目是:①在7 段数码管上显示自己的最后3 位学号数字;②在点阵上显示自己的名字;③使用图形输入方式,用级联形式实现一个多位二进制加法器;④使用Quartus Ⅱ状态机编辑器,分别设计带重复和不带重复判断的两个简单的序列检测器;⑤使用Quartus Ⅱ状态机编辑器,设计一个只卖1 种商品的简单的自动售货机;⑥简单CPU 的设计;⑦采用两个进程描述方式编写VHDL 程序,在两个题目中选做一个题目,即分别设计带重复和不带重复判断的两个简单的序列检测器或者设计一个可卖两种商品的简单的自动售货机。

6.1 引入有限状态机设计CPU

在CPU 设计中,要通过节拍的变动,将每条指令随着节拍的变化一一进行描述。指令的每一个顺序步都是一种状态,任何一条指令的顺序步都是有限的。从指令执行过程的角度看,CPU任何时间都处在有限状态集的某一个状态中,CPU 按照指令,从一个状态迁移到另一个状态,完成指令所规定的操作。

CPU 设计的核心就是对指令的解析,因此,设计CPU 教学的最关键部分是引导学生通过对指令执行过程的分析,确定CPU 的状态集,即指令流程图的每一个方框。图1 所示为CPU 指令执行状态集的迁移图范例,它包含5 个基本的状态集,分别是取指令、取数据、运算、保存结果、中断控制。

图1 CPU 指令执行状态集的迁移图范例

6.2 具有5 个状态的指令迁移表

首先,给出一个字长为8 位,具有4 种指令格式,共16 条指令的简单CPU,对这16 条中的每一条指令的功能进行定义。在将这5 个状态集进行功能细分后,按照每个状态应该完成的功能,将所有指令的操作,按照状态有序地汇集在一起,得到指令迁移的6 个状态,见表1。

需要说明的是:①如果存储器的速度不能满足1 个时钟周期完成读写操作,则处理器不能和该存储器协调工作,需要延长等待时间才能正常工作;②在优先级选择上,是速度优先还是成本优先,所做的安排也会有很大的不同。

表1 不是唯一的安排,其侧重于过程的清晰易懂,没有在减少节拍上做太多的处理,且只是罗列出了正确的指令执行过程,没有考虑优化问题。从6 个状态的指令迁移表,可以清楚地看到:从CPU 设计的角度看,控制器可以看做一个有限状态机,每一个状态对应于一个节拍,即每一个状态持续时间为1 个周期;每一个状态发出不同的控制信号,指挥数据的流动,同时根据反馈信号决定下一步将进入的状态。

注意,每一步所需要的节拍数不完全一样。

(1)将每一条指令执行过程细分到节拍,即规定每一个节拍要做什么工作,并规定下一次进入哪个节拍。

(2)按指令功能控制数据流过每一个部件,流过一个部件就需要相应的控制信号,把控制序列写出来,并安排到每个节拍。

(3)由节拍产生的控制信号引导数据流动时,在该节拍的末尾才被时钟脉冲打入寄存器。

表1 6 个状态的指令迁移

(4)加电时系统自动产生一个复位信号reset,使所有寄存器清零,控制器处于初始状态st_0。

(5)内存收到CPU 发的访问地址后,需对该地址译码,找到相应的内存单元,这段时间需要1 个时钟周期,因此,在1 个时钟周期后才能在内存的数据输出端口看到对应的数据。

(6)指令的执行被分成若干步骤,每一步骤占用一个机器周期。一方面,部件在不同机器周期可以重复使用;另一方面,在上一周期中指令执行的结果,需要用于下一周期的操作。

(7)状态机的输入是指令码,输出为所有的控制信号和多路选择信号。输出的控制信号取决于当前状态与输入的指令码。

综上所述,可以看到CPU 的核心是一个由系统时钟驱动的有限状态机的逻辑过程。有限状态通过状态转移图将复杂的控制时序图形化,将复杂的逻辑关系转换为简单的状态转移关系[11-14]。

将有限状态机应用于CPU 的设计与实现,能够培养学生对复杂工程问题的分析与解决能力。通过上述实验与教学策略,取得了良好的实验与教学效果,为计算机硬件课程设计实验与教学开拓出了一条创新之路。

7 结 语

有限状态机是硬件课程设计实验与教学的重点,将Quartus Ⅱ状态机编辑器作为基本工具引入有限状态机的实验与教学体系,可以使程序设计更为快捷、简单和高效。用Quartus Ⅱ状态机编辑器设计时序逻辑电路,其实质是将过去用进程描述有限状态机,然后编写VHDL 程序的思路,转变为将重点放在对状态迁移图的设计,而不必关心如何用VHDL 编写程序代码。实验与教学不仅使学生比较容易掌握有限状态机这一重要的数字系统设计工具,同时还有助于学生掌握“用有限状态机设计CPU”的方法。在硬件课程设计实践应用中,实验与教学效果良好。

猜你喜欢

状态机编辑器时序
顾及多种弛豫模型的GNSS坐标时序分析软件GTSA
清明
基于GEE平台与Sentinel-NDVI时序数据江汉平原种植模式提取
基于Verilog 的有限状态机编程方式及研究
FPGA状态机综合可靠性探究 ①
司空见惯感觉烦 锁屏画面快走开
你不能把整个春天都搬到冬天来
编辑精选APP
基于有限状态机的交会对接飞行任务规划方法
你距离微信创作达人还有多远?