CN102279828A - 一种PCI接口转Flash接口的控制装置及方法 - Google Patents
一种PCI接口转Flash接口的控制装置及方法 Download PDFInfo
- Publication number
- CN102279828A CN102279828A CN2011102085176A CN201110208517A CN102279828A CN 102279828 A CN102279828 A CN 102279828A CN 2011102085176 A CN2011102085176 A CN 2011102085176A CN 201110208517 A CN201110208517 A CN 201110208517A CN 102279828 A CN102279828 A CN 102279828A
- Authority
- CN
- China
- Prior art keywords
- pci
- flash
- interface
- state
- machine control
- 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.)
- Pending
Links
Images
Landscapes
- Bus Control (AREA)
Abstract
本发明公开了一种PCI接口转Flash接口的控制装置及方法,装置包括:PCI接口模块,通过PCI接口与PCI总线连接,与PCI主设备进行数据通讯;状态机控制模块,与PCI接口模块连接,用于根据PCI接口模块获取的所述PCI总线上的操作信息,确定状态机控制模块的状态;Flash接口模块,与状态机控制模块连接,且通过Flash接口与Flash存储器连接,用于根据状态机控制模块的状态,对Flash存储器进行访问。本发明通过使用状态机控制实现PCI接口到Flash接口的转化,可以更好的保证PCI接口到Flash存储器接口访问的可靠性及传输的高效性。
Description
技术领域
本发明涉及通讯技术领域,特别是涉及一种PCI接口转Flash接口的控制装置及方法。
背景技术
随着以太网技术的高速发展。以太网已经成为人们日常工作和生活必不可少的工具。而在以太网交换设备上用户对于数据传送需求越来越多,而且传输速率的要求越来越高,这就要求CPU(Central Processing Unit,中央处理器)与周边设备能实现高速结合。PCI(Peripheral component interconnect,外设组件互连标准)接口即可满足此类需求;并且整个交换设备一般选用Flash(闪存,英文名称为″Flash Memory″,简称为″Flash″)作为存储设备,因而PCI接口到Flash接口的转化具有相当重要的地位和作用。
目前Flash主要应用于计算机平台中,与CPU、DDR(Double Data Rate,双倍速率同步动态随机存储器)、声卡、显卡等构成一个计算机平台***,多将Flash用于存储BOOT启动程序,或者存储临时文件等,应用较为单一。
现有技术中的计算机平台架构,PCI接口上挂接Flash作为BOOT存储器,应用单一,而且并未提及其PCI接口到Flash接口转换的具体实现策略。
发明内容
本发明要解决的技术问题是提供一种PCI接口转Flash接口的控制装置及方法,用以解决现有技术PCI接口上挂接Flash作为BOOT存储器应用单一的问题。
为解决上述技术问题,一方面,本发明提供一种PCI接口转Flash接口的控制装置,所述装置包括:
PCI接口模块,通过PCI接口与PCI总线连接,与PCI主设备进行数据通讯;
状态机控制模块,与所述PCI接口模块连接,用于根据所述PCI接口模块获取的所述PCI总线上的操作信息,确定状态机控制模块的状态;
Flash接口模块,与所述状态机控制模块连接,且通过Flash接口与Flash存储器连接,用于根据所述状态机控制模块的状态,对所述Flash存储器进行访问。
进一步,当所述PCI总线上的操作信息为对所述Flash存储器的写操作时,所述状态机控制模块的状态为写Flash状态,所述Flash接口模块向所述Flash存储器发送写指令和写数据格式;待写操作结束后,所述状态机控制模块的状态由写Flash状态跳转为PCI空闲状态。
进一步,当所述PCI总线上的操作信息为对所述Flash存储器的读操作时,所述状态机控制模块的状态为读Flash状态,所述Flash接口模块向所述Flash存储器发送读指令格式;待读操作结束后,所述状态机控制模块的状态由读Flash状态跳转为PCI空闲状态。
另一方面,本发明还提供一种PCI接口转Flash接口的控制方法,所述方法包括以下步骤:
A,PCI接口模块通过PCI接口获取PCI总线上的操作信息;
B,根据所述PCI总线上的操作信息,确定状态机控制模块的状态;
C,根据所述状态机控制模块的状态,Flash接口模块对Flash存储器进行访问。
进一步,在获取所述PCI总线上的操作信息之后,还包括:
判断所述PCI总线发起的操作是否是对所述Flash存储器进行访问,如果是,则转步骤B;如果否,则所述状态机控制模块的状态为PCI忙状态,所述PCI总线根据初始化时分配的PCI从设备地址,访问与所述操作信息对应的PCI从设备。
进一步,访问所述PCI从设备结束之后,所述状态机控制模块的状态由PCI忙状态跳转为PCI空闲状态。
进一步,当所述PCI总线上的操作信息为对所述Flash存储器的写操作时,所述状态机控制模块的状态为写Flash状态,所述Flash接口模块向所述Flash存储器发送写指令和写数据格式。
进一步,待写操作结束后,所述状态机控制模块的状态由写Flash状态跳转为PCI空闲状态。
进一步,当所述PCI总线上的操作信息为对所述Flash存储器的读操作时,所述状态机控制模块的状态为读Flash状态,所述Flash接口模块向所述Flash存储器发送读指令格式。
进一步,待读操作结束后,所述状态机控制模块的状态由读Flash状态跳转为PCI空闲状态。
本发明有益效果如下:
本发明通过使用状态机控制实现PCI接口到Flash接口的转化,使得PCI总线操作以及Flash存储器接口操作在主状态机中都有具体的对应状态,可以更好的保证PCI接口到Flash存储器接口访问的可靠性及传输的高效性。此外,本发明还提供了标准的PCI接口,使得本发明可以灵活移植,运用于其他设备中。并使用了单独的PCI接口模块,Flash接口模块,使得接口实现更为独立和清晰,防止其他信号参与和影响标准接口上各信号间的配合,有利于***的升级和维护。
附图说明
图1是本发明实施例中一种PCI接口转Flash接口的控制装置的结构示意图;
图2是本发明实施例中状态机控制模块状态机的实现示意图;
图3是本发明实施例中一种PCI接口转Flash接口的控制方法的流程图。
具体实施方式
为了解决现有技术PCI接口上挂接Flash实现方法空白以及作为BOOT存储器应用单一的问题,本发明提供了一种PCI接口转Flash接口的控制装置及方法,以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。
如图1所示,本发明实施例涉及一种PCI接口转Flash接口的控制装置,包括:
PCI接口模块101,通过PCI接口与PCI总线104连接,与PCI主设备进行数据通讯;
状态机控制模块102,与PCI接口模块101连接,用于根据PCI接口模块101获取的PCI总线104上的操作信息,确定状态机控制模块102的状态;
Flash接口模块103,与状态机控制模块102连接,且通过Flash接口与Flash存储器105连接,用于根据状态机控制模块102的状态,对Flash存储器105进行访问。
本实施例中,PCI接口模块101,包括了标准的PCI接口,与PCI主设备进行通信,是CPU访问Flash存储器105的数据和控制通道。PCI接口模块101对外直接与PCI总线104相连,对内与状态机控制模块102相连。在PCI总线104发起的对Flash存储器进行读、写或擦除操作时,PCI总线104侧看到的只有PCI总线104上的写操作和读操作。在PCI总线104进行写操作时,PCI接口模块101负责将CPU发起的写地址和写数据(操作信息)传递给状态机控制模块102,并且将写操作过程中的PCI总线104握手信息通过PCI总线104传递给CPU。在PCI总线104进行读操作时,PCI接口模块101负责将CPU发起的读地址传递给状态机控制模块102,并将从Flash接口端读回的数据通过PCI接口传递给CPU;PCI接口模块101还负责PCI总线104访问过程中的数据、地址校验计算,以及PCI总线104仲裁信息处理等。
状态机控制模块102,包括了在PCI总线104访问Flash存储器105时状态跳转情况,是本发明实施例的核心部分。状态机控制模块102分别与PCI接口模块101和Flash接口模块103相连。在PCI总线104初始化完成后,状态机控制模块102处于空闲状态,一旦PCI总线104发起总线操作,状态机即根据指令类型(操作信息)发生跳转,如果是对非Flash所分配的地址进行的操作,则根据指令内容跳转至PCI忙状态,当PCI总线操作完成后,状态机控制模块102跳转至PCI空闲状态;如果是对Flash存储器105所分配的地址进行的写操作,则根据指令内容跳转至Flash写操作状态,完成Flash写操作后,状态机控制模块102跳转至PCI空闲状态;如果是对Flash存储器105所分配的地址进行读操作,则根据指令内容跳转至Flash读操作状态,完成Flash读操作后,状态机控制模块102跳转至PCI空闲状态。
Flash接口模块103,包括了标准的Flash接口,连接Flash存储器105,与Flash存储器105进行通信;是对Flash存储器105进行读、写或擦除等一系列操作的控制和数据通道。Flash接口模块103对内与状态机控制模块102连接,对外与Flash存储器105相连。在对Flash存储器105进行写操作时,Flash接口模块103负责提供Flash接口标准的写指令、写数据格式,发送给Flash存储器105。在对Flash存储器105进行读操作时,Flash接口模块103负责提供Flash标准的读指令格式,发送给Flash存储器105,并正确接收由Flash存储器105返回的读数据;在对Flash存储器105进行擦除操作时,按照Flash接口协议规定的访问方式,对Flash对应地址进行操作。
如图2所示,本发明实施例状态机控制模块102的状态包括以下几个状态:
PCI空闲状态201:此状态为状态机控制模块102的默认状态。当以太网交换机设备开始工作,即进入PCI空闲状态201,而当PCI总线104上发起总线操作后,状态机控制模块102将从PCI空闲状态201跳转至PCI忙状态202或Flash访问状态203;当PCI总线访问结束后,状态机控制模块102则从PCI忙状态202跳转至PCI空闲状态201。当对Flash进行的是写操作,状态机控制模块102则从Flash访问状态203自动跳转至写Flash状态204,当Flash写操作完成后,状态机控制模块102则从写Flash状态204跳转至PCI空闲状态201。当对Flash进行的是读操作,状态机控制模块102则从Flash访问状态203自动跳转至读Flash状态205,当Flash读操作完成后,状态机控制模块102则从读Flash状态205跳转至PCI空闲状态201。当PCI总线上无操作,状态机控制模块102则维持PCI空闲状态201。
PCI忙状态202:当PCI总线上发起非Flash分配的地址读或写操作的时候,状态机控制模块102即进入PCI忙状态202。状态机控制模块102从PCI空闲状态201跳转至PCI忙状态202的条件包括但不限于以下几种操作:(1)对非Flash分配地址空间的读操作;(2)对非Flash分配地址空间的写操作;(3)对PCI总线设备的设备号询问操作等。当以上操作完成,PCI总线被释放后,状态机控制模块102即从PCI忙状态202跳转至PCI空闲状态201。
Flash访问状态203:当PCI总线空闲状态201时收到PCI总线上访问Flash地址的读操作或者写操作时,状态机控制模块102即从PCI总线空闲状态201跳转至Flash访问状态203;Flash访问状态203根据PCI总线上的操作属性,如果是Flash写操作则自动跳转至写Flash状态204,如果是Flash读操作则自动跳转至读Flash状态205。
写Flash状态204:此状态由Flash访问状态203根据PCI总线上发起的是Flash存储器的写操作自动跳转而来,当对Flash存储器的写操作完成后,写Flash状态204将跳转至PCI空闲状态201。
读Flash状态205:此状态由Flash访问状态203根据PCI总线上发起的是Flash存储器的读操作自动跳转而来,当对Flash存储器的读操作完成后,读Flash状态205将跳转至PCI空闲状态201。
本发明实施例的控制装置可通过但不限于可编程逻辑器件,或ASIC(Application Specific Integrated Circuit,专用集成电路)芯片等载体实现。
另外,本发明实施例还涉及一种由上述装置实现的PCI接口转Flash接口的控制方法,包括以下步骤:
A,PCI接口模块通过PCI接口获取PCI总线上的操作信息;
B,根据所述PCI总线上的操作信息,确定状态机控制模块的状态;
C,根据所述状态机控制模块的状态,Flash接口模块对Flash存储器进行访问。
下面以一具体实施例对上述方法进行详细说明,如图3所示,本发明实施例PCI接口转Flash的控制方法包括以下几个步骤:
步骤301:设备开始工作。此步骤包含但不限于以太网交换机设备的上电启动,掉电重启,CPU发起软件复位,设备上硬件按钮复位等几种情况。
步骤302:PCI初始化,在初始化过程中,板上CPU获得各PCI从设备的设备号及各PCI设备分配的地址。此步骤中涉及状态机控制模块102状态机从PCI空闲状态201到PCI忙状态202间的跳转;PCI总线初始化完成,PCI总线空闲;
步骤303:PCI总线空闲。此步骤对应于PCI接口转Flash接口主状态机102的PCI空闲状态201。当PCI总线初始化完成后,CPU并未发起PCI总线上的操作时,或者是PCI总线上访问Flash存储器的地址空间及非Flash存储器的地址空间完成后,将进入此步骤;当以太网交换机设备掉电时,将进入步骤307,设备工作结束。
步骤304:PCI上新的总线操作到来,判断PCI总线上是否访问Flash对应的地址空间;此步骤对应于状态机控制模块102的Flash访问状态203。如果判定不是访问Flash存储器对应的地址空间,则进入步骤305,PCI总线访问其他设备;如果判定是访问Flash存储器对应的地址空间,则进入步骤306,根据操作属性,对Flash进行读、写或擦除操作。
步骤305:PCI总线访问其他设备,PCI总线根据初始化时分配的PCI从设备地址,访问对应的PCI从设备。此操作包括了PCI总线初始化过程中的询问PCI从设备ID号,分配PCI从设备地址空间,或PCI总线访问非Flash分配的地址空间等一系列操作。此步骤对应于状态机控制模块102的PCI忙状态202。此步骤完成后,将跳转至步骤303,PCI总线空闲,等待新的PCI总线操作到来。
步骤306:根据操作属性,对Flash进行读、写或擦除操作。此步骤包含了对Flash存储器的读操作,写操作或擦除操作。此步骤对应于状态机控制模块102的写Flash状态204和读Flash状态205。此步骤完成后,将跳转至步骤303,PCI总线空闲,等待新的PCI总线操作到来。
步骤307:设备工作结束。当以太网交换机设备掉电后,将进入此步骤。
本发明实施例实现了PCI接口到Flash接口的转化,可以应用于以太网交换机设备中,以Flash作为存储设备,用以存储以太网交换机的版本内容,业务上的配置文件,死机文件及BOOT升级时的临时文件等。本发明实施例不仅选用了高速的数据传输接口PCI接口,而且将Flash空间地址根据需求分段使用,大大提高了FLASH的利用空间。
本发明通过使用状态机控制实现PCI接口到Flash接口的转化,使得PCI总线操作,Flash存储器接口操作在主状态机中都有具体的对应状态,可以更好的保证PCI接口到Flash存储器接口访问的可靠性及传输的高效性。此外,本发明还提供了标准的PCI接口,使得本发明可以灵活移植,运用于其他设备中。并使用了单独的PCI接口模块,Flash接口模块,使得接口实现更为独立和清晰,防止其他信号参与和影响标准接口上各信号间的配合,有利于***的升级和维护。
尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。
Claims (10)
1.一种PCI接口转Flash接口的控制装置,其特征在于,所述装置包括:
PCI接口模块,通过PCI接口与PCI总线连接,与PCI主设备进行数据通讯;
状态机控制模块,与所述PCI接口模块连接,用于根据所述PCI接口模块获取的所述PCI总线上的操作信息,确定状态机控制模块的状态;
Flash接口模块,与所述状态机控制模块连接,且通过Flash接口与Flash存储器连接,用于根据所述状态机控制模块的状态,对所述Flash存储器进行访问。
2.如权利要求1所述的PCI接口转Flash接口的控制装置,其特征在于,当所述PCI总线上的操作信息为对所述Flash存储器的写操作时,所述状态机控制模块的状态为写Flash状态,所述Flash接口模块向所述Flash存储器发送写指令和写数据格式;待写操作结束后,所述状态机控制模块的状态由写Flash状态跳转为PCI空闲状态。
3.如权利要求1所述的PCI接口转Flash接口的控制装置,其特征在于,当所述PCI总线上的操作信息为对所述Flash存储器的读操作时,所述状态机控制模块的状态为读Flash状态,所述Flash接口模块向所述Flash存储器发送读指令格式;待读操作结束后,所述状态机控制模块的状态由读Flash状态跳转为PCI空闲状态。
4.一种PCI接口转Flash接口的控制方法,其特征在于,所述方法包括以下步骤:
A,PCI接口模块通过PCI接口获取PCI总线上的操作信息;
B,根据所述PCI总线上的操作信息,确定状态机控制模块的状态;
C,根据所述状态机控制模块的状态,Flash接口模块对Flash存储器进行访问。
5.如权利要求4所述的PCI接口转Flash接口的控制方法,其特征在于,在获取所述PCI总线上的操作信息之后,还包括:
判断所述PCI总线发起的操作是否是对所述Flash存储器进行访问,如果是,则转步骤B;如果否,则所述状态机控制模块的状态为PCI忙状态,所述PCI总线根据初始化时分配的PCI从设备地址,访问与所述操作信息对应的PCI从设备。
6.如权利要求5所述的PCI接口转Flash接口的控制方法,其特征在于,访问所述PCI从设备结束之后,所述状态机控制模块的状态由PCI忙状态跳转为PCI空闲状态。
7.如权利要求4所述的PCI接口转Flash接口的控制方法,其特征在于,当所述PCI总线上的操作信息为对所述Flash存储器的写操作时,所述状态机控制模块的状态为写Flash状态,所述Flash接口模块向所述Flash存储器发送写指令和写数据格式。
8.如权利要求7所述的PCI接口转Flash接口的控制方法,其特征在于,待写操作结束后,所述状态机控制模块的状态由写Flash状态跳转为PCI空闲状态。
9.如权利要求4所述的PCI接口转Flash接口的控制方法,其特征在于,当所述PCI总线上的操作信息为对所述Flash存储器的读操作时,所述状态机控制模块的状态为读Flash状态,所述Flash接口模块向所述Flash存储器发送读指令格式。
10.如权利要求9所述的PCI接口转Flash接口的控制方法,其特征在于,待读操作结束后,所述状态机控制模块的状态由读Flash状态跳转为PCI空闲状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011102085176A CN102279828A (zh) | 2011-07-25 | 2011-07-25 | 一种PCI接口转Flash接口的控制装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011102085176A CN102279828A (zh) | 2011-07-25 | 2011-07-25 | 一种PCI接口转Flash接口的控制装置及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102279828A true CN102279828A (zh) | 2011-12-14 |
Family
ID=45105286
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011102085176A Pending CN102279828A (zh) | 2011-07-25 | 2011-07-25 | 一种PCI接口转Flash接口的控制装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102279828A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729165A (zh) * | 2014-01-16 | 2014-04-16 | 哈尔滨工业大学 | 应用于高速运动控制***的pci从设备核心控制模块 |
CN108897583A (zh) * | 2018-06-27 | 2018-11-27 | 北京东土军悦科技有限公司 | 交换机启动方法、交换机和存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070179631A1 (en) * | 2006-01-27 | 2007-08-02 | Valeo Systems Thermiques S.A.S. | System and method of communication by serial communication bus |
CN100568210C (zh) * | 2007-07-13 | 2009-12-09 | 上海大学 | 一种用于图像处理器的pci适配器 |
CN201583944U (zh) * | 2009-12-24 | 2010-09-15 | 北京航天长征飞行器研究所 | 一种采用fpga实现基于pci总线的实时采集卡 |
CN101169673B (zh) * | 2007-10-15 | 2011-05-11 | 中兴通讯股份有限公司 | 实时时钟芯片接口电路的控制方法及实时时钟控制电路 |
-
2011
- 2011-07-25 CN CN2011102085176A patent/CN102279828A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070179631A1 (en) * | 2006-01-27 | 2007-08-02 | Valeo Systems Thermiques S.A.S. | System and method of communication by serial communication bus |
CN100568210C (zh) * | 2007-07-13 | 2009-12-09 | 上海大学 | 一种用于图像处理器的pci适配器 |
CN101169673B (zh) * | 2007-10-15 | 2011-05-11 | 中兴通讯股份有限公司 | 实时时钟芯片接口电路的控制方法及实时时钟控制电路 |
CN201583944U (zh) * | 2009-12-24 | 2010-09-15 | 北京航天长征飞行器研究所 | 一种采用fpga实现基于pci总线的实时采集卡 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103729165A (zh) * | 2014-01-16 | 2014-04-16 | 哈尔滨工业大学 | 应用于高速运动控制***的pci从设备核心控制模块 |
CN108897583A (zh) * | 2018-06-27 | 2018-11-27 | 北京东土军悦科技有限公司 | 交换机启动方法、交换机和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101133404B (zh) | 用于与存储器装置通信的***和方法 | |
CN102110072B (zh) | 一种多处理器完全互访的方法及*** | |
CN101136000B (zh) | 实现sd主机/从属设备的应用处理器电路和电子设备 | |
JP4799417B2 (ja) | ホストコントローラ | |
MX2012005934A (es) | Disco de estado solido (ssd) multi-interfaz, metodo de procesamiento y sistema del mismo. | |
CN101866328A (zh) | 一种自动访问的串行总线读写控制方法 | |
CN104021102A (zh) | 基于状态机和片内总线的cpci串口板及其工作方法 | |
CN104570846A (zh) | Fpga重配置控制器及其控制方法 | |
CN101140556A (zh) | 用可编程器件实现访问多个i2c从器件的方法及装置 | |
CN110968352B (zh) | 一种pcie设备的复位***及服务器*** | |
CN105404538A (zh) | 一种fpga的加载和升级目标代码的装置及方法 | |
CN103218337A (zh) | 基于wishbone总线实现主与主、从与从通信的片上***和方法 | |
US20100023669A1 (en) | Host controller disposed in multi-function card reader | |
DE102020101958A1 (de) | Dynamisches spurzugriffswechseln zwischen pcie-wurzelräumen | |
JP2007280347A (ja) | メモリカード及びメモリカード制御切替方法 | |
CN101436171A (zh) | 模块化通信控制*** | |
CN101281454A (zh) | 一种绑定计算资源和存储资源的装置 | |
JPH11126182A (ja) | コンピュータバス間通信装置及びその方法 | |
CN106874228A (zh) | 基于i2c总线的控制器及通信方法、多控制器间的通信方法 | |
CN116185499B (zh) | 寄存器数据传输方法、寄存器缓存模块、智能设备和介质 | |
CN101369257B (zh) | 一种启动数据处理模块的方法、装置及*** | |
CN102279828A (zh) | 一种PCI接口转Flash接口的控制装置及方法 | |
CN219574799U (zh) | 一种基于amba总线的多总线桥接器及其片上*** | |
CN101251831B (zh) | 支持主从设备互换的移动存储器和主从设备互换方法 | |
US20190286606A1 (en) | Network-on-chip and computer system including the same |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20111214 |
|
RJ01 | Rejection of invention patent application after publication |