精华内容
下载资源
问答
  • 一 前言:  电磁流量计信号转换器的校验器是一种对电磁流量计信号转换器进行性能测试及标定的装置,已有的...利用电磁流量计信号转换器输出的励磁电流提供电源及同步信号,得到模拟电磁流量计传感器的输出信号,该
  • 一 前言:  电磁流量计信号转换器的校验器是一种对电磁流量计信号转换器进行性能测试及标定的装置,已有的...利用电磁流量计信号转换器输出的励磁电流提供电源及同步信号,得到模拟电磁流量计传感器的输出信号,该
  • 针对合并单元缺乏时钟同步异常状况...利用该装置组成了自动化测试系统,通过自动化闭环测试方法,校验合并单元在时钟同步信号异常的情况下各种性能表现,补充了合并单元测试的测试手段,有助于提高合并单元的可靠性。
  • 1 引言 ...显然,因为发送端和接收端必须有同步信号的支持,使得通信设备和控制技术比异步通信复杂得多[1]。 由于异步通信中需为每个字符添加起始位、停止位,往往还要附加校验位,因而传输速率不
  • 针对符合ISO/IEC 18000-6B标准的UHF RFID读写器需要高效地解码FM0编码的基带信号,从而高效地识别标签返回信息的要求,提出了利用高速MCU分段多次同步、多次采样并结合IQ正交信号复合校验的解码方法对四通道零中频...
  • 在多道程序环境下,进程是并发执行的,不同进程之间存在着...4. 校验方式(CRC32校验) 1. 信号量 可以借助Linux的信号量的PV操作来实现对临界资源的互斥访问。 详情可看博文:http://blog.csdn.net/okiwilldoit/art

    在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系。所谓进程同步(线程同步同理),主要是解决临界资源互斥访问的问题。如多个进程访问同一片共享内存,这片共享内存必须互斥使用。

    一.进程同步

    在Linux下,进程同步的解决方式主要有四种:
    1. 信号量
    2. 文件锁
    3. 无锁CAS
    4. 校验方式(CRC32校验)

    1. 信号量

    可以借助Linux的信号量的PV操作来实现对临界资源的互斥访问。
    详情可看博文:
    http://blog.csdn.net/okiwilldoit/article/details/78401536

    2. 文件锁

    linux下可以使用flock()函数对文件进行加锁解锁等操作。简单介绍下flock()函数:
    1. 定义函数 int flock(int fd,int operation);
    2. 函数说明 flock()会依参数operation所指定的方式对参数fd所指的文件做各种锁定或解除锁定的动作。此函数只能锁定整个文件,无法锁定文件的某一区域。
    3. 参数 operation有下列四种情况:
      LOCK_SH 建立共享锁定。多个进程可同时对同一个文件作共享锁定。
      LOCK_EX 建立互斥锁定。一个文件同时只有一个互斥锁定。
      LOCK_UN 解除文件锁定状态。
      LOCK_NB 无法建立锁定时,此操作可不被阻断,马上返回进程。通常与LOCK_SH或LOCK_EX 做OR(|)组合。
    4. 返回值 返回0表示成功,若有错误则返回-1,错误代码存于errno。

    注意:单一文件无法同时建立共享锁定和互斥锁定,而当使用dup()或fork()时文件描述词不会继承此种锁定。

    flock锁的释放非常具有特色,即可调用LOCK_UN参数来释放文件锁,也可以通过关闭fd的方式来释放文件锁(flock的第一个参数是fd),意味着flock会随着进程的关闭而被自动释放掉。

    简而言之:
    一个进程加LOCK_SH,其他进程也可以加LOCK_SH,但不能加LOCK_EX锁。
    一个进程加LOCK_EX,其他进程不能对该文件加任何锁。
    这种机制类似于读写锁,LOCK_SH是读锁,LOCK_EX是写锁。

    下面是一个实例:
    进程1:

    #include <stdio.h>
    #include <sys/file.h>
    #include <unistd.h>
    #include <errno.h>
    
    int main(void)  
    {  
        FILE *fp = NULL;   
    
        if ((fp = fopen("./file_lock", "wb+")) == NULL) //打开文件  
        {
            printf("file open error,errno=%d!\n",errno);
            return -1;
        }       
        if (flock(fp->_fileno, LOCK_EX) != 0) //给该文件加互斥锁
            printf("file lock by others\n");//加锁失败,阻塞
        while(1)
        {     
            printf("process1-ex\n");
            sleep(1);  
        }    
        flock(fp->_fileno, LOCK_UN); //文件解锁 
        fclose(fp); //关闭文件       
        return 0;  
    } 

    进程2:

    #include <stdio.h>
    #include <sys/file.h>
    #include <unistd.h>
    #include <errno.h>
    
    int main(void)  
    {  
        FILE *fp = NULL;  
        int i = 0;  
    
        if ((fp = fopen("./file_lock", "wb+")) == NULL) //打开文件
        {
            printf("file open error,errno=%d!\n",errno);
            return -1;
        }   
        if(flock(fp->_fileno, LOCK_SH) != 0)//文件加共享锁
        {
            printf("file lock by others\n");//加锁失败,阻塞
        } 
        while(1) //进入循环  
        {     
            printf("process2-sh\n");
            sleep(1);  
        }     
        flock(fp->_fileno, LOCK_UN); //释放文件锁  
        fclose(fp); //关闭文件
        return 0;  
    }

    进程1运行时,其他进程无法获得任何锁运行;
    进程2运行时,其他进程可以获得共享锁运行;

    3.无锁CAS访问

    上面的加锁的方法,虽然可以保证数据的一致性,但是加锁会引起性能的下降,多个进程竞争同一个锁,抢占失败后强制上下文切换。还有一种方法就是使用原子指令。有一个重要的方法叫做CAS(compare and swap)。
    CAS是一组原语指令,用来实现多进/线程下的变量同步。
    在 x86下的指令CMPXCHG实现了CAS,前置LOCK既可以达到原子性操作。
    CAS原语有三个参数,内存地址,期望值,新值。如果内存地址的值==期望值,表示该值未修改,此时可以修改成新值。否则表示修改失败,返回false,由用户决定后续操作。

    bool CAS(T* addr, T expected, T newValue) 
    { 
          if( *addr == expected ) 
         { 
              *addr =  newValue; 
               return true; 
         } 
         return false; 
     }

    如何使用CAS实现无锁呢?

    例如有多个进程访问共享内存中的某个变量,从内存中读取该变量的值为expected,你想要更新该变量的值为newValue,可以调用CAS函数,更新共享内存中的值。因为这是一组原子操作,所以在更新的过程中,不会有其他进程/线程访问到这个变量。

    GCC的CAS,GCC4.1+版本中支持CAS的原子操作(完整的原子操作可参看 GCC Atomic Builtins)

    bool __sync_bool_compare_and_swap (type *ptr, type oldval, type newval, ...)
    type __sync_val_compare_and_swap (type *ptr, type oldval, type newval, ...)
    • 1
    • 2

    4. 校验方式

    可以用crc32校验的方式,把变量a的crc32值记录下来,存入另外的变量b。
    在写入变量a的时候,更新完变量a后,再计算出a的crc32值,更新变量b;
    在读取变量a的时候,把读出的值a的crc32值和另外的变量b进行比较,如果不相同,就说明变量a正在更新中,从而实现对该变量的无锁互斥访问。

    这种方式虽然效率比不上CAS,但相对CAS来说,比较简单可控。

    二.线程同步

    同一进程的不同线程可以共享全局变量,所以线程间互斥访问全局变量,也需要同步手段。主要有五种方式:
    1. 互斥锁(pthread_mutex_t )
    2. 条件变量(需要与互斥锁结合使用)
    3. 信号量
    4. 无锁CAS
    5. 校验方式(CRC32校验)

    与进程同步类似,信号量和无锁CAS也支持线程同步,其他方式还是互斥锁和条件信号量。

    展开全文
  • 现有的场消隐期数据传输电路采用专用的行、场分离电路,但应用于数据传输量较少的监控系统成本偏高。...采用奇偶校验法实现数据信号传输的完整性和稳定性。应用于某视频监测系统,已取得了良好效果。
  • 同步通信方式与异步通信方式

    万次阅读 多人点赞 2019-01-06 14:20:46
    同步通信格式:数据以“块”为单位,一个数据块包括同步字符、数据及校验字符CRC。 通信连线通常采用三线制: SDA(信号线)、SCL(时钟线)、GND(地线) 优点是数据传输速率较高,常用作串行系统总线(内总线)...

    同步通信方式

           以一串字符为一个传送单位,字符间不加标识位,在一串字符开始用同步字符表示,硬件要求高,通信双方须严格同步。

    同步通信格式:数据以“块”为单位,一个数据块包括同步字符、数据及校验字符CRC。

    通信连线通常采用三线制:

    SDA(信号线)、SCL(时钟线)、GND(地线)

    优点是数据传输速率较高,常用作串行系统总线(内总线),如I2C、SPI、USB等;缺点是硬件上要求发送时钟和接收时钟保持严格同步。

     

    异步通信方式

    以字符为传送单位,用起始位和停止位标识每个字符的开始和结束字符,间隔不固定,只需字符传送时同步

    异步通信格式如下图

    (1)没有数据发送时,数据线保持"1"状态。

    (2)发送数据时,先发起始位“0”,其后是数据位,异步传送规定低位在前,高位在后

    (3)奇偶位紧跟在数据最高位之后,占用一位(也可省去)

    (4)数据发送完后,再发一位停止位“1”,表示一帧数据结束,同时为接收下一帧数据做准备。在下一帧的起始位“0”到来之前,都是默认的“1”

    通信协议:(1)发送、接收双方的通信速率必须一致。(2)通信双方的数据帧格式必须一致

    优点:不需要传送同步脉冲,可靠性高,所需设备简单适合远距离通信,常用作串行通信总线(外总线),如RS232、RS485等

    缺点:数据中包含有起始位和停止位以实现同步,从而降低了有效数据的传输速率。

    展开全文
  • 同步传输模式 STM

    千次阅读 2011-12-16 13:37:48
    STM: Synchronous Transfer Module  同步传输是一种以数据块为传输单位的数据传输方式,该方式下数据块与数据块之间的时间间隔是固定的,必须严格地规定... 同步传输是以同步的时钟节拍来发送数据信号的,因此在一
     STM: Synchronous Transfer Module
    
      步传输是一种以数据块为传输单位的数据传输方式,该方式下数据块与数据块之间的时间间隔是固定的,必须严格地规定它们的时间关系。每个数据块的头部和尾部都要附加一个特殊的字符或比特序列,标记一个数据块的开始和结束,一般还要附加一个校验序列,以便对数据块进行差错控制。
      同步传输是以同步的时钟节拍来发送数据信号的,因此在一个串行的数据流中,各信号码元之间的相对位置都是固定的(即同步的)。
      同步传输(Synchronous)
      在同步传输的模式下,数据的传送是以一个数据区块为单位,因此同步传输又称为区块传输。
      在传送数据时,需先送出2个同步字符,然后再送出整批的数据。如图:
      1byte 1byte 1byte 1byte
      ————————————————————
      ▏Sync ▏Sync ▏Data block ▏BCC ▏EOB ▏
      ————————————————————
      Sync:同步字符
      Data block:数据区块
      BCC:区块检查字符
      EOB:区块结束字符
      特点
      同步传输(Synchronous Transmission):同步传输的比特分组要大得多。它不是独立地发送每个字符,每个字符都有自己的开始位和停止位,而是把它们组合起来一起发送。我们将这些组合称为数据帧,或简称为帧。
      数据帧的第一部分包含一组同步字符,它是一个独特的比特组合,类似于前面提到的起始位,用于通知接收方一个帧已经到达,但它同时还能确保接收方的采样速度和比特的到达速度保持一致,使收发双方进入同步。
      帧的最后一部分是一个帧结束标记。与同步字符一样,它也是一个独特的比特串,类似于前面提到的停止位,用于表示在下一帧开始之前没有别的即将到达的数据了。

     

      异步传输和同步传输的区别
      收发两端对时间的精确度要求高低而已。同步要求高,异步没有同步要求那么高。异步通信”是一种很常用的通信方式。异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的。当然,接收端必须时刻做好接收的准备(如果接收端主机的电源都没有加上,那么发送端发送字符就没有意义,因为接收端根本无法接收)。发送端可以在任意时刻开始发送字符,因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够正确地将每一个字符接收下来。异步通信的好处是通信设备简单、便宜,但传输效率较低(因为开始位和停止位的开销所占比例较大)。异步通信也可以是以帧作为发送的单位。接收端必须随时做好接收帧的准备。这是,帧的首部必须设有一些特殊的比特组合,使得接收端能够找出一帧的开始。这也称为帧定界。

     

         帧定界还包含确定帧的结束位置。这有两种方法。一种是在帧的尾部设有某种特殊的比特组合来标志帧的结束。或者在帧首部中设有帧长度的字段。需要注意的是,在异步发送帧时,并不是说发送端对帧中的每一个字符都必须加上开始位和停止位后再发送出去,而是说,发送端可以在任意时间发送一个帧,而帧与帧之间的时间间隔也可以是任意的。在一帧中的所有比特是连续发送的。发送端不需要在发送一帧之前和接收端进行协调(不需要先进行比特同步)。每个字符开始发送的时间可以是任意的t0 0 1 1 0 1 1 0起始位结束位t每个帧开始发送的时间可以是任意的以字符为单位发送以帧为单位发送帧开始帧结束 “同步通信”的通信双方必须先建立同步,即双方的时钟要调整到同一个频率。收发双方不停地发送和接收连续的同步比特流。但这时还有两种不同的同步方式。一种是使用全网同步,用一个非常精确的主时钟对全网所有结点上的时钟进行同步。另一种是使用准同步,各结点的时钟之间允许有微小的误差,然后采用其他措施实现同步传输。

     

      同步传输通常要比异步传输快速得多。接收方不必对每个字符进行开始和停止的操作。一旦检测到帧同步字符,它就在接下来的数据到达时接收它们。另外,同步传输的开销也比较少。例如,一个典型的帧可能有500字节(即4000比特)的数据,其中可能只包含100比特的开销。这时,增加的比特位使传输的比特总数增加2.5%,这与异步传输中25 %的增值要小得多。随着数据帧中实际数据比特位的增加,开销比特所占的百分比将相应地减少。但是,数据比特位越长,缓存数据所需要的缓冲区也越大,这就限制了一个帧的大小。另外,帧越大,它占据传输媒体的连续时间也越长。在极端的情况下,这将导致其他用户等得太久。
    展开全文
  • 低频信号发生器采用单片机波形合成发生器产生高精度,低失真的正弦波电压,可用于校验频率继电器,同步继电器等,也可作为低频变频电源使用。
  • 1. 概念 通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。 它将要传输的资料在串行通信与并行通信之间加以转换。...在UART上追加同步方式的序列信号变换电路的

    1. 概念

    通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。

    它将要传输的资料在串行通信并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。

    具体实物表现为独立的模块化芯片,或作为集成于微处理器中的周边设备。一般是RS-232C规格的,与类似Maxim的MAX232之类的标准信号幅度变换芯片进行搭配,作为连接外部设备的接口。在UART上追加同步方式的序列信号变换电路的产品,被称为USART(Universal Synchronous Asynchronous Receiver Transmitter)。


    2. 接线

    一般情况硬件连接比较简单,仅需要3条线,注意连接时两个设备UART电平,如电平范围不一致请做电平转换后再连接,如下图所示:

    • TX:发送数据端,要接对面设备的RX
    • RX:接收数据端,要接对面设备的TX
    • GND:保证两设备共地,有统一的参考平面

    1)正常 USART 模式下,通过这些引脚以帧的形式发送和接收串行数据:

    • 发送或接收前保持空闲线路
    • 起始位
    • 数据(字长 8 位或 9 位),最低有效位在前
    • 用于指示帧传输已完成的 0.5 个、1 个、1.5 个、2 个停止位
    • 该接口使用小数波特率发生器 - 带 12 位尾数和 4 位小数
    • 状态寄存器 (USART_SR)
    • 数据寄存器 (USART_DR)
    • 波特率寄存器 (USART_BRR) - 12 位尾数和 4 位小数。
    • 智能卡模式下的保护时间寄存器 (USART_GTPR)。

    2)在同步模式下连接时需要以下引脚:

    • SCLK:发送器时钟输出。该引脚用于输出发送器数据时钟,以便按照 SPI 主模式进行同步发送(起始位和结束位上无时钟脉冲,可通过软件向最后一个数据位发送时钟脉冲)。RX 上可同步接收并行数据。这一点可用于控制带移位寄存器的外设(如 LCD 驱动器)。时钟相位和极性可通过软件编程。在智能卡模式下,SCLK 可向智能卡提供时钟。在硬件流控制模式下需要以下引脚:
    • nCTS:“清除以发送”用于在当前传输结束时阻止数据发送(高电平时)。
    • nRTS:“请求以发送”用于指示 USART 已准备好接收数据(低电平时)

    3. 协议

    UART作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。

     

    其中各位的意义如下:

    • 起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。
    • 资料位:紧接着起始位之后。资料位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。
    • 奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。
    • 停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。 由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。
    • 空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。
    • 波特率:是衡量资料传送速率的指标。表示每秒钟传送的符号数(symbol)。一个符号代表的信息量(比特数)与符号的阶数有关。例如传输使用256阶符号,每8bit代表一个符号,资料传送速率为120字符/秒,则波特率就是120baud,比特率是120*8=960bit/s。这两者的概念很容易搞错。

    4. 例如

    9600 8N1(9600波特率,8个数据位,没有校验位,1位停止位)为例,这是目前最常用的串口配置,现在我们传输’O’'K’两个ASCII值,'O’的ASCII为79,对应的二进制数据为01001111 ,'K’对应的二进制数据为01001011 ,传输的格式数据如下图所示:

    串口波特率为9600,1bit传输时间大约为104us,传送一个数据实际是10个比特(开始位,8个数据位,停止位),一个bytes传输速率实际为9600*8/10=7680bps。

     

    展开全文
  • 同步通信和异步通信

    2013-05-21 20:48:34
    所谓异步通信,就是发送方发送消息后,接收方不必随时监听有没有传过来的消息,但传送的消息必须有起始位、校验位和结束位等信号,确保接收的信息不出错。 举个简单的例子:大家平时都用的qq就包含这样的思想。...
  • 用模块耦合的理论确定控制模块的同步 一、模块耦合的一般理论模块间的信息联系方式,称为模块的耦合,它是衡量...下层模块执行校验功能,校验结果的控制信号传回上层模块,以控制其他模块的运行。如数据正确,调用正
  • UART简介  通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常...不像SPI,I2C等同步传输信号。所以串口的传输速度和其它协议的速度相比是比较慢的。下面具体讲解一些uart协议以及是如何通信
  • 2011-05-21 11:41:34 | 收到job(sql2000)数据同步完成的信号。 [ SWJCWC1 ] 2011-05-21 11:41:33 | 连接sql2000的校验完成,使用时间:1m:45s。 [ SWJCWC2 ] 2011-05-21 11:39:48 | 接管job(sql2000)成功...
  • 以《UNIX网络编程 卷二》中的样例为例,现在有一个或者多个生产者和一个消费者,生产者负责将一个数组内的所有元素赋值,数组中每个元素的值应该与其下表的值相等,而消费者负责校验生产者生产出来的产品。...
  • 评估板的特性可调输入欠压锁定,可调软启动,明渠复位信号,校验和外部频率同步。 关键特性:同步降压型DC-DC转换器原理图、PCB截图: 应用基站电源 配电稳压 通用负载点电源 高压单板系统 工业电源 壁式变压器稳压 附件...
  • 串行通信的通信方式:同步通信:带时钟同步信号传输; SPI,IIC通信 异步通信:不带时钟同步信号; UART 通用同步异步收发器的原理框图 常用的串口相关寄存器: USART_SR状态寄存器 USART_DR数据寄存器 USART_BRR波特率...
  • 而用千兆网卡传输则需要使用帧同步字,并且在接收端需要对接收到的数据进行同步校验。为此,本文在全彩LED控制系统信号传输中采用了与高速时钟采样进行同步接收的LVDS传输方案,从而省去了同步字和控制信号,且...
  • 而用千兆网卡传输则需要使用帧同步字,并且在接收端需要对接收到的数据进行同步校验。为此,本文在全彩LED控制系统信号传输中采用了与高速时钟采样进行同步接收的LVDS传输方案,从而省去了同步字和控制信号,且...
  • 设计一个时分复用(TDM)系统,实现3路数字信号的共路传输(包括发送和接收)。帧同步信号采用巴克码(barker);设置1位奇偶校验位,放置在每一帧的后面,采用同步方式传输
  • 物理层由信号和介质组成 信号分类: 模拟信号是一种不断变换的物理量 ,适用电话...帧封装,传输,同步 差错校验 MAC地址:媒体访问控制地址(Media Access Control Address) MAC地址结构是由:48位2进制数字 12位...
  • 链路创建,维护,管理帧封装,传输,同步差错校验。 2.2地址 2.3帧封装 2.4交换机工作管理 2.5组建局域网 安装软件 1 安装cisco cpt软件 2 部署交换机和主机 3 直通线连线,主机和交换机。 4 为每个主机配置IP,...
  • 网络中物理层 ...数据链路层有创建链路维护管理帧封装,传输同步差错校验的功能 数据链路层使用MAC地址 即媒体访问控制地址 Mac地址帧封装:目标MAC//源MAC//数据//CRC 交换机的工作原理是学习 广播 转发
  • 数据链路层的功能就是链路创建,能够维护管理帧封装,传输,同步差错校验。 数据链路层的地址:MAC地址,是媒体访问控制地址。由48位二进制数字,12位十六进制数字,举个例子:00-21-CC-C3->8C-B0前六位是厂商...
  • 介绍的TETRA端-端加密系统,使用帧挪用实现语音信号同步,使用帧插入技术实现视频信号同步。系统使用分组密码的输出反馈模式实现端-端密钥序列发生器。在短信息端-端加密应用中,密码分组链接模式用来实现密码...
  • 计网题目

    2021-03-25 19:08:31
    物理层长江雨课堂 长江雨课堂 双绞线由两根具有绝缘保护层的铜导线按一定密度互相绞在一起组成,这样...能从数据信号波形中提取同步信号的典型编码是( ) 。 A 循环冗余校验码 B 不归零码 C 定比码 D 曼彻斯特编码 ...
  • 一.物理层1.1信号分类a.模拟信号 不断变换的物理量,适用于电话网络。b.数字信号 两种恒定物理量,适用于计算机网络,...数据链路层2.1功能链路创建、维护、管理帧封装、传输、同步差错校验2.2地址2.2.1MAC地址 媒...
  • 网络管理实战2 一、物理层 1、信号 (1)、模拟信号:不断变换的物理量 (2)、数字信号:两种恒定物理量 优点:抗噪音和抗衰减比较强...帧封装,传输,同步 差错校验 2、地址:MAC地址(媒体访问控制地址)...
  • stm32学习笔记 串口

    2020-08-21 23:41:16
    同步通信:收发双方有clk同步信号线约定好的 异步信号:只有一根线,没有clk 防止信号紊乱 1.数据位要确定,有无奇偶校验,停止位长度,波特率 如果要通过串口要接pc机,需要rs232的电平转换芯片,usb为ttl转换芯片...

空空如也

空空如也

1 2 3 4 5 ... 10
收藏数 191
精华内容 76
关键字:

同步信号校验