通信网--中国通信行业门户网站 | 中国行业网站集群--通信行业电子商务唯一网站 设为首页 | 收藏本站
免费注册 商机无限 商务中心 行业展会 立即发布商机
网站首页 公司库 产品库 商机库 行业资讯 展会信息 招聘信息 招商加盟 下载中心 招标信息
关键词:
热门词汇: IP网络电话   语音识别   手机充电器   手机GPS   3G手机   传输设备   交换设备
  行业要闻 | 通信市场 | 通信技术 | 网络学院 | 5G前沿 | 4G前沿 | VoIP | IPTV | WiMAX | 呼叫中心 | IT制造 | IT就业  
  企业专栏 | 企业报道 | 通信标准 | 通信百科 | 分析预测 | 手机评测 | 增值通信 | 政策法规 | 专家观点 | 网商访谈 | 招标信息 | 物联网
网上展览:
综合厂商 | 手机 | IP电话 | 交换机 | 呼叫中心 | 网络 | 终端 | 电源 | 仪器 | 光纤 | 电缆 | 电脑 | 数码 | 软件 | 其他
中国通信网最新加盟企业: 
当前位置:网站首页 > 行业资讯 > 通信技术
【创心服务 联通你我】青春逢盛世,奋斗正当时
中国通信网 时间:2010-09-20 信息来源:电子发烧友

随着大规模和超大规模FPGA/CPLD器件的诞生和发展,以HDL(硬件描述语言)为工具、FPGA/CPLD器件为载体的EDA技术的应用越来越广泛.从小型电子系统到大规模SOC(Systemonachip)设计,已经无处不在.在FPGA/CPLD设计中,状态机是最典型、应用最广泛的时序电路模块,如何设计一个稳定可靠的状态机是我们必须面对的问题.

1、状态机的特点和常见问题

标准状态机分为摩尔(Moore)状态机和米立(Mealy)状态机两类.Moore状态机的输出仅与当前状态值有关,且只在时钟边沿到来时才会有状态变化.Mealy状态机的输出不仅与当前状态值有关,而且与当前输入值有关,这一特点使其控制和输出更加灵活,但同时也增加了设计复杂程度.其原理如图1所示.

根据图1所示,很容易理解状态机的结构.但是为什么要使用状态机而不使用一般时序电路呢?这是因为它具有一些一般时序电路无法比拟的优点.

用VHDL描述的状态机结构分明,易读,易懂,易排错;

相对其它时序电路而言,状态机更加稳定,运行模式类似于CPU,易于实现顺序控制等.

用VHDL语言描述状态机属于一种高层次建模,结果经常出现一些出乎设计者意外的情况:

在两个状态转换时,出现过渡状态.

在运行过程中,进入非法状态.

在一种器件上综合出理想结果,移植到另一器件上时,不能得到与之相符的结果.

状态机能够稳定工作,但占用逻辑资源过多.

在针对FPGA器件综合时,这种情况出现的可能性更大.我们必须慎重设计状态机,分析状态机内在结构,在Moore状态机中输出信号是当前状态值的译码,当状态寄存器的状态值稳定时,输出也随之稳定了.经综合器综合后一般生成以触发器为核心的状态寄存电路,其稳定性由此决定.如果CLOCK信号的上升沿到达各触发器的时间严格一致的话,状态值也会严格按照设计要求在规定的状态值之间转换.然而这只是一种理想情况,实际CPLD/FPGA器件一般无法满足这种苛刻的时序要求,特别是在布线后这些触发器相距较远时,CLOCK到达各触发器的延时往往有一些差异.这种差异将直接导致状态机在状态转换时产生过渡状态,当这种延时进一步加大时,将有可能导致状态机进入非法状态.这就是Moore状态机的失效机理.对于Mealy状态机而言,由于其任何时刻的输出与输入有关,这种情况就更常见了.

2 状态机设计方案比较

2.1 采用枚举数据类型定义状态值

在设计中定义状态机的状态值为枚举数据类型,综合器一般把它表示为二进制数的序列,综合后生成以触发器为核心的状态寄存电路,寄存器用量会减少,其综合效率和电路速度将会在一定程度上得到提高.

例1 定义状态值为枚举类型的状态机VHDL程序.

library ieee;

use ieee.std_logic_1164 all;

entity example is

port(clk:in std_logic;

mach_input:in std_logic;

mach_outputs:out std_logic_vector(0 to 1));

end example;

architecture behave of example is

type states is(st0,st1,st2,st3); --定义states为枚举类型

signal current_state,next_state:states;

begin

state_change:process(clk) --状态改变进程

begin

FPGA/CPLD状态机的稳定性设计时间:2010-09-19 16:43:02 来源: 作者:  随着大规模和超大规模FPGA/CPLD器件的诞生和发展,以HDL(硬件描述语言)为工具、FPGA/CPLD器件为载体的EDA技术的应用越来越广泛.从小型电子系统到大规模SOC(Systemonachip)设计,已经无处不在.在FPGA/CPLD设计中,状态机是最典型、应用最广泛的时序电路模块,如何设计一个稳定可靠的状态机是我们必须面对的问题.

 

1、状态机的特点和常见问题

标准状态机分为摩尔(Moore)状态机和米立(Mealy)状态机两类.Moore状态机的输出仅与当前状态值有关,且只在时钟边沿到来时才会有状态变化.Mealy状态机的输出不仅与当前状态值有关,而且与当前输入值有关,这一特点使其控制和输出更加灵活,但同时也增加了设计复杂程度.其原理如图1所示.

根据图1所示,很容易理解状态机的结构.但是为什么要使用状态机而不使用一般时序电路呢?这是因为它具有一些一般时序电路无法比拟的优点.

用VHDL描述的状态机结构分明,易读,易懂,易排错;

相对其它时序电路而言,状态机更加稳定,运行模式类似于CPU,易于实现顺序控制等.

用VHDL语言描述状态机属于一种高层次建模,结果经常出现一些出乎设计者意外的情况:

在两个状态转换时,出现过渡状态.

在运行过程中,进入非法状态.

在一种器件上综合出理想结果,移植到另一器件上时,不能得到与之相符的结果.

状态机能够稳定工作,但占用逻辑资源过多.

在针对FPGA器件综合时,这种情况出现的可能性更大.我们必须慎重设计状态机,分析状态机内在结构,在Moore状态机中输出信号是当前状态值的译码,当状态寄存器的状态值稳定时,输出也随之稳定了.经综合器综合后一般生成以触发器为核心的状态寄存电路,其稳定性由此决定.如果CLOCK信号的上升沿到达各触发器的时间严格一致的话,状态值也会严格按照设计要求在规定的状态值之间转换.然而这只是一种理想情况,实际CPLD/FPGA器件一般无法满足这种苛刻的时序要求,特别是在布线后这些触发器相距较远时,CLOCK到达各触发器的延时往往有一些差异.这种差异将直接导致状态机在状态转换时产生过渡状态,当这种延时进一步加大时,将有可能导致状态机进入非法状态.这就是Moore状态机的失效机理.对于Mealy状态机而言,由于其任何时刻的输出与输入有关,这种情况就更常见了.

2 状态机设计方案比较

2.1 采用枚举数据类型定义状态值

在设计中定义状态机的状态值为枚举数据类型,综合器一般把它表示为二进制数的序列,综合后生成以触发器为核心的状态寄存电路,寄存器用量会减少,其综合效率和电路速度将会在一定程度上得到提高.

例1 定义状态值为枚举类型的状态机VHDL程序.

library ieee;

use ieee.std_logic_1164 all;

entity example is

port(clk:in std_logic;

mach_input:in std_logic;

mach_outputs:out std_logic_vector(0 to 1));

end example;

architecture behave of example is

type states is(st0,st1,st2,st3); --定义states为枚举类型

signal current_state,next_state:states;

begin

state_change:process(clk) --状态改变进程

begin

mach_input:in std_logic;

mach_outputs:out std_logic_vector(0 to 1));

endexample;

architecture behave of example is

constant st0:std_logic_vector(0 to 3):="0001";

constant st1:std_logic_vector(0 to 3):="0010";

constant st2:std_logic_vector(0 to 3):="0100";

constant st3:std_logic_vector(0 to 3):="1000";

signal current_state,next_state:std_logic vector(0 to 3);

begin

……

对FLEX10K系列器件综合后的仿真结果如图3所示.

图3 采用“ONEHOT”编码的状态机综合后的波形

如图3所示,在输入信号稳定以后,状态机的输出信号也稳定下来,定义这种风格的状态码来设计基于FPGA的状态机是一种不错的选择.

然而在输入信号跳变时,电路还是会出现不稳定现象.此时我们已不能只从状态值编码方式寻找解决方法.回头看看状态机的原理框图不难发现:状态寄存器的输出值是必须符合建立保持时间约束关系的.在上述状态机中虽然采用了各种不同的编码方式但都不能彻底消除这种过渡状态,我们将电路结构稍作改进,一种更好的结构如图4所示.这种结构的状态机可有效抑制过渡状态的出现.这是因为输出寄存器只要求状态值在时钟的边沿稳定.将上述程序改进之后的程序如图4.

……

architecture behave of example1is

type states is(st0,st1,st2,st3); 定义states为枚举类型

signal current_state,next_state:states;

signal temp:std_logic_vector(0 to 1); 定义一个信号用于引入输出寄存器

begin

state_change:process(clk) --状态改变进程

begin

wait until clk'eventandclk='1';

current_state<=next_state;

mach_outputs<=temp;

end process state_change;

……

图5 改进后的状态机综合后的波形

显然这种结构的状态机稳定性优于一般结构的状态机,但是它占用的逻辑资源更多,电路的速度可能下降,在设计时应综合考虑.

另外,为防止电路进入非法状态,可以设计成自启动结构,在VHDL描述的状态机中添加一个“when others”语句是行之有效的.

3 选择不同编码方式、不同结构的状态机的技巧

3.1 针对不同结构器件选择不同编码风格

基于乘积项结构的CPLD器件适合于设计全编码状态机,在全编码状态机中采用格雷码表示状态值.这对于逻辑资源较少的器件是一种不错的优化方法.

基于查找表结构的FPGA器件适合于设计成“ONEHOT”方式编码的状态机,这种结构状态机只用一位二进制数表示一个状态,可提高稳定性,但要占用更多的逻辑资源.

3.2 根据逻辑资源大小选择状态机结构

当设计的状态机状态转换次序出现多路径时,采用格雷码表示状态值不会有任何作用,因为此时有些相邻状态不只是一位不同.在逻辑资源允许的情况下,可以考虑在状态机后级增加一级输出寄存器,可确保输出不产生毛刺,使状态机输出稳定可靠的信号.

相关资讯
· 【创心服务 联通你我】青春逢盛世,奋斗正当时 (2012-01-17)
· 【创心服务 联通你我】青春逢盛世,奋斗正当时 (2012-01-17)
· 【创心服务 联通你我】青春逢盛世,奋斗正当时 (2012-01-16)
· 【创心服务 联通你我】青春逢盛世,奋斗正当时 (2012-01-16)
· 【创心服务 联通你我】青春逢盛世,奋斗正当时 (2012-01-12)
发表评论
昵   称:   匿名发表
验证码: 
 
热门资讯
【创心服务 联通你我】青春逢盛... (2009-09-15)
【创心服务 联通你我】青春逢盛... (2011-04-28)
【创心服务 联通你我】青春逢盛... (2009-09-16)
【创心服务 联通你我】青春逢盛... (2008-07-15)
【创心服务 联通你我】青春逢盛... (2008-05-23)
【创心服务 联通你我】青春逢盛... (2008-07-31)
【创心服务 联通你我】青春逢盛... (2008-07-31)
【创心服务 联通你我】青春逢盛... (2012-01-09)
【创心服务 联通你我】青春逢盛... (2011-01-30)
【创心服务 联通你我】青春逢盛... (2010-05-28)
【创心服务 联通你我】青春逢盛... (2008-07-31)
【创心服务 联通你我】青春逢盛... (2008-07-31)
【创心服务 联通你我】青春逢盛... (2011-05-03)
【创心服务 联通你我】青春逢盛... (2008-07-31)
【创心服务 联通你我】青春逢盛... (2009-08-12)
【创心服务 联通你我】青春逢盛... (2008-07-31)
【创心服务 联通你我】青春逢盛... (2008-07-31)
【创心服务 联通你我】青春逢盛... (2009-08-12)
【创心服务 联通你我】青春逢盛... (2010-08-27)
【创心服务 联通你我】青春逢盛... (2009-08-12)
【创心服务 联通你我】青春逢盛... (2009-08-13)
【创心服务 联通你我】青春逢盛... (2011-02-17)
【创心服务 联通你我】青春逢盛... (2009-10-11)
【创心服务 联通你我】青春逢盛... (2009-07-24)
【创心服务 联通你我】青春逢盛... (2010-07-20)
国之鑫科技 | 泰尔网 | 中华网科技 | 信息产业网 | 通讯世界 | 数字通信世界 | 文传商讯 | 中华英才网 | 电话视频会议 | 凤凰科技 | 呼叫中心 | 新浪科技 | 新传媒网 | 和讯科技 | 中国科技网 | 通信英才网 | 江苏星光发电设备 | 中劳网 | 赛迪网 | MSCBSC移动通信网 | 中国软件网 | 新华网 | 腾讯科技 | 3G通信网 | 千龙网 | 光通信人才招聘网 | 通信人才网 | 中商顾问网
返回首页 | 网站简介 | 企业理念 | 免责声明 | 广告服务 | 代理政策 | 联系我们 | 铭万网 | 中国产品推广联盟
南京国之鑫科技有限公司版权所有©2008-2016 客户服务热线:025-83752991, 客户服务邮箱:gzx@gzxinfo.com
苏ICP备18005078号-1
本站图片及文字仅供功能演示,本站保留对本演示内容及功能的最终解释权

加入铭万联盟中国行业网站集群独家技术供应商