CN113946535A - 一种总线的宏节拍和周期生成方法 - Google Patents
一种总线的宏节拍和周期生成方法 Download PDFInfo
- Publication number
- CN113946535A CN113946535A CN202111275681.9A CN202111275681A CN113946535A CN 113946535 A CN113946535 A CN 113946535A CN 202111275681 A CN202111275681 A CN 202111275681A CN 113946535 A CN113946535 A CN 113946535A
- Authority
- CN
- China
- Prior art keywords
- state
- value
- channel
- bus
- period
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4204—Bus transfer protocol, e.g. handshake; Synchronisation on a parallel bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0004—Parallel ports, e.g. centronics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
Abstract
本发明公开了一种总线的宏节拍和周期生成方法,本发明能够生成FlexRay总线中基础的时间uT、MT和时钟周期,并将rate修正值和offset修正值应用到周期长度的修正之中,为FlexRay总线数据的接收和发送提供了时间依据。本发明针对FlexRay总线中的主导冷启动节点和非主导冷启动节点,均可以生成总线的uT、MT和周期,增强了应用的广泛性;本发明针对单通道和双通道,均可以产生uT、MT和周期;本发明将周期分为奇数周期和偶数周期,将rate修正值应用于全周期中;将offset修正值应用于奇数周期中,有效解决了系统纠正值的应用问题。
Description
技术领域
本发明属于集成电路设计领域,具体涉及一种总线的宏节拍和周期生成方法。
背景技术
在现有总线系统中,时间触发类总线由于其基于时分多址的控制思想,使同一网络内的所有节点均可以公平的使用总线,解决了基于事件触发类总线的带来的节点对总线的竞争问题,越来越多的应用到工业领域及国防领域。
FlexRay总线作为时间触发类总线的典型代表,由于其双通道冗余传输的特点以及将时间触发和事件触发相结合的工作方式,逐渐从车载领域蔓延到其他工业和国防领域。
FlexRay总线在工作时,消息均在确定的时间点进行发送。如何进行时间的产生并保持其稳定,是FlexRay总线设计当中面临的首要问题。现有文献中,没有考虑总线的同步状态,也并没有考虑纠正值的应用问题。
发明内容
本发明的目的在于解决FlexRay总线的时间生成问题,提供一种总线的宏节拍和周期生成方法,通过对总线初始状态的判断,实现了不同条件下宏节拍和周期的生成,为FlexRay总线的数据发送和数据接收提供了时间依据,可以使数据的接收和发送均在有效且受控的时间内进行。
为了达到上述目的,本发明包括以下步骤:
S1,初始化,配置总线的协议参数,完成后进入initial状态;
S2,检测通道A和通道B接收端总线的状态,如果通道A或者通道B总线空闲且该空闲时间持续pdListenTimeout时,则执行S3的coldstart_leading状态;如果通道A或者通道B收到同步帧时并且该帧头部位的周期数为偶数时,则执行S4的coldstart_following1状态;否则,保持在initial状态;
S3,判断节点是否配置了启动同步帧pKeySlotID,并且是否允许进行启动操作,如果满足,则标记leading为1,并执行S6的para_init状态;如果不满足,则返回initial状态;
S4,将计数器ut_temp初始化值为0,计数器cnt1和计数器cnt2初始化分别为1,对80MHz的时钟进行计数;
当计数器cnt1与gdSampleClockPeriod相等时且计数器cnt2与pSamplesPerMicrotick相等时,计数器ut_temp的值进行加1操作;同时判断通道A或者通道B上是否收到第二帧同步帧,如果收到同步帧,则执行S5的coldstart_following2状态;如果没有收到同步帧,则保持当前状态;
S5,如果计数器ut_temp小于周期uT个数pMicroPerCycle与pdMaxDrift之和,并且计数器ut_temp大于周期uT个数pMicroPerCycle与pdMaxDrift之差时,则标记following为1,将接收到的同步帧的帧ID保存至zID中,将帧头中的周期保存至zCC中,并执行S6的para_init状态;否则,返回initial中;
S6,进行变量初始化,对leading和following进行判断:
如果following为1,则MT初始化为(zID-1)*gdStaticSlot+pMacroInitialOffset,如果是通道A,则pMacroInitialOffset为pMacroInitialOffset[A];如果是通道B,则pMacroInitialOffset为pMacroInitialOffset[B];周期vCycleCounter初始化为zCC;同时跳转至S7的gen_ut状态中
S7,启动ut的计数,初始值为0,根据gdSampleClockPeriod和pSamplesPerMicrotick的配置,生成ut;
S8,将MT的值加1,并将zMicroDistribution赋值为zMicroDistribution与zMicroPeriod之和;
并对MT的值进行判断,当MT的值与gOffsetCorrectionStart的值相等时,且当前周期vCycleCounter为奇数时,则跳转至S10的app_dev状态中;
当MT的值与gMacroPercyle的值相等时,则机跳转至S9的gen_CC状态中;
S9,将zMicroPeriod赋值为pMicroPerCycle与rate修正值之和,然后判断周期vCycleCounter是否为63,如果相等,则vCycleCounter置为0;如果不相等,则vCycleCounter增加1;同时将ut和MT初始化为0;然后返回S7的gen_ut状态;
S10,将zMicroDistribution赋值为0;将zMicroPeriod赋值为pMicroPerCycle、rate修正值和offset修正值之和减去当前的uT计数值;将zMacroPeriod赋值为gMacroPercyle与gOffsetCorrectionStart之差,然后返回S7的gen_ut状态。
S1中,总线的协议参数包括周期uT个数pMicroPerCycle、周期MT个数gMacroPerCycle、采样周期gdSampleClockPeriod、采样次数pSamplesPerMicrotick、监听时间pdListenTimeout和波特率。
S1中,在波特率为10Mbps情况下,配置gdSampleClockPeriod为1;配置pSamplesPerMicrotick配置为2;
波特率为5Mbps情况下,配置gdSampleClockPeriod为2;配置pSamplesPerMicrotick配置为1;
波特率为2.5Mbps情况下,配置gdSampleClockPeriod为4;配置pSamplesPerMicrotick配置为1。
进入S5的coldstart_following2时,必须满足在同一通道上连续收到两个同步帧,否则保持在S4的coldstart_following1状态。
S6中,进行变量初始化时,将zMicroPeriod初始化为协议参数pMicroPerCycle,将zMacroPeriod初始化为协议参数gMacroPercyle。
S7中,将计数器cnt1_temp和计数器cnt2_temp,初始化分别为1,分别对80MHz的时钟进行计数,当计数器cnt1_temp与gdSampleClockPeriod相等且计数器cnt2_temp与pSamplesPerMicrotick相等时,ut的值进行加1操作;同时zMicroDistribution的值减去zMacroPeriod,当zMicroDistribution小于等于0时,跳转至S8的gen_MT状态。
与现有技术相比,本发明能够生成FlexRay总线中基础的时间uT、MT和时钟周期,并将rate修正值和offset修正值应用到周期长度的修正之中,为FlexRay总线数据的接收和发送提供了时间依据。本发明针对FlexRay总线中的主导冷启动节点和非主导冷启动节点,均可以生成总线的uT、MT和周期,增强了应用的广泛性;本发明针对单通道和双通道,均可以产生uT、MT和周期;本发明将周期分为奇数周期和偶数周期,将rate修正值应用于全周期中;将offset修正值应用于奇数周期中,有效解决了系统纠正值的应用问题。
附图说明
图1为本发明的系统流程图。
具体实施方式
下面结合附图对本发明做进一步说明。
参见图1,本发明包括以下步骤:
步骤一,进行config:状态机初始化为config状态,配置总线的协议参数,包括周期uT个数pMicroPerCycle、周期MT个数gMacroPerCycle、采样周期gdSampleClockPeriod、采样次数pSamplesPerMicrotick、监听时间pdListenTimeout和波特率等参数;
波特率为10Mbps情况下,配置gdSampleClockPeriod为1;配置pSamplesPerMicrotick配置为2;波特率为5Mbps情况下,配置gdSampleClockPeriod为2;配置pSamplesPerMicrotick配置为1;波特率为2.5Mbps情况下,配置gdSampleClockPeriod为4;配置pSamplesPerMicrotick配置为1;
配置完成后状态机进入initial状态;
步骤二,initial状态:检测通道A和通道B接收端总线的状态:如果通道A或者通道B总线空闲且该空闲时间持续pdListenTimeout时,状态机进入coldstart_leading状态;如果通道A或者通道B收到同步帧时并且该帧头部位的周期数为偶数时,状态机进入coldstart_following1状态,否则状态机保持在initial状态;
步骤三,coldstart_leading状态:判断节点是否配置了启动同步帧pKeySlotID,并且是否允许进行启动操作即vColdstartInhibit是否为0,如果满足以上条件,则标记leading为1,同时状态机进入para_init状态;如果不满足以上条件,则状态机返回initial状态;
步骤四,coldstart_following1状态:
定义一个计数器ut_temp,初始化值为0;同时定义2个计数器cnt1和cnt2,初始化分别为1,对80MHz的时钟进行计数。当cnt1与gdSampleClockPeriod相等时且cnt2与pSamplesPerMicrotick相等时,ut_temp的值进行加1操作;同时判断通道A或者通道B上是否收到第二帧同步帧,如果收到同步帧,则进入coldstart_following2状态;如果没有收到同步帧,则保持coldstart_following1状态;
进入coldstart_following2必须满足在同一通道上连续收到2个同步帧,否则保持在coldstart_following1状态;
步骤五,coldstart_following2状态:如果ut_temp<pMicroPerCycle+pdMaxDrift并且ut_temp>pMicroPerCycle-pdMaxDrift时,则标记following为1,将接收到的同步帧的帧ID保存至zID中,将帧头中的周期保存至zCC中,并控制状态机跳转至para_init当中;否则状态机返回initial中;
步骤六,para_init状态:进行变量的初始化:
zMicroPeriod初始化为协议参数pMicroPerCycle;
zMacroPeriod初始化为协议参数gMacroPercyle;
对leading和following进行判断:
如果leading为1,则宏节拍MT初始化为0,周期vCycleCounter初始化为0;
如果following为1,则MT初始化为(zID-1)*gdStaticSlot+pMacroInitialOffset,如果是通道A,则pMacroInitialOffset为pMacroInitialOffset[A];如果是通道B,则pMacroInitialOffset为pMacroInitialOffset[B];周期vCycleCounter初始化为zCC。
同时状态机跳转至gen_ut当中;
步骤七,gen_ut状态:启动ut的计数,初始值为0,根据gdSampleClockPeriod和pSamplesPerMicrotick的配置,生成ut;
具体的,定义2个计数器cnt1_temp和cnt2_temp,初始化分别为1,分别对80MHz的时钟进行计数。当cnt1_temp与gdSampleClockPeriod相等且cnt2_temp与pSamplesPerMicrotick相等时,ut的值进行加1操作。同时zMicroDistribution的值减去zMacroPeriod;当zMicroDistribution小于等于0时,状态机跳转至gen_MT当中;
步骤八,gen_MT状态:将MT的值加1,并将zMicroDistribution赋值为zMicroDistribution+zMicroPeriod;
并对MT的值进行判断,当MT的值与gOffsetCorrectionStart的值相等时,且当前周期vCycleCounter为奇数时,状态机跳转至app_dev中;
当MT的值与gMacroPercyle的值相等时,状态机跳转至gen_CC当中;
步骤九,gen_CC状态:将zMicroPeriod赋值为(pMicroPerCycle+rate修正值),然后判断周期vCycleCounter是否为63,如果相等,则vCycleCounter置为0;如果不相等,则vCycleCounter增加1;同时将ut和MT初始化为0;然后状态机返回gen_ut;
步骤十,app_dev状态:将zMicroDistribution赋值为0;将zMicroPeriod赋值为pMicroPerCycle+rate修正值+offset修正值-当前的uT计数值;将zMacroPeriod赋值为gMacroPercyle-gOffsetCorrectionStart,然后返回gen_ut。
本发明已经在多款SoC当中进行测试,本发明所述的宏节拍和周期生成办法,可以生成微节拍uT、宏节拍MT和周期计数,并且可以将rate修正值和offset用于周期的纠正当中。
Claims (6)
1.一种总线的宏节拍和周期生成方法,其特征在于,包括以下步骤:
S1,初始化,配置总线的协议参数,完成后进入initial状态;
S2,检测通道A和通道B接收端总线的状态,如果通道A或者通道B总线空闲且该空闲时间持续pdListenTimeout时,则执行S3的coldstart_leading状态;如果通道A或者通道B收到同步帧时并且该帧头部位的周期数为偶数时,则执行S4的coldstart_following1状态;否则,保持在initial状态;
S3,判断节点是否配置了启动同步帧pKeySlotID,并且是否允许进行启动操作,如果满足,则标记leading为1,并执行S6的para_init状态;如果不满足,则返回initial状态;
S4,将计数器ut_temp初始化值为0,计数器cnt1和计数器cnt2初始化分别为1,对80MHz的时钟进行计数;
当计数器cnt1与gdSampleClockPeriod相等时且计数器cnt2与pSamplesPerMicrotick相等时,计数器ut_temp的值进行加1操作;同时判断通道A或者通道B上是否收到第二帧同步帧,如果收到同步帧,则执行S5的coldstart_following2状态;如果没有收到同步帧,则保持当前状态;
S5,如果计数器ut_temp小于周期uT个数pMicroPerCycle与pdMaxDrift之和,并且计数器ut_temp大于周期uT个数pMicroPerCycle与pdMaxDrift之差时,则标记following为1,将接收到的同步帧的帧ID保存至zID中,将帧头中的周期保存至zCC中,并执行S6的para_init状态;否则,返回initial中;
S6,进行变量初始化,对leading和following进行判断:
如果following为1,则MT初始化为(zID-1)*gdStaticSlot+pMacroInitialOffset,如果是通道A,则pMacroInitialOffset为pMacroInitialOffset[A];如果是通道B,则pMacroInitialOffset为pMacroInitialOffset[B];周期vCycleCounter初始化为zCC;同时跳转至S7的gen_ut状态中
S7,启动ut的计数,初始值为0,根据gdSampleClockPeriod和pSamplesPerMicrotick的配置,生成ut;
S8,将MT的值加1,并将zMicroDistribution赋值为zMicroDistribution与zMicroPeriod之和;
并对MT的值进行判断,当MT的值与gOffsetCorrectionStart的值相等时,且当前周期vCycleCounter为奇数时,则跳转至S10的app_dev状态中;
当MT的值与gMacroPercyle的值相等时,则机跳转至S9的gen_CC状态中;
S9,将zMicroPeriod赋值为pMicroPerCycle与rate修正值之和,然后判断周期vCycleCounter是否为63,如果相等,则vCycleCounter置为0;如果不相等,则vCycleCounter增加1;同时将ut和MT初始化为0;然后返回S7的gen_ut状态;
S10,将zMicroDistribution赋值为0;将zMicroPeriod赋值为pMicroPerCycle、rate修正值和offset修正值之和减去当前的uT计数值;将zMacroPeriod赋值为gMacroPercyle与gOffsetCorrectionStart之差,然后返回S7的gen_ut状态。
2.根据权利要求1所述的一种总线的宏节拍和周期生成方法,其特征在于,S1中,总线的协议参数包括周期uT个数pMicroPerCycle、周期MT个数gMacroPerCycle、采样周期gdSampleClockPeriod、采样次数pSamplesPerMicrotick、监听时间pdListenTimeout和波特率。
3.根据权利要求1所述的一种总线的宏节拍和周期生成方法,其特征在于,S1中,在波特率为10Mbps情况下,配置gdSampleClockPeriod为1;配置pSamplesPerMicrotick配置为2;
波特率为5Mbps情况下,配置gdSampleClockPeriod为2;配置pSamplesPerMicrotick配置为1;
波特率为2.5Mbps情况下,配置gdSampleClockPeriod为4;配置pSamplesPerMicrotick配置为1。
4.根据权利要求1所述的一种总线的宏节拍和周期生成方法,其特征在于,进入S5的coldstart_following2时,必须满足在同一通道上连续收到两个同步帧,否则保持在S4的coldstart_following1状态。
5.根据权利要求1所述的一种总线的宏节拍和周期生成方法,其特征在于,S6中,进行变量初始化时,将zMicroPeriod初始化为协议参数pMicroPerCycle,将zMacroPeriod初始化为协议参数gMacroPercyle。
6.根据权利要求1所述的一种总线的宏节拍和周期生成方法,其特征在于,S7中,将计数器cnt1_temp和计数器cnt2_temp,初始化分别为1,分别对80MHz的时钟进行计数,当计数器cnt1_temp与gdSampleClockPeriod相等且计数器cnt2_temp与pSamplesPerMicrotick相等时,ut的值进行加1操作;同时zMicroDistribution的值减去zMacroPeriod,当zMicroDistribution小于等于0时,跳转至S8的gen_MT状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111275681.9A CN113946535B (zh) | 2021-10-29 | 2021-10-29 | 一种总线的宏节拍和周期生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111275681.9A CN113946535B (zh) | 2021-10-29 | 2021-10-29 | 一种总线的宏节拍和周期生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113946535A true CN113946535A (zh) | 2022-01-18 |
CN113946535B CN113946535B (zh) | 2023-09-19 |
Family
ID=79337251
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111275681.9A Active CN113946535B (zh) | 2021-10-29 | 2021-10-29 | 一种总线的宏节拍和周期生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113946535B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117614769A (zh) * | 2023-11-28 | 2024-02-27 | 昆易电子科技(上海)有限公司 | 数据处理方法、装置、系统、电子设备及可读存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1355456A1 (en) * | 2002-04-16 | 2003-10-22 | Robert Bosch Gmbh | FlexRay communication protocol |
US20090125592A1 (en) * | 2004-08-05 | 2009-05-14 | Florian Hartwich | Flexray communication controller |
EP2614996A1 (de) * | 2012-01-13 | 2013-07-17 | Technische Universität Kaiserslautern | Zeit- und prioritäts-gesteuerter Sende/Empfangsknoten für FlexRay und LIN |
CN104683201A (zh) * | 2015-02-05 | 2015-06-03 | 南京航空航天大学 | 一种FlexRay总线通信四余度方法 |
-
2021
- 2021-10-29 CN CN202111275681.9A patent/CN113946535B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP1355456A1 (en) * | 2002-04-16 | 2003-10-22 | Robert Bosch Gmbh | FlexRay communication protocol |
US20090125592A1 (en) * | 2004-08-05 | 2009-05-14 | Florian Hartwich | Flexray communication controller |
EP2614996A1 (de) * | 2012-01-13 | 2013-07-17 | Technische Universität Kaiserslautern | Zeit- und prioritäts-gesteuerter Sende/Empfangsknoten für FlexRay und LIN |
CN104683201A (zh) * | 2015-02-05 | 2015-06-03 | 南京航空航天大学 | 一种FlexRay总线通信四余度方法 |
Non-Patent Citations (1)
Title |
---|
王鹏杰: "FlexRay总线平台构建及性能研究", 《中国优秀硕士学位论文全文数据库信息科技辑》, pages 140 - 1210 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117614769A (zh) * | 2023-11-28 | 2024-02-27 | 昆易电子科技(上海)有限公司 | 数据处理方法、装置、系统、电子设备及可读存储介质 |
CN117614769B (zh) * | 2023-11-28 | 2024-05-10 | 昆易电子科技(上海)有限公司 | 数据处理方法、装置、系统、电子设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113946535B (zh) | 2023-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7620075B2 (en) | Serial communication system with baud rate generator | |
EP3706340B1 (de) | Verfahren zur synchronisation von uhren in knoten eines fahrzeugnetzes und zur durchführung des verfahrens eingerichteter knoten | |
US7313716B2 (en) | Method and device for exchanging data between at least two stations connected via a bus system | |
US20120072761A1 (en) | Device and method for implementing clock transparent transmission | |
EP2738971B1 (en) | Method and device for clock synchronization | |
JP2010541298A (ja) | センサネットワークにおける時間同期に関する方法及びシステム | |
US20210392065A1 (en) | Receive-side timestamp accuracy | |
EP3163786B1 (en) | Clock synchronization method and apparatus | |
CN113992472A (zh) | 一种FlexRay总线IP核的工作方法及系统 | |
CN107402534B (zh) | 调节方法、EtherCAT主站及计算机可读存储介质 | |
US20160087738A1 (en) | Time synchronization slave apparatus capable of adjusting time synchronization period, and method of determining time synchronization period | |
EP3955528B1 (en) | Delay measurement method, system and storage medium | |
CN113946535B (zh) | 一种总线的宏节拍和周期生成方法 | |
CN103475742B (zh) | 云计算环境中主控节点确定的方法及系统 | |
EP2359538B1 (en) | Method for adjusting time slots in a communication network | |
EP4050836A1 (en) | Time synchronization and broadcast setting methods, chip, electronic device, and storage medium | |
Lu et al. | Improving the real-time performance of Ethernet for plant automation (EPA) based industrial networks | |
Sandic et al. | Impact of anomalies within TTEthernet network on synchronization protocol: Analysis using OMNeT++ simulations | |
WO2004051925A2 (en) | System node and method for providing media arbitration in a time-slotted system | |
CN115567143A (zh) | 数据采集系统的高精度时间同步方法、设备、系统和介质 | |
US8897289B2 (en) | Node system and supervisory node | |
US20120224591A1 (en) | Vehicle-Mounted Network Device | |
EP2260599A1 (en) | Network device of high-precision synchronization type, network system, and frame transfer method | |
CN110289929B (zh) | 一种网络同步方法 | |
Engel et al. | Accelerated clock drift estimation for high-precision wireless time-synchronization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |