当前位置:首页 >> 信息与通信 >>

一种应用VHDL语言设计有限状态机控制器的方法


第2期 2003 年 4 月

微 处 理 机
M ICRO PRO CESSO R S

N o. 2 A p r. , 2003

一种应用 V HDL 语言设计有限状态机控制器的方法
牛 斌, 马 利, 张玉奇
( 辽宁大学信息科学与技术学院, 沈阳 110036)

  摘 要 本文对利用 V HDL 语言设置有限状态机控制器的过程进行系统的论述。 通过对控制 器控制对象的时序分析, 抽象出控制器的行为描述, 并划分控制器的状态。 在此基础上, 针对 ADC0809 模数转换器的控制器进行设计, 并通过了系统仿真和逻辑分析仪测试。 从而给出了利用
V HDL 语言设计有限状态机控制器的一种方法。

关键词 控制器 状态机 时序

A Kind of M e thod to D e s ig n the F in ite S ta te M a ch ine C on tro lle r w ith VHDL L a ng ua g e
N iu B in, et a l
(T he inf orm a tion science and technology colleg e of L iaon ing U n iv ersity , S heny ang 110036)

1 引 言

元。 信息单元主要进行信息的传输和运算, 而控制单 元的主要任务是控制信息处理单元的微操作的顺 序。 控制单元的实现方式有: 有限状态机、 控制寄存 器和微代码控制器等。 有限状态机在时间尺度上对 其控制信号进行离散化控制, 利用状态转移使控制 信号在有限状态机的状态节拍控制下变化, 以实现 对被控对象的控制。 有限状态机的关键是如何把一 个实际的时序逻辑关系抽象成一个时序逻辑函数, 传统的电路图输入法通过直接设计寄存器组来实现 各个状态之间的转换, 而用硬件描述语言来描述有

限状态机, 可以充分发挥硬件描述语言的抽象建模 能力, 具体的逻辑化简和电路设计也可由计算机自 动完成, 提高了设计工作的效率。 本 文 提 出 已 知 被 控 对 象 的 时 序, 如 何 应 用 V HDL 语言实现有限状态机控制器的设计, 并举例 说明设计的分析、 实现过程。
牛斌, 男 39 岁, 硕士研究生, 主要研究方向: 嵌入式系统 收稿日期: 2002- 12- 19

  Abstract   T h is a rt icle sy stem ica lly sta tes the p rocess of estab lish ing the F in ite Sta te M a 2 ch ine. B y ana lyzing the t i ing of the con t ro lled ob ject ion, the con t ro ller’s behavio ra l sta tem en t m can been ab st ract and it s sta te can been ca rved up too. B a sed on it, design the ADC0809’s con 2 t ro ller. T he p ro ject ha s p a ssed the sy stem ic si u la t ion and the test of the log ic ana lyzer. So a k ind m of m ethod to design the fin ite sta te m ach ine con t ro ller w ith V HDL language is p ropo sed. Keywords con t ro ller, fin ite sta te m ach ine, t i ing m

2 设计方法简述

数字系统通常划分为信息处理单元和控制单

标准硬件描述语言 ( 如 V HDL 语言) 的出现, 促 进了集成电子系统高层次设计的发展。 在应用硬件 描述语言描述完整的数字系统时, 现在多采用从上 至下的设计方法, 所以设计过程主要从数字系统的 系统级设计出发, 采用硬件描述语言对系统在系统 级或寄存器传输级进行描述, 通过 EDA 工具的综 合, 最终实现向版图级或 FPGA 的映射。 在系统级和寄存器传输级完成 V HDL 的描述 主要分以下几步: ( 1) 分析控制器设计指标, 建立系统算法模型 图; ( 2) 分析被控对象的时序状态, 确定控制器有限 状态机的各个状态及输入 输出条件; ( 3) 应用 V HDL 语言完成描述。

3 ADC 0809 控制器设计实例

在数模混合系统中, 数模转换器将模拟信号转 换成数字信号, 在系统的前级设计中具有重要地位,

?20?

微 处 理 机

2003 年 

而数模转换控制器主要是根据数模转换器的工作时 序, 控制其完成 A D 转换。 为了清晰地说明如何对 于 已 知 控 制 对 象 时 序 的 控 制 器 进 行 设 计, 以 ADC0809 控制器为例, 说明整个分析设计过程。 3. 1 有限状态机的系统进程模型图划分 系统级的设计是控制器设计的第一步, 是将控 制器指标规范用自然语言描述, 并将其语言描述转 换为真值表、 状态图或算法模型的过程。 对 V HDL 语言来说, 系统级的设计就是用一系列相互关联的 进程组成硬件算法模型, 即将描述系统功能的自然 语言翻译为进程, 每个进程完成不同的功能, 并通过 进程模型图来表示。在 ADC0809 控制器的设计中, 可将其划分为三个进程, 即状态生成进程、 状态转换 进程及状态机输出进程。 三部分关系如图 1 所示。
图 1 状态机进程划分图

3. 2 状态划分

在进行状态机控制部分的设计过程中, 主要是 通过分析 ADC0809 的时序来确定状态转换进程中 的各个状态和几个状态下的控制信号输出。 3. 2. 1 ADC0809 时序分析 ADC0809 为单极性输入, 8 位转换逐次逼近 ~ A D 转换器, 可对 0 5V 的 I T 0~ I T 7 8 路模拟 N N 信号分时进行转换, 完成一次转换的时间约为 100 微秒。 其与控制器连接方法及时序图见图 2 所示。

图 2 ADC0809 控制器连接方法及其时序图

    其 中 D 7~ D 0 为 A D 变 换 数 据 输 出; AD 2 DR ESS 为 8 路通道选择地址; STA R T 信号是转换 启动信号, 上升沿有效; EO C 为状态结束标志, 低电 平转为高电平时转换结束; O E 为数据输出允许信 号, 高电平有效; AL E 为地址锁存允许信号; LO CK 为数据锁存信号。 在转换开始前, ADC0809 需要在 AL E 上升沿 控制下, 将 3 位 8 路通道选择地址锁入锁存器, 以确 定 转 换 信 号 通 道; 然 后 在 时 钟 的 下 降 沿 产 生 STA R T 信号启动转换, 这时 ADC0809 的 EO C 信 号由高电平转为低电平, 开始数据转换, 直到 EO C 信号由低电平转为高电平时转换结束; 之后使能 O E 信号, 使转换数据输出。 3. 2. 2 系统控制器分析 系统控制器的进程划分结束后, 需要进一步讨 论状态转换进程中各个状态的划分。 根据 ADC0809 的控制时序, 首先对各个控制 信号进行初始化, 设置 S0 为初始状态; 在 S1 状态产 生 AL E 信号的上升沿, 使模拟通道的地址送入地 址寄存器中; 从时序图可以看出, 启动信号 STA R T 应在产生 AL E 信号的同一时钟下降沿产生, 由于

V HDL 语言在同一进程内不允许时钟的两个沿作 为敏感变量, 所以将产生 STA R T 信号单列为一个

状 态 S2, 启 动 转 换; 在 启 动 转 换 后, ADC0809 使 EO C 置为低电平, 设置 S3 状态等待 A D 转换结 束; 当数据转换结束后, EO C 信号由低电平转换为 高电平, 状态机进入 S4 状态, 开启输出允许 O E; 状 态机进入 S5 状态, 开启数据锁存信号 LO CK 对输 出数据进行锁存; 为产生与其它进程通信的信号, 状 态机设置 S6 状态作为最后一个状态, 然后跳转回 S0 初始状态。 其状态转换及控制输出如图 3 所示。

图 3 状态转换及控制输出

 2 期

牛斌等: 一种应用 V HDL 语言设计有限状态机控制器的方法

?21?

3. 2. 3 控制器的 V HDL 设计

根据以上设计思想和 V HDL 语言的特点, 控制 器的状态生成进程以时钟信号为敏感量, 当时钟发 生有效跳变时, 状态机的状态发生变化, 即产生下一 状 态。 而状态转换进程采用组合逻辑进程, 使用
CA SE 语句检查状态机的当前状态, 然后使用 IF TH EN - EL SE 语句决定下一状态。 这种描述风格

件中后, 利用美国泰克 T EK1230C64 逻辑分析仪测 量时序如图 5 所示。

产 生 结 构 化 的 V HDL 代 码, 并 且 可 读 性 好。 用 V HDL 语言描述的控制器有限状态机的状态转换 部分为:  p rocess ( cu rren t _ sta te, eoc)  beg in ca se cu rren t _ sta te is w hen s0 = > qq < = 0; a le < = ’0’; sta rt < = ’0’; oe< = ’0’; lock< = ’0’;    nex t _ sta te< = s1; …… w hen s2 = > qq < = 3; a le < = ’1’; sta rt < = ’1’; oe< = ’0’; lock< = ’0’;    if ( eoc= ’0’) then    nex t _ sta te< = s3;   else    nex t _ sta te< = s2;   end if; ……
end ca se;

图 4 时序仿真图

图 5 逻辑分析仪测量时序图

通过对仿真结果和验证结果的分析, 其时序与 在实际应用中此设计可实现 ADC0809 的时序相符。 对 ADC0809 的控制, 完成模数转换, 达到了设计要 求。

5 结 论
随着 V HDL 语言在数字系统设计中的广泛应 用, 控制器部分采用有限状态机进行设计实现是一 种行之有效的设计方法。 本文根据控制对象的时序 抽象系统的行为描述, 应用 EDA 软件进行了编译、 综合、 适配、 仿真, 并通过逻辑分析仪对设计结果进 行验证, 为数字系统的控制器设计提供了一种有效 的方法。
参考文献 1 潘松, 王国栋 V HDL 实用教程. 成都: 电子科技大学出版 . 社, 2000- 02 2 王志华, 邓仰东 数字集成系统的结构化设计与高层次综 . 合. 北京: 清华大学出版社, 2000- 07 3 SD evada s, A N ew ton. D ecom po sition and Facto riza tion of Sequen tia l F in ite Sta te M ach ines IEEE T ran saction s ~ on Com p u ter- A ided D esign. 1989, 8 ( 11) : 1206 1217

 end p rocess; 状态转换进程中状态改变信号 cu rren t _ sta te 和转换结束信号 EO C 决定状态的跳转, 故将其作为 敏感变量, 以控制整个状态机的状态转换。 而在 S6 中, 可根据用户需要, 添加适当的、 用于与其它进程 之间通信的信号。 例如, 若将转换数据写入存储器 中, 可在此状态中加入转换结束标志, 以通知存储器 进程进行读写操作。

4 设计仿真与验证
本设计在 M A X + PLU S 10. 0 软件平台上进 行编译、 综合、 适配后进行时序仿真。 其仿真波形如 图 4 所示。 在下载到 AL T ERA 公司的 EPM 7128 器


相关文章:
状态机VHDL讲解
VHDL 的结构非常适合编写状态机, 而且编写方式不唯一...状态机的设计主要用到 case when 和 if else 两种...一种输出,至于在什 么状态输出什么信号则由程序决定...
基于VHDL的Mealy状态机设计
基于VHDL 的 Mealy 状态机设计 物理与电子信息科学...(EDA)逐渐成为重要的设计 手段,已经广泛应用于模拟...EDA的一个重要特征就是使用硬 件描述语言(HDL)来...
VHDL状态机的设计
VHDL状态机的设计 - 状态机电路设计 状态机(STATE MACHINE)可以说是一个广义时序电路,触发器, 计数器,移位寄存器都算是它的特殊功能的一种.在电子设计自动化 ...
基于VHDL状态机的交通灯控制器设计
考虑用状态机来控制 A 和 B 两个方向的四盏灯, 状态 机控制一个方向的四种...并通过 VHDL 语言的综合工具进行相应硬件电路生成, 具有传统逻辑设计方法所无法比拟...
VHDLFPGA状态机
操作; (2) 学习利用 VHDL 语言设计简单状态机程序...的状态转换时,Q=1;k 为控制 信号,当 K=1 时,...(2)对同一要求的设计,可尝试利用不同的设计方法...
10进制加减计数器状态机的VHDL设计
掌握 VHDL 语言设计 8 位数码管动态扫描显示电路 学习 VHDL 语言设计较复杂的电路方法。 二、 【设计任务 设计任务】 设计任务 设计要求 语言设计一个状态机, ...
VHDL状态机程序
VHDL状态机程序_信息与通信_工程科技_专业资料。VHDL...三种编码形式实现方式: 一位热码: ARCHITECTURE ONE...有限状态机的VHDL设计及... 4页 1下载券 第八...
VHDL序列检测器
VHDL序列检测器 - 作业一:序列检测器(1110010) 1 设计功能与要求 (1) 利用有限状态的状态机设计一个序列检测器,序列检测器要检测的序列 设定为“1110010” 。 ...
实验六VHDL有限状态机设计(ADC0809)
实验六VHDL有限状态机设计(ADC0809)_信息与通信_工程...模拟开关,可控制 8 个模拟量 中的一个进入转换器...实验现象与结果 (1)ADC0809 VHDL 语言程序如下: ...
实验六 循环彩灯控制器的设计
实验六 循环彩灯控制器的设计 - 1、学习用状态机设计特色电路; 2、牢固掌握用VHDL语言编写状态机程序的方法和技巧。
更多相关标签: