精华内容
下载资源
问答
  • 根据状态机的状态是否收敛又可将状态机划分为:有限状态机(FSM:Finite State Machine)和无限状态机(ISM:Infinite State Machine),一般数字电路设计中提及的状态机一般均指FSM,其基本要素包括:状态、输入和...

    0 状态机概述

    状态机由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心。根据状态机的状态是否收敛又可将状态机划分为:有限状态机(FSM:Finite State Machine)和无限状态机(ISM:Infinite State Machine),一般数字电路设计中提及的状态机一般均指FSM,其基本要素包括:状态、输入和输出。其中各要素的含义如下:

    状态(状态变量):在逻辑设计中,使用状态来表示电路的各种工作状态和顺序;

    输入:状态机进入每个状态的相关条件;

    输出:在特定状态下发生的对应事件;

    在FSM中,根据FSM输出的特点,又可将FSM分为Mealy状态机和Moore状态机:

    Mealy状态机:此类状态机的输出不但取决于当前的输入还取决于当前的状态;

    Moore状态机:此类状态机的输出仅与当前状态有关;

    根据两类状态机的定义,可以得出两类FSM状态机的结构如下:

    图片

    根据上述状机的结构特点,可将状态机的编码结构上分为:一段式、二段式、三段式。

    一段式:状态转移、状态的输入与输出均在一个always块中。该方式代码较为冗长,结构不清晰,不利于附加约束,不利于综合工具对设计进行优化,不推荐使用;

    二段式:状态转移、状态的输入与输出任意两个在一个always块中。该方式输出一般为组合逻辑,极易产生毛刺等,所以一般情况下需要对输出端进行适当处理;

    三段式:状态转移、状态的输入与输出分别在各自的always块中,这样结构的状态机结构清晰、易于维护和发现错误;

    1 状态编码

    在具体设计状态机时,需要根据电路的具体跳转状态进行编码,常用的编码格式如下:

    独热码(one-hot code)

    二进制码(binary code)

    格雷码(gray code)

    使用N位状态触发器来对N个状态进行编码,每个状态都有独立的触发器对应,并且任意时刻只有一位触发器为“1”

    用二进制数对电路状态进行编码

    任意两个相邻的状态只有一位二进制数不同

    状态比较时仅仅需要比较一位,从一定程度上来说译码较容易,减少毛刺产生的概率;

    在表示同样数目的状态时,独热码消耗较多的触发器(但是增加的触发器占用的面积与译码电路省下来的面积相当);

    速度快但是较占用资源;

    需要较多的逻辑资源进行译码,译码过程较复杂;易懂;触发器数量与格雷码相同;

    因为相邻两个状态仅有一位不同,所以当出现状态跳转时,触发器翻转较少,产生亚稳态几率较小;

    需要较多的逻辑资源进行译码,译码较为复杂;易懂;

    大型设计(ASIC、FPGA可以提供较多的触发器资源)

    小型设计(CPLD提供较多的组合逻辑资源)

    小型设计(CPLD提供较多的组合逻辑资源),多用于异步多时钟域电路

    【示例】以下为对四个状态进行描述采用不同编码风格的示意图:

    图片

    2 建议规则

    建议规则一:使用parameter声明定义状态机的各状态,不要使用条件编译命令(`deinfe)进行定义,因为条件编译一般是全局定义的,而parameter仅限于特定的模块内部,且不同模块可以使用相同的parameter名,易于维护和修改。这里需要注意编码格式根据设计规模要求进行适当选择,没有固定的编码要求;

    建议规则二:当前状态和下一状态的声明建议在parameter之后;

    建议规则三:时序进程使用非阻塞赋值;

    建议规则四:组合逻辑进程的敏感信号列表中必须包括当前状态和所有该进程的输入;

    建议规则五:组合逻辑进程使用阻塞赋值;

    建议规则六:在组合逻辑always块开始处,设置下一状态(next state)或默认状态为不定态态或者确定状态(一般为初始态)。初始状态设置为不定态有利于前仿真进行调试,当case语句中的所有状态都没有被涵盖时,将会输出异常。同时这样的设置并不会影响综合结果,综合工具将会优化掉不相关的逻辑,有利于提高综合质量。另外,还可以根据具体设计需要将下一状态设置为某一确定状态,这样状态机在加点或者复位后可以进入确定的逻辑状态;

    建议规则七:在输出逻辑部分,模块输出一定要有默认值;

    建议规则八:书写状态机时,每个状态单独放在一行,这样编码结构清晰,易于阅读维护;

    建议规则九:每个module只有一个状态机,每个状态机仅属于一个module;

    建议规则十:对输入进行同步处理,所有的输入必须与状态机时钟同步,否则状态机的运行将会出现异常。状态机物理实现后,在具体的物理电路中信号的传播延迟一般都不会为-0,那么输入信号经过不同的逻辑进入到状态机中的触发器时序会有差异,如果输入信号的变化发生在不期望的时间点,那么极可能造成状态机跳转异常。为此,需要对输入信号进行必要的同步处理。

    3 【示例要求】

    功能是检测一个5位二进制序列“10010”。可实现循环检测(检测到10010之后如果后续输入为010,即序列为10010010xxxx,需检测到2次该序列)用Verilog代码实现并给出测试结果。 

    根据要求得到的IO关系如下表所示:

    clk

    0

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    in

    1

    0

    0

    1

    0

    0

    1

    0

    0

    0

    1

    0

    0

    0

    1

    0

    0

    1

    0

    0

    out

    0

    0

    0

    0

    0

    1

    0

    0

    1

    0

    0

    0

    0

    0

    0

    0

    0

    0

    0

    1

    4 Moore FSM

    Moore FSM状态机一般由三部分组成:输出逻辑部分,状态跳转部分,状态缓存部分。

    输出逻辑部分(output logic):一般为组合逻辑,根据当前状态产生对应的输出.

    状态缓存部分(state register):一般为时序逻辑,对当前状态进行同步缓存;

    状态跳转部分(next state logic):一般由组合逻辑组成,其输入一般为当前模块的相关输入端口和当前状态,通过case语句产生不同分支的选择,目的是产生一个状态用于状态缓存;

    为了描述示例方便,将以下例要求进行说明状态机的各种结构特点。

    【机制框图】

    图片

    【状态图】

    图片

    【源代码】

    图片

    【仿真结果】 

    图片

    示例中的状态机采用三段式FSM,就是将输出逻辑部分、状态跳转部分、状态缓存部分分别描述,具体代码如下:

    采用三段式FSM有以下几个特点:

    l 可以充分体现Moore FSM的组成结构,结构清晰;

    l 状态修改和代码维护较为方便;

    同时还需要注意以下几点:

    l 输出逻辑部分为组合逻辑,所以always块中的赋值采用阻塞赋值;

    l 状态跳转部分为组合逻辑,所以always块中的赋值采用阻塞赋值;

    l 状态缓存部分为时序逻辑,所以always块中的赋值采用非阻塞赋值;

    l 因为存在状态缓存部分,所以当前状态和下一状态之间相差一个时钟周期;

    FSM状态机的输出逻辑部分不一定必须使用always,也可以使用连续赋值,即输出逻辑部分一般为组合逻辑,对于描述方式没有固定的要求。但是一般为了后续电路时序的要求,常在输出逻辑后增加同步结构。

    5 Mealy FSM

    Mealy FSM结构与Moore FSM结构类似,只是输出逻辑部分需要增加相关的输入,即输出由当前状态和输入决定。其结构示意图如下:

    图片

    【状态图】

    图片

    注:图中小括号为输入,中括号对应为输出。

    【源代码】

    图片

    【仿真结果】 

    图片

    通过上例可见,Mealy型FSM的输出序列较Moore型FSM一个时钟周期产生,可以通过对Mealy的输出延迟一拍后实现与Moore输出结果一致,两者可以相互转换。在实际电路中Mealy型和Moore型FSM的选择原则是: 当要求输出对输入快速响应及希望电路尽量简单时,选择Mealy型FSM。当要求时序输出稳定,能接受输出序列晚一个周期,及选择Moore型FSM不增加电路复杂性时,适宜选择Moore型FSM

    6 构建FSM一般步骤

    根据上述描述和示例,状态机的构建一般分为以下步骤:

    l 逻辑抽象获得状态图;

    l 状态简化,将等价状态尽可能的合并,重绘状态图;

    l 状态编码,参照状态图,根据电路的复杂度和要求采取适当的编码策略进行状态编码;

    l 确定状态机结构(三段式、二段式、一段式);

    l 根据状态图和结构进行具体程序编写;

    在构建过程中一定要注意以下各部分的设计:

    进入动作(entry action):进入状态时操作之前确保电路的状态是确定的;

    退出动作(exit action):退出时确保电路的状态稳定,输出有效正确;

    输入动作(input action):依赖于当前状态和或输入条件,确保状态机跳转时跳转条件的正确性;

    转移动作(transfer action):在状态转移时,确保电路状态转移正确和稳定;

    7 总结

    l 构建不同的FSM需要注意当前状态与下一状态之间的时序和转移关系,否则极易造成输出结果提前、退后或者异常;

    l 为了后续电路时序,可在FSM输出级后增加同步处理结构;

    l 推荐使用三段式FSM,结构清晰,易于维护和调试;

    l Mealy FSM和MooreFSM可以互相转换,但是需要注意输出时序间的关系,因为Mealy FSM与当前输入有关,而输出组合逻辑部分的判断条件一般都要相对于输入推迟一个时钟周期,所以在两者之间转换需要特别注意。

    l Mealy FSM和Moore比较如下表:

    Mealy FSM

    Moore FSM

    输出与当前状态和输入有关

    输出仅与当前状态有关

    输入立即反映在当前周期,即响应速度较快

    输入影响下一状态,通过下一状态输出

    结构复杂

    结构简单

    输出是当前状态和输入的组合逻辑决定的,所以输出需要更多的逻辑资源

    输出仅由当前状态决定,输出使用的组合逻辑资源较少

    输出不仅由当前状态决定,还由输入决定,所以输出可以在一个时钟周期完成多次变化,导致结果不稳定,所以对于输入一定要进行同步处理

    只有当前状态发生变化时输出才会有变化

    更多内容请关注下面公众号!

    图片

    本文纯属学习之用,欢迎指正文中不足,封面图片若有侵权,请及时沟通!

     

    展开全文
  • Linux系统时钟同步

    2021-07-15 08:08:56
    系统时间会自动保存在BIOS时钟里面,启动计算机的时候,系统会自动在BIOS里面取硬件时间,以保证时间的不间断。但在Linux下,默认情况下,系统时间和硬件时间并不会自动同步。在Linux运行过程中,系统时间和硬件时间...

    在Windwos中,系统时间的设置很简单,界面操作,通俗易懂,而且设置后,重启,关机都没关系。系统时间会自动保存在BIOS时钟里面,启动计算机的时候,系统会自动在BIOS里面取硬件时间,以保证时间的不间断。但在Linux下,默认情况下,系统时间和硬件时间并不会自动同步。在Linux运行过程中,系统时间和硬件时间以异步的方式运行,互不干扰。硬件时间的运行,是靠BIOS电池来维持,而系统时间,是用CPU Tick来维持的。在系统开机的时候,会自动从BIOS中取得硬件时间,设置为系统时间。 


    1. Linux系统时间的设置

    在Linux中设置系统时间,可以用date命令:

    复制代码

    复制代码

    1 //查看时间
    2 [root@node1 ~]# date
    3 Tue Feb 25 20:15:18 CST 2014
    4 //修改时间
    5 [root@node1 ~]# date -s "20140225 20:16:00"  #yyyymmdd hh:mm:ss
    6 Tue Feb 25 20:16:00 CST 2014
    7 //date 有多种时间格式可接受,查看date --help

    复制代码

    复制代码


    2. Linux硬件时间的设置

    硬件时间的设置,可以用hwclock或者clock命令。两者基本相同,只用一个就行,只不过clock命令除了支持x86硬件体系外,还支持Alpha硬件体系。

    复制代码

    复制代码

    1 //查看硬件时间可以是用hwclock ,hwclock --show 或者 hwclock -r
    2 [root@node1 ~]# hwclock --show
    3 Tue 25 Feb 2014 08:21:14 PM CST -0.327068 seconds
    4 //设置硬件时间
    5 [root@node1 ~]# hwclock --set --date "20140225 20:23:00"
    6 [root@node1 ~]# hwclock
    7 Tue 25 Feb 2014 08:23:04 PM CST -0.750440 seconds

    复制代码

    复制代码


    3. 系统时间和硬件时间的同步

    同步系统时间和硬件时间,可以使用hwclock命令。

    复制代码

    复制代码

    1 //以系统时间为基准,修改硬件时间
    2 [root@node1 ~]# hwclock --systohc <== sys(系统时间)to(写到)hc(Hard Clock)
    3 //或者
    4 [root@node1 ~]# hwclock -w
    5 //以硬件时间为基准,修改系统时间
    6 [root@node1 ~]# hwclock --hctosys
    7 //或者
    8 [root@node1 ~]# hwclock -s

    复制代码

    复制代码


    4. 不同机器之间的时间同步

    为了避免主机时间因为长期运行下所导致的时间偏差,进行时间同步(synchronize)的工作是非常必要的。Linux系统下,一般使用ntp服务器来同步不同机器的时间。一台机器,可以同时是ntp服务端和ntp客户端。在生产系统中,推荐使用像DNS服务器一样分层的时间服务器来同步时间。

    不同机器间同步时间,可以使用ntpdate命令,也可以使用ntpd服务。

    4.1 ntpdate命令 

    使用ntpdate比较简单。格式如下:

    1 [root@node1 ~]# ntpdate [NTP IP/hostname]
    2 [root@node1 ~]# ntpdate 192.168.0.1
    3 [root@node1 ~]# ntpdate time.ntp.org

    但这样的同步,只是强制性的将系统时间设置为ntp服务器时间。如果CPU Tick有问题,只是治标不治本。所以,一般配合cron命令,来进行定期同步设置。比如,在crontab中添加:

      

    0 12 * * * /usr/sbin/ntpdate 192.168.0.1

    这样,会在每天的12点整,同步一次时间。ntp服务器为192.168.0.1。

    或者将下列脚本添加到/etc/cron.hourly/,这样就每小时会执行一次同步

    复制代码

    复制代码

    #!/bin/bash
    #
    # $Id: sync-clock,v 1.6 2009/12/23 15:41:29 jmates Exp $
    #
    # Use ntpdate to get rough clock sync with department of Genome Sciences
    # time server.

    NTPDATE=/usr/sbin/ntpdate
    SERVER="192.168.0.1 "

    # if running from cron (no tty available), sleep a bit to space
    # out update requests to avoid slamming a server at a particular time
    if ! test -t 0; then
    MYRAND=$RANDOM
    MYRAND=${MYRAND:=$$}

    if [ $MYRAND -gt 9 ]; then
    sleep `echo $MYRAND | sed 's/.*\(..\)$/\1/' | sed 's/^0//'`
    fi
    fi

    $NTPDATE -su $SERVER
    # update hardware clock on Linux (RedHat?) systems
    if [ -f /sbin/hwclock ]; then
    /sbin/hwclock --systohc
    fi

    复制代码

    复制代码


    4.2 ntpd服务 

    使用ntpd服务,要好于ntpdate加cron的组合。因为,ntpdate同步时间会造成时间的突变和跳跃,对一些依赖时间的程序和服务会造成影响。比如sleep,timer等。而且ntpd服务可以在修正时间的同时,修正CPU Tick。因此理想的做法为,在开机的时候,使用ntpdate强制同步时间,在其他时候使用ntpd服务来同步时间。

    要注意的是,ntpd 有一个自我保护的机制:如果本机与上源时间相差太大,ntpd 不会运行时间同步操作,所以新设置的时间服务器一定要先 ntpdate 从上源取得时间初值, 然后启动 ntpd服务。ntpd服务运行后,先是每64秒与上源NTP服务器同步一次,根据每次同步时测得的误差值经复杂计算逐步调整自己的时间,随着误差减小,逐步增加同步的间隔。每次跳动,都会重复这个调整的过程。


     4.3. ntpd服务的设置

     ntpd服务的相关设置文件如下:

    (1)/etc/ntp.conf:这个是NTP daemon的主要设文件,也是 NTP 唯一的设定文件。

    (2)/usr /share/zoneinfo/:在这个目录下的文件其实是规定了各主要时区的时间设定文件,例如北京地区的时区设定文件在 /usr/share/zoneinfo/Asia/Shanghai 就是了。这个目录里面的文件与底下要谈的两个文件(clock 与localtime)是有关系的。

    (3)/etc/sysconfig/clock:这个文件其实也不包含在NTP 的 daemon 当中,因为这个是 Linux 的主要时区设定文件。每次开机后,Linux 会自动的读取这个文件来设定自己系统所默认要显示的时间。

    (4)/etc /localtime:这个文件就是"本地端的时间配置文件"。刚刚那个clock 文件里面规定了使用的时间设置文件(ZONE) 为 /usr/share/zoneinfo/Asia/Shanghai ,所以说,这就是本地端的时间了,此时, Linux系统就会将Shanghai那个文件另存为一份 /etc/localtime文件,所以未来我们的时间显示就会以Beijing那个时间设定文件为准。

    下面重点介绍 /etc/ntp.conf文件的设置。在 NTP Server 的设定上,建议不要对Internet 无限制的开放,尽量仅提供局域网内部的 Client 端联机进行网络校时。此外,NTP Server 总也是需要网络上面较为准确的主机来自行更新自己的时间啊,所以在我们的 NTP Server 上面也要找一部最靠近自己的 Time Server 来进行自我校正。事实上, NTP 这个服务也是 Server/Client 的一种模式。

    复制代码

    复制代码

    [root@linux ~]# vi /etc/ntp.conf
    # 1. 关于权限设定部分
    #  权限的设定主要以 restrict 这个参数来设定,主要的语法为:
    #   restrict IP mask netmask_IP parameter
    #   其中 IP 可以是软件地址,也可以是 default ,default 就类似 0.0.0.0
    #  至于 paramter 则有:
    #   ignore :关闭所有的 NTP 联机服务
    #   nomodify:表示 Client 端不能更改 Server 端的时间参数,不过Client 端仍然可以透过 Server 端来进行网络校时。

    #   notrust :该 Client 除非通过认证,否则该 Client 来源将被视为不信任网域
    #   noquery :不提供 Client 端的时间查询

    #   notrap :不提供trap这个远程事件登入

    #  如果 paramter 完全没有设定,那就表示该 IP (或网域)"没有任何限制"

    restrict default nomodify notrap noquery # 关闭所有的 NTP 要求封包

    restrict 127.0.0.1    #这是允许本机查询

    restrict 192.168.0.1 mask 255.255.255.0 nomodify

    #在192.168.0.1/24网段内的服务器就可以通过这台NTP Server进行时间同步了
    # 2. 上层主机的设定
    #  要设定上层主机主要以 server 这个参数来设定,语法为:
    #  server [IP|HOST Name] [prefer]
    #  Server 后面接的就是上层 Time Server,而如果 Server 参数

    # 后面加上 perfer 的话,那表示我们的 NTP 主机主要以该部主机来

    # 作为时间校正的对应。另外,为了解决更新时间封包的传送延迟动作,

    #  所以可以使用 driftfile 来规定我们的主机
    #  在与 Time Server 沟通时所花费的时间,可以记录在 driftfile
    #  后面接的文件内,例如下面的范例中,我们的 NTP server 与
    #  cn.pool.ntp.org联机时所花费的时间会记录在 /etc/ntp/drift文件内
    server 0.pool.ntp.org

    server 1.pool.ntp.org

    server 2.pool.ntp.org

    server cn.pool.ntp.org prefer

    #其他设置值,以系统默认值即可

    server 127.127.1.0 # local clock

    fudge 127.127.1.0 stratum 10

    driftfile /var/lib/ntp/drift
    broadcastdelay 0.008

    keys /etc/ntp/keys

    复制代码

    复制代码

    总结一下,restrict用来设置访问权限,server用来设置上层时间服务器,driftfile用来设置保存漂移时间的文件。


    4.4 ntpd服务的启动与查询

    在启动NTP服务前,先对提供服务的这台主机手动的校正一次时间(因为启动服务器,端口会被服务端占用,就不能手动同步时间了)。

      

    [root@node1 ~]# ntpdate cn.pool.ntp.org
    25 Feb 21:10:52 ntpdate[9549]: adjust time server 202.112.31.197 offset 0.000101 sec

    然后,启动ntpd服务:

    [root@node1 ~]# /etc/init.d/ntpd start
    Starting ntpd: [ OK ]
    [root@node1 ~]# date
    Tue Feb 25 21:11:07 CST 2014

    查看端口(ntpd服务使用UDP的123端口):

    复制代码

    复制代码

    [root@node1 ~]# netstat -ln |grep :123
    udp 0 0 12.12.12.100:123 0.0.0.0:*
    udp 0 0 192.168.0.100:123 0.0.0.0:*
    udp 0 0 172.18.226.174:123 0.0.0.0:*
    udp 0 0 10.10.10.100:123 0.0.0.0:*
    udp 0 0 127.0.0.1:123 0.0.0.0:*
    udp 0 0 0.0.0.0:123 0.0.0.0:*
    udp 0 0 fe80::225:90ff:fe98:61ff:123 :::*
    udp 0 0 fe80::225:90ff:fe98:61fe:123 :::*
    udp 0 0 fe80::202:c903:1b:afa1:123 :::*
    udp 0 0 ::1:123 :::*
    udp 0 0 :::123 :::*

    复制代码

    复制代码

    如何确认我们的NTP服务器已经更新了自己的时间呢?

    复制代码

    复制代码

    [root@node1 ~]# ntpstat
    synchronised to NTP server (202.120.2.101) at stratum 4
    time correct to within 557 ms
    polling server every 64 s
    # 该指令可列出NTP服务器是否与上层联机。由上述输出结果可知,时间校正约
    # 为557*10(-6)秒,且每隔64秒会主动更新时间。

    复制代码

    复制代码

    常见的错误:

    unsynchronized time server re-starting polling server every 64 s
    // 或者
    25 Apr 15:30:17 ntpdate[11520]: no server suitable for synchronization found

    其实,这不是一个错误。而是由于每次重启NTP服务器之后大约要3-5分钟客户端才能与server建立正常的通讯连接。当此时用客户端连接服务端就会报这样的信息。一般等待几分钟就可以了。

    复制代码

    复制代码

    [root@node1 ~] # ntptrace –n
    127.0.0.1:stratum 11, offset 0.000000,synch distance 0.950951
    222.73.214.125:stratum 2,offset –0.000787,synch distance 0.108575
    209.81.9.7:stratum 1,offset 0.000028,synch distance 0.00436,refid 'GPS'
    # 这个指令可以列出目前NTP服务器(第一层)与上层NTP服务器(第二层)
    # 彼此之间的关系,注意:该命令需要安装ntp-perl包

     
    

    复制代码

    复制代码

    ntpq命令:

    [root@node1 ~]# ntpq -p

    指令"ntpq -p"可以列出目前我们的NTP与相关的上层NTP的状态,以上的几个字段的意义如下:

    remote:即NTP主机的IP或主机名称。注意最左边的符号,如果由"+"则代表目前正在作用钟的上层NTP,如果是"*"则表示也有连上线,不过是作为次要联机的NTP主机。

    refid:参考的上一层NTP主机的地址

    st:即stratum阶层

    when:几秒前曾做过时间同步更新的操作

    poll:下次更新在几秒之后

    reach:已经向上层NTP服务器要求更新的次数

    delay:网络传输过程钟延迟的时间

    offset:时间补偿的结果

    jitter:Linux系统时间与BIOS硬件时间的差异时间

    最后提及一点,ntp服务默认只会同步系统时间。如果想要让ntp同时同步硬件时间,可以设置/etc/sysconfig/ntpd 文件。

    在/etc/sysconfig/ntpd文件中,添加 SYNC_HWCLOCK=yes 这样,就可以让硬件时间与系统时间一起同步。


    5. HPC集群中时间同步示例

    5.1 集群环境简介

    管理节点:192.168.0.100,192.168.0.101

    计算节点:192.168.0.1~192.168.0.50

    I/O节点:192.168.0.51~192.168.0.54

    Internet NTP服务器:cn.pool.ntp.org

    5.2 时间同步方案设计

    图 1 NTP时间同步方案设计

    方案详细解释:

    (1)管理节点1作为主NTP服务器,跟互联网NTP服务器进行时间同步;管理节点2作为备用NTP服务器,也跟互联网NTP服务器进行时间同步。两个管理节点做Heartbeat,设置一个漂移IP地址192.168.0.103,并对ntpd服务进行双机高可用;

    (2)集群计算节点和IO节点,跟管理节点的虚拟IP地址192.168.0.103通过ntpd服务做时间同步;

    (3)所有节点,在ntp时间同步的同时,设置硬件时间跟系统时间一致;

    (4)所有计算节点和IO节点开机时,通过ntpdate跟192.168.0.103进行时间同步,然后再开启ntpd服务。


    6.linux时钟同步步骤与故障排查

    (1)设置时区

    linux系统的timezone文件, 他们放在/usr/share/zoneinfo这个目录下,基本涵盖了大部分的国家和城市.

    zdump Hongkong  #该命令可以查询每个time zone当前的时间;

    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtimezone  #将上海时区复制到linux系统的时区目录下

    ln -sf /usr/share/zoneinfo/posix/Asia/Shanghai /etc/localtime #启用上海时区

    date                     #使用date命令可查询到时区是否已改变

    (2)linux的客户端与ntp服务器能相互ping通

    如果客户端和ntp服务器的设备不能直接通信(或者不在同一个网段),则需要在客户端和服务器端分别添加路由。(例:ntp服务器为windows系统,ip为10.15.129.2;客户端为linux系统设备,网关为10.10.5.254,我们分别在windows和linux系统添加如下路由,直到S-N间能相互ping通)

    route -p add 10.10.5.254 mask 255.255.255.0 10.15.129.2

    sudo route add -net 10.15.129.0/28 gw 10.10.5.254

    (3)编辑etc目录下的ntp.conf文件(如有一些特殊同步需要也可以使用crontab -e命令按4.1步骤来进行同步时间的编辑和设置)

    在文件的末尾,写上ntp server的ip,如

    server 10.15.129.2 perfer    #设置ntp时钟同步的server

    (4)使用ntp相关的同步命令进行时间同步

    service ntpd start     #启动ntpd服务守护进程

    service ntpd stop     #停止ntpd服务守护进程

    ntpd –q -g               #和ntp服务器同步时钟

    date                      #查询当前时间

    -----------------------------------

    相关状态查询命令

    ntpq -p                 #查看网络中的NTP服务器,同时显示客户端和每个服务器的关系

    ntpstat                 #查看时间同步状态

    (5)故障排查

    一般linux时钟同步比较常见的故报错是: no server suitable for synchronization found

    综合网上的文章与实际情况,在客户端与服务器端不同步且使用ntpdate -d或者ntpdate -u 10.15.129.2同步时上述报错,大概有四种下列原因:

    报错行中有Server dropped: no data的情况

    1.可能时ntp安装包的版本问题,可查询版本,如果不对,重新下载并安装4.2之前的版本。

    ntpq -c version      #查询ntp的版本

    2.检查ntp server的防火墙。可能是server的防火墙屏蔽了upd 123端口。

    service iptables stop      #关闭防火墙

    3.检查客户端和服务器端是否能相互ping通

    报错行中有Server dropped: Strata too high的情况

    1.可能是ntp服务器端未同步所致

    在ntp客户端用ntpdate –d serverIP查看,发现有“Server dropped: strata too high”的错误,并且显示“stratum 16”。而正常情况下stratum这个值得范围是“0~15”。

    可能是NTP server还没有和其自身或者它的server同步上。

    下面代码的定义是让NTP Server和其自身保持同步,如果在/ntp.conf中定义的server都不可用时,将使用local时间作为ntp服务提供给ntp客户端。

    server 127.127.1.0 fudge

    127.127.1.0 stratum 10

    展开全文
  • 时钟控制状态上分,有同步状态机和异步状态机。 从状态机编码方式上分,顺序编码、一位热码编码或其他编码方式状态机。 然而最常用的状态机是同步状态机,在其一般结构中,通常包含了说明部分

    状态机的特点

    1、高效的过程控制模型

    2、容易利用现成的EDA工具进行优化设计

    3、系统性能稳定

    4、高速性能

    5、高可靠性能

    状态机的分类

    从状态机的信号输出方式上分,有Mealy型和Moore型两种状态机。

    从状态机的结构描述上分,有单过程状态机和多过程状态机。

    状态表达方式上分,有符号化状态机和确定状态编码的状态机。

    时钟控制状态上分,有同步状态机和异步状态机。

    状态机编码方式上分,有顺序编码、一位热码编码或其他编码方式状态机。

    然而最常用的状态机是同步状态机,在其一般结构中,通常包含了说明部分、主控时序部分、主控组合过程、辅助过程等几个部分。

    展开全文
  • NTP时间同步器(时钟同步器)对于网络的重要性 NTP时间同步器(时钟同步器)对于网络的重要性 时间同步技术必定将是整个大数据处理系统的重要支撑和保障。时间同步技术使数据产生与处理系统的所有节点具有全局的、...

    NTP时间同步器(时钟同步器)对于网络的重要性
    NTP时间同步器(时钟同步器)对于网络的重要性

    时间同步技术必定将是整个大数据处理系统的重要支撑和保障。时间同步技术使数据产生与处理系统的所有节点具有全局的、统一的标准时间,从而使系统中的所有各种消息、事件、节点、数据等具备正确的逻辑性、协调性以及可追溯性。
    大数据产生与处理系统是各种计算设备集群的,计算设备将统一、同步的标准时间用于记录各种事件发生时序,如E-MAIL信息、文件创建和访问时间、数据库处理时间等。大数据系统内不同计算设备之间控制、计算、处理、应用等数据或操作都具有时序性,若计算机时间不同步,这些应用或操作将无法正常进行。
    大数据系统是对时间敏感的计算处理系统,时间同步是大数据能够得到正确处理的基础保障,是大数据得以发挥作用的技术支撑。大数据时代,整个处理计算系统内的大数据通信都是通过网络进行。时间同步也是如此,利用大数据的互联网络传送标准时间信息,实现大数据系统内时间同步。网络时间同步协议(NTP)是时间同步的技术基础。
    GPS时间同步的原理和技术
    1、有关时间的一些基本概念:

    时间与频率之间互为倒数关系,两者密不可分,时间标准的基础是频率标准,由晶体振荡器决定时间的精度。

    4种实用的时间频率标准源包括

    晶体钟、铷原子钟、氢原子钟和铯原子钟。

    常用的时间坐标系:世界时(UT)、地方时、原子时(AT)、协调世界时(UTC)、GPS时

    时钟源技术

    时钟振荡器是所有数字通信设备中最基本的部件,时钟源技术可以分为普通晶体时钟、高稳定晶振、原子钟和芯片级原子钟。

    锁相环技术

    锁相环技术是一种使得输出信号在频率和相位上与输入信号同步的电路技术,利用锁相环技术进入锁定状态或者同步状态后,系统的振荡器输出信号与输入信号之间的相差为零。锁相环技术是时钟同步的核心技术。

    模拟锁相环由检相器、环路滤波器和压控振荡器3个部分组成。而数字锁相环中的误差控制信号使用离散的数字信号,而不是模拟电压。智能锁相环路技术,即直接数字频率合成(DDS-Digital Direct Frequency Synthesis)技术,在单片FPGA中就可以实现。

    2、GPS时间是怎样建立的?为了得到精密的GPS时间,使它的准确度达到<100ns(相对于UTC(USNO/MC)):
    ◆ 每个GPS卫星上都装有铯子钟作星载钟;
    ◆ GPS全部卫星与地面测控站构成一个闭环的自动修正系统;
    ◆ 采用UTC(USNO/MC)为参考基准。GPS定位、定时和校频的原理  
    (1)GPS定位原理:是基于精确测定GPS信号的传输时延(Δt),以得到GPS卫星到用户间的距离(R) R=C×Δt -----------------------
    [1](式中C为光速)同时捕获4颗GPS卫星,解算4个联立方程,可给出用户实时时刻(t)和对应的位置参数(x、y、z)共4个参数。R={(Xs- Xu)2+(Ys-Yu)2+(Zs-Zu)}1/2 ----
    [2](式中Xs、Ys、Zs为卫星的位置参数;Xu、Yu、Zu为用户的的位置参数)  
    (2)GPS定时原理:  基于在用户端精确测定和扣除GPS时间信号的传输时延(Δt),以达到对本地钟的定时与校准。GPS定时准确度取决于信号发射端、信号在传输过程中和接收端所引入的误差,主要误差有:◆ 信号发射端:卫星钟误差、卫星星历(位置)误差;◆ 信号传输过程:电离层误差、对流层误差、地面反射多路径误差;◆ 接收端:接收机时延误差、接收机坐标误差、接收机噪声误差。  
    (3)GPS校频原理:  根据频率和周期互为倒数的关系,可采用比时法(测时间间隔)的方法(以GPS的秒信号为参考)来测量本地钟的频率准确度(Δf/f),以达到校频的目的。Δf/f=(Δt2-Δt1)/(t2-t1) ------------ [3](式中Δt2、Δt1分别为t2、t1时刻测得的本地钟与GPS时的时差值)。4、进一步提高定时准确度的几种途径:
    ◆ 采用GPS双频、相位测量技术;
    ◆ 选用更高精度的GPS时间传递接收机;
    ◆ 采用GPS共视法比对技术与卫星转发双向法技术。

    3、GPS在时频领域的应用
    1、国际时间标准的协调与建立:  
    从二十世纪八十年代末,国际计量局(BIPM)的时间部,就开始正式采用标准化的GPS共视比对方法,把全世界几十个守时中心的主钟沟通起来,并建立了准确度最高的国际原子时(TAI)和国际协调世界时(UTC/BIPM)。我国有三个实验室参加了国际时间标准的协调,它们是:  中国科学院陕西天文台(CSAO)、国家计量研究院(NIM)、航天无线电计量测试研究所(BIRM)
    2、新型时频计量传递系统的建立
    (1)传统时频计量传递的特点:
    ◆ 一般是按国家级计量单位、一级计量站、二级计量站和使用单位四级逐级传递;
    ◆ 受检时频标准源或仪器设备必须往返搬运,检定校准后的状态在搬运中难免受到破坏;◆ 传统的时频计量一般只能按检定周期(一般为一年)进行,难以进行经常性和实时的计量测试。
    (2)通过采用GPS共视法时间比对和互联网技术,可以建立不需搬运的、实时的、完全新型的时频遥远校准系统。

    展开全文
  • 摩尔状态机的输出只与当前状态有关,且只在时钟边沿到来时发生变化。 米勒状态机的输出不但与当前的状态有关,还和当前的输入有关,这一特点使其控制和输出更加灵活,但增加了设计的复杂性。 两种状态机的示意图...
  • 电网调度自动化系统对北斗GPS卫星时钟同步的优缺点 电网调度自动化系统对北斗GPS卫星时钟同步的优缺点 1.概述 电网调度综合自动化系统SCADA功能为调度员、集控员提供了各个变电站的实时数据及信息,并可以使他们方便...
  • 状态同步:大型的MMOARPG ,比如魔兽世界 帧同步:网络条件好的局域网,比如魔兽争霸,优化过的MMRPG, 比如王者荣耀 农药自从上线以来,依靠着强大的产品力以及腾讯的运营能力,在游戏市场上表现可谓是风生水起...
  • 在Linux中硬件时钟与系统时钟等两种时钟.硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟.系统时钟则是指kernel中的时钟.当Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作...
  • FPGA--有限状态机(FSM)的设计

    千次阅读 2017-10-21 17:10:00
    有限状态机(FSM)
  • Linux 时钟同步

    2020-12-23 09:14:47
    Linux下,默认情况下,系统时间和硬件时间并不会自动同步。在Linux运行过程中,系统时间和硬件时间以异步的方式运行,互不干扰。硬件时间的运行,是靠BIOS电池来维持,而系统时间,是用CPU Tick来维持的。在系统开机...
  • stm32f107ptp时钟同步

    2021-01-22 13:13:12
    这是stm32f107ptp时钟同步程序,官方库,经过移植有用,精度300ns左右,建议使用v2版本,主从修改一下ip 什么的就可以使用了,注意你自己使用的是和哪块评估板类似就在mdk里面选择对应版本,否则会移植不成功 ...
  • 时间同步服务器,保障您的计算机系统时钟精准 时间同步服务器,保障您的计算机系统时钟精准 随着计算机应用的广度和深度不断加大,网络中的设备种类和业务类型越来越多,服务器的数量也与日俱增。传统上,各种服务器...
  • FPGA之状态机

    2021-05-02 21:39:01
    状态机的本质就是对具有逻辑顺序和时序规律的事件的一描述方法,它三个要素:状态、输入、输出:状态也叫做状态变量(比如可以用电机的不同转速作为状态),输出指在某一个状态的特定输出,输入指状态机中进入每...
  • 奋斗的小孩系列 FPGA学习altera系列: 第十八篇 状态机的描述 作者:奋斗的小孩 郝旭帅(转载请注明出处) 大侠好,欢迎来到FPGA技术江湖,江湖偌大,相见即是缘分。大侠可以关注FPGA技术江湖,在“闯荡江湖”、...
  • 状态机(FSM : Finite State Machine) : 现在我们工程中使用到的只有 有限状态机,即不论状态多少个,总是有限的。理论上说是无限的状态机,但是,在实际的工程中,这个是不存在的。 状态机定义 : 指的是,一...
  • 北斗同步时钟(GPS授时系统)技术原理阐述 北斗同步时钟(GPS授时系统)技术原理阐述 1、有关时间的一些基本概念: (1)、时间(周期)与频率: 互为倒数关系,两者密不可分,时间标准的基础是频率标准,所以人把...
  • 由于硬件的原因,机器或多或少的跟标准时间对不上,一个月的误差秒到分钟不等。对于服务器来说时间不准,会很多麻烦。例如,支付的时候,无法下单,游戏无法登录等。方法一:用 ntpdate从时间服务器更新时间...
  • 同时因为一些点书本内容太简略,所以参照学习了 GDC 2017 守望先锋对 ECS 架构涉及和网络同步的视频分享结合讲解加深理解。尝试提供所有必要基础知识理解游戏客户端预测(但是只是基础角度的分析,需要深入学习的...
  • 问题 下位(arm 单片机)在控制电机时要求比较...2.制定通信协议,下位按固定周期(30ms)往上位机发送状态数据,数据包里包含下位的时间信息或是这是第个包,上位机收到这两信息之后(任意一),都能确
  • 用硬件时钟同步系统时钟: 用系统时钟同步硬件时钟: 同步网络时间 查看和修改Linux的时间 时钟--详解 硬件时钟 系统时钟 时间同步 时间标准 网络时间 ntp时钟同步服务 chrony时钟同步服务 备注 ntp...
  • 引言2019年总台搭建的超高清EFP制作系统...这种情况下新的基于网络环境的数据包同步时钟系统——PTP精确同步授时对制作系统来说就非常重要。PTP同步时钟系统的作用与传统基带B.B同步是一样的,但其同步原理、适用类...
  • GPS北斗卫星授时系统(NTP同步时钟设备)应用和发展 GPS北斗卫星授时系统(NTP同步时钟设备)应用和发展 一、GPS信息与信息时代 信息时代的特点:一是信息量急剧增加(如需海量存储器);二是信息传输的数字化(如...
  • 两段式状态机是一常用的写法,他把时序逻辑和组合逻辑划分开来,时序逻辑里进行当前逻辑和下一逻辑的切换,组合逻辑里实现各个输入输出及状态判断,这种写法相对容易维护,不过组合逻辑输出较容易出现毛刺等常见...
  • FIFO(First in First Out)是一先进先出的数据缓冲器,通常用于接口电路的数据缓存。与普通存储器的区别是没有外部读写地址线,可以使用两个时钟分别进行读和写操作。 FIFO只能顺序写入数据和顺序读出数据,其...
  • 彻底搞懂状态机(一段式、两段式、三段式)

    万次阅读 多人点赞 2017-11-11 23:16:10
    状态转移图:初始状态S0,a = 0,z = 0.如果检测到1,跳转到S1。  下一状态S1,a = 1,z = 0.如果检测到0,跳转到S2。  下一状态S2,a = 0,z = 0.如果检测到0,跳转到S3。  下一状态S3,a = 0,z = 0.如果检测到1...
  • 好的状态机的标准很多,最重要的个方面如下: 第一,状态机要安全,是指FSM不会进入死循环,特别是不会进入非预知的状态,而且由于某些扰动进入非设计状态,也能很快的恢复到正常的状态循环中来。这里面两层...
  • 文章目录1 启动脚本1.1 start1.2 stop2 主站实例创建2.1 Master Phases2.2 数据报与状态机数据报状态机2.3 master状态机及数据报初始化2.4 初始化EtherCAT device2.5 设置IDLE 线程的发送间隔:2.6 初始化字符设备3 ...
  • PWM简介脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。脉冲宽度调制是一模拟控制方式,其根据相应载荷的变化来调制晶体...
  • SPI总线是Motorola公司推出的三线同步接口,同步串行3线方式进行通信:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO;用于 CPU与各种外围器件进行全双工、同步串行通讯。SPI主要特点:可以同时发出和接收...
  • 前言随着互联网的发展,各种高并发、海量处理的场景越来越多。为了实现高可用、可扩展的系统,常常使用分布式,...如果是多个进程间的协同需要用到分布式锁,本文总结了几种常见的分布式锁。基于数据库悲观锁—事务...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,709
精华内容 11,483
关键字:

时钟同步状态机有几种状态