精华内容
下载资源
问答
  • Qt如何实现时钟同步

    2013-10-22 08:59:33
    用QTimer定义了两个时钟对象,要求两个时钟同步,即同时开启,该如何实现
  • 如何使用GPSPPS实现时钟同步采集系统
  • 如何使用GPS PPS实现时钟同步采集系统
  • 西门子如何实现S120与S7 CPU的时钟同步zip,西门子如何实现S120与S7 CPU的时钟同步
  • 之间的时钟同步功能pdf,西门子如何实现AOP30与驱动装置之间的时钟同步功能: 通过使用 AOP30 与驱动装置之间的时钟同步功能,可以为驱动装置的故障信息标记时间戳,从而方便用户对故障的诊断。
  • 在开始编码之前,我们需要明确实现时钟控件过程中,涉及到一些要点和可能遇到的阻碍。这里从几个方面来说: 表盘,表盘由圆形和刻度组成,两者均需绘制 指针,主要是时针、分针、秒针。其中时针随着时间推移,会产生...
  • 2.学习同步时钟FIFO、二时钟异步FIFO的分析以及编写。 3.以实例体验如何将实际需求分析转换成代码。 FIFO(First In First Out)队列通常在数字系统中实现两个模块间数据的暂存,达到减少两模块之间的速度依赖,...

    同步 FIFO 的实现

    学习目的:

    • 1.给大家介绍FIFO的基本原理和组成。
    • 2.学习同步单时钟FIFO的分析以及编写。
    • 3.以实例体验如何将实际需求分析转换成代码。

    FIFO(First In First Out)队列通常在数字系统中实现两个模块间数据的暂存,达到减少两模块之间的速度依赖,使得两个模块能够相互相对独立的运行。

    FIFO是FPGA设计的一个非常基本的单元。FIFO一般用一个双口RAM和分别指示读写地址的指针,以及状态生成和指示的逻辑组成,下图是典型的FIFO结构图:
    在这里插入图片描述

    我们看到中上部是一个双口RAM,所谓双口RAM是分别有两套读写数据线地址线以及控制线,用以实现读写的同时操作。

    再看到读写指针和读写控制界面,左边是写控制界面和写指针,实现对写指针的更新。右边是读控制界面和读指针,实现对读指针的更新。我们还有比较逻辑,这里产生空empty信号和full信号。

    我们来看一下存储器的工作方式,实际是一个循环队列:我们来跟踪一下情景:

    以下存储器有8个存储单元,在初始化的时候,读指针RP和WP都指向0地址,当向存储器里写入了8个数据后,写指针会从新回到0,这就是循环队列。

    这里地址是0-7是3个BIT宽度,WP和RP也要对应的是3个bit,加1就能实现从0,1,2.。6.7.0.1.2…这样循环。下图中阴影的部分标示存储区已经占用。
    在这里插入图片描述
    以上分析了WP和RP的行为,还需要产生空和满信号的逻辑,实现方法我们这里设置一个计数器 FIFO_CNTR,用以表示有效可读数据的个数,初始化的时候是0,标示存储器内没有数据可供读。

    当写入接口进行一次有效的写操作(这里规定有效的写操作是FIFO不满的时候实施的写操作)计数器FIFO_CNTR加1,
    当读出接口进行一次有效的读操作(这里规定有效的读操作是FIFO不空的时候实施的读操作)计数器FIFO_CNTR减1;

    而当同时实施有效的写操作和读操作时,FIFO_CNTER不发生变化(从图上可以分析出实际读指针和写指针都往前走了,他们间距还是一样的,有效可读数据的存储个数还是保持不变)。

    另外关于FIFO_CONTER的个数,我们这里看到范围是是0-8,(0时为空,8时为满),因此需要4个bit来定义FIFO_CNTR.因此通常情况下FIFO_CNTR要比地址位数多1位。

    至于说到full和empty很简单的由FIFO_COUNTER产生:当且仅当FIFO_COUNTER=0时候,empty=1;当且仅当FIFO_CNTER为最多可容纳存储个数时,这里说FIFO_CNTR = 8时候,full=1;

    我们再总结以上的分析,具体细化一下:
    1,需要一个buff双口存储器做存储载体,当地址有n位,就有2N2^{N}个存储单元,标号从0到(2N12^{N-1})。三位地址存储地址就是从0到7。
    2,需要wr_ptr指针,与地址位数相同,指向下个可以写的地址。
    3,需要rd_ptr指针,与地址位数相同,指向下个可以读的地址。
    4,需要fifo_cntr计数器,比地址位数多一位,指示当前可读的数据个数。
    5,full和empty由fifo_cntr生成。
    6,区别读写操作是否有效。
    7,实现上述功能。

    代码呼之欲出了,我们来写代码,首先是定义端口,之后就开始写代码。写完之后进行检查。

    module sc_fifo(
    	input clk,rst,
    	
    	input [7:0] din,
    	input wr,
    	output full,
    	
    	output reg [7:0] dout,
    	input rd,
    	output empty
    );
    
    //1,需要一个buff双口存储器做存储载体,当地址有n位,就有2^N个存储单元,标号从0到(2^N-1)。三位地址存储地址就是从0到7。
    reg [7:0] buff[0:7] ;
    
    
    //2,需要wr_ptr指针,与地址位数相同,指向下个可以写的地址。
    reg [2:0] wr_ptr ;
    
    //3,需要rd_ptr指针,与地址位数相同,指向下个可以读的地址。
    reg [2:0] rd_ptr ;
    
    //4,需要fifo_cntr计数器,比地址位数多一位,指示当前可读的数据个数。
    reg [3:0] fifo_cntr ;
    
    //5,full和empty由fifo_cntr生成。
    assign full = fifo_cntr ==8 ;
    assign empty= fifo_cntr==0;
    
    //6,区别读写操作是否有效。
    wire valid_rd =  ~empty & rd ;
    wire valid_wr = ~full & wr ;
    
    //7,实现上述功能。
    always@(posedge clk) 
    	if (rst) 
    		wr_ptr <= 0;
    	else if(valid_wr)
    		wr_ptr<=wr_ptr+1;
    		
    always@(posedge clk) 
    	if (rst)
    		rd_ptr <= 0 ;
    	else if (valid_rd)
    		rd_ptr <= rd_ptr+1;
    
    /*
    always@(posedge clk) if (rst)fifo_cntr<=0;else 
    if ((valid_rd==0) &&(valid_wr==1))fifo_cntr<=fifo_cntr+1;
    else if ((valid_rd==1)&&(valid_wr==0))fifo_cntr<fifo_cntr-1;
    */
    
    always@(posedge clk) 
    casex ({rst,valid_wr,valid_rd})
    	3'b1xx : fifo_cntr<=0;
    	3'b010 : fifo_cntr<=fifo_cntr+1;
    	3'b001 : fifo_cntr<=fifo_cntr-1;
    	3'b011 ,3'b000 :fifo_cntr<=fifo_cntr ;
    endcase 
    
    
    always@(posedge clk) 
    	if (valid_wr) 
    		buff[wr_ptr] <=din ;
    		
    always@(posedge clk) 
    	if (valid_rd)
    		dout<= buff[rd_ptr] ;
    
    endmodule
    

    异步 FIFO 的实现

    其实FIFO是也是在RAM的基础上增加了许多功能,FIFO的典型结构如下,主要分为读和写两部分,另外就是状态信号,空和满信号,同时还有数据的数量状态信号,与RAM最大的不同是FIFO没有地址线不能进行随机地址读取数据,什么是随机读取数据呢,也就是可以任意读取某个地址的数据。而FIFO则不同,不能进行随机读取,这样的好处是不用频繁地控制地址线

    最终将在 AX-7020 FPGA 上实现。
    在这里插入图片描述
    虽然用户看不到地址线,但是在FFO内部还是有地址的操作的,用来控制RAM的读写接口。其地址在读写操作时如下图所示,其中深度值也就是一个FIFO里最大可以存放多少个数 据。初始状态下,读写地址都为0,在向FIFO中写入一个数据后,写地址加1,从FFO中读出 一个数据后,读地址加1。此时FFO的状态即为空,因为写了一个数据,又读出了一个数据。
    在这里插入图片描述
    可以把 FIFO 想象成一个水池,写通道即为加水,读通道即为放水,假如不间断的加水和放水,如果加水速度比放水速度快,那么FIFO就会有满的时候,如果满了还继续加水就会溢出overflow,如果放水速度比加水速度快,那么FIFO就会有空的时候,所以把握好加水与放水的时机和速度,保证水池一直有水是一项很艰巨的任务。也就是判断空与满的状态,择机写数据或读数据。

    下面主要介绍异步 FFO 的控制,其中读时钟为 25 MHz,写时钟为 50 MHz。实验中会通过 vivado 集成的在想逻辑分析仪 ila ,我们可以观察FIFO的读写时序。

    FIFO IP 核的端口列表如下:
    在这里插入图片描述
    FIFO 的数据写入和读出都是按时钟的上升沿操作的,当 wr_en 信号为高时写入 FIFO 数据,当 almost_full 信号有效时,表示 FIFO 只能再写入一个数据,一旦写入一个数据了,full 信号就会拉高,如果在 full 的情况下 wr_en 仍然有效,也就是继续向 FIFO 写数据,则 FIFO 的 overflow 就会有效,表示溢出。(如下图所示)
    在这里插入图片描述
    当 rd_en 信号为高时读FIFO数据,数据在下个周期有效。valid为数据有效信号,almost_empty表示还有一个数据读,当再读一个数据,empty信号有效,如果继续读,则underflow有效,表示下溢,此时读出的数据无效。(如下图所示)
    在这里插入图片描述
    而从 FWFT 模式读数据时序图可以看出, rden 信号有效时,有效数据D已经在数据线上准备好有效了,不会再延后一个周期。这就是与标准FIFO的不同之处。(如下图所示)
    在这里插入图片描述
    有一点需要注意的是,FFO设置默认为采用 safety circuit,此功能是保证到达内部RAM的输入信号是同步的,在这种情况下,如果异步复位后,则需要等待60个最慢时钟周期。(如下图所示,更详细的还请参考文档)
    在这里插入图片描述
    在有了上面的基础知识后,我们开始对异步 FIFO 进行代码的编写,要实现以下几个功能:

      1. 对输入时钟进行分频(二分频)PS:分频操作也可以调用锁相环 IP 核
      1. 调用 Xilinx 的FIFO IP核
      1. 需要编写对FIFO 的控制逻辑(状态机)
      1. 调用 XIlinx 的 ILA IP 核对读到的输出进行捕捉

    代码如下:

    `timescale 1ns / 1ps
    
    module fifo(
    	input clk,
    	input rst_n
        );
    
    	wire div2;
    
    	wire wr_clk;
    	wire rd_clk;
        wire [15:0] dout;
    	assign rd_clk = div2;
    	assign wr_clk = clk;
    
    	reg [6:0] wcn;
    	reg [6:0] rcn;
    
    	reg [15:0] din_reg;
    
    	wire wr_en;
    	wire rd_en;
    
    	wire full;
    	wire empty;
    
    	wire [9:0] rd_data_count;
    	wire [9:0] wr_data_count;
    
    	localparam IDLE = 0;
    	localparam WRITE = 1;
    	localparam READ = 2;
    
    	// write FSM
    	reg [1:0] write_state;
    	assign wr_en = (write_state == WRITE) ? ~full : 1'b0;
    	always @ (posedge clk or negedge rst_n)
    	begin
    		if(!rst_n)
    		begin
    			write_state <= IDLE;
    			din_reg <= 16'd0;
    		end
    		else
    		begin
    			case(write_state)
    
    				IDLE:
    				begin
    					if(wcn >= 7'd60)
    						write_state <= WRITE;
    					else
    						write_state <= IDLE;
    				end
    
    				WRITE:
    				begin
    					if (wr_en)
    					begin     
    						write_state <= WRITE;
    						din_reg <= din_reg + 16'd1;
    					end
    					else
    						write_state <= write_state;
    				end
    
    				default:
    					write_state <= write_state;
    
    			endcase
    		end
    	end
    
    	always @ (posedge clk or negedge rst_n) begin
    		if (!rst_n)
    			wcn <= 7'd0;
    		else if(write_state == IDLE)
    			wcn <= wcn + 7'd1;
    		else
    			wcn <= 7'd0;	
    	end
    	
    	// read fsm
    	reg [1:0] read_state;
    	assign rd_en = (read_state == READ) ? ~empty : 1'b0;
    	always @ (posedge rd_clk or negedge rst_n) begin
    		if (!rst_n)
    		begin
    			read_state <= IDLE;
    		end
    		else
    		begin
    			case(read_state)
    
    			IDLE:
    			begin
    				if (rcn >= 7'd60)
    				begin
    					read_state <= READ;
    				end
    				else
    					read_state <= IDLE;
    				        
    			end
    
    			READ:
    			begin
    				 read_state <= READ;       
    			end
    
    			default:
    				read_state <= read_state;
    
    			endcase
    
    		end 
    	        
    	end
    
    	always @ (posedge rd_clk or negedge rst_n) begin
    		if (!rst_n)
    			rcn <= 7'd0;
    		else if(read_state == IDLE)
    			rcn <= rcn + 7'd1;
    		else
    			rcn <= 7'd0;	        
    	end
    
    div2 diver2(
    	.clk(clk),
    	.rst_n(rst_n),
    	.div2_o(div2)
    
    );
    
    fifo_ip fifo_wr (
      .rst(~rst_n),                      // input wire rst
      .wr_clk(wr_clk),                // input wire wr_clk
      .rd_clk(rd_clk),                // input wire rd_clk
    
      .din(din_reg),                      // input wire [15 : 0] din
      .wr_en(wr_en),                  // input wire wr_en
      .rd_en(rd_en),                  // input wire rd_en
    
      .dout(dout),                    // output wire [15 : 0] dout
      .full(full),                    // output wire full
      .empty(empty),                  // output wire empty
      .rd_data_count(rd_data_count),  // output wire [9 : 0] rd_data_count
      .wr_data_count(wr_data_count),  // output wire [9 : 0] wr_data_count
      .wr_rst_busy(),      // output wire wr_rst_busy
      .rd_rst_busy()      // output wire rd_rst_busy
    );
    
    ila_0 ila_ip (
    	.clk(rd_clk), // input wire clk
    	.probe0(dout) // input wire [15:0] probe0
    );
    
    endmodule
    
    
    // 分频操作
    module div2(
    	input						clk			,
    	input						rst_n			,
    	output						div2_o			
        );
    
    	reg 						div2_o_r		;
    	
    	assign div2_o = div2_o_r;
    
    	always @ (posedge clk or negedge rst_n) begin
    		if(!rst_n)
    			div2_o_r <= 0;
    		else
    			div2_o_r <= ~div2_o_r;
    	        
    	end
    
    
    endmodule
    

    仿真文件如下:

    module fifo_tb;
    
    reg clk;
    reg rst_n;
    
    always
    begin
    	clk = 0;
    	#10;
    	clk = 1;
    	#10;
    end
    
    initial
    begin
    	rst_n = 0;
    	#20;
    	rst_n = 1;
    end
    
    fifo fifo_tb(
    	.clk(clk),
    	.rst_n(rst_n)
    	);
    
    endmodule
    

    最终经过综合、比特文件生成,在板子上跑的结果如下:
    在这里插入图片描述

    另附上约束文件:

    set_property PACKAGE_PIN N15 [get_ports rst_n]
    set_property PACKAGE_PIN U18 [get_ports clk]
    set_property IOSTANDARD LVCMOS33 [get_ports rst_n]
    set_property IOSTANDARD LVCMOS33 [get_ports clk]
    
    create_clock -period 20.000 -name clk -waveform {0.000 10.000} [get_ports clk]
    set_property C_CLK_INPUT_FREQ_HZ 300000000 [get_debug_cores dbg_hub]
    set_property C_ENABLE_CLK_DIVIDER false [get_debug_cores dbg_hub]
    set_property C_USER_SCAN_CHAIN 1 [get_debug_cores dbg_hub]
    connect_debug_port dbg_hub/clk [get_nets div2]
    
    
    展开全文
  • 西门子SIMOTION系统时钟与HMI系统时钟同步zip,西门子SIMOTION系统时钟与HMI系统时钟同步:此文档提供了如何实现SIMOTION的系统日期及时间与其所连接的HMI系统时间进行同步的应用参考,包括程序示例,可将此程序...
  • 一、为什么要实现时间同步 多主机协作工作时,各个主机的时间同步很重要,时间不一致会造成很多重要应用的故障,如:加密...二、如何使用chrony包实现时间同步 准备四台服务器: 一台为时钟服务器:172.16.0.1 一台为

    一、为什么要实现时间同步
    多主机协作工作时,各个主机的时间同步很重要,时间不一致会造成很多重要应用的故障,如:加密协议,日志,集群等,利用NTP(Network Time Protocol) 协议使网络中的各个计算机时间达到同步。目前NTP协议属于运维基础架构中必备的基本服务之一。
    时间同步可用ntp包或chrony包实现,由于chrony包更精准,且同步效率高,因此推荐使用chrony包实现时间同步。
    二、如何使用chrony包实现时间同步
    准备四台服务器:
    一台为时钟服务器:172.16.0.1
    一台为中间服务器:192.168.37.7(CentOs7)
    两台为客户端服务器:192.168.37.6,192.168.37.17(CentOs6)
    如何通过中间服务器实现客户端与时钟服务器的时间同步?
    1、时钟服务器172.16.0.1上的相关操作

    #查询本机时间
    date
    

    2、中间服务器192.168.37.7上的相关操作

    #安装chrony包
    yum install chrony
    #查询chrony包生成的所有文件
    rpm -ql chrony
    #修改配置文件
    vim /etc/chrony.conf
    	server 172.16.0.1 iburst#使本机时间与时钟服务器172.16.0.1同步
    	allow 192.168.37.0 /24#允许192.168.37.0的所有网段访问本机
    	local stratum 10#即使时钟服务器不可用,也可将本机时间授时给其他客户端
    #查询chronyd服务的启动状态(未启动)
    systemctl status chronyd
    #模拟
    date -s “-1 year”
    #启动chronyd服务
    systemctl start chronyd
    #将chronyd服务设为开机自启
    systemctl enable chronyd
    #验证时间是否同步
    date
    #查看端口信息(123、323)(123端口为chrony内置的ntpd服务)
    ss -nutl
    

    2、客户端服务器192.168.37.6,192.168.37.17上的相关操作

    #临时使时间与中间服务器192.168.37.7同步(命令法)
    ntpdate 192.168.37.7
    #永久使时间与中间服务器192.168.37.7同步(没有chronyd服务用自带的ntpd服务u也可以)
    vim /etc/ntp.conf
    	server 192.168.37.7 iburst#使本机时间与中间服务器192.168.37.7同步
    #查询ntpd服务的启动状态(未启动)
    service ntpd status
    #查询开机自启状态(默认off)
    chkconfig --list ntpd
    #模拟
    date -s “-2 year”
    #启动ntpd服务
    service ntpd start
    #将ntpd服务设为开机自启
    chkconfig ntpd on
    #查询同步情况(*表示同步成功)
    ntpq -p或chronyc sources -V
    #验证时间是否同步
    date
    
    展开全文
  • 我作为一个教师就在想如何解决这个问题。 一开始我编辑幻灯片母板,在母板页脚中插入日期时间,结果只能看到幻灯片开始播放时的时间!这是一个静态时间,没用。然后我想到了使用VB编写一个时钟显示小程序。可是...

    你在播放幻灯片时,是不是想过:要是有时间显示在一旁,能提示我掌控时间该多好啊!我作为一个教师就在想如何解决这个问题。

    一开始我编辑幻灯片母板,在母板页脚中插入日期时间,结果只能看到幻灯片开始播放时的时间!这是一个静态时间,没用。然后我想到了使用VB编写一个时钟显示小程序。可是我找不到将程序置于前端的设计方法。只要幻灯片一开始播放(全屏),时钟就不见了踪影。我想起了Vista系统windows边栏中美丽的小时钟,我用时钟小工具解决了在播放幻灯片显示时钟问题。我的方法是:将时钟工具从边栏中拖出,关闭边栏,设置时钟前端显示。此时你播放幻灯片时,时钟就停留在你的播放屏幕上了,效果见图1所示,你还可以将它拖到你想要放的任意位置呢。

        图 1 幻灯片播放同步显示时钟

    1 幻灯片播放同步显示时钟

     

     如果你使用的是Windows 7,则在程序中打开并添加桌面小工具,设计前端显示即可。而如果你还在使用XP,则应该解决引入小工具的问题,使用诸如“超级兔子的桌面秀”之类的工具,添加小工具后对其进行简单设计就可以了。

     

    展开全文
  •  timedatectl命令可以查询和更改系统时钟和设置,你可以使用此命令来设置或更改当前的日期,时间和时区,或实现与远程NTP服务器的自动系统时钟同步。  在本教程中,我要讲的是,如何在你的Linux系统上,通过使用...

      timedatectl命令对于RHEL / CentOS 7和基于Fedora 21+的分布式系统来说,是一个新工具,它作为systemd系统和服务管理器的一部分,代替旧的传统的用在基于Linux分布式系统的sysvinit守护进程的date命令。

      timedatectl命令可以查询和更改系统时钟和设置,你可以使用此命令来设置或更改当前的日期,时间和时区,或实现与远程NTP服务器的自动系统时钟同步。

      在本教程中,我要讲的是,如何在你的Linux系统上,通过使用来自于终端使用timedatectl命令的NTP,设置date、time、timezone和synchronize time来管理时间。让你的Linux服务器或系统保持正确的时间是一个很好的实践,它有以下优点:

      1)维护及时操作的系统任务,因为在Linux中的大多数任务都是由时间来控制的。

      2)记录事件和系统上其它信息等的正确时间。

     

    将Linux系统时钟同步到远程NTP服务器

      NTP即Network Time Protocol(网络时间协议),是一个互联网协议,用于同步计算机之间的系统时钟。timedatectl实用程序可以自动同步你的Linux系统时钟到使用NTP的远程服务器。

      注意,你必须在系统上安装NTP以实现与NTP服务器的自动时间同步。

      要开始自动时间同步到远程NTP服务器,在终端键入以下命令。

    # timedatectl set-ntp true

      或者:timedatectl set-ntp yes

         要禁用NTP时间同步,在终端键入以下命令。

    # timedatectl set-ntp false

    如何查找和设置Linux本地时区

    1、要显示系统的当前时间和日期,使用命令行中的timedatectl命令,如下:

    # timedatectl status

      在上面的示例中,RTC time就是硬件时钟的时间。

    2、Linux系统上的time总是通过系统上的timezone设置的,要查看当前时区,按如下做:

    # timedatectl 
    OR
    # timedatectl | grep Time

    3、要查看所有可用的时区,运行以下命令:

    # timedatectl list-timezones

    4、要根据地理位置找到本地的时区,运行以下命令:

    # timedatectl list-timezones | egrep -o ‘’Asia/B.*”
    # timedatectl list-timezones | egrep -o “Europe/L.*”
    # timedatectl list-timezones | egrep -o “America/N.*”

    5、要在Linux中设置本地时区,使用set-timezone开关,如下所示。

    # timedatectl set-timezone "Asia/Kolkata"

      中国上海的时区:

    # timedatectl set-timezone "Asia/Shanghai"

       推荐使用和设置协调世界时,即UTC。

    # timedatectl set-timezone UTC

       你需要输入正确命名的时区,否者在你改变时区的时候,可能会发生错误。在下面的例子中,由于 “Asia/Kalkata” 这个时区是不正确的,因此导致了错误。

     

    如何在Linux中设置时间和日期

      你可以使用timedatectl命令,设置系统上的日期和时间,如下所示:

    6、设置Linux中的时间。只设置时间的话,我们可以使用set-time开关以及HH:MM:SS(小时,分,秒)的时间格式。

    # timedatectl set-time 15:58:30

     7、在Linux中设置日期。只设置日期的话,我们可以使用set-time开关以及YY:MM:DD(年,月,日)的日期格式。

    # timedatectl set-time 20151120

    8、设置日期和时间:

    # timedatectl set-time '16:10:40 2015-11-20'

     

    如何在Linux中查找和设置硬件时钟


     

    9、要设置硬件时钟以协调世界时,UTC,可以使用 set-local-rtc boolean-value选项,如下所示:

      首先确定你的硬件时钟是否设置为本地时区:

    # timedatectl | grep local

      将你的硬件时钟设置为本地时区:

    # timedatectl set-local-rtc 1

      将你的硬件时钟设置为协调世界时(UTC):

    # timedatectl set-local-rtc 0


    原文链接:http://www.codeceo.com/article/linux-timedatectl-set-time.html

                      https://www.cnblogs.com/zhi-leaf/p/6282301.html

    英文原文:How to Set Time, Timezone and Synchronize System Clock Using timedatectl Command

    展开全文
  • IEEE1588精确时钟同步协议,通过对工业以太网中PTP协议的深入研究和分析,着重探讨了如何在装有linux系统的现场设备上实现时间同步,并给出相应的实现方案。本代码为可运行的ieeev1.0版本代码,在linux下可用,完成ptp...
  • 针对如何保证精确的分布式时钟同步实现预期的实时调度和控制问题,通过对一类基于全双工交换式以太网并采用总线型拓扑的网络化控制系统时延特征的分析,结合网络精确时钟同步协议,在分析了其可行性的基础上,给出...
  • 最近项目上新上了2台时钟设备,需要把网络内的一百多台linux服务器配置NTP服务,实现时钟设备时间同步,为了避免每台设备挨个配置的麻烦,写了一个python脚本。 脚本分3个文件,第一个是python脚本,第二个是主机...
  • 这篇文章介绍一下两个时钟同步的网络协议:NTP和PTP。 这里不涉及协议的原理和具体实现(想了解的可自行Google),重点是如何搭建起这两个服务。 1. NTP及PTP简介 NTP(Network Time Protocol)是用于不同计算机之间...
  • 这就需要将系统中各个部件的局部时间统一,进行时钟同步。随着分布式仿真系统和试验系统在网络上的广泛应用,如何在网络上提供可靠的时钟服务成为一项重要课题。并且由于系统速度上的要求,同步的精度也成为一项重要...
  • 如何才能同步分布式系统中计算机网络的所有时钟服务器 京准科技提供 请勿转载 分布式系统由Tanenbaum定义,“分布式系统是一组独立的计算机,在”分布式系统 — 原理和范例“中作为用户的单一,连贯的系统出现”。...
  • 3.在产生写满与读空信号时需要进行跨时钟域,设计是如何处理的? 4.解释跨时钟域产生的写满与读空信号其实是比较保守的:满而非满,空而非空。 上诉问题的答案在异步fifo的设计(FPGA)里面讲的很清楚。 Verilog...
  • 如何用ESP8266实现一个网络时钟

    千次阅读 2018-11-02 08:55:06
    功能很简单就是手动app开关插座和定时器开关插座两个功能,对于后面那种功能,我当时挺好奇的,因为可以设置某年某月某日某时某分对插座进行开关机,说到这里,可能大伙觉得挺简单的,不就是服务器那边同步下时间,...
  • 本文的I2C和SPI总线通信案例,将展现如何通过专用的时钟信号线进行数字时钟同步。 之所以,把这两个案例放在一起,是因为,从通信原理的角度来看,这两种通信方式有极大的相识性,也有一定的差别。 通过比较,可以...
  • 引言实现双时钟域数据的交换,最...那么,两级触发器是如何实现同步的呢?本小节就做一个简单的分析和验证。1,一段代码下面是我刚刚从ORPSoC的工程里看到的一段代码://'ddr2_writeback_done':generate in ddr2_if_clk
  • 在抖音APP源码中音频和视频的播放是...音视频都同步于基准时钟。ffplay默认采用视频同步于音频的方式,下面结合ffmpeg 3.1.1源代码分析一下ffplay的音视频同步原理。 总体来看,视频同步于音频的机制主要包括两个部...
  • 由于工业计算机插槽数量有限以及CompactPCI无法同步各个测试模块,所以本系统选用 PXI Express平台通过定时和同步时钟卡利用触发总线、星形触发以及系统参考时钟实现高级的多设备同步。本文以带有高精准度恒温晶振...
  • 用于实现clock condition的最简单方式,就是由Lamport在本文中提出的”logical clocks”,这一概念在该领域产生了深远的影响,这也是该论文被引用地如此之多的原因。同时它也开启了人们关于vector 和 matrix clock ...
  • android2.3中应用程序“时钟”的背景与桌面背景是同步的,请问在源码中是如何实现的?望各位辈请指教,不胜感激!
  • 该软件包基于实现了一个简单的Roughtime客户端 有关Roughtime的更多信息以及编写自己的客户端或服务器的技巧,请访问。 状态说明 艰难时光现在处于试验阶段,随着IETF流程的进行,它将经历向后不兼容的变化。 该库将...
  • 在串行数据传输中,数据接收端需要...那么,如何FPGA中利用低频源同步时钟实现低压差分信号(LVDS)接收字对齐呢?  在串行数据传输中,数据接收端需要一些特定的信息来恢复出正确的字边界,以确定串行码流中哪些比特
  • 但在实际的应用系统中,实现完全同步化的设计非常困难,很多情况下不可避免地要完成数据在不同时钟域间的传递(如高速模块和低速模块之间的数据交换)。这时,如何保持系统的稳定,顺利完成数据的传输就成为一个重要的...
  • ffmpeg 如何音视频同步

    千次阅读 2016-08-19 16:20:12
    output_example.c 中AV同步的代码如下(我的代码有些修改),这个实现相当简单,不过挺说明问题。 音视频同步方法:选择一个参考时钟,参考时钟上的时间是线性递增的,生成数据流时依据参考时钟上的时间给每个...

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 304
精华内容 121
关键字:

如何实现时钟同步