精华内容
下载资源
问答
  • 什么是波特,波特怎么计算

    万次阅读 多人点赞 2020-06-04 11:08:34
    ✍ 什么是波特,波特怎么计算➹ 概述:  ☆简而言之,串口传输的波特即为每秒钟传输二进制的位数。  ☆脱离枯燥乏味的文字描述,我们用波形和数字来看看波特是什么吧☟。  ☆说明:系统时钟50M,波特...

    ✍ 什么是波特率,波特率怎么计算➹

    概述:
      ☆简而言之,串口传输的波特率即为每秒钟传输二进制的位数。
      ☆脱离枯燥乏味的文字描述,我们用波形和数字来看看波特率是什么吧☟。
      ☆说明:系统时钟50M(为串口提供时钟的时钟频率),波特率115200。
      
    基础知识:

    系统时钟(为串口提供时钟的时钟频率)-50M 时钟周期150106{{\rm{1}} \over {{\rm{50*1}}{{\rm{0}}^{\rm{6}}}}}
    1个时钟周期可以计数1次 50M时钟1s计数50 000 000个
    系统时钟-50M 计1个数需要150106{{\rm{1}} \over {{\rm{50*1}}{{\rm{0}}^{\rm{6}}}}}s
    波特率-115200 1s传输二进制的位数115200bit
    波特率-115200 传输1bit需要 1/115200s=8.68us
    50M系统时钟------波特率为115200 传输1bit需要计数(50106/115200)=434({\rm{50*1}}{{\rm{0}}^{\rm{6}}}/{\rm{115200}}) = 434

    以上重点是推导出50M系统时钟—波特率为115200条件下传输1bit需要计数个数为434。

    串口传输格式
    ●我们通常用的串口传输格式为:1bit起始位+8bit数据位+1bit停止位(无奇偶校验位),如下图所示:
    在这里插入图片描述
    所以传输1Byte数据串口需要传输10bit数据。上面计算得传输1Bit需要的时间为8.68us,则传输1Byte需要时间为8.68*10=86.8us。

    波特率
      由基础知识知50M系统时钟—波特率为115200条件下传输1bit需要计数个数为434。那么1Byte(串口传输格式为:1bit起始位+8bit数据位+1bit停止位)是不是循环计数10次434就可以传输完毕。
    直接上图:图中描述了1Byte数据传输的示意图,重点都在图里!!!。
    在这里插入图片描述
    ✍什么时候去采样串口线上的数据呢?
      ★观察上图,Buad_Flag信号(通道2)表示了传输1Bit传输的间隔,每遇到1个Buad_Flag=1的信号,数据线上切换1次数据,所以两个Buad_Flag=1之间的数据是稳定的数据,根据抽样定理是不是应该在两个Buad_Flag=1信号的中间去采样数据呢,其实就是在1bit数据持续期间的中间点采样,才能得到最稳定的数据。见下图,重点都在图里!!!
      在这里插入图片描述
      ★图中序号①-⑩分别为10bit数据的采样点,采样点处提取数据为1010_1010(0xAA)。

    ★★★至此,从下往上再看一遍,就明白了我们所熟悉的波特率(115200/9600/…)怎么来的。
    ☞然后再想想为什么51单片机会有一个定时器专门服务于串口。
    ☞再想想为什么9600波特率和115200波特率不能对接了,原理很简单我这边2秒发一次数据,你那边1秒接一次数据,怎么能成功接收呢。

    收发波特率一致:
    在这里插入图片描述
    收发波特率不一致,导致RX端不能正常接收:
    在这里插入图片描述

    ★★★如有错误,欢迎指导。

    展开全文
  • stm32波特率计算

    2018-02-25 14:55:44
    转自:...双方在传输数据的过程中,波特率一致,这是通讯成功的基本保障。下面以STM32单片机为例,讲解一下串口波特计算方法。2. STM32波特相关的寄存器ST...

    转自:http://m.elecfans.com/article/611035.html?fromtype=app

    1. 什么是波特率

    不管是什么单片机,在使用串口通信的时候,有一个非常重要的参数:波特率。什么是波特率:波特率就是每秒传送的字节数。双方在传输数据的过程中,波特率一致,这是通讯成功的基本保障。下面以STM32单片机为例,讲解一下串口波特率的计算方法。

    2. STM32波特率相关的寄存器

    STM32单片机设置波特率的寄存器只有一个:USART_BRR寄存器,如下图所示。

    该寄存器的有效位数为16位,前4位用于存放小数部分,后12位用于存放整数部分。将波特率算出来后,数值填入这个波特率就可以了。下面介绍如何计算。

    3. 波特率计算方法

    STM32的数据手册给出了计算方法,有一个公式,如下图所示:

    在这个公式上,共有三个变量,其中两个我们是知道的,Fck和Tx/Rx波特率 这两个是已知的,USARTDIV是未知的。通过该公式的描述可以看出如果使用USART1的话,那Fck就是PCLK2=72MHz,否则就是PCLK1=36MHz,Tx/Rx波特率这个参数是已知的。只需要计算出USARTDIV的值赋值给USART_BRR寄存器就可以了。以115200为例,将公式变形后得到:USARTDIV = 72×1000000/(16×115200) = 39.0625。即将39.0625写入USART_BRR即可。

    前文说过,USART_BRR的前4位存放小数部分,后12位存放整数部分。

    那小数部分DIV_Fraction = 0.0625×16 = 1 = 0x01;那整数部分DIV_Mantissa = 39 = 0x27;那USART_BRR = 0X271;

    数据手册给我们提供了一张数据表:

    在这张数据表上,已经算出了常用的波特率值,我们可以拿来直接用。但是如果我们想把波特率的计算做成一个传参函数的方式,如:USART_INIT(uint_t 16 Baud),在调用时只需要写USART_INIT(9600),USART_INIT(115200),那程序该怎么写呢?

    4. 程序的实现

    下面介绍的是寄存器版的程序。

    程序第一步45行:先计算得到USART_DIV,这个就是前面公式的变形;程序第二步46行:获得USART_DIV的整数部分;程序第三步47行:获得USART_DIV的小数部分;程序第四步48行:将整数部分左移4位,即存入BRR寄存器的后12位;程序第五步49行:将整数和小数部分合在一起,即前4位和后12位重新组合;程序第六步50行:将计算出来的数值赋给BRR寄存器。

    这样一个将波特率作为形参的函数就完成了。从以上来看的话,波特率的计算好像也不是很难啊。

    展开全文
  • QPSK调制误码率计算

    千次阅读 2020-04-22 21:28:35
    文章目录误码概念绘制误码曲线代码...将发送端的码元序列和接收端码元序列进行比较,得到错误码元数,具体过程是按位异或发送端的码元序列和接收端码元序列,使不同位表达为1,相同位表达为0,并计算异或后的...

    误码率概念

    传输信息的有效性和可靠性是通信系统最重要的质量指标,对于数字通信系统,有效性用信息的传输速率来衡量,可靠性用错误率(误比特率和误码率)来衡量。
    公式:误码率=错误码元数/传输的总码元数
    将发送端的码元序列和接收端码元序列进行比较,得到错误码元数,具体过程是按位异或发送端的码元序列和接收端码元序列,使不同位表达为1,相同位表达为0,并计算异或后的和,即得到错误码元数,按上面的公式计算出误码率。

    绘制误码率曲线

    信号的传送过程中,由于噪声的干扰,可能出现解码错误,对于QPSK通信系统,在信号进行调制后,在信道中对信号采用加性高斯白噪声进行干扰,所以在这一过程中在调制信号中加入高斯白噪声,然后对这个调制信号进行解调,将原始信号与解调信号进行比较,计算出误码率。

    代码实现

    其中调制解调信号的产生在前面的博客中已经介绍过了,不在赘述。
    1、首先自定义异或函数,用于后面计算误码率:

    def bitxor(lst1, lst2):
        """两个二进制列表的逐位异或"""
        if len(lst1) != len(lst2):
            print('两个列表长度不一致!')
            return []
        else:
            return [lst1[x]^lst2[x] for x in range(len(lst1))]
    

    2、误码率计算

    error1 = bitxor(data, demodata)
    error11 = np.sum(error1)
    Awgn_num_BER = error11/nb
    

    3、绘制误码率曲线

    #误码率曲线
    SNRindB1 = np.arange(0, 7, 1)
    SNRindB2 = np.arange(0, 7, 0.1)
    
    #高斯信道
    smld_bit_awgn_err_prb = []
    for i in range(len(SNRindB1)):
        pb1 = cm_sm33(SNRindB1[i])
        smld_bit_awgn_err_prb.append(pb1)
        
    #理论曲线
    theo_err_awgn_prb = []
    for i in range(len(SNRindB2)):
        SNR = np.exp(SNRindB2[i]*np.log(10)/10)                        #信噪比
        theo_err_awgn_prb.append(0.5*special.erfc(np.math.sqrt(SNR)))  #高斯噪声理论误码率
        
    
    plt.figure(figsize=(12, 8))
    plt.semilogy(SNRindB2, theo_err_awgn_prb, 'b')
    plt.semilogy(SNRindB1, smld_bit_awgn_err_prb, 'r*')
    plt.title('误码率曲线', fontproperties=font,fontsize=20)
    plt.axis([0, 6, 1.0e-3, 1e-1])
    plt.gca().yaxis.set_major_formatter(mticker.FormatStrFormatter('%.0e'))
    plt.xlabel('Eb/No',fontproperties=font, fontsize=20)
    plt.ylabel('BER',fontproperties=font, fontsize=20)
    plt.legend(['理论AWGN','仿真AWGN',], fontsize=14)
    plt.show()
    

    运行结果:
    在这里插入图片描述

    参考博客:https://blog.csdn.net/qq_40074819/article/details/105488447

    展开全文
  • ps 与 top 对于cpu使用一致的问题

    千次阅读 2017-02-21 12:49:11
    主要根据“2、计算模型”的思路利用获得的数据进行计算 二、top命令中%CPU字段的含义 根据"man top"中的解释: "The task's share of the elapsed CPU time since the last screen update, ...
    一、ps命令中%CPU字段的含义
    1、"man ps"中的解释
    CPU usage is currently expressed as the percentage of time spent running during the entire lifetime of a process.
    This is not ideal,and it does not conform to the standards that ps otherwise conforms to.CPU usage is unlikely to add up to exactly 100%.


    2、计算模型
    %CPU=(进程的生命周期中占用CPU的时间)*100/(进程的生命周期代表的时间长度)
    比如一个进程的生命周期的时间长度是1000s,然后在这1000s内占用CPU的时间是500s,那么
    %CPU=500*100/1000=50
    即最后的结果表示50%


    3、具体计算过程
    1)获取数据
    主要是从/proc/uptime文件和/proc/[PID]/stat文件获取相关数据
    2)计算
    主要根据“2、计算模型”的思路利用获得的数据进行计算




    二、top命令中%CPU字段的含义
    根据"man top"中的解释:
    "The task's share of the elapsed CPU time since the last screen update, expressed as a percentage of total CPU time."


    top命令中的%CPU字段的含义跟ps命令中的%CPU字段的含义不一样
    top命令中的%CPU字段表示:在一个固定的间隔时间内,某个进程使用的CPU时间占总CPU时间(即这段间隔时间)的比值。[在Window操作系统下的资源管理器中的CPU字段含义也是如此]




    三、手动计算top命令中的%CPU字段
    1、利用ps
    确定一个间隔时间,在间隔时间的开始处,执行ps命令,获取某个进程在开始处已经使用的CPU时间;在间隔时间的结束处,执行ps命令,获取某个进程在结束处已经使用的CPU时间。
    间隔时间内进程使用的CPU时间=结束处使用的CPU时间-开始处使用的CPU时间
    %CPU=间隔时间内进程使用的CPU时间*100/CPU总时间(即间隔时间长度)


    2、利用/proc下的数据
    其实ps命令的数据来自于/proc目录下的文件,因而如果直接使用/proc下的数据也是可以实现“手动计算top命令中的%CPU字段”的目标的


    参考文献:
    [1]http://unix.stackexchange.com/questions/58539/top-and-ps-not-showing-the-same-cpu-result

    展开全文
  • 用 vmstat 查看系统cpu空闲, id是cpu的空闲,可以看出,空闲一直在73%以上 用 ps aux 统计两个compress进程的cpu占用,长时间恒定在15.5%和28.9% 用 top统计两个compress进程的cpu占用,可以看出是一个...
  • CPU占用率计算原理

    千次阅读 2014-05-03 00:51:27
    1 CPU占用率计算原理  1.1 相关概念  在Linux/Unix下,CPU利用率分为用户态、系统态和空闲态, 分别表示CPU处于用户态执行的时间,系统内核执行的时间,和空闲系统进程执行的时间。 下面是几个与CPU占用率相关...
  • 留存怎么计算

    千次阅读 2020-11-18 19:33:44
    留存计算方式是以下三个维度的组合合集: 一 新增和活跃 二 账号和设备 三 第X日和X日内 所以,留存的定义有八种方式,分别是: 新增账号第X日:某日新增的账号中,在新增日后第X日有登录行为记为留存 新增...
  • 用 vmstat 查看系统cpu空闲, id是cpu的空闲,可以看出,空闲一直在73%以上 用 ps aux 统计两个compress进程的cpu占用,长时间恒定在15.5%和28.9% 用 top统计两个compress进程的cpu占用,可以看出是一个...
  • 因此,在获得尽量高的波特的同时,还要保证尽量小的波特误差,最粗暴的方式就是把目标波特范围内的所有波特一遍,然后取波特高且误差小的。 二、STM32F4波特计算方法 以stm32f4系列为例
  • python实现计算精度、召回和F1值

    万次阅读 多人点赞 2019-03-02 11:09:47
    python实现计算精度、召回和F1值   摘要:在深度学习的分类任务中,对模型的评估或测试时需要计算其在验证集或测试集上的预测精度(prediction/accuracy)、召回(recall)和F1值。本文首先简要介绍如何计算...
  • 可以用下面的命令将 cpu 占用高的线程找出来: ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu这个命令首先指定参数'H',显示线程相关的信息,格式输出中包含:user,pid,ppid,tid,time,%cpu,cmd,然后再用%...
  • 我们在使用深度学习解决一个分类问题的时候,需要计算准确来评价算法,有的时候会使用top3、top5准确,那么在tensorflow中如何实现呢? 一般分类网络都会使用交叉熵损失函数,在使用交叉熵之前,对于n分类问题...
  • 贷款迁徙率计算方法

    千次阅读 2008-01-14 15:48:00
    风险迁徙 正常贷款迁徙 本指标计算本外币口径数据。 计算公式: 正常贷款迁徙=(期初正常类贷款中转为不良贷款的金额+期初关注类贷款中转为不良贷款的金额)/(期初正常类贷款余额-期初正常类贷款期间减少金额+期...
  • (三)python计算夏普

    千次阅读 2020-03-26 16:24:24
    如果某个投资组合第一天收益为5%、第二天收益为9%、第三天的收益为-10%(这里的收益是相对于前一天的数据或者前一个周期的数据),同时假设国债的收益为4%,计算夏普: shaper ration=average(5%+9%-10%)-...
  • /// 一致性HASH,解决传统HASH的扩容难的问题 /// 注:常用与分布式缓存与分表 /// </summary> /// <typeparam name="T">泛型</typeparam> public class ConsistentHash<T> ...
  • 对于我的日常而言,关注的是是否正常,所以一般用误报和漏报。 误报指的是本来正常,但是误认为是异常。对应于FN 漏报指的是本来异常,但是误认为是正常。对应于FP 误报+召回=1 漏报+准确=1 ...
  • 双方在传输数据的过程中,波特率一致,这是通讯成功的基本保障。下面以STM32单片机为例,讲解一下串口波特计算方法。 STM32波特相关的寄存器 STM32单片机设置波特的寄存器只有一个:USART_BRR寄存器,如下...
  • 计算广告 互联网广告系统综述系列博文 计算广告学系列视屏-刘鹏 计算广告学讲义-刘鹏 统计学习模型 技术文章 逻辑回归LR模型简介 FFM讲解PPT 深入FFM原理与实践 GBDT算法原理与系统设计简...
  • 一致性哈希算法详解

    千次阅读 2017-04-09 14:13:30
    一致性Hash算法通过一个叫一致性Hash环的数据结构实现Key到缓存服务器的Hash映射,如下图所示: 图1 先构造一个长度为0-2^32的整数环,根据节点名称的Hash值将缓存服务器节点放置在这个Hash环上。然后根据需要...
  • LINUX CPU利用率计算

    万次阅读 2011-08-22 21:54:27
    总的Cpu使用率计算 计算方法: 1、 采样两个足够短的时间间隔的Cpu快照,分别记作t1,t2,其中t1、t2的结构均为: (user、nice、system、idle、iowait、irq、softirq、stealstolen、guest)的9元组; 2、...
  • 图解一致性hash算法和实现

    千次阅读 2019-05-18 18:35:13
    一致性hash算法是什么? 一致性hash算法,是麻省理工学院1997年提出的一种算法,目前主要应用于分布式缓存当中。 一致性hash算法可以有效地解决分布式存储结构下动态增加和删除节点所带来的问题。 在Memcached、Key-...
  • 计算CPU使用

    千次阅读 2010-12-01 21:35:00
    <!...--[endif]-->有关Windows平台下CPU使用计算   <!--[if !supportLists]-->1.<!--[endif]-->Windows下CPU使用的定义 <!--[if !supportLists]-->a) <!--[endif]-->CP
  • 在深度学习的分类任务中,对模型的评估或测试时需要计算其在验证集或测试集上的预测精度(prediction/accuracy)、召回(recall)和F1值。本文首先简要介绍如何计算精度、召回和F1值,其次给出python编写的模块...
  • 一致Hash算法

    千次阅读 2015-07-19 09:15:43
    一致性哈希算法是分布式系统中常用的算法。比如,一个分布式的存储系统,要将数据存储到具体的节点上,如果采用普通的hash方法,将数据映射到具体的节点上,如key%N,key是数据的key,N是机器节点数,如果有一个机器...
  • 有关Windows平台下CPU使用计算

    千次阅读 2015-03-05 13:34:17
    一. 有关Windows平台下CPU使用率的计算   1. Windows下CPU使用率的定义 ...2. CPU使用率计算公式 根据CPU使用率的定义我们可以得出在某一段时间内总的CPU使用率的计算公式: sysTime:表示该时
  • 2、系统的总CPU使用率计算公式 根据CPU使用率的定义我们可以得出在某一段时间内总的CPU使用率的计算公式: sysTime:表示该时间段内总的CPU时间=CPU处于用户态和内核态CPU时间的总和,即sysTime ...
  • 今天在课堂上给大家讲到信息熵、信息增益和信息增益的时候,很多同学都不理解,对数学公式很敬畏,其实不然,接下来我就使用Python原生代码实现信息熵、信息增益、信息增益计算!!! 1.信息熵: 1.1 信息熵...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 248,277
精华内容 99,310
热门标签
关键字:

一致率怎么计算