历史上的今天

今天是:2024年10月13日(星期日)

正在发生

2021年10月13日 | STM32系统学习——USART(串口通信)

发布者:快乐旅行 来源: eefocus关键字:STM32  USART  串口通信 手机看文章 扫描二维码
随时随地手机看文章

串口通信是一种设备间非常常用的串行通行方式,其简单便捷,大部分电子设备都支持。


一、物理层

常用RS-232标准,主要规定了信号的用途、通信接口以及信号的电平标准。

这里写图片描述

“DB9接口”之间通过串口信号线建立起连接,串口信号线使用”RS-232标准“传输数据信号,这些信号通过记过电平转换芯片转换成控制器能识别的TLL标准的电平信号,才能实现通信。


1.电平标准

可分为TTL标准以及RS-232标准。

常见的电子电路中常见TTL的电平标准,理想状态使用5V表示二进制逻辑1,0V表示逻辑0;而为了增加串口通信的远距离传输以及抗干扰能力,RS-232使用-15V表示逻辑1,+15V表示逻辑0。

这里写图片描述

因为控制器一般使用TTL电平标准,所以常常使用MA3232芯片将TTL以及RS-232电平的信号进行互相转换。


2.RS-232信号线

最初RS-232串口标准常用于计算机、路由与调制调节器(“猫”)之间通信,设备被分为数据终端设备DTE(计算机、路由)和数据通信设备DCE(调制调节器)。旧台式计算机,一般都有RS-232标准的COM口,也称DB9接口。


DB9信号线说明

这里写图片描述

公头标准接法,只要使用直通型串口线连接起来即可。


二、协议层

协议层中,规定了数据包的内容,它由起始位、主体数据、校验位以及停止位组成,通信双方的数据包格式要约定一致才能正常收发数据 。


1、波特率

异步通信中由于没有时钟信号,所以2个通信设备需约定好波特率,常见的有4800、9600、115200等。


2、通信的起始和停止信号

串口通信的一个数据包从起始信号开始,知道停止信号结束。数据包的起始信号由一个逻辑0的数据位表示,而数据包的停止信号可由0.5、1、1.5或2个逻辑1的数据位表示,只要双方约定一致即可。


3、有效数据

在数据包的起始位之后紧接着的就是要传输的主体数据内容,也称为有效数据,有效

数据的长度常被约定为 5、6、7或 8位长


4、数据校验

在有效数据之后,有一个可选的数据校验位。由于数据通信相对容易受到外部干扰导致传输数据出现偏差,可以在传输过程加上校验位来解决这个问题。校验方法有奇校验(odd)、偶校验(even)、0校验(space)、1校验(mark)以及无校验(noparity)。


奇校验要求有效数据和校验位中“1”的个数为奇数,比如一个 8 位长的有效数据为:01101001,此时总共有 4 个“1”,为达到奇校验效果,校验位为“1”,最后传输的数据将是 8 位的有效数据加上 1 位的校验位总共 9 位。


偶校验与奇校验要求刚好相反,要求帧数据和校验位中“1”的个数为偶数,比如数据帧:11001010,此时数据帧“1”的个数为 4 个,所以偶校验位为“0”。


0 校验是不管有效数据中的内容是什么,校验位总为“0”,1 校验是校验位总为“1”。


三、STM32的USART简介

通用同步异步收发器是一个串行通信设备,可以灵活的与外部设备进行全双工数据交换。

有别与USART,还有一个UART,它在USART基础上裁剪掉了同步通信功能,只有异步通信。简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用的串口通信基本都是 UART。


串口通信一般是以帧格式传输数据,即一帧一帧传输,每帧包含有起始信号、数据信息、停止信息,可能还有校验信息。


USART 满足外部设备对工业标准 NRZ 异步串行数据格式的要求,并且使用了小数波特率发生器,可以提供多种波特率,使得它的应用更加广泛。USART 支持同步单向通信和半双工单线通信;还支持局域互连网络 LIN、智能卡(SmartCard)协议与 lrDA(红外线数据协会) SIR ENDEC规范。


USART支持使用 DMA,可实现高速数据通信。


四、USART功能框图剖析

这里写图片描述

下文结合图片看加深理解。

1、功能引脚

TX:发送数据输出引脚。

RX:接收。

SW_RX:数据接收引脚,属于内部引脚。


nRTS:请求以发送,n表示低电平有效。如果使能 RTS 流控制,当USART接收器准备好接收新数据时就会将nRTS变成低电平;当接收寄存器已满时,nRTS将被设置为高电平。该引脚只适用于硬件流控制。


nCTS:清除以发送(Clear To Send),n表示低电平有效。如果使能 CTS流控制,发送器在发送下一帧数据之前会检测 nCTS 引脚,如果为低电平,表示可以发送数据,如果为高电平则在发送完当前数据帧之后停止发送。该引脚只适用于硬件流控制。


SCLK:发送器时钟输出引脚。这个引脚仅适用于同步模式。


USART:下图是STM32F103VET6芯片的USART引脚

这里写图片描述

USART1的时钟来源于APB2总线时钟,最大频率为72MHZ,其他4个时钟来源于APB1总线时钟,最大频率36MHZ。UART只有异步传输功能,没有SCLK、nCTS和nRTS功能引脚。


2.数据寄存器

USART说数据寄存器(USART_DR)只有低 9 位有效,并且第 9 位数据是否有效要取决于USART 控制寄存器 1(USART_CR1)的 M 位设置,当 M 位为 0 时表示 8 位数据字长,当 M位为 1 表示 9 位数据字长,我们一般使用 8位数据字长。


USART_DR包含了已发送的数据或者接收到的数据。USART_DR实际是包含了两个寄存器,一个专门用于发送的可写 TDR,一个专门用于接收的可读 RDR。当进行发送操作时,往 USART_DR写入数据会自动存储在 TDR内;当进行读取操作时,向 USART_DR读取数据会自动提取 RDR 数据。


TDR和RDR都是介于系统总线和移位寄存器之间。串行通信是一个位一个位传输的,发送时把 TDR 内容转移到发送移位寄存器,然后把移位寄存器数据每一位发送出去,接时把接收到的每一位顺序保存在接收移位寄存器内然后才转移到 RDR。


USART 支持 DMA 传输,可以实现高速数据传输。


3.控制器

USART有专门控制发送的发送器、控制接收的接收器,还有唤醒单元、中断控制等。

使用USART之前需要向USART_CR1寄存器的UE位置1使能USART,UE位用于开启供给串口的时钟。发送或者接收数据字长可选8或9位,由USARTT_CR1的M位控制。


1)发送器

当USART_CR1寄存器的发送使能位TE置1时,启动数据发送,发送移位寄存器的数据会在TX引脚输出,低位在前,高位在后。如果是同步模式SCLK也输出时钟信号。


一个字符帧发送需要3部分:起始位、数据帧、停止位。起始位是一个位周期的低电平,位周期就是每一位占用的时间 ;数据帧就是我们要发送的8或9位数据,数据是最低位开始传输的;停止位是一定时间周期的高电平。


停止位的时间长短可以通过USART控制寄存器2(USART_CR2)的STOP[1:0]位控制,可选0.5个、1个、1.5个、2个停止位。默认使用1个停止位。2个停止位适用于正常USART模式、单线模式和调制解调器模式。0.5和1.5个停止位用于智能卡模式。


当发使能位TE置1之后,发送器开始会发送一个空闲帧(一个数据帧长度的高电平),接下来就可以往USART_DR寄存器写入要发送的数据。在写入最后一个数据后,需等待USART状态寄存器(USART_SR)的TC位为1,表示数据传输完成。USART_CR1寄存器的TCIE位置1,则产生中断。


发送数据时,几个重要的标志位如下:

TE:发送使能。

TXE:发送寄存器为空,发送单个字节时使用。

TC:发送完成,发送多个字节数据时候使用。

TXIE:发送完成中断使能。


2)接收器

将CR1寄存器的RE位置1,使能USART接收,使得接收器在RX线开始搜索起始位。在确定起始位后,就根据RX线电平状态把数据存放在接收移位寄存器内。接收完成后就把接收移位寄存器的数据移到PDR内,并把USART_SR寄存器的RXNE位置。如果USART_CR2寄存器的RXNEIE置1可以产生中断。


接收数据时,几个重要的标志位如下:

RE: 接收使能。

RXNE:读数据寄存器非空。

RXNEIE:发送完成中断使能。


4.小数波特率生成

USART 的发送器和接收器使用相同的波特率。计算公式如下:

这里写图片描述

其中,f PLCK 为 USART 时钟, USARTDIV 是一个存放在波特率寄存器(USART_BRR)的一个无符号定点数。其中 DIV_Mantissa[11:0]位定义 USARTDIV 的整数部分,DIV_Fraction[3:0]位定义 USARTDIV 的小数部分。


例如:DIV_Mantissa=24(0x18),DIV_Fraction=10(0x0A),此时 USART_BRR 值为0x18A;那么USARTDIV的小数位10/16=0.625;整数位24,最终USARTDIV的值为24.625。


如果知道 USARTDIV 值为 27.68,那么 DIV_Fraction=16*0.68=10.88,最接近的正整数为 11,所以 DIV_Fraction[3:0]为 0xB;DIV_Mantissa=整数(27.68)=27,即为 0x1B。

波特率的常用值有 2400、9600、19200、115200。下面以实例讲解如何设定寄存器值得到波特率的值。


我们知道 USART1 使用 APB2 总线时钟,最高可达 72MHz,其他 USART 的最高频率为 36MHz。我们选取 USART1 作为实例讲解,即 f PLCK =72MHz。为得到 115200bps 的波特率,此时:


115200 =72000000/(16 ∗ USARTDIV)


解 得 USARTDIV=39.0625 , 可 算 得 DIV_Fraction=0.0625*16=1=0x01 ,DIV_Mantissa=39=0x27,即应该设置 USART_BRR 的值为 0x171。


5.校验控制

STM32F103系列控制器USART支持奇偶校验。使用校验位时,串口传输的长度将在8位数据帧上加上1位的校验位,总共9位,此时USART_CR1寄存器的M位需要设置位1,即9数据位。将USART_CR1寄存器的PCE位置1就可以启动奇偶校验控制,奇偶校验由硬件自动完成。启动了奇偶校验控制之后,发送数据帧时会自动添加校验位,接收数据自动验证校验位。接收数据时如果出现奇偶校验位验证失败,会将USART_SR寄存器的PE置1,并可以产生奇偶校验中断。


使用了奇偶校验控制位后,每个字符帧的格式变成了:起始位+数据帧+校验位+停止位。


6.中断控制

这里写图片描述

五、USART初始化结构体

初始化结构体的定义在stm32f10x_usart.h文件中,初始化库函数定义在stm32f10x_usart.c中。


USART初始化结构体

typedef struct {

 uint32_t USART_BaudRate; // 波特率

 uint16_t USART_WordLength; // 字长

 uint16_t USART_StopBits; // 停止位

 uint16_t USART_Parity; // 校验位

 uint16_t USART_Mode; // USART 模式

 uint16_t USART_HardwareFlowControl; // 硬件流控制

 } USART_InitTypeDef;


1)USART_BaudRate:波特率设置。标准库函数会根据设定值计算得到USARTDIV值,从而设置USART_BRR的寄存器值。

2)USART_WordLength:.数据帧字长,它设定USART_CR1寄存器M位的值。如果没有使能奇偶位校验控制,一般使用8数据位。

3)USART_StopBits停止位设置。

4)USART_Parity:奇偶校验控制选择。

5)USART_Mode:USART模式选择有USART_Mode_Rx和USART_Mode_Tx,允许使用逻辑或运算选择两个,它设定 USART_CR1寄存器的 RE 位和 TE位。

6)USART_HardwareFlowControl:硬件流控制选择,只有在硬件流控制模式下才有效,可选有,使能RTS、使能CTS、同时使能RTS和CTS、不使用硬件流。


当使用同步模式,需配置SCLK引脚输出脉冲的属性,标准库使用一个时钟初始化结构体USART_ClockInitTypeDef来设置,该结构体内容只有在同步模式下才设置。


USART时钟初始化结构体

 typedef struct {

 uint16_t USART_Clock; // 时钟使能控制

 uint16_t USART_CPOL; // 时钟极性

 uint16_t USART_CPHA; // 时钟相位

 uint16_t USART_LastBit; // 最尾位时钟脉冲

 } USART_ClockInitTypeDef;


1)USART_Clock:同步模式下SCLK引脚上时钟输出使能控制,可选禁止时钟输出(USART_Clock_Disable)或开启时钟输出(USART_Clock_Enable);如果使用同步模式发送,一般都需要开启时钟。它设定 USART_CR2 寄存器的 CLKEN 位的值。 ݶ

2)USART_CPOL:同步模式下 SCLK 引脚上输出时钟极性设置,可设置在空闲时SCLK引脚为低电平(USART_CPOL_Low)或高电平(USART_CPOL_High)。它设定USART_CR2寄存器的 CPOL位的值。

3)USART_CPHA:同步模式下 SCLK 引脚上输出时钟相位设置,可设置在时钟第一个变化沿捕获数据(USART_CPHA_1Edge)或在时钟第二个变化沿捕获数据。它设定 USART_CR2寄存器的 CPHA位的值。USART_CPHA与 USART_CPOL配合使用可以获得多种模式时钟关系。

4)USART_LastBit:选择在发送最后一个数据位的时候时钟脉冲是否在SCLK引脚输出,可以是不输出脉冲(USART_LastBit_Disable) 、 输出脉冲(USART_LastBit_Enable)。它设定 USART_CR2 寄存器的 LBCL位的值。


六、USART1接发通信实验

USART 只需两根信号线即可完成双向通信,对硬件要求低,使得很多模块都预留USART 接口来实现与其他模块或者控制器进行数据传输,比如 GSM 模块,WIFI 模块、蓝牙模块等等。在硬件设计时,注意还需要一根“共地线”。


来编写一个程序实现开发板与电脑通信,在开发板上电时通过USART发送一串字符串给电脑,然后开发板进入中断接收等待状态,如果电脑有发送数据过来,开发板就会产生中断,我们在中断服务函数接收数据,并马上把数据返回发送给电脑。


1、编程思路


使能 RX和 TX 引脚 GPIO时钟和 USART时钟;

初始化 GPIO,并将 GPIO复用到 USART上;

配置 USART 参数;

配置中断控制器并使能 USART接收中断;

使能 USART;

在 USART接收中断服务函数实现数据接收和发送。


2、代码分析

1)GPIO和USART宏定义

 /**

 * 串口宏定义,不同的串口挂载的总线和 IO 不一样,移植时需要修改这几个宏

 */ 

 // 串口 1-USART1

 #define DEBUG_USARTx USART1

 #define DEBUG_USART_CLK RCC_APB2Periph_USART1

 #define DEBUG_USART_APBxClkCmd RCC_APB2PeriphClockCmd

 #define DEBUG_USART_BAUDRATE 115200 

 // USART GPIO 引脚宏定义

 #define DEBUG_USART_GPIO_CLK (RCC_APB2Periph_GPIOA)

 #define DEBUG_USART_GPIO_APBxClkCmd RCC_APB2PeriphClockCmd 

 

 #define DEBUG_USART_TX_GPIO_PORT GPIOA

 #define DEBUG_USART_TX_GPIO_PIN GPIO_Pin_9

 #define DEBUG_USART_RX_GPIO_PORT GPIOA

 #define DEBUG_USART_RX_GPIO_PIN GPIO_Pin_10 

 

 #define DEBUG_USART_IRQ USART1_IRQn

 #define DEBUG_USART_IRQHandler USART1_IRQHandler


使用宏定义方便程序移植和升级 。开发板中的 CH340G 的收发引脚默认通过跳帽连接到 USART1,如果想使用其他串口,可以把 CH340G 跟 USART1 直接的连接跳帽拔掉,然后再把其他串口的 IO用杜邦线接到 CH340G的收发引脚即可。


这里我们使用USART1,设定波特率为115200,选定USART的GPIO为PA9和PA10。


2)嵌套向量中断控制器NVIC配置


 static void NVIC_Configuration(void)

 {

 NVIC_InitTypeDef NVIC_InitStructure; 

 /* 嵌套向量中断控制器组选择 */

 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

 

 /* 配置 USART 为中断源 */

 NVIC_InitStructure.NVIC_IRQChannel = DEBUG_USART_IRQ;

 /* 抢断优先级为 1 */

 NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;

 /* 子优先级为 1 */

 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;

 /* 使能中断 */

 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

 /* 初始化配置 NVIC */

 NVIC_Init(&NVIC_InitStructure);

 }


3)USART初始化配置


 void USART_Config(void)

 {

 GPIO_InitTypeDef GPIO_InitStructure;

 USART_InitTypeDef USART_InitStructure;

 

 // 打开串口 GPIO 的时钟

 DEBUG_USART_GPIO_APBxClkCmd(DEBUG_USART_GPIO_CLK, ENABLE);

 

 // 打开串口外设的时钟

 DEBUG_USART_APBxClkCmd(DEBUG_USART_CLK, ENABLE);

 

 // 将 USART Tx 的 GPIO 配置为推挽复用模式

 GPIO_InitStructure.GPIO_Pin = DEBUG_USART_TX_GPIO_PIN;

 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

 GPIO_Init(DEBUG_USART_TX_GPIO_PORT, &GPIO_InitStructure);

 

 // 将 USART Rx 的 GPIO 配置为浮空输入模式

 GPIO_InitStructure.GPIO_Pin = DEBUG_USART_RX_GPIO_PIN;

 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

 GPIO_Init(DEBUG_USART_RX_GPIO_PORT, &GPIO_InitStructure);

 

 // 配置串口的工作参数

 // 配置波特率

 USART_InitStructure.USART_BaudRate = DEBUG_USART_BAUDRATE;

 // 配置 针数据字长

 USART_InitStructure.USART_WordLength = USART_WordLength_8b;

 // 配置停止位

 USART_InitStructure.USART_StopBits = USART_StopBits_1;

 // 配置校验位

 USART_InitStructure.USART_Parity = USART_Parity_No ;

 // 配置硬件流控制

 USART_InitStructure.USART_HardwareFlowControl =

 USART_HardwareFlowControl_None;

 // 配置工作模式,收发一起

 USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

 // 完成串口的初始化配置

 USART_Init(DEBUG_USARTx, &USART_InitStructure);

 

 // 串口中断优先级配置

 NVIC_Configuration();

 

 // 使能串口接收中断

 USART_ITConfig(DEBUG_USARTx, USART_IT_RXNE, ENABLE);

 

 // 使能串口

 USART_Cmd(DEBUG_USARTx, ENABLE);

 }


调用RCC_APB2PeriphClockCmd函数开启GPIO端口时钟,使用GPIO之前必须开启对应的时钟。RCC_APB2PeriphClockCmd函数开启USART时钟。


使用GPIO之前需要初始化配置它,并且还要添加特殊设置,因为我们使用它作为外设引脚,一般都有特殊功能,模式设置为复用功能,把串口的Tx引脚配置为复用推挽输出,Rx引脚为浮空输入,数据完全由外部输入决定。


配置USAT1通信参数为:波特率115200,字长8,1个停止位,没有校验位,不使用硬件流控制,收发一体工作模式,然后调用USART初始化函数完成配置。


USART接收中断,需要配置NVIC,这里调用NVIC_Configuration函数完成配置,然后调用USART_ITConfig函数使能USART接收中断。


最后 调用USART_Cmd函数使能USART,最终配置的是USART_CR1的UE位,具体作用是开启USART工作时钟,没有时钟那USART这个外设就工作不了。


4)字符发送


/***************** 发送一个字符 **********************/

 void Usart_SendByte( USART_TypeDef * pUSARTx, uint8_t ch)

 {

 /* 发送一个字节数据到 USART */

 USART_SendData(pUSARTx,ch);

 

 /* 等待发送数据寄存器为空 */

 while (USART_GetFlagStatus(pUSARTx, USART_FLAG_TXE) == RESET);

[1] [2]
关键字:STM32  USART  串口通信 引用地址:STM32系统学习——USART(串口通信)

上一篇:STM32 串口详细讲解
下一篇:STM32之串口通信

推荐阅读

我想在FLASH里面存入两段程序,假设一个存在0x08000000(即烧录进去的,main函数),另一个存在0x08001000,我想在执行第一段程序的时候给PC赋一个值0x08001000,让它跳到另一段程序,关键要如何改变PC的值呢?单纯的实现你上面说的结果: ((void (*) (void)) (0x08001000) ();就可以了。 但是要注意了,地址0x08001000处的数据必须要是可执行的代码而不...
湖南视比特机器人有限公司(以下简称“视比特”)近日宣布完成新一轮千万级战略融资,由同威资本领投,老股东道生资本跟投,毅仁资本继续担任本轮融资的财务顾问。此前,视比特在今年7月天使轮获得图灵资本、道生资本和小智创投的投资。 据了解,视比特于2018年8月入孵“柳枝行动”落地长沙国家高新区,是一家深度融合3D视觉感知与机器人柔性控制交互...
10月13日,大华股份披露了公司今年第三季度的业绩情况。据其公告,大华股份在报告期内实现营收63.28亿元,同比增长12.56%,归属于上市公司股东的净利润为14.56亿元,同比增长128.07%。扣非后的归母净利润为4.46亿元,同比下滑24.51%。虽然本报告期内的业绩增长显著,但回顾其2020年上半年的业绩表现,大华股份在当期内实现营收98.38亿元,同比下滑8.96%,...
电子电路(比如手机、服务器等领域)的切换速度、信号摆率比以前更高,同时芯片的封装和信号摆幅却越来越小,对噪音更加敏感。因此,电路设计者们更关心电源噪音的影响。实时示波器是用来进行电源噪音测量的一种常用工具,但是如果使用方法不对可能会带来完全错误的测量结果,PRBTEK在和用户交流过程中发现很多用户的测试方法不尽正确,所以把电源纹波噪音...

史海拾趣

问答坊 | AI 解惑

430跟51的异同

我接触单片子的日子加起来也有三年了,三年里我只学了数量有限的几款的单片机。51作为我的起步,我承认这个起步还是不错的,并且一直在起步,对51的热爱缘自于它的寄存器操作的简单。简单即为美。51的存储结构为哈佛结构。据说外国的金融危机导致学 ...…

查看全部问答∨

抗电磁干扰

1、选用频率低的微控制器: 选用外时钟频率低的微控制器可以有效降低噪声和提高系统的抗干扰能力。同样频率的方波和正弦波,方波中的高频成份比正弦波多得多。虽然方波的高频成份的波的幅度,比基波小,但频率越高越容易发射出成为噪声源,微控 ...…

查看全部问答∨

2440addr.h 里的问题?

#define BIT_EINT0                (0x1) #define BIT_EINT1                (0x1<<1) #define BIT_EINT2            &nbs ...…

查看全部问答∨

QT安装问题

cd src/moc; make make[1]: Entering directory `/usr/src/qt/qt-2.3.7/src/moc\' make[1]: Nothing to be done for `all\'. make[1]: Leaving directory `/usr/src/qt/qt-2.3.7/src/moc\' rm -f bin/moc cp src/moc/moc bin/moc make -f src ...…

查看全部问答∨

请教s3c44b0伪指令OPT的用途

OPT这条伪指令的功能对源码设置列表输出选择,包括强制换页,强制行号变为零等, 1、设置后代码列表是在哪生成的? 2、OPT在实际应用中起到一个什么作用? 3、常应用于什么场合?…

查看全部问答∨

请教 wince 系统声音问题

现在我的目的是点击触摸屏和按键都有声音,声音是用蜂鸣器发出,要做驱动响应哪个函数? 用蜂鸣器可否播放WAV文件? 谢谢…

查看全部问答∨

请帮助看一下下面的代码,不知道是什么意思??谢谢,最好可以帮助注释一下

为2410BOOTLODER中的一端代码 ResetEntry         ;1)The code, which converts to Big-endian, should be in little endian code.         ;2)The following little endian code will be compiled in ...…

查看全部问答∨

pci设备中断号的获取

请问各位高手     我现在想做一个网卡的驱动,但不知道网卡的中断号是多少,怎样才能获取呢?…

查看全部问答∨

求此程序的执行流程图

                   RS EQU P3.7         ;RS <---->P3.7                    ...…

查看全部问答∨

关于formality的几个问题

用formality进行rtl和综合后网表进行比对,发现两个问题1.没有匹配的点很多,reference多于implementation的2.verify的时候报了很多错请问这是为什么啊 如何修改?ps:svf已经加了,另外设置忽略full case为false,不知道怎么办,请高手指点…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved