FPGA基础之脉冲边沿检测原理verilog版本
- 格式:doc
- 大小:31.00 KB
- 文档页数:2
基于FPGA的实时边缘检测系统陈伦海;黄君凯;杨帆;唐徐立【摘要】提出一种基于FPGA的实时边缘检测系统,运用Verilog语言实现了系统的数据采集、存储和显示.并针对目前边缘检测易受噪声影响的缺点,采用一种结合中值滤波和改进的Sobel边缘检测的图像预处理算法.通过与经典Sobel边缘检测算法处理后的图像相比较.证明所研制的系统对图像噪声干扰有较强的抑制能力,且提取的边缘定位较准确,可适用于对实时性要求较高的智能监控、识别和跟踪等领域.%This paper presents a real-time edge detection system based on FPGA,using Veilog language to implement the system of data collection,storage and display.Aiming at the problem that the image edge detection affected by noise, this paper proposes a combination of median filtering and the improved Sobel edge detection preprocessing algorithm.Experimental results are compared with the results of the classic Sobel edge detection, which demonstrate the developed system has a strong image noise suppression and precise of edge extraction.It can be used in the fields that required for real-time,such as intelligent surveillance, identification and tracking and so on.【期刊名称】《液晶与显示》【年(卷),期】2011(026)002【总页数】5页(P200-204)【关键词】FPGA;中值滤波;Sobel;边缘检测【作者】陈伦海;黄君凯;杨帆;唐徐立【作者单位】暨南大学信息科学技术学院,广东,广州,510632;暨南大学信息科学技术学院,广东,广州,510632;暨南大学信息科学技术学院,广东,广州,510632;暨南大学信息科学技术学院,广东,广州,510632【正文语种】中文【中图分类】TP3911 引言边缘检测系统是数字图像处理和模式识别的重要组成部分,在图像处理中起着重要作用,其中检测算法的速度与精度直接影响着检测系统的性能。
《基于FPGA的边缘检测系统设计》篇一一、引言随着人工智能和计算机视觉技术的快速发展,边缘检测作为图像处理中的关键技术,被广泛应用于众多领域。
然而,传统的边缘检测方法通常需要大量的计算资源和时间,难以满足实时性和高效性的要求。
因此,基于FPGA(现场可编程门阵列)的边缘检测系统设计成为了研究的热点。
本文旨在探讨基于FPGA的边缘检测系统设计,以提高图像处理的效率和准确性。
二、系统设计概述本系统设计以FPGA为核心,通过硬件加速的方式实现边缘检测算法。
系统主要包括图像输入、预处理、边缘检测、后处理和图像输出等模块。
其中,预处理模块对输入图像进行去噪、平滑等处理,以提高边缘检测的准确性;边缘检测模块采用高效的边缘检测算法,如Sobel、Canny等;后处理模块对检测到的边缘进行平滑、连接等处理,以得到更完整的边缘信息。
三、FPGA硬件加速设计FPGA具有并行计算、高带宽和低功耗等优点,非常适合用于加速图像处理算法。
在边缘检测系统中,我们通过设计专门的硬件电路,将边缘检测算法映射到FPGA上,实现并行计算和高速数据处理。
具体而言,我们采用了流水线设计,将边缘检测算法分解为多个模块,每个模块负责一部分计算任务,并通过数据流水线的方式实现高速数据处理。
此外,我们还优化了算法的硬件实现方式,降低了功耗和硬件资源消耗。
四、边缘检测算法设计在边缘检测算法设计中,我们采用了Canny算法作为主要算法。
Canny算法具有高准确性和鲁棒性,能够有效地检测出图像中的边缘信息。
在FPGA上实现Canny算法时,我们采用了分级处理的思路,将算法分解为多个级联的模块,每个模块负责一部分计算任务。
通过优化算法的硬件实现方式,我们提高了系统的处理速度和准确性。
五、系统实现与测试我们采用Verilog HDL语言编写了FPGA的程序代码,并通过仿真和实际测试验证了系统的可行性和性能。
在测试中,我们使用了多种不同的图像数据,包括自然场景、人像等。
第43卷第6期应 用科技V〇1.43N q.6 2016 年12月Applied Science and Technology Dec.2016D01:10.11991/yykj.201511014网络出版地址:/kcms/detai1/23.1191.U.20161127.0907.016.htm1基于FP G A的Sobel图像边缘检测算法刘博峰,郜丽鹏哈尔滨工程大学信息与通信工程学院,黑龙江哈尔滨150001摘要:数字图像处理主要是对图像像素进行处理,由于像素众多,因而图像处理需要消耗大量时间,而FPGA并行性、实时性等优点可有效弥补这一缺点。
文中主要介绍如何用FPGA来实现图像的Sobel边缘检测算法,并同Matlab联合仿 真,验证FPGA图像处理的可靠性,最终得到让人满意的处理图案。
关键词:FPGA;MATLAB;Sobel;图像处理;边缘检测中图分类号:TN911.73 文献标志码:A文章编号:1009-671X(2016)06-059-03Sobel image edge detection method based on FPGALIU Bofeng, GAO LipengCollege of Inlormation and Communication Engineering,Harbin Engineering University,Harbin150001, China Abstract :Image pixels are mainly processed in digital image processing.Due to the large number of pixels,the image processing costs a lot of time.The advantages of FPGA,such as parallelism,real-time,can effectively compensate this shortcoming.This article describes how to use FPGA to implement Sobel image edge detection algorithm, by verifies the reliability of FPGA image processing by co-simulation with Matlab,and finally obtains a satisfactory processing pattern.Keywords:FPGA;MATLAB;Sobel;image processing;edge detection边缘检测是图像处理和计算机视觉的基本问 题,是图像特征提取的一个研究领域,图像边缘含有 图像丰富的特征信息,在图像分析和处理中有重要 的意义。
fpga的基本工作原理FPGA(Field Programmable Gate Array)是一种可编程逻辑芯片,它可以被编程成各种逻辑电路,具有高度的灵活性和可重构性。
FPGA在数字信号处理、图像处理、视频处理和通信等领域得到广泛应用。
本文将介绍FPGA的基本工作原理,包括FPGA的逻辑资源结构、FPGA的编程方式和FPGA的工作过程。
一、FPGA的逻辑资源结构FPGA的逻辑资源主要包括逻辑单元(Logic Units)、查找表(Look-Up Tables)和存储器单元(Memory Units)。
逻辑单元是FPGA中最基本的逻辑单元,它由逻辑门电路组成,包括与门、或门、非门等。
逻辑单元的输出可以直接与其他逻辑单元或存储器单元相连,也可以与查找表的输入相连。
逻辑单元还可以实现复杂的逻辑函数,如加法器、乘法器等。
查找表是FPGA中一个重要的组成部分,它用于存储逻辑函数的真值表,并将真值表与逻辑单元相连。
在FPGA中,查找表通常由4位或5位输入和1位输出组成。
查找表的真值表由程序员编写的逻辑函数确定,并存储在FPGA的寄存器中。
存储器单元是FPGA中另一种重要的逻辑资源,用于存储数据和程序。
FPGA中的存储器单元包括RAM、ROM和寄存器。
其中RAM和寄存器用于存储数据,ROM用于存储程序。
二、FPGA的编程方式通常,FPGA的编程方式分为两种:硬件描述语言(Hardware Description Language,HDL)和原理图编程。
硬件描述语言是一种用于描述数字电路的语言,它由一系列的语句组成,其中包括组合逻辑电路描述和时序逻辑电路描述。
常见的硬件描述语言有Verilog和VHDL等。
原理图编程是一种通过绘制逻辑图来编程的方式。
在原理图中,每个组件都是以图形的形式表示的,例如逻辑门、查找表和存储器单元等。
这些组件可以通过连接线连接起来,从而组成一个完整的数字电路。
在FPGA的工作过程中,程序员先使用硬件描述语言或原理图编写程序,并将程序编译成可被FPGA识别的字节码,然后通过编程器将字节码下载到FPGA中。
《基于FPGA的边缘检测系统设计》篇一一、引言随着计算机视觉技术的飞速发展,边缘检测已成为图像处理领域中一个重要的研究方向。
边缘检测是图像处理的基本任务之一,能够有效地提取图像中的轮廓和特征信息。
传统的边缘检测算法在计算上往往存在耗时、复杂度高的问题,而基于FPGA (现场可编程门阵列)的边缘检测系统设计,能够显著提高算法的运算速度和效率。
本文将介绍一种基于FPGA的边缘检测系统设计,以实现高效、快速的边缘检测。
二、系统设计概述本系统设计以FPGA为核心,通过硬件加速的方式实现边缘检测算法。
系统主要包括图像输入模块、预处理模块、边缘检测模块、后处理模块以及图像输出模块。
各模块之间通过FPGA内部的逻辑控制单元进行协调工作,实现图像的实时处理和输出。
三、模块设计1. 图像输入模块:负责接收原始图像数据,并将其传输至预处理模块。
该模块可采用高速图像传输接口,如PCIe或HDMI 等,以保证图像数据的实时传输。
2. 预处理模块:对输入的原始图像进行预处理,包括去噪、灰度化等操作,以提高边缘检测的准确性和效率。
预处理模块可采用FPGA内部的硬件加速器进行加速处理。
3. 边缘检测模块:本系统的核心模块,负责实现边缘检测算法。
该模块采用硬件加速的方式,通过FPGA内部的逻辑控制单元和专用硬件加速器实现边缘检测算法的快速运算。
常见的边缘检测算法包括Sobel算子、Canny算子等,可根据实际需求选择合适的算法。
4. 后处理模块:对边缘检测结果进行后处理,包括阈值处理、形态学处理等,以进一步提高边缘检测的准确性和效果。
后处理模块同样可采用FPGA内部的硬件加速器进行加速处理。
5. 图像输出模块:将处理后的图像数据输出至显示设备或存储设备。
该模块可采用高速图像传输接口,如HDMI、DVI或USB等,以满足不同场景下的需求。
四、硬件平台设计本系统设计的硬件平台主要包括FPGA芯片、内存模块、电源模块等。
其中,FPGA芯片是系统的核心,负责实现边缘检测算法的硬件加速。
锁存脉冲信号 verilog 逻辑锁存脉冲信号是数字电路中常见的一种信号处理方式,用于在特定条件下保存输入信号的状态。
它在各种电子设备中广泛应用,例如存储器、寄存器、计数器等。
在数字电路中,锁存脉冲信号的逻辑可以用Verilog语言来描述和实现。
Verilog是硬件描述语言的一种,它可以描述数字电路的结构和行为。
锁存脉冲信号通常由两个信号组成:时钟信号和数据信号。
当时钟信号的边沿到来时,数据信号的状态被锁存,并在下一个时钟边沿之前保持不变。
这种方式可以有效地保存数据并在需要时读取。
锁存脉冲信号的实现可以通过触发器来完成。
触发器是一种基本的数字电路元件,可以在时钟信号的边沿触发状态的改变。
常见的触发器有D触发器和JK触发器,它们可以用Verilog语言来描述和实现。
在Verilog中,可以使用模块化的方式来描述锁存脉冲信号的逻辑。
一个典型的锁存脉冲信号模块包括输入端口、输出端口和内部逻辑。
输入端口通常包括时钟信号和数据信号,输出端口则是锁存的结果。
锁存脉冲信号的实现还可以包括一些附加的逻辑,例如使能信号和复位信号。
使能信号可以控制锁存脉冲信号的工作状态,而复位信号可以将锁存脉冲信号恢复到初始状态。
在设计数字电路时,需要注意锁存脉冲信号的时序关系和逻辑关系。
时序关系是指各个信号之间的时间关系,例如时钟信号和数据信号的边沿到来的顺序。
逻辑关系是指各个信号之间的逻辑关系,例如使能信号和数据信号的逻辑运算。
锁存脉冲信号的设计需要考虑电路的稳定性和可靠性。
稳定性是指锁存脉冲信号在各种工作条件下的稳定性和可靠性。
可靠性是指锁存脉冲信号在长时间工作中的可靠性和可持续性。
锁存脉冲信号是数字电路中常见的一种信号处理方式,它通过时钟信号和数据信号实现数据的保存和读取。
在Verilog中,可以用模块化的方式来描述和实现锁存脉冲信号的逻辑。
锁存脉冲信号的设计需要考虑时序关系、逻辑关系、稳定性和可靠性等因素。
通过合理的设计和实现,锁存脉冲信号可以在各种数字电路中发挥重要作用。
基于FPGA的Sobel边缘检测的实现 前⾯我们实现了使⽤PC端上位机串⼝发送图像数据到VGA显⽰,通过MATLAB处理的图像数据直接是灰度图像,后⾯我们在此基础上修改,从⽽实现,基于FPGA的动态图⽚的Sobel边缘检测、中值滤波、Canny算⼦边缘检测、腐蚀和膨胀等。
那么这篇⽂章我们将来实现基于FPGA的Sobel边缘检测。
图像边缘:简⾔之,边缘就是图像灰度值突变的地⽅,亦即图像在该部分的像素值变化速度⾮常之快,这就好⽐在坐标轴上⼀条曲线有刚开始的平滑突然来个⼤转弯,在变化出的导数⾮常⼤。
Sobel算⼦主要⽤作边缘检测,在技术上,它是⼀离散型差分算⼦,⽤来计算图像亮度函数灰度之近似值。
在图像的恩和⼀点使⽤此算⼦,将会产⽣对应的灰度⽮量或是其法⽮量。
边缘是指其周围像素灰度急剧变化的那些像素的集合。
边缘存在于⽬标、背景和区域之间,所以,他是图像分割所以来的最重要的依据。
由于边缘是位置的标志,对灰度的变化不敏感,因此,边缘也是图像匹配的重要的特征。
Sobel边缘检测的核⼼在于像素矩阵的卷积,卷积对于数字图像处理⾮常重要,很多图像处理算法都是做卷积来实现的。
卷积运算的本质就是对制定的图像区域的像素值进⾏加权求和的过程,其计算过程为图像区域中的每个像素值分别与卷积模板的每个元素对应相乘,将卷积的结果作求和运算,运算到的和就是卷积运算的结果。
卷积公式如下。
3x3的窗⼝M与卷积模板C的卷积运算如下。
Gx和Gy是sobel的卷积因⼦,将这两个因⼦和原始图像做如下卷积。
如图3-22所⽰。
Sobel卷积因⼦其中A代表原始图像。
得到图像中的每⼀个点的横向纵向灰度值Gx、Gy。
最后通过如下公式来计算改点灰度的⼤⼩。
但是通常为了提⾼效率,使⽤不开平⽅的近似值,虽然这样做会损失精度,,使⽤并⾏流⽔线的设计思想将Sobel算⼦的实现划分为五个步骤,加流⽔线后的计算可以将整个模块的计算提⾼5倍。
(1)计算Gx与Gy与模板每⾏的乘积(2)两个3x3矩阵的卷积即将每⼀⾏每⼀列对应相乘然后想加(3)求得3*3模板运算后的Gx、Gy(4)求Gx^2 + Gy^2的结果,和Gx和Gy的平⽅和(需要消耗两个时钟)(5)求Gx^2 + Gy^2的平⽅根边缘检测同样需要⽣成3x3矩阵⽽这与中值滤波和均值滤波中⽣成3X3矩阵的⽅法是完全⼀样的,3X3矩阵的⽣成⽅法可以参考前⾯的博客:最近发现Xilinx也有⾃⼰的Shift RAM,Shift_RAM简直就是为3X3矩阵⽽⽣的,所以这我使⽤Xilinx shift_RAM来实现3X3矩阵,配置如下:这⾥Xilinx的shift_ram⼀次只能⽣成⼀⾏数据,所以我采⽤两个IP Core和正在输⼊的⼀⾏来⽣成三⾏数据这是我设计的模块端⼝,clken为串⼝接收的完成标志信号,接收到的⼋位数据输⼊,最后经过Sobel算⼦计算完成后,将单bit数据通过位扩展为⼗六位输出。
FPGA笔记之verilog语言(基础语法篇)笔记之verilog语言(基础语法篇)写在前面:verilogHDL语言是面对硬件的语言,换句话说,就是用语言的形式来描述硬件线路。
因此与等软件语言不同,假如想要在实际的中实现,那么在举行verilog语言编写时,就需要提前有个硬件电路的构思和主意,同时,在编写verilog语言时,应当采纳可综合的语句和结构。
1. verilog 的基础结构1.1 verilog设计的基本单元——module在数字电路中,我们经常把一些复杂的电路或者具有特定功能的电路封装起来作为一个模块用法。
以后在运用这种模块化的封装时,我们只需要知道:1.模块的输入是什么;2.模块的输出是什么;3.什么样的输入对应什么样的输出。
而中间输入是经过什么样的电路转化为输出就不是我们在用法时需要特殊重视的问题。
当无数个这样的模块互相组合,就能构成一个系统,解决一些复杂的问题。
verilog语言的基础结构就是基于这种思想。
verilog中最基本的模块是module,就可以看做是一个封装好的模块,我们用verilog来写无数个基本模块,然后再用verilog描述多个模块之间的接线方式等,将多个模块组合得到一个系统。
那么一个module应当具有哪些要素呢?首先对于一个module,我们应当设计好其各个I/O,以及每个I/O的性质,用于与模块外部的信号相联系,让用法者知道如何连线。
第二,作为开发者,我们需要自己设计模块内部的线路来实现所需要的功能。
因此需要对模块内部浮现的变量举行声明,同时通过语句、代码块等实现模块的功能。
综上所述,我们把一个module分成以下五个部分:模块名端口定义I/O解释第1页共9页。
verilog写脉冲展宽电路概述及解释说明1. 引言1.1 概述在现代电子设备和数字系统中,脉冲展宽电路起着重要的作用。
它可以将一个输入信号的短暂脉冲扩展为持续一段时间的高电平输出信号。
这种功能对于许多应用来说是必不可少的,例如触发器、计时器、通信系统以及各种数字逻辑电路等。
本文将详细介绍脉冲展宽电路的定义、原理以及Verilog语言编写脉冲展宽电路的方法。
通过阐述Verilog编程语言的概述和基本语法规则,读者可以更好地理解和实现脉冲展宽电路。
1.2 文章结构本文共分为五个部分进行论述。
第一部分为引言,主要概述了文章要探讨的内容和目的。
第二部分介绍了脉冲展宽电路的定义、意义以及常见应用场景。
第三部分向读者简要介绍了Verilog编程语言,包括其概述、库函数介绍以及代码基本结构和语法规则。
第四部分详细描述了脉冲展宽电路的Verilog设计与实现方法,包括设计思路和步骤、关键模块分析与设计要点,以及实例演示和仿真结果分析。
最后一部分为结论与总结,对Verilog脉冲展宽电路的重要性和应用前景进行总结陈述,并提出了本文所提出的设计方法的优势、不足以及改进建议等内容。
1.3 目的本文的目的是介绍脉冲展宽电路及其在数字系统中的重要性和应用前景。
通过对Verilog编程语言的简介和具体实现方法的讲解,读者可以深入了解该电路的设计原理和实现过程,并能够运用Verilog语言进行脉冲展宽电路的设计与仿真。
通过阅读本文,读者将会掌握以下几个方面:- 掌握脉冲展宽电路的定义、意义以及常见应用场景;- 了解Verilog编程语言概述,包括库函数介绍和基本语法规则;- 理解脉冲展宽电路的Verilog设计思路、步骤以及关键模块分析与设计要点;- 学会使用Verilog语言进行脉冲展宽电路的实例演示和仿真,并能分析相关结果;- 总结对Verilog脉冲展宽电路设计方法和优势、不足的认识,并提出改进建议。
通过本文的学习和实践,读者将对脉冲展宽电路的设计与应用有更深入的理解,并能够掌握Verilog语言进行相关工程实现。
0 引言随着设计复杂度的增加,使用IP核已经成为一种常用的设计方法。
QuartusⅡ软件提供的Megafunt-tions是基于Altera底层硬件结构最合理的成熟应用模块,在代码中使用Megafunctions这类IP资源,不但能将设计者从繁琐的代码编写中解脱出来,更重要的是,在大多数情况下Megafunctions的综合和实现结果比用户编写的代码更优。
而且只需要简单地设置选取宏功能模块的相关参数就可以在程序中调用它们,因此宏功能模块的使用也十分方便。
QuartusⅡ的Mega-functins中包含有算术运算(Arithmetic)、逻辑门(Gates)、I/O、存贮器(Storage)等四个系列,可以根据系统设计需求灵活选用。
在实时图像处理中,用Sobel算子进行物体的边缘检测是经常用到的算法,由于对处理速度要求较高,因此用纯软件的方法很难达到要求。
而FPGA对同时可完成的处理任务几乎没有限制,适合高速、并行信号处理,并且FPGA密度高、容量大,有内置存储器、容易实现,所以FPGA广泛用于实时图像处理系统中。
在此通过调用基于RAM的移位寄存器altshifttaps、可编程乘加器altmult add、可编程多路并行加法器parallel_add和参数化绝对值运算模块lpm_abs,实现了基于FPGA的Sobel边缘检测。
最后给出设计系统的仿真结果,通过与Matlab仿真结果相比较,可以看出该设计获得了很好的边缘检测效果。
1 Sobel边缘检测算法图1给出了Sobel边缘检测算法框图。
从图中可以看出对一副图像进行Sobel边缘检测时首先要利用Sobel算子计算出水平梯度和垂直梯度,然后再把两个方向的梯度结合起来,最后应用门限处理模块判断图像边缘并输出边缘检测结果。
图2(a)为一副图像的3×3区域,图2(b)和图2(c)分别为Sobel算子的x方向(垂直方向)梯度算子和y方向(水平方向)梯度算子。
FPGA基础之脉冲边沿检测原理verilog版本
最近一直忙着找工作。哎,希望保佑我通过二面吧。
verilog的脉冲检测方法一直在用,就那几句话,但一直没想他的原理,今天一个同学说笔试的遇到这个了,我一想,要我写还真写不出
来,不懂原理,怎么写啊。死记硬背是我不喜欢的。
网上搜了一下,总结一下几种方法。首先介绍一下基本的原理。
脉冲边沿的特性:两侧电平发生了变
化
如上图所示一个脉冲,既有下降沿也有上升沿(好像是废话),系统的时钟周期一定要比这个小,频率越高越好。后面说为什么
如果检测的是下降沿(通常的按键检测),脉冲边沿的特性就是两侧电平发生了变化,下降沿是高电平变低电平。
根据系统时钟频率检测,如果前后进来的信号发生了变化,这里用的是异或运算。即两个电平不相同则是发生边沿。
思路:设计两个或多个一位的寄存器,用来接收被检测的信号,系统时钟来一次记一次输入信号,如果用了两个寄存器直接异或就可以
了。
如果不为0,则发生了边沿,再拼接,拼接顺序假定是{先进reg,后进reg},则若先进reg=1,后进位0,则是下降沿,即{先进reg,后
进reg}=2’b10。
同理相反{先进reg,后进reg}=2’b01,则为上升沿。如果用了多个寄存器则可以更好地检测,防止干扰脉冲。具体看例3:
例1:两个寄存器:
reg dly0;
reg dly1;
wire dc_clk;
always @(posedge clk or negedge rst)
begin
if(!rst)begin
dly0 <= 1'b0;
dly1 <= 1'b0;
end
else begin
dly0 <= fpga_io;\\fpga_io为待测脉冲
dly1 <= dly0;
end
end
assigndc_clk= dly1 ^ dly0;//fpga_io边沿检测信号
这里值检测了边沿,没判断下降还是上升。
也可以这样:专门判断是否是下降沿:
assign io_xor = dly1 & ~dly0;//因为下降沿特征: 先进来的是高电平,后进来的是低电平,(注意dly0为始终为后进信号)则后
进取反再与先进。如果为1,表示信号时下降沿。
判断上升沿类似可推。
例2:两个寄存器,判断了上升还是下降
input data_clk//认为待测数据的时候
reg pre_state;
always @(posedge sys_clk)
begin
pre_state <= data_clk;//利用reg下一个时钟才生效的特性.
if({pre_state ,data_clk} == 0x01)//0x01上升沿,0x10下降沿
begin
....
end
end
例3 判断下降沿。多个寄存器。
always @ (posedge clk or negedge rst_n) begin
if(!rst_n) begin
rs232_rx0 <= 1'b0;
rs232_rx1 <= 1'b0;
rs232_rx2 <= 1'b0;
rs232_rx3 <= 1'b0;
end
else begin
rs232_rx0 <= rs232_rx;
rs232_rx1 <= rs232_rx0;
rs232_rx2 <= rs232_rx1;
rs232_rx3 <= rs232_rx2;
end
end
//这种方法可以滤除20-40ns的毛刺
assign neg_rs232_rx = rs232_rx3 & rs232_rx2 & ~rs232_rx1 & ~rs232_rx0;//这种方法引自特权同学的代码
易分析,后进信号rs232_rx0,rs232_rx1,必须都为0,且先进信号rs232_rx3 &,rs232_rx2都必须为1,neg_rs232_rx 才会
为1.
则此时判断为下降沿。