CN115292223A - 一种pcm主转主通讯方法及一种可编辑逻辑器件 - Google Patents
一种pcm主转主通讯方法及一种可编辑逻辑器件 Download PDFInfo
- Publication number
- CN115292223A CN115292223A CN202210807995.7A CN202210807995A CN115292223A CN 115292223 A CN115292223 A CN 115292223A CN 202210807995 A CN202210807995 A CN 202210807995A CN 115292223 A CN115292223 A CN 115292223A
- Authority
- CN
- China
- Prior art keywords
- pcm1
- state
- assigning
- data
- counter
- 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
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/382—Information transfer, e.g. on bus using universal interface adapter
-
- 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
Abstract
本发明涉及一种PCM主转主通讯方法及一种可编辑逻辑器件,该方法中通过可编辑逻辑器件实现两个PCM主设备之间的通讯;可编辑逻辑器件的配置过程包括:定义可编辑逻辑器件的引脚,包括:与第一主设备的通讯信号连接的引脚、与第二主设备的通讯信号连接的引脚和用于接收复位信号的复位引脚;将接收至第一主设备和第二主设备的时钟信号分别取反后得到第一主设备和第二主设备的内部逆向时钟信号;分别构建第一主设备和第二主设备对应的的内部计数状态机、数据接收状态机和数据发送状态机。本发明可以实现PCM主对主的无延迟转换,同时可以实现总线的时隙分配以及数据移位,适应不同厂家的PCM接口差异。
Description
技术领域
本发明涉及PCM通讯领域,尤其涉及一种PCM主转主通讯方法及一种可编辑逻辑器件。
背景技术
现有的PCM均为主从通信接口,因主设备需要提供时钟信号和帧同步信号,因此一组总线上无法同时存在2个主设备,无法实现主设备与主设备之间的通讯。
发明内容
为了解决上述问题,本发明提出了一种PCM主转主通讯方法及一种可编辑逻辑器件。
具体方案如下:
一种PCM主转主通讯方法,通过可编辑逻辑器件实现两个PCM主设备之间的通讯;可编辑逻辑器件的配置过程包括:
定义可编辑逻辑器件的引脚,包括:与第一主设备的通讯信号连接的引脚、与第二主设备的通讯信号连接的引脚和用于接收复位信号的复位引脚;
将接收至第一主设备和第二主设备的时钟信号分别取反后得到第一主设备和第二主设备的内部逆向时钟信号;
分别构建第一主设备和第二主设备对应的的内部计数状态机、数据接收状态机和数据发送状态机;
内部计数状态机在内部逆向时钟信号触发上升沿时,根据内部计数状态机的状态变量的值的不同实现计数,并当计数值达到计数阈值时实现对主设备接收数据使能信号的赋值;
数据接收状态机在主设备的时钟信号触发下降沿时,根据数据接收状态机的状态变量的值的不同实现对主设备数据的接收,并存入数据缓存;
数据发送状态机在主设备的时钟信号触发上升沿时,根据数据发送状态机的状态变量的值的不同和主设备接收数据使能信号的值的不同,实现将数据缓存中的数据发送至主设备,并在空闲时将向主设备发送数据的引脚设置为高组态。
进一步的,可编辑逻辑器件的引脚包括PCM1_DOUT、PCM1_DIN、PCM1_CLK、PCM1_FS、PCM1_DOUT、PCM1_DIN、PCM1_CLK、PCM1_FS和RESET;其中,PCM1_DOUT、PCM1_DIN、PCM1_CLK、PCM1_FS分别与第一主设备PCM1的数据接收信号、数据发送信号、时钟信号、帧同步信号一一对应连接;PCM2_DOUT、PCM2_DIN、PCM2_CLK、PCM2_FS分别与第二主设备PCM2的数据接收信号、数据发送信号、时钟信号、帧同步信号一一对应连接;RESET为复位引脚。
进一步的,第一主设备PCM1的内部计数状态机的构建过程包括以下步骤:
S301:定义变量PCM1_COUNTER、PCM1_COUN_STATE、PCM1_ENABLE和pcm1_fs_pr。其中:
PCM1_COUNTER表示第一主设备PCM1对应的计数器;
PCM1_COUN_STATE表示第一主设备PCM1对应的内部计数状态机的状态,值包括:IDLE、COUNTER_EN和others三种,其中,IDLE表示空闲状态,COUNTER_EN表示计数状态,others表示IDLE和COUNTER_EN之外的其他状态;
PCM1_ENABLE表示第一主设备PCM1对应的开始采集数据的使能,即当PCM1_ENABLE为1时,第一主设备PCM1开始采集数据,当PCM1_ENABLE为0时,第一主设备PCM1停止采集数据;
pcm1_fs_pr表示第一主设备PCM1对应的帧同步信号的触发标志,值为0或1两种;
S302:判断RESET引脚接收到的信号是否表示复位状态,如果是,进入S303;否则,进入S304;
S303:对变量进行以下赋值:
将PCM1_COUNTER赋值为0;
将PCM1_COUN_STATE赋值为IDLE;
将PCM1_ENABLE赋值为0;
将pcm1_fs_pr赋值为1;
S304:判断PCM1_COUNTER_CLK是否触发上升沿,如果是,根据内部计数状态机的状态变量PCM1_COUN_STATE的值的不同进行以下操作:
(1)当PCM1_COUN_STATE=IDLE时,判断是否满足:PCM1_FS=1且pcm1_fs_pr=0,
如果满足,对变量进行以下赋值:
将PCM1_COUNTER赋值为0;
将PCM1_COUN_STATE赋值为COUNTER_EN;
将PCM1_ENABLE赋值为0;
将pcm1_fs_pr赋值为0;
如果不满足,对变量进行以下赋值:
将PCM1_COUNTER赋值为0;
将PCM1_ENABLE赋值为0;
将pcm1_fs_pr赋值为PCM1_FS;
(2)当PCM1_COUN_STATE=COUNTER_EN时,判断是否满足PCM1_COUNTER的值等于计数阈值,
如果满足,对变量进行以下赋值:
将PCM1_COUNTER赋值为0;
将PCM1_COUN_STATE赋值为IDLE;
将PCM1_ENABLE赋值为1;
如果不满足,对变量进行以下赋值:
另PCM1_COUNTER自加一;
将PCM1_ENABLE赋值为0;
(3)当PCM1_COUN_STATE=others时,对变量进行以下赋值:
将PCM1_COUNTER赋值为0;
将PCM1_COUN_STATE赋值为IDLE;
将PCM1_ENABLE赋值为0。
进一步的,第一主设备PCM1的数据接收状态机的构建过程包括以下步骤:
S401:定义变量PCM1_TX_BUF、PCM1_TX_STATE、PCM1_TX_COUNTER和PCM1_TO_PCM2_BUF。其中:
PCM1_TX_BUF表示第一主设备PCM1对应的数据发送缓存;
PCM1_TX_STATE表示第一主设备PCM1对应的数据接收状态机的状态,值包括:IDLE、DATA、SWITCH和others四种,其中,IDLE表示空闲状态,DATA表示数据接收状态,SWITCH表示数据交换状态,others表示IDLE、DATA和SWITCH之外的其他状态;
PCM1_TX_COUNTER表示第一主设备PCM1对应的数据接收计数器;
PCM1_TO_PCM2_BUF表示第一主设备PCM1发送数据至第二主设备PCM2时对应的数据缓存。
S402:判断RESET引脚接收到的信号是否表示复位状态,如果是,进入S403;否则,进入S404;
S403:对变量进行以下赋值:
将PCM1_TX_BUF赋值为0;
将PCM1_TX_COUNTER赋值为0;
将PCM1_TX_STATE赋值为IDLE;
S404:判断PCM1_CLK是否触发下降沿,如果是,根据数据接收状态机的状态变量PCM1_TX_STATE的值的不同进行以下操作:
(1)当PCM1_TX_STATE=IDLE时,判断是否满足PCM1_FS=1,如果满足,对变量进行以下赋值:
将PCM1_TX_BUF赋值为PCM1_DOUT引脚接收到的信号;
令PCM1_TX_COUNTER自加一;
将PCM1_TX_STATE赋值为DATA;
如果不满足,对变量进行以下赋值:
将PCM1_TX_BUF赋值为0;
将PCM1_TX_COUNTER赋值为0;
将PCM1_TX_STATE赋值为IDLE;
(2)当PCM1_TX_STATE=DATA时,判断是否满足PCM1_TX_COUNTER的值等于缓存数据计数阈值,
如果满足,对变量进行以下赋值:
将PCM1_TX_BUF赋值为PCM1_DOUT引脚接收到的信号;
将PCM1_TX_COUNTER赋值为0;
将PCM1_TX_STATE赋值为SWITCH;
如果不满足,对变量进行以下赋值:
将PCM1_TX_BUF赋值为PCM1_DOUT引脚接收到的信号;
令PCM1_TX_COUNTER自加一;
(3)当PCM1_TX_STATE=SWITCH时,对变量进行以下赋值:
将PCM1_TX_BUF的值赋值给PCM1_TO_PCM2_BUF;
将PCM1_TX_STATE赋值为IDLE;
(4)当PCM1_TX_STATE=others时,对变量进行以下赋值:
将PCM1_TX_COUNTER赋值为0;
将PCM1_TX_STATE赋值为IDLE。
进一步的,第一主设备PCM1的数据发送状态机的构建过程包括以下步骤:
S501:定义变量PCM1_RX_COUNTER、PCM1_RX_STATE和PCM1_RX_BUF。其中:
PCM1_RX_STATE表示第一主设备PCM1对应的数据发送状态机的状态,值包括:IDLE、DATA、others三种,其中,IDLE表示空闲状态,DATA表示数据接收状态,others表示IDLE和DATA之外的其他状态;
PCM1_RX_COUNTER表示第一主设备PCM1对应的数据发送计数器;
PCM1_RX_BUF表示第一主设备PCM1对应的数据接收缓存;
S502:判断RESET引脚接收到的信号是否表示复位状态,如果是,进入S503;否则,进入S504;
S503:对变量进行以下赋值:
将PCM1_DIN引脚设置位高阻态;
将PCM1_RX_COUNTER赋值为0;
将PCM1_RX_STATE赋值为IDLE;
S504:判断PCM1_CLK是否触发上升沿,如果是,根据数据发送状态机的状态变量PCM1_RX_STATE的值的不同进行以下操作:
(1)当PCM1_RX_STATE=IDLE时,判断是否满足PCM1_ENABLE=1,
如果满足,对变量进行以下赋值:
将PCM2_TO_PCM1_BUF赋值给PCM1_RX_BUF;
将PCM1_RX_STATE赋值为DATA;
如果不满足,对变量进行以下赋值:
将PCM1_DIN引脚设置位高阻态;
将PCM1_RX_COUNTER赋值为0;
将PCM1_RX_STATE赋值为IDLE;
(2)当PCM1_RX_STATE=DATA时,判断是否满足PCM1_TX_COUNTER的值等于缓存数据计数阈值,
如果满足,对变量进行以下赋值:
将PCM1_RX_BUF的值赋值给PCM1_DIN引脚;
将PCM1_TX_COUNTER赋值为0;
将PCM1_TX_STATE赋值为IDLE;
如果不满足,对变量进行以下赋值:
将PCM1_RX_BUF的值赋值给PCM1_DIN引脚;
令PCM1_RX_COUNTER自加一;
将PCM1_RX_STATE赋值为DATA;
(3)当PCM1_RX_STATE=others时,对变量进行以下赋值:
将PCM1_RX_COUNTER赋值为0;
将PCM1_DIN引脚设置位高阻态;
将PCM1_RX_STATE赋值为IDLE。
一种可编辑逻辑器件,通过本发明实施例上述的方法的步骤进行配置。
进一步的,可编辑逻辑器件为CPLD类型。
本发明采用如上技术方案,可以实现PCM主对主的无延迟转换,同时可以实现总线的时隙分配以及数据移位,适应不同厂家的PCM接口差异。
附图说明
图1所示为本发明实施例的流程图。
图2所示为本发明实施例中可编辑逻辑器件的电路图。
具体实施方式
为进一步说明各实施例,本发明提供有附图。这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理。配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。
现结合附图和具体实施方式对本发明进一步说明。
本发明实施例提供了一种PCM主转主通讯方法,通过可编辑逻辑器件实现两个PCM主设备之间的通讯。可编辑逻辑器件可以为CPLD、FPGA等,本实施例中选用CPLD。如图1所示,可编辑逻辑器件的配置包括以下步骤:
S1:在可编辑逻辑器件中定义9个外部信号接入引脚,分别为:PCM1_DOUT、PCM1_DIN、PCM1_CLK、PCM1_FS、PCM1_DOUT、PCM1_DIN、PCM1_CLK、PCM1_FS和RESET,参考图2所示。其中,PCM1_DOUT、PCM1_DIN、PCM1_CLK、PCM1_FS分别与第一主设备PCM1的数据接收信号、数据发送信号、时钟信号、帧同步信号一一对应连接;PCM2_DOUT、PCM2_DIN、PCM2_CLK、PCM2_FS分别与第二主设备PCM2的数据接收信号、数据发送信号、时钟信号、帧同步信号一一对应连接;RESET与复位信号连接,用于接收复位信号。
S2:构建第一主设备PCM1的内部逆向时钟信号PCM1_COUNTER_CLK和第二主设备PCM2的内部逆向时钟信号PCM2_COUNTER_CLK,并将PCM1_CLK引脚输入的信号取反后赋值给PCM1_COUNTER_CLK,将PCM2_CLK引脚输入的信号取反后赋值给PCM2_COUNTER_CLK。
由于如果不取反的话,从同一个时钟沿无法进行数据采集,而是需要提前半个时钟,因此本实施例中采用取反的操作。
S3:分别构建第一主设备PCM1和第二主设备PCM2的内部计数状态机。
第一主设备PCM1的内部计数状态机与第二主设备PCM2的内部计数状态机的构建方式相同,下面以第一主设备PCM1的内部计数状态机为例进行说明,第二主设备PCM2的内部计数状态机的构建方式不再赘述。
第一主设备PCM1的内部计数状态机的构建过程包括以下步骤:
S301:定义变量PCM1_COUNTER、PCM1_COUN_STATE、PCM1_ENABLE和pcm1_fs_pr。其中:
PCM1_COUNTER表示第一主设备PCM1对应的计数器;
PCM1_COUN_STATE表示第一主设备PCM1对应的内部计数状态机的状态,值包括:IDLE、COUNTER_EN和others三种,其中,IDLE表示空闲状态,COUNTER_EN表示计数状态,others表示IDLE和COUNTER_EN之外的其他状态;
PCM1_ENABLE表示第一主设备PCM1对应的开始采集数据的使能,即当PCM1_ENABLE为1时,第一主设备PCM1开始采集数据,当PCM1_ENABLE为0时,第一主设备PCM1停止采集数据;
pcm1_fs_pr表示第一主设备PCM1对应的帧同步信号的触发标志,值为0或1两种。
S302:判断RESET引脚接收到的信号是否表示复位状态,如果是,进入S303;否则,进入S304。
S303:对变量进行以下赋值:
将PCM1_COUNTER赋值为0;
将PCM1_COUN_STATE赋值为IDLE;
将PCM1_ENABLE赋值为0;
将pcm1_fs_pr赋值为1。
S304:判断PCM1_COUNTER_CLK是否触发上升沿,如果是,根据内部计数状态机的状态变量PCM1_COUN_STATE的值的不同进行以下操作:
判断PCM1_COUNTER_CLK是否触发上升沿的方法为:当PCM1_COUNTER_CLK发生跳变且PCM1_COUNTER_CLK值为1时,判定PCM1_COUNTER_CLK触发上升沿。
(1)当PCM1_COUN_STATE=IDLE时,判断是否满足:PCM1_FS=1且pcm1_fs_pr=0,
如果满足,对变量进行以下赋值:
将PCM1_COUNTER赋值为0;
将PCM1_COUN_STATE赋值为COUNTER_EN;
将PCM1_ENABLE赋值为0;
将pcm1_fs_pr赋值为0;
如果不满足,对变量进行以下赋值:
将PCM1_COUNTER赋值为0;
将PCM1_ENABLE赋值为0;
将pcm1_fs_pr赋值为PCM1_FS。
(2)当PCM1_COUN_STATE=COUNTER_EN时,判断是否满足PCM1_COUNTER的值等于计数阈值(计数阈值本实施例中设定为"011111101"(二进制)),
如果满足,对变量进行以下赋值:
将PCM1_COUNTER赋值为0;
将PCM1_COUN_STATE赋值为IDLE;
将PCM1_ENABLE赋值为1;
如果不满足,对变量进行以下赋值:
另PCM1_COUNTER自加一;
将PCM1_ENABLE赋值为0。
(3)当PCM1_COUN_STATE=others时,对变量进行以下赋值:
将PCM1_COUNTER赋值为0;
将PCM1_COUN_STATE赋值为IDLE;
将PCM1_ENABLE赋值为0。
S4:分别构建第一主设备PCM1和第二主设备PCM2的数据接收状态机。
第一主设备PCM1的数据接收状态机用于接收第一主设备PCM1发送的数据,并转发至第二主设备PCM2对应的发送缓存。
第二主设备PCM2的数据接收状态机用于接收第二主设备PCM2发送的数据,并转发至第一主设备PCM1对应的发送缓存。
第一主设备PCM1的数据接收状态机的构建过程包括以下步骤:
S401:定义变量PCM1_TX_BUF、PCM1_TX_STATE、PCM1_TX_COUNTER和PCM1_TO_PCM2_BUF。其中:
PCM1_TX_BUF表示第一主设备PCM1对应的数据发送缓存;
PCM1_TX_STATE表示第一主设备PCM1对应的数据接收状态机的状态,值包括:IDLE、DATA、SWITCH和others四种,其中,IDLE表示空闲状态,DATA表示数据接收状态,SWITCH表示数据交换状态,others表示IDLE、DATA和SWITCH之外的其他状态;
PCM1_TX_COUNTER表示第一主设备PCM1对应的数据接收计数器;
PCM1_TO_PCM2_BUF表示第一主设备PCM1发送数据至第二主设备PCM2时对应的数据缓存。
S402:判断RESET引脚接收到的信号是否表示复位状态,如果是,进入S403;否则,进入S404。
S403:对变量进行以下赋值:
将PCM1_TX_BUF赋值为0;
将PCM1_TX_COUNTER赋值为0;
将PCM1_TX_STATE赋值为IDLE。
S404:判断PCM1_CLK是否触发下降沿,如果是,根据数据接收状态机的状态变量PCM1_TX_STATE的值的不同进行以下操作:
判断PCM1_CLK是否触发下降沿的方法为:当PCM1_CLK发生跳变且PCM1_CLK值为0时,判定PCM1_CLK触发下降沿。
(1)当PCM1_TX_STATE=IDLE时,判断是否满足PCM1_FS=1,
如果满足,对变量进行以下赋值:
将PCM1_TX_BUF赋值为PCM1_DOUT引脚接收到的信号;
令PCM1_TX_COUNTER自加一;
将PCM1_TX_STATE赋值为DATA;
如果不满足,对变量进行以下赋值:
将PCM1_TX_BUF赋值为0;
将PCM1_TX_COUNTER赋值为0;
将PCM1_TX_STATE赋值为IDLE。
(2)当PCM1_TX_STATE=DATA时,判断是否满足PCM1_TX_COUNTER的值等于缓存数据计数阈值(缓存数据计数阈值本实施例中根据缓存的大小设定为二进制的"1111",在其他实施例中本领域技术人员可以根据需要设定其他值,在此不做限制),
如果满足,对变量进行以下赋值:
将PCM1_TX_BUF赋值为PCM1_DOUT引脚接收到的信号;
将PCM1_TX_COUNTER赋值为0;
将PCM1_TX_STATE赋值为SWITCH;
如果不满足,对变量进行以下赋值:
将PCM1_TX_BUF赋值为PCM1_DOUT引脚接收到的信号;
令PCM1_TX_COUNTER自加一。
(3)当PCM1_TX_STATE=SWITCH时,对变量进行以下赋值:
将PCM1_TX_BUF的值赋值给PCM1_TO_PCM2_BUF;
将PCM1_TX_STATE赋值为IDLE。
(4)当PCM1_TX_STATE=others时,对变量进行以下赋值:
将PCM1_TX_COUNTER赋值为0;
将PCM1_TX_STATE赋值为IDLE。
第二主设备PCM2的数据接收状态机的构建过程与第一主设备PCM1的数据接收状态机的构建过程类似,区别点在于定义了表示第二主设备PCM2对应的发送缓存的变量PCM2_TX_BUF和表示第二主设备PCM2发送数据至第一主设备PCM1时对应的数据缓存的变量PCM2_TO_PCM1_BUF。当数据接收状态机的状态为SWITCH时,将PCM2_TX_BUF的值赋值给PCM2_TO_PCM1_BUF,其具体构建过程在此不在赘述。
S5:分别构建第一主设备PCM1和第二主设备PCM2的数据发送状态机。
第一主设备PCM1的数据发送状态机的构建过程包括以下步骤:
S501:定义变量PCM1_RX_COUNTER、PCM1_RX_STATE和PCM1_RX_BUF。其中:
PCM1_RX_STATE表示第一主设备PCM1对应的数据发送状态机的状态,值包括:IDLE、DATA、others三种,其中,IDLE表示空闲状态,DATA表示数据接收状态,others表示IDLE和DATA之外的其他状态;
PCM1_RX_COUNTER表示第一主设备PCM1对应的数据发送计数器;
PCM1_RX_BUF表示第一主设备PCM1对应的数据接收缓存。
S502:判断RESET引脚接收到的信号是否表示复位状态,如果是,进入S503;否则,进入S504;
S503:对变量进行以下赋值:
将PCM1_DIN引脚设置位高阻态;
将PCM1_RX_COUNTER赋值为0;
将PCM1_RX_STATE赋值为IDLE。
S504:判断PCM1_CLK是否触发上升沿,如果是,根据数据发送状态机的状态变量PCM1_RX_STATE的值的不同进行以下操作:
(1)当PCM1_RX_STATE=IDLE时,判断是否满足PCM1_ENABLE=1,
如果满足,对变量进行以下赋值:
将PCM2_TO_PCM1_BUF赋值给PCM1_RX_BUF;
将PCM1_RX_STATE赋值为DATA;
如果不满足,对变量进行以下赋值:
将PCM1_DIN引脚设置位高阻态;
将PCM1_RX_COUNTER赋值为0;
将PCM1_RX_STATE赋值为IDLE。
(2)当PCM1_RX_STATE=DATA时,判断是否满足PCM1_TX_COUNTER的值等于缓存数据计数阈值,
如果满足,对变量进行以下赋值:
将PCM1_RX_BUF的值赋值给PCM1_DIN引脚;
将PCM1_TX_COUNTER赋值为0;
将PCM1_TX_STATE赋值为IDLE;
如果不满足,对变量进行以下赋值:
将PCM1_RX_BUF的值赋值给PCM1_DIN引脚;
令PCM1_RX_COUNTER自加一;
将PCM1_RX_STATE赋值为DATA。
(3)当PCM1_RX_STATE=others时,对变量进行以下赋值:
将PCM1_RX_COUNTER赋值为0;
将PCM1_DIN引脚设置位高阻态;
将PCM1_RX_STATE赋值为IDLE。
第二主设备PCM2的数据发送状态机的构建过程与第一主设备PCM1的数据发送状态机的构建过程类似,在此不在赘述。
本实施例整个流程都以主设备(PCM1和PCM2)本身的时钟和帧同步信号做触发,无需外部时钟等,实现不同源各自同步;因CPLD本身逻辑代码都是信号触发或并行处理,所以无系统延迟等问题,可以实现PCM主对主无延迟转换;因CPLD是信号逻辑,只需要缓存一个时隙数据,无需大缓存。通过CPLD不同组的GPIO,可以实现接口电平转换。
尽管结合优选实施方案具体展示和介绍了本发明,但所属领域的技术人员应该明白,在不脱离所附权利要求书所限定的本发明的精神和范围内,在形式上和细节上可以对本发明做出各种变化,均为本发明的保护范围。
Claims (7)
1.一种PCM主转主通讯方法,其特征在于:通过可编辑逻辑器件实现两个PCM主设备之间的通讯;可编辑逻辑器件的配置过程包括:
定义可编辑逻辑器件的引脚,包括:与第一主设备的通讯信号连接的引脚、与第二主设备的通讯信号连接的引脚和用于接收复位信号的复位引脚;
将接收至第一主设备和第二主设备的时钟信号分别取反后得到第一主设备和第二主设备的内部逆向时钟信号;
分别构建第一主设备和第二主设备对应的的内部计数状态机、数据接收状态机和数据发送状态机;
内部计数状态机在内部逆向时钟信号触发上升沿时,根据内部计数状态机的状态变量的值的不同实现计数,并当计数值达到计数阈值时实现对主设备接收数据使能信号的赋值;
数据接收状态机在主设备的时钟信号触发下降沿时,根据数据接收状态机的状态变量的值的不同实现对主设备数据的接收,并存入数据缓存;
数据发送状态机在主设备的时钟信号触发上升沿时,根据数据发送状态机的状态变量的值的不同和主设备接收数据使能信号的值的不同,实现将数据缓存中的数据发送至主设备,并在空闲时将向主设备发送数据的引脚设置为高组态。
2.根据权利要求1所述的PCM主转主通讯方法,其特征在于:可编辑逻辑器件的引脚包括PCM1_DOUT、PCM1_DIN、PCM1_CLK、PCM1_FS、PCM1_DOUT、PCM1_DIN、PCM1_CLK、PCM1_FS和RESET;其中,PCM1_DOUT、PCM1_DIN、PCM1_CLK、PCM1_FS分别与第一主设备PCM1的数据接收信号、数据发送信号、时钟信号、帧同步信号一一对应连接;PCM2_DOUT、PCM2_DIN、PCM2_CLK、PCM2_FS分别与第二主设备PCM2的数据接收信号、数据发送信号、时钟信号、帧同步信号一一对应连接;RESET为复位引脚。
3.根据权利要求2所述的PCM主转主通讯方法,其特征在于:第一主设备PCM1的内部计数状态机的构建过程包括以下步骤:
S301:定义变量PCM1_COUNTER、PCM1_COUN_STATE、PCM1_ENABLE和pcm1_fs_pr;其中:
PCM1_COUNTER表示第一主设备PCM1对应的计数器;
PCM1_COUN_STATE表示第一主设备PCM1对应的内部计数状态机的状态,值包括:IDLE、COUNTER_EN和others三种,其中,IDLE表示空闲状态,COUNTER_EN表示计数状态,others表示IDLE和COUNTER_EN之外的其他状态;
PCM1_ENABLE表示第一主设备PCM1对应的开始采集数据的使能,即当PCM1_ENABLE为1时,第一主设备PCM1开始采集数据,当PCM1_ENABLE为0时,第一主设备PCM1停止采集数据;
pcm1_fs_pr表示第一主设备PCM1对应的帧同步信号的触发标志,值为0或1两种;
S302:判断RESET引脚接收到的信号是否表示复位状态,如果是,进入S303;否则,进入S304;
S303:对变量进行以下赋值:
将PCM1_COUNTER赋值为0;
将PCM1_COUN_STATE赋值为IDLE;
将PCM1_ENABLE赋值为0;
将pcm1_fs_pr赋值为1;
S304:判断PCM1_COUNTER_CLK是否触发上升沿,如果是,根据内部计数状态机的状态变量PCM1_COUN_STATE的值的不同进行以下操作:
(1)当PCM1_COUN_STATE=IDLE时,判断是否满足:PCM1_FS=1且pcm1_fs_pr=0,
如果满足,对变量进行以下赋值:
将PCM1_COUNTER赋值为0;
将PCM1_COUN_STATE赋值为COUNTER_EN;
将PCM1_ENABLE赋值为0;
将pcm1_fs_pr赋值为0;
如果不满足,对变量进行以下赋值:
将PCM1_COUNTER赋值为0;
将PCM1_ENABLE赋值为0;
将pcm1_fs_pr赋值为PCM1_FS;
(2)当PCM1_COUN_STATE=COUNTER_EN时,判断是否满足PCM1_COUNTER的值等于计数阈值,
如果满足,对变量进行以下赋值:
将PCM1_COUNTER赋值为0;
将PCM1_COUN_STATE赋值为IDLE;
将PCM1_ENABLE赋值为1;
如果不满足,对变量进行以下赋值:
另PCM1_COUNTER自加一;
将PCM1_ENABLE赋值为0;
(3)当PCM1_COUN_STATE=others时,对变量进行以下赋值:
将PCM1_COUNTER赋值为0;
将PCM1_COUN_STATE赋值为IDLE;
将PCM1_ENABLE赋值为0。
4.根据权利要求2所述的PCM主转主通讯方法,其特征在于:第一主设备PCM1的数据接收状态机的构建过程包括以下步骤:
S401:定义变量PCM1_TX_BUF、PCM1_TX_STATE、PCM1_TX_COUNTER和PCM1_TO_PCM2_BUF;其中:
PCM1_TX_BUF表示第一主设备PCM1对应的数据发送缓存;
PCM1_TX_STATE表示第一主设备PCM1对应的数据接收状态机的状态,值包括:IDLE、DATA、SWITCH和others四种,其中,IDLE表示空闲状态,DATA表示数据接收状态,SWITCH表示数据交换状态,others表示IDLE、DATA和SWITCH之外的其他状态;
PCM1_TX_COUNTER表示第一主设备PCM1对应的数据接收计数器;
PCM1_TO_PCM2_BUF表示第一主设备PCM1发送数据至第二主设备PCM2时对应的数据缓存;
S402:判断RESET引脚接收到的信号是否表示复位状态,如果是,进入S403;否则,进入S404;
S403:对变量进行以下赋值:
将PCM1_TX_BUF赋值为0;
将PCM1_TX_COUNTER赋值为0;
将PCM1_TX_STATE赋值为IDLE;
S404:判断PCM1_CLK是否触发下降沿,如果是,根据数据接收状态机的状态变量PCM1_TX_STATE的值的不同进行以下操作:
(1)当PCM1_TX_STATE=IDLE时,判断是否满足PCM1_FS=1,
如果满足,对变量进行以下赋值:
将PCM1_TX_BUF赋值为PCM1_DOUT引脚接收到的信号;
令PCM1_TX_COUNTER自加一;
将PCM1_TX_STATE赋值为DATA;
如果不满足,对变量进行以下赋值:
将PCM1_TX_BUF赋值为0;
将PCM1_TX_COUNTER赋值为0;
将PCM1_TX_STATE赋值为IDLE;
(2)当PCM1_TX_STATE=DATA时,判断是否满足PCM1_TX_COUNTER的值等于缓存数据计数阈值,
如果满足,对变量进行以下赋值:
将PCM1_TX_BUF赋值为PCM1_DOUT引脚接收到的信号;
将PCM1_TX_COUNTER赋值为0;
将PCM1_TX_STATE赋值为SWITCH;
如果不满足,对变量进行以下赋值:
将PCM1_TX_BUF赋值为PCM1_DOUT引脚接收到的信号;
令PCM1_TX_COUNTER自加一;
(3)当PCM1_TX_STATE=SWITCH时,对变量进行以下赋值:
将PCM1_TX_BUF的值赋值给PCM1_TO_PCM2_BUF;
将PCM1_TX_STATE赋值为IDLE;
(4)当PCM1_TX_STATE=others时,对变量进行以下赋值:
将PCM1_TX_COUNTER赋值为0;
将PCM1_TX_STATE赋值为IDLE。
5.根据权利要求2所述的PCM主转主通讯方法,其特征在于:第一主设备PCM1的数据发送状态机的构建过程包括以下步骤:
S501:定义变量PCM1_RX_COUNTER、PCM1_RX_STATE和PCM1_RX_BUF;其中:
PCM1_RX_STATE表示第一主设备PCM1对应的数据发送状态机的状态,值包括:IDLE、DATA、others三种,其中,IDLE表示空闲状态,DATA表示数据接收状态,others表示IDLE和DATA之外的其他状态;
PCM1_RX_COUNTER表示第一主设备PCM1对应的数据发送计数器;
PCM1_RX_BUF表示第一主设备PCM1对应的数据接收缓存;
S502:判断RESET引脚接收到的信号是否表示复位状态,如果是,进入S503;否则,进入S504;
S503:对变量进行以下赋值:
将PCM1_DIN引脚设置位高阻态;
将PCM1_RX_COUNTER赋值为0;
将PCM1_RX_STATE赋值为IDLE;
S504:判断PCM1_CLK是否触发上升沿,如果是,根据数据发送状态机的状态变量PCM1_RX_STATE的值的不同进行以下操作:
(1)当PCM1_RX_STATE=IDLE时,判断是否满足PCM1_ENABLE=1,
如果满足,对变量进行以下赋值:
将PCM2_TO_PCM1_BUF赋值给PCM1_RX_BUF;
将PCM1_RX_STATE赋值为DATA;
如果不满足,对变量进行以下赋值:
将PCM1_DIN引脚设置位高阻态;
将PCM1_RX_COUNTER赋值为0;
将PCM1_RX_STATE赋值为IDLE;
(2)当PCM1_RX_STATE=DATA时,判断是否满足PCM1_TX_COUNTER的值等于缓存数据计数阈值,
如果满足,对变量进行以下赋值:
将PCM1_RX_BUF的值赋值给PCM1_DIN引脚;
将PCM1_TX_COUNTER赋值为0;
将PCM1_TX_STATE赋值为IDLE;
如果不满足,对变量进行以下赋值:
将PCM1_RX_BUF的值赋值给PCM1_DIN引脚;
令PCM1_RX_COUNTER自加一;
将PCM1_RX_STATE赋值为DATA;
(3)当PCM1_RX_STATE=others时,对变量进行以下赋值:
将PCM1_RX_COUNTER赋值为0;
将PCM1_DIN引脚设置位高阻态;
将PCM1_RX_STATE赋值为IDLE。
6.一种可编辑逻辑器件,其特征在于:通过如权利要求1~5中任一所述方法进行配置。
7.根据权利要求6所述的可编辑逻辑器件,其特征在于:可编辑逻辑器件为CPLD类型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210807995.7A CN115292223A (zh) | 2022-07-11 | 2022-07-11 | 一种pcm主转主通讯方法及一种可编辑逻辑器件 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210807995.7A CN115292223A (zh) | 2022-07-11 | 2022-07-11 | 一种pcm主转主通讯方法及一种可编辑逻辑器件 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115292223A true CN115292223A (zh) | 2022-11-04 |
Family
ID=83822380
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210807995.7A Pending CN115292223A (zh) | 2022-07-11 | 2022-07-11 | 一种pcm主转主通讯方法及一种可编辑逻辑器件 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115292223A (zh) |
-
2022
- 2022-07-11 CN CN202210807995.7A patent/CN115292223A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5555548A (en) | Method and apparatus for transferring data between a master unit and a plurality of slave units | |
EP0406925A1 (en) | Method of combining two data cell streams into a single data cell stream in an ATD multiplexer | |
US4648105A (en) | Register circuit for transmitting and receiving serial data | |
CN107656886B (zh) | 一种跨时钟域信号处理电路及其处理方法 | |
US4314233A (en) | Four-wire speed independent arbiter switch for digital communication networks | |
CN107750358B (zh) | 数据处理方法 | |
US3804982A (en) | Data communication system for serially transferring data between a first and a second location | |
US6697974B2 (en) | Method and apparatus for adaptively compensating skews during data transmission on a bus | |
US4307378A (en) | Four-wire speed independent selector switch for digital communication networks | |
CN115292223A (zh) | 一种pcm主转主通讯方法及一种可编辑逻辑器件 | |
US4289976A (en) | Circuit arrangement for the transmission of digital data | |
CN107122325B (zh) | 基于通用串行总线的数据传输系统及方法 | |
Dakua et al. | Design and implementation of UART serial communication module based on FPGA | |
CN111600784B (zh) | 数据处理方法、网络设备、主控板及逻辑芯片 | |
EP0282924A2 (en) | Bipolar with eight-zeros substitution and bipolar with six-zeros substitution coding circuit | |
US11714777B2 (en) | Method for performing data transmission control of inter field programmable gate arrays and associated apparatus | |
RU2084950C1 (ru) | Устройство для модификации адреса в цифровой сети | |
CN109525241B (zh) | 一种格雷码计数器 | |
KR100239437B1 (ko) | 직렬 통신 인터페이스 | |
CN111522387B (zh) | 电压同步控制电路及包含其的电压读取控制系统 | |
KR0175446B1 (ko) | 송신 유토피아 장치 | |
WO2002082648A2 (en) | Event detection with a digital processor | |
CN107835012B (zh) | 现场可编程门阵列及其模块间同步信号的传递方法 | |
SU474807A1 (ru) | Приоритетное устройство | |
CN114691421A (zh) | 解决通信接口暂态脉冲输出的电子装置及方法 |
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 |