首页 / 专利库 / 物理 / 频率依赖性 / 一种基于FPGA的总线通信控制器及总线通信控制方法

一种基于FPGA的总线通信控制器及总线通信控制方法

阅读:1019发布:2020-06-19

专利汇可以提供一种基于FPGA的总线通信控制器及总线通信控制方法专利检索,专利查询,专利分析的服务。并且本 发明 提供一种基于FPGA的总线通信 控制器 及总线通信控制方法,可以基于寄存器管理模 块 中多种类型的寄存器的取值指示总线通信控制器处于数据发送状态或者数据接收状态时,由控 制模 块来控制 现场总线 信号 控制模块 执行对应的操作,实现对FF总线上数据发送和数据接收的调度,即实现对FF总线的数据收发调度。并且从本发明提供的技术方案可知,MCU并未参与FF总线上数据发送和数据接收的处理过程,因此无需在MCU中加入处理 算法 ,这样MCU就无需采用核心 频率 较高的MCU,降低成本。并且上述总线通信控制器可以基于FPGA实现,降低总线通信控制器对国外芯片的依赖性,进一步降低成本。,下面是一种基于FPGA的总线通信控制器及总线通信控制方法专利的具体信息内容。

1.一种基于现场可编程阵列FPGA的总线通信控制器,其特征在于,所述总线通信控制器包括:寄存器管理模、中断管理模块、控制模块、现场总线信号控制模块接口模块;
所述寄存器管理模块中有多种类型的寄存器,每一种类型的寄存器对应一地址,且所述寄存器管理模块与微控制器相连,用于通过所述微控制器控制多种类型的寄存器的取值,以使所述微控制器基于多种类型的寄存器的取值监控所述总线通信控制器的工作过程;
中断管理模块,用于将基金会现场FF总线上数据的收发情况反馈给所述微控制器;
所述控制模块,用于当所述寄存器管理模块中多种类型的寄存器的取值指示所述总线通信控制器处于数据发送状态时,控制所述现场总线信号控制模块对将要发送的数据进行处理,以及用于当所述寄存器管理模块中多种类型的寄存器的取值指示所述总线通信控制器处于数据接收状态时,控制所述现场总线信号控制模块对接收的总线数据进行处理;
所述现场总线信号控制模块,用于通过FF总线协议对所述将要发送的数据进行编码转换,得到符合FF总线协议格式的信号,并通过所述接口模块发送到FF总线上,以及用于通过所述接口模块接收总线数据,对所述总线数据进行数据采样、数据解码和数据校验,并保存校验正确的所述总线数据。
2.根据权利要求1所述的总线通信控制器,其特征在于,所述总线通信控制器还包括:
第一存储器和第二存储器;
所述第一存储器,用于存储所述将要发送的数据,且所述现场总线信号控制模块,用于在接收到所述微控制器指示的所述将要发送的数据的长度后,从所述第一存储器中获取与所述长度相对应的数据进行编码转换;
所述第二存储器,用于存储所述校验正确的所述总线数据。
3.根据权利要求2所述的总线通信控制器,其特征在于,所述现场总线信号控制模块,用于采用第一时钟进行编码转换,并采用第二时钟进行发送,其中所述第一时钟高于所述第二时钟。
4.根据权利要求1所述的总线通信控制器,其特征在于,所述现场总线信号控制模块,用于通过查找信号跳变端取中间值的方法进行数据采样。
5.根据权利要求1所述的总线通信控制器,其特征在于,所述总线通信控制器还包括:
重配置模块,所述重配置模块具备在线烧写功能,用于通过所述在线烧写功能对所述总线通信控制器中的各个模块进行在线升级。
6.根据权利要求5所述的总线通信控制器,其特征在于,所述总线通信控制器的管脚至少包括:与所述微控制器连接相关的第一管脚、与外部的闪存连接相关的第二管脚和与FF总线连接相关的第三管脚:
所述第一管脚,用于使所述总线通信控制器与所述微控制器进行通信,且所述第一管脚至少包括:读写使能端、多路数据线、多路地址线和中断输出端,所述读写使能端用于控制所述总线通信控制器与所述微控制器之间的读写操作,所述中断输出端,用于连接所述微控制器的中断输入端,以向所述微控制器发送中断信号,所述中断信号用于指示所述总线通信控制器的工作状态,所述工作状态为数据发送状态或数据接收状态;
所述第二管脚,用于通过介质连接单元MAU与FF总线相连接,且所述第二管脚至少包括:一个输入端、一个输出端和一个使能控制端,所述使能控制端用于对所述输出端的对外输出进行使能控制;
所述第三管脚,用于与外部的闪存连接,通过所述重配置模块对所述闪存中内部数据的修改来在线升级所述总线通信控制器中的各个模块。
7.根据权利要求6所述的总线通信控制器,其特征在于,所述第一管脚还包括片选端,用于对所述多路地址线和多路数据线进行复用,以实现对不同FF总线的选择。
8.根据权利要求7所述的总线通信控制器,其特征在于,所述接口模块,用于将接收到的信号转换为所述总线通信控制器可使用的信号,以及用于根据所述片选端的取值来调用对应的所述现场总线信号控制模块。
9.根据权利要求1至8任意一项所述的总线通信控制器,其特征在于,所述寄存器管理模块包括:地址识别子模块、寄存器写入子模块和寄存器输出子模块;
所述地址识别子模块,用于识别所述微控制器的当前操作对应的地址,并基于所述微控制器的当前操作对应的地址,查找对应的寄存器;
所述寄存器写入子模块,用于当所述微控制器的当前操作为写入操作时,将所述微控制器输入的值写入到对应的寄存器中;
所述寄存器输出子模块,用于当所述微控制器的当前操作为读取操作时,将对应的寄存器的取值发送给所述微控制器,以实现对所述总线通信控制器的工作过程的监控。
10.一种总线通信控制方法,其特征在于,所述方法应用于如权利要求1至9任意一项所述的总线通信控制器中,所述方法包括:
在所述总线通信控制器的片选端使能后,接收微控制器在所述总线通信控制器的多路地址线上传输的信号;
从所述多路地址线上传输的信号中识别出微控制器的当前操作指向的地址;
接收微控制器在所述总线通信控制器的多路数据线上传输的数据,并将所述多路数据线上传输的数据写入到对应的地址,以改变所述总线通信控制器中多种类型的寄存器的取值,其中,每一种类型的寄存器对应一地址;
当基于所述多种类型的寄存器的取值指示所述总线通信控制器的工作状态为数据发送状态时,控制所述总线通信控制器通过所述多路数据线接收所述微控制器传输的将要发送的数据;
对所述将要发送的数据进行编码转换,得到符合基金会现场FF总线协议格式的信号,并将符合FF总线协议格式的信号发送到FF总线上;
当基于所述多种类型的寄存器的取值指示所述总线通信控制器的工作状态为数据接收状态时,接收FF总线上发送的总线数据;
对所述总线数据进行数据采样、数据解码和数据校验,并保存校验正确的所述总线数据,以使所述微控制器从所述总线通信控制器中获取到校验正确的所述总线数据。

说明书全文

一种基于FPGA的总线通信控制器及总线通信控制方法

技术领域

[0001] 本发明属于总线通信技术领域,更具体的说,尤其涉及一种基于FPGA的总线通信控制器及总线通信控制方法。

背景技术

[0002] 如同大多数网络通信一样,FF(Foudation Field,基金会现场)总线通信在数据链路层及物理层所需要的总线驱动、数据编码、时钟同步和检验等工作需要通过软硬件结合来完成。
[0003] 目前控制FF现场总线通信的方式有:在MCU(Micro Control Unit,微控制器)中集成总线数据的通信模来实现对FF现场总线通信的控制,但是若使用MCU编写软件来控制FF现场总线通信的话,会在MCU中加入FF总线上数据的收发功能,而这一功能会影响MCU对接收到的数据进行处理的效率,进而为提高数据处理效率,需要采用核心频率较高的MCU,而这一方式又会增加芯片成本。
[0004] 又或者使用中国科学院沈阳自动化研究所的专利《FF总线帧类型识别器》来控制FF现场总线通信,FF总线帧类型识别器可以在接收到帧信号后,对帧信号的类型进行识别存储和上送,但是FF总线帧类型识别器并不是一款底层的通信控制芯片,不能对FF现场总线的收发进行调度。

发明内容

[0005] 有鉴于此,本发明的目的在于提供一种基于FPGA的总线通信控制器及总线通信控制方法,用于降低芯片成本且实现对FF总线的数据收发进行调度。技术方案如下:
[0006] 本发明提供一种基于现场可编程阵列FPGA的总线通信控制器,所述总线通信控制器包括:寄存器管理模块、中断管理模块、控制模块、现场总线信号控制模块接口模块;
[0007] 所述寄存器管理模块中有多种类型的寄存器,且所述寄存器管理模块与微控制器相连,用于通过所述微控制器控制多种类型的寄存器的取值,以使所述微控制器基于多种类型的寄存器的取值监控所述总线通信控制器的工作过程;
[0008] 中断管理模块,用于将基金会现场FF总线上数据的收发情况反馈给所述微控制器;
[0009] 所述控制模块,用于当所述寄存器管理模块中多种类型的寄存器的取值指示所述总线通信控制器处于数据发送状态时,控制所述现场总线信号控制模块对将要发送的数据进行处理,以及用于当所述寄存器管理模块中多种类型的寄存器的取值指示所述总线通信控制器处于数据接收状态时,控制所述现场总线信号控制模块对接收的总线数据进行处理;
[0010] 所述现场总线信号控制模块,用于通过FF总线协议对所述将要发送的数据进行编码转换,得到符合FF总线协议格式的信号,并通过所述接口模块发送到FF总线上,以及用于通过所述接口模块接收总线数据,对所述总线数据进行数据采样、数据解码和数据校验,并保存校验正确的所述总线数据。
[0011] 优选地,所述总线通信控制器还包括:第一存储器和第二存储器;
[0012] 所述第一存储器,用于存储所述将要发送的数据,且所述现场总线信号控制模块,用于在接收到所述微控制器指示的所述将要发送的数据的长度后,从所述第一存储器中获取与所述长度相对应的数据进行编码转换;
[0013] 所述第二存储器,用于存储所述校验正确的所述总线数据。
[0014] 优选地,所述现场总线信号控制模块,用于采用第一时钟进行编码转换,并采用第二时钟进行发送,其中所述第一时钟高于所述第二时钟。
[0015] 优选地,所述现场总线信号控制模块,用于通过查找信号跳变端取中间值的方法进行数据采样。
[0016] 优选地,所述总线通信控制器还包括:重配置模块,所述重配置模块具备在线烧写功能,用于通过所述在线烧写功能对所述总线通信控制器中的各个模块进行在线升级。
[0017] 优选地,所述总线通信控制器的管脚至少包括:与所述微控制器连接相关的第一管脚、与外部的闪存连接相关的第二管脚和与FF总线连接相关的第三管脚:
[0018] 所述第一管脚,用于使所述总线通信控制器与所述微控制器进行通信,且所述第一管脚至少包括:读写使能端、多路数据线、多路地址线和中断输出端,所述读写使能端用于控制所述总线通信控制器与所述微控制器之间的读写操作,所述中断输出端,用于连接所述微控制器的中断输入端,以向所述微控制器发送中断信号,所述中断信号用于指示所述总线通信控制器的工作状态,所述工作状态为数据发送状态或数据接收状态;
[0019] 所述第二管脚,用于通过介质连接单元MAU与FF总线相连接,且所述第二管脚至少包括:一个输入端、一个输出端和一个使能控制端,所述使能控制端用于对所述输出端的对外输出进行使能控制;
[0020] 所述第三管脚,用于与外部的闪存连接,通过所述重配置模块对所述闪存中内部数据的修改来在线升级所述总线通信控制器中的各个模块。
[0021] 优选地,所述第一管脚还包括片选端,用于对所述多路地址线和多路数据线进行复用,以实现对不同FF总线的选择。
[0022] 优选地,所述接口模块,用于将接收到的信号转换为所述总线通信控制器可使用的信号,以及用于根据所述片选端的取值来调用对应的所述现场总线信号控制模块。
[0023] 优选地,所述寄存器管理模块包括:地址识别子模块、寄存器写入子模块和寄存器输出子模块;
[0024] 所述地址识别子模块,用于识别所述微控制器的当前操作对应的地址,并基于所述微控制器的当前操作对应的地址,查找对应的寄存器;
[0025] 所述寄存器写入子模块,用于当所述微控制器的当前操作为写入操作时,将所述微控制器输入的值写入到对应的寄存器中;
[0026] 所述寄存器输出子模块,用于当所述微控制器的当前操作为读取操作时,将对应的寄存器的取值发送给所述微控制器,以实现对所述总线通信控制器的工作过程的监控。
[0027] 本发明还提供一种总线通信控制方法,所述方法应用于上述总线通信控制器中,所述方法包括:
[0028] 在所述总线通信控制器的片选端使能后,接收微控制器在所述总线通信控制器的多路地址线上传输的信号;
[0029] 从所述多路地址线上传输的信号中识别出微控制器的当前操作指向的地址;
[0030] 接收微控制器在所述总线通信控制器的多路数据线上传输的数据,并将所述多路数据线上传输的数据写入到对应的地址,以改变所述总线通信控制器中多种类型的寄存器的取值;
[0031] 当基于所述多种类型的寄存器的取值指示所述总线通信控制器的工作状态为数据发送状态时,控制所述总线通信控制器通过所述多路数据线接收所述微控制器传输的将要发送的数据;
[0032] 对所述将要发送的数据进行编码转换,得到符合基金会现场FF总线协议格式的信号,并将符合FF总线协议格式的信号发送到FF总线上;
[0033] 当基于所述多种类型的寄存器的取值指示所述总线通信控制器的工作状态为数据接收状态时,接收FF总线上发送的总线数据;
[0034] 对所述总线数据进行数据采样、数据解码和数据校验,并保存校验正确的所述总线数据,以使所述微控制器从所述总线通信控制器中获取到校验正确的所述总线数据。
[0035] 与现有技术相比,本发明提供的上述技术方案具有如下优点:
[0036] 从上述技术方案可知,本发明提供的技术方案可以基于寄存器管理模块中多种类型的寄存器的取值指示总线通信控制器处于数据发送状态或者数据接收状态时,由控制模块来控制现场总线信号控制模块执行对应的操作,实现对FF总线上数据发送和数据接收的调度,即实现对FF总线的数据收发调度。并且从本发明提供的技术方案可知,MCU并未参与FF总线上数据发送和数据接收的处理过程,因此无需在MCU中加入处理算法,这样MCU就无需采用核心频率较高的MCU,降低成本。并且上述总线通信控制器可以基于FPGA实现,降低总线通信控制器对国外芯片的依赖性,进一步降低成本。附图说明
[0037] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0038] 图1是本发明实施例提供的基于FPGA的总线通信控制器的一种结构示意图;
[0039] 图2是图1中寄存器管理模块的结构示意图;
[0040] 图3是图1所示基于FPGA的总线通信控制器的流程图
[0041] 图4是FF总线上发送的报文帧的结构图;
[0042] 图5是本发明实施例提供的基于FPGA的总线通信控制器的另一种结构示意图;
[0043] 图6是本发明实施例提供的基于FPGA的总线通信控制器的再一种结构示意图;
[0044] 图7是本发明实施例提供的基于FPGA的总线通信控制器中各个管脚的示意图;
[0045] 图8是本发明实施例提供的基于FPGA的总线通信控制器判定当前操作的流程图;
[0046] 图9是本发明实施例的总线通信控制方法的流程图。

具体实施方式

[0047] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0048] 请参阅图1,其示出了本发明实施例提供的基于现场可编程门阵列(Field-Programmable Gate Array,FPGA)的总线通信控制器的结构示意图,用于基于FPGA实现对不同FF总线上数据发送和数据接收的调度,以降低成本。具体地,上述图1所示的基于FPGA的总线通信控制器可以包括:寄存器管理模块11、中断管理模块12、控制模块13、现场总线信号控制模块14和接口模块15。
[0049] 其中寄存器管理模块11中有多种类型的寄存器,且寄存器管理模块11与MCU相连,用于通过MCU控制多种类型的寄存器的取值,以使MCU基于多种类型的寄存器的取值监控总线通信控制器的工作过程。
[0050] 在本发明实施例中,寄存器管理模块11是总线通信控制器的中心,具体地,位于总线通信控制器外部的MCU只能连接到寄存器管理模块,而无法直接去调度总线通信控制器中的其他模块,若MCU需要调度总线通信控制器中的其他模块,则需要控制寄存器管理模块11中的多种类型的寄存器的取值来控制总线通信控制器中各个模块,以实现监控总线通信控制器的工作过程。
[0051] 为实现对寄存器管理模块11中多种类型的寄存器的取值进行控制,本发明实施例为每种寄存器分配一个地址,这样MCU就可以基于每种寄存器的地址来向寄存器写入对应的值或者基于地址读取寄存器的取值。为此本发明实施例提供的寄存器管理模块11的结构如图2所示,可以包括:地址识别子模块111、寄存器写入子模块112和寄存器输出子模块113。
[0052] 地址识别子模块111,用于识别MCU的当前操作对应的地址,并基于MCU的当前操作对应的地址,查找对应的寄存器。
[0053] 寄存器写入子模块112,用于当MCU的当前操作为写入操作时,将MCU输入的值写入到对应的寄存器中。
[0054] 寄存器输出子模块113,用于当MCU的当前操作为读取操作时,将对应的寄存器的取值发送给MCU,以实现对总线通信控制器的工作过程的监控。
[0055] 中断管理模块12,用于将FF总线上数据的收发情况反馈给MCU,并且中断管理模块12在产生中断信号时对各种类型的寄存器的操作是完全并行的,且中断寄存器的取值在读取后会上被清除,具体地,向下由总线通信控制器内所存在的状态寄存器决定中断产生的必要性,向上由MCU控制中断使能寄存器来管理中断产生的前提条件,使得只有当MCU开启中断功能且总线通信控制器的内部达到中断产生的条件后才会有中断产生,而MCU也是通过改写中断使能寄存器的值来控制中断,防止中断的不必要产生。其中中断使能寄存器管理所有中断可否产生,MCU通过中断使能寄存器保证在接收过程中不会再次产生重复的接收中断等可能操作。
[0056] 在本发明实施例中,中断管理模块12的操作机制如下:
[0057] 1)中断管理模块12产生中断信号给MCU,其中中断信号包括两个信号,一个总中断信号表示中断,一个副中断信号表示哪一个现场总线信号控制模块14;
[0058] 2)MCU接收到总中断信号,进入中断请求0(Interrupt Request,IRQ)的中断程序;
[0059] 3)MCU根据副中断信号判别调用哪一路中断函数,其中中断函数的作用是反馈信号至MCU使得MCU知道产生哪种中断,如接收到前导码中断,接收完成中断,发送完成中断、时钟定时中断等。;
[0060] 4)中断管理模块12等待MCU读取总线通信控制器来中断状态寄存器0(对应数据接收和数据发送)、中断状态寄存器2(对应时钟),并根据中断状态寄存器对应的中断位是否被置1来判断产生哪一个中断(数据接收还是数据发送);
[0061] 5)置该中断操作标志,同时清空该中断位;
[0062] 在本发明实施例中中断寄存器有两种,分别是中断状态寄存器和中断使能寄存器,当中断状态寄存器被下位机置值而中断使能寄存器被MCU置值后才会在中断引脚上产生指示FF总线上数据的收发情况的中断信号。相应的中断管理模块12通过操作机制中的步骤5)来读写寄存器管理模块中的中断状态寄存器的取值来工作的。
[0063] 6)总线通信控制器等待下一次中断操作标志被置位再开启相应的中断产生操作。
[0064] 控制模块13,用于当寄存器管理模块11中多种类型的寄存器的取值指示总线通信控制器处于数据发送状态时,控制现场总线控制模块14对将要发送的数据进行处理,以及用于当寄存器管理模块11中多种类型的寄存器的取值指示总线通信控制器处于数据接收状态时,控制现场总线信号控制模块14对接收的总线数据进行处理。
[0065] 其中寄存器管理模块11中至少包括控制寄存器以及中断状态寄存器,通过至少这两个寄存器的取值来管理整个收发过程的调度工作,整个机制分为接收和发送两块,不再数据发送状态下都会自动跳转回数据接收状态等待数据的接收,具体如下所述:
[0066] 数据发送机制:
[0067] 1)MCU判断FF总线未处于数据接收状态时,则等待数据接收状态;
[0068] 2)MCU清空控制寄存器的取值为0;
[0069] 3)MCU清空中断状态寄存器0的发送完成位;
[0070] 4)MCU开启发送中断,关闭接收中断(写寄存器);
[0071] 5)MCU先后写控制寄存器0和控制寄存器1的取值;
[0072] 6)MCU写发送缓冲区地址(无用);
[0073] 7)MCU写发送数据长度高低字节;
[0074] 8)MCU写发送使能;
[0075] 9)FPGA根据控制寄存器0、控制寄存器1和发送使能来开启数据发送;
[0076] 10)数据发送完成则返回完成中断。
[0077] 数据接收机制:
[0078] 1)MCU清空中断状态寄存器0值;
[0079] 2)MCU开启接收部分中断,关闭发送中断(写寄存器);
[0080] 3)MCU先后写控制寄存器0和控制寄存器1的取值;
[0081] 4)现场总线控制器通过控制寄存器0和控制寄存器1的取值开启接收;
[0082] 5)在数据接收过程中,现场总线控制器会返回接收到前导码中断和接收到完成中断(收到帧尾,校验结束);
[0083] 6)MCU接收到前导码中断后开始等待;
[0084] 7)MCU等待到接收完成中断后读取接收状态寄存器值,判断是否收到帧头、帧尾以及校验是否正确;
[0085] 8)当MCU确定接收状态寄存器的取值正确后,更新用于数据接收的RAM的地址,并读取相关数据;当反馈接收完成的中断信号后,实际数据解析可能发现校验错误,字节不对齐等错误,就会将状态写在接收状态寄存器中,MCU读取接收状态寄存器的取值,若取值指示数据没有错误则说明数据是可用的;在本发明实施例中寄存器管理模块11中还包括发送状态寄存器,用于指示数据发送情况,而接收状态寄存器和发送状态寄存器隶属于状态寄存器。
[0086] 9)当MCU确定接收状态寄存器的取值错误则不进行地址更新,忽略这一次获取的数据。
[0087] 现场总线信号控制模块14,用于通过FF总线协议对将要发送的数据进行编码转换,得到符合FF总线协议格式的信号,并通过接口模块15发送到FF总线上,以及用于通过接口模块15接收总线数据,对总线数据进行数据采样、数据解码和数据校验,并保存校验正确的总线数据。
[0088] 在本发明实施例中,现场总线信号控制模块14,用于通过查找信号跳变端取中间值的方法进行数据采样。即通过检测信号的跳变,即上升沿或者下降沿,当检测到后则开始计数,如每一个高或低电平持续16us,当到达8us中间值和23us持续电平中间值时进行一次采样,若在对数据进行编码转换时按照曼彻斯特编码特性有可能有两个连续的电平,现场总线信号控制模块14采样两次。对应的在进行数据解码和数据校验时可以采用曼彻斯特解码和CRC校验,其中CRC校验为16位CRC编码,而曼彻斯特编码可以采用反演编码方式,使用一个一个线性反馈寄存器LFSR实现。
[0089] 基于本发明实施例提供的总线通信控制器,其对应的流程图如图3所示,可以包括以下步骤:
[0090] 当总线通信控制器上电后会重置自身内部的所有寄存器的取值,使得自身置于一个不工作的空闲等待状态,以完成MCU启动。
[0091] 当MCU启动完成后对总线通信控制器进行一个初始化工作,具体则是将总线通信控制器从空闲状态转移进入一个工作的状态,此时总线通信控制器就可以自我调度完成对总线数据的监控工作。
[0092] MCU在初始化时开启总线通信控制器中所需要的中断操作(通过写入控制寄存器和中断状态寄存器的取值),于是总线通信控制器就会在监控总线数据时将对应的状态以中断信号的形式返回给MCU。
[0093] 当开启了数据接收状态后,控制现场总线信号控制模块进行数据接收,注意如果现场总线信号控制模块以前处于数据发送状态且未完成时,总线通信控制器在开启数据接收状态后依然会中断当前的数据发送状态,直接跳转回数据接收状态的接收等待状态。
[0094] 进入到接收等待状态后,总线通信控制器开始对总线数据进行根据跳变中间值实现的数据采样,并会一直等待符合前导码数据格式的信号,即曼彻斯特编码100110011001,在没有等到该信号前若收到数据发送需求信号仍可以直接从数据接收状态跳转到数据发送状态。
[0095] 当接收到符合前导码格式的信号后,接收状态机(指示数据接收状态过程中所处阶段)跳转,开始等待帧头信号,同时会产生一个数据接收开始的中断信号给MCU。
[0096] 开始等待帧头信号后,若等待到一个连续6字节以上的持续电平,则判断本次接收失败,返回给MCU一个接收失败的中断信号并回到等待前导码的状态;若等待到帧头信号,则置相应的数据接收状态位为接收帧头完成,之后接收到的为数据区数据,并开始解码以及校验过程(例如曼彻斯特解码以及CRC校验),在进行解码以及校验过程的同时,根据帧头的格式不同判断整个数据帧格式是原码还是反码,若是反码则对之后的数据进行取反的操作。在刚进入数据处理状态时,现场总线信号控制模块会存接收到的第一个数据字节的信息,该信息为帧类型码的取值,通过判断帧类型码的取值,将锁存一个帧类型的信号给MCU。
[0097] 在数据处理状态内,若在解码过程中发现数据格式不符合现场总线信号控制模块预设的编码规则,则判断本次接收失败,返回给MCU一个接收失败的中断信号并回到等待前导码的状态,正确的情况下存储转换得到的数据。比如在本发明实施例中采用曼彻斯特解码,若数据格式不符合曼彻斯特编码规则则判断本次接收失败。在本发明实施例中,数据接收状态下现场总线信号控制模块的工作时钟高于数据发送状态下现场总线信号控制模块的工作时钟,以便在数据处理的开始和结尾时可以无等待的进行之后的状态切换以及处理工作。并且在数据处理状态内,解码和校验都是以16字节为单位进行,在数据接收过程中首先判断数据格式是否符合帧尾的格式,若检测到符合,则数据并不会被解码以及校验,并提取校验结果值,与现场总线信号控制模块中预留的期望值进行比较,若比较符合则接收完成,返回接收完成信号,并置校验结果值对应的寄存器的取值为1,并更新用于接收数据的RAM的地址;若是校验不通过,依旧返回接收完成信号,但是置校验结果值对应的寄存器的取值为0,不更新接收数据的RAM的地址,下次接收会重新从原地址覆盖写入接收到的值。
[0098] 在接收完成后接收状态机自动跳回最初的等待接收前导码的状态,此时总线通信控制器可以接收发送信号的请求,若是有发送信号的需求,则跳转进入数据发送状态开始数据的发送。
[0099] 开始数据发送后现场总线信号控制模块会按照16us一位的速率先发送2字节前导码,完毕后再发送2字节的帧头信号,并对数据进行编码转换,例如现场总线信号控制模块中可以包括曼彻斯特编码子模块和CRC数据编码子模块,通过这两个编码子模块进行数据的编码转换操作。编码转换操作以16字节为单位,编码转换完成后的数据以16us一位的速率进行发送,当发送数据长度达到需发送的数据长度后,提取CRC数据编码子模块的结果值,并以同样的方法进行发送。
[0100] 最后再发送2字节帧尾,数据发送完成后回复MCU一个发送完成中断,接收状态机跳转回等待接收前导码的状态。
[0101] 从上述图3所示流程图,可知在FF总线上发送的报文帧结构如图4所示,其中报文帧由6部分组成,其中前导码最低为2个字节,高的能有8个字节,我们发送的帧为前4个字节;
[0102] 帧前定解码长2个字节,紧跟前导码;
[0103] 帧类型码长1个字节,实际为数据区第一个字节,表示这一帧的类型;
[0104] 数据区长度不一定,总帧长度一般不超过256字节;
[0105] 数据区后接2个字节长度的CRC校验码;
[0106] 校验码结束为帧尾,长度也为2字节。
[0107] 从上述技术方案可知,本发明提供的技术方案可以基于寄存器管理模块中多种类型的寄存器的取值产生中断信号,并当中断信号指示总线通信控制器处于数据发送状态或者数据接收状态时,由控制模块来控制现场总线信号控制模块执行对应的操作,实现对FF总线上数据发送和数据接收的调度,即实现对FF总线的数据收发调度。并且从本发明提供的技术方案可知,MCU并未参与FF总线上数据发送和数据接收的处理过程,因此无需在MCU中加入处理算法,这样MCU就无需采用核心频率较高的MCU,降低成本。并且上述总线通信控制器可以基于FPGA实现,降低总线通信控制器对国外芯片的依赖性,进一步降低成本。
[0108] 而MCU通过控制寄存器管理模块11中诸如控制寄存器和中断使能寄存器在内的各类寄存器来实现对整个通信控制器的数据收发状态的控制,基于FPGA的总线通信控制器通过状态寄存器、中断寄存器在内的各类寄存器实现向MCU反馈中断信号。
[0109] 此外,在本发明实施例中,现场总线信号控制模块14可以为数据发送状态和数据接收状态分别设置对应的结构,如图5所示。相对应的,总线通信控制器还包括:第一存储器16和第二存储器17。第一存储器16,用于存储将要发送的数据,且现场总线信号控制模块14用于在接收到MCU指示的将要发送的数据的长度后,从第一存储器16中获取与长度相对应的数据进行编码转换。
[0110] 也就是说,第一存储器16对应现场总线信号控制模块14的数据发送状态,作为数据发送的RAM存储将要发送的数据,在接收到指示的将要发送的数据的长度后从第一存储器16中获取与长度相对应的数据进行编码转换,如经过CRC编码子模块和曼彻斯特编码子模块进行编码转换。
[0111] 而第二存储器17用于存储校验正确的总线数据,即第二存储器17可以作为数据接收的RAM,在经过曼彻斯特解码子模块和CRC校验子模块后,将正确的数据存储到第二存储器17中。
[0112] 在本发明实施例中,现场总线信号控制模块14,用于采用第一时钟进行编码转换,并采用第二时钟进行发送,其中第一时钟高于第二时钟,也就是在进入数据发送状态,需要MCU传递一个发送数据的长度,由现场总线信号控制模块直接从第一存储器中读取数据,并对其进行编码和发送,且现场总线信号控制模块14采用高时钟计算低时钟发送方式,保证编码过程不会拖慢数据的发送。并且数据接收状态下现场总线信号控制模块的工作时钟高于数据发送状态下现场总线信号控制模块的工作时钟,以便在数据处理的开始和结尾时可以无等待的进行之后的状态切换以及处理工作。
[0113] 基于上述总线通信控制器,可以在总线通信控制器中集成多个现场总线信号控制模块14,以使得每个现场总线信号控制模块14对应一路FF总线,这样当上述各个模块集成到FPGA时,可以通过一个FPGA实现对多路FF总线的数据收发调度。并且整个接收和发送数据的获得和写入通过FPGA内部的两个存储器实现,而不需要外置的存储器,而MCU直接将要发送数据的长度输入到FPGA中,由FPGA自主通过FF总线协议对数据进行编码转换,变成符合协议格式的信号发送到FF总线上;对于接收到的总线数据,FPGA自身将其进行解码校验,将校验正确的数据存入第二存储器18中,MCU只需要直接读取数据就可以使用,并不需要关心底层的操作步骤。
[0114] 请参阅图6,其示出了本发明实施例提供的基于FPGA的总线通信控制器的再一种结构示意图,在图1基础上还可以包括:重配置模块18,其中重配置模块18具备在线烧写功能,用于通过在线烧写功能对总线通信控制器中的各个模块进行在线升级,使得总线通信控制器具有在线烧写模式和JTAG下载模式,在线烧写模式实现在线升级,即不需要打开硬件来用JTAG修改代码的方式进行升级,JTAG下载模式则是通过JTAG接口下载升级代码的方式来升级总线通信控制器中的各个模块。
[0115] 其中,重配置模块18包括:重配置寄存器操作子模块、重配置控制调度子模块和缓存RAM,MCU用于对重配置寄存器操作子模块中相关寄存器进行读写控制,重配置控制调度子模块则根据重配置寄存器操作子模块中相关寄存器的取值来实现对外部的闪存(FLASH)的相关操作,具体过程则是:
[0116] 1)MCU向缓存RAM写入数据;
[0117] 2)MCU写命令长度的高字节和低字节,并启动对FLASH的相关操作;
[0118] 3)总线通信控制器收到命令后开始发送数据到FLASH;
[0119] 4)总线通信控制器产生时钟信号,并根据时钟信号的上升沿更新的原则发送数据;
[0120] 5)数据发送完成后总线通信控制器置重配置寄存器操作子模块中相关寄存器的取值以示数据发送完成;
[0121] 6)在数据发送过程中MCU以1ms的间隔读取重配置寄存器操作子模块中相关寄存器的取值进行监测;
[0122] 7)MCU读取到正确的寄存器的取值后完成本次操作,并清空寄存器的取值;
[0123] 8)总线通信控制器等待下一次命令;
[0124] 9)等完成所有的数据传输后MCU发送重启命令使总线通信控制器从FLASH中获取用于在线升级各个模块的代码进行重载操作,以实现在线升级。
[0125] 相应的,为实现总线通信控制器中各个模块与外部的通信,总线通信控制器的管理至少包括:与MCU连接相关的第一管脚、与FF总线连接相关的第二管脚和与外部的FLASH连接相关的第三管脚,如图7所示。
[0126] 其中第一管脚,用于使总线通信控制器与MCU进行通信,且第一管脚至少包括:读写使能端、多路数据线、多路地址线和中断输出端,读写使能端用于控制总线通信控制器与MCU之间的读写操作,中断输出端,用于连接MCU的中断输入端,以向MCU发送中断信号,中断信号用于指示总线通信控制器的工作状态,工作状态为数据发送状态或数据接收状态。
[0127] 比如在图7中,包括8路的双向数据线管理数据的双向通信,即8路的双向数据线负责将总线通信控制器中状态寄存器的取值、第二存储器中的数据等传递到MCU的指定地址中,或者由MCU对总线通信控制器中控制寄存器的取值、第一存储器中的数据进行修改的操作。而读或写的判别则由WR/RD这两个读写使能端来决定。
[0128] 总线通信控制器在数据接收和数据发送中不同状态的转换会反馈到相应的状态寄存器中,并产生相应的中断信号,而MCU在接收到中断信号后通过读取相应的状态寄存器的取值来了解当前总线通信控制器的工作状态,并进行相应的操作,中断输出端即是实现这一功能的管脚,与MCU上对应的中断输入端相连。
[0129] 第二管脚,用于通过MAU与FF总线相连,且第二管脚至少包括一个输入端(如图7中的总线端口2)、一个输出端(如图7中的总线端口1)和一个使能控制端,使能控制端用于对输出端的外部输出进行使能控制,如图7中的PO_TACTB,且PO_TACTB的取值由中断使能寄存器管理。其中MAU负责为总线通信控制器提供相关电压信号的稳压滤波等功能,当对外输出口使能之后输出端上的数据才能被正确的传输出去,否则输出端会被强制保持在一个电平上。
[0130] 第三管脚,用于与外部的FLASH连接,通过重配置模块18对FLASH中内部数据的修改来在线升级总线通信控制器中的各个模块,在对FLASH中内部数据进行修改后,当总线通信控制器重启后会通过与FLASH相连的第三管脚将修改后的数据(可以是升级代码)写入到总线通信控制器,完成升级总线通信控制器中的各个模块的在线升级。
[0131] 此外,本发明实施例提供的总线通信控制器可以集成在一块FPGA实现多路的FF总线的控制,但是FPGA与MCU之间的地址线和数据线却是复用的,因此第一管脚还包括多个片选端(如图7中的CS1和CS2),用于对多路地址线和多路数据线进行复用来实现对不同路FF总线的选择。
[0132] 上述各个管脚可以集成到接口模块15中,接口模块通过对地址的判别和片选端上传输的信号的判别来决定当前操作时对应于重配置模块还是哪一路的FF总线(每路FF总线对应一个现场总线信号控制模块14),如果需要增减多路的复用,只需要增加一个片选端,其余都不用变化;若是管脚不够用,也可以像识别重配置模块一样,用识别地址线高位的办法来判断开启哪一路的FF总线对应的现场总线信号控制模块,而在反馈中断信号时可以使用同一中断输出端进行反馈,MCU在收到中断信号后通过读取相应的寄存器来知道中断来源于哪些现场总线信号控制模块,再一一进行处理,当然如果管脚多余可以使用多个中断输出端,省去寄存器的识别操作,更快捷。
[0133] 通过对地址的判别和片选端上传输的信号的判别来决定当前操作时对应于重配置模块还是哪一路的FF总线的过程如图8所示,可以包括以下步骤:
[0134] 1)对外部信号进行同步,以通过内部时钟对数据线和地址线的值进行同步的采样,来保证同步性和可靠性;
[0135] 2)判断地址高位是否有效,如果无效输出高阻态,如果有效则判断是否符合重配置模块的地址;
[0136] 地址线提供地址的取值,15根地址线高电平则为1,低电平则为0,表示长度15位的地址值,在本发明实施例中规定了一定范围内的地址值,当地址线上传输的数据指示的地址值在所规定范围内时才是有效的,比如以内部64M时钟采样获得数据后判断地址值是否在规定范围内,比如0x2000-0x4000有效,则二进制只需判断13和14位的值即可。
[0137] 由于地址线是通用的,连接到除了集成总线通信控制器的FPGA之外还有许多外部的芯片上,而每个芯片都有自己的地址可用范围,FPGA只使用其中一部分地址,重配置模块使用这部分中的部分,需要根据地址值的不同判断运行哪一个模块。比如0x2000-0x2020是各个寄存器,0x3000到0x4000是重配置模块,其余地址中有512字节给RAM。
[0138] 3)如果符合,运行重配置模块;如果不符合,则判断片选端,以确定哪路FF总线后,获取和控制所确定的FF总线对应的总线通信控制器;
[0139] 4)向MCU进行中断反馈,MCU通过寄存器的取值来判断中断信号的来源。
[0140] 从上述技术方案可知,接口模块15还可以将接收到的信号转换为总线通信控制器可使用的信号,以及根据片选端的取值来调用对应的现场总线信号控制模块14。如为MCU读写寄存器以及缓存提供逻辑转换,并对异步的外部信号进行同步的转换输入给总线通信控制器中的各个子模块使用,以及根据获取的片选端的取值,对多个现场总线信号控制模块进行选择性的调度操作,具体则是哪个CS端使能则调用哪个现场总线信号控制模块。
[0141] 在这里需要说明的一点是:图5和图6中CRC编码子模块、曼彻斯特编码子模块、曼彻斯特解码子模块和CRC校验子模块为现场总线信号控制模块14中对数据进行处理的子模块,且在图5和图6中以一个FPGA中集成两套对FF总线进行控制的模块,集成的两套模块采用同一个接口模块通信为例进行说明,当然在本发明实施例中一个FPGA中还可以集成更多的模块来对FF总线进行控制。
[0142] 此外,上述总线通信控制器可以使用外部的晶振单元所产生的时钟信号进行工作,而内部锁相环会对输入的时钟信号进行处理提供给对应的各个模块,如外部的晶振单元产生18M的时钟信号,而内部锁相环将其倍化为32M、64M以及降为1M的时钟信号提供给各个模块使用。
[0143] 在总线通信控制器中则会配置一个计时模块,其负责产生一个以1/32ms为单位的时钟计时器,若MCU开启计时中断,总线通信控制器则会根据时钟计时器的计时值定时产生定时中断以完成链路层的计算工作,并可以根据计时值完成独立的定时工作,具体定时过程如下:
[0144] 1)MCU读取当前时钟计时器的计时值(先高后低,有锁存);
[0145] 2)MCU禁止定时中断(写寄存器);
[0146] 3)MCU输入定时时间(先高后低);
[0147] 4)MCU开启定时中断(写寄存器);
[0148] 5)FPGA回复定时中断;
[0149] 6)MCU收到定时中断;
[0150] 7)MCU禁止定时中断(写寄存器)。
[0151] 与上述装置实施例相对应的,本发明实施例还提供一种总线通信控制方法,应用于上述总线通信控制器中,如图9所示,可以包括以下步骤:
[0152] 901:在总线通信控制器的片选端使能后,接收MCU在总线通信控制器的多路地址线上传输的信号。
[0153] 902:从多路地址线上传输的信号中识别出微控制的当前操作指向的地址。
[0154] 903:接收MCU在总线通信控制器的多路数据线上传输的数据,并将多路数据线上传输的数据写入到对应的地址,以改变总线通信控制器中多种类型的寄存器的取值。
[0155] 904:当基于多种类型的寄存器的取值指示总线通信控制器的工作状态为数据发送状态时,控制总线通信控制器通过多路数据线接收MCU传输的将要发送的数据。
[0156] 905:对将要发送的数据进行编码转换,得到符合FF总线协议格式的信号,并将符合FF总线协议格式的信号发送到FF总线上。
[0157] 906:当基于多种类型的寄存器的取值指示总线通信控制器的工作状态为数据接收状态时,接收FF总线上发送的总线数据。
[0158] 907:对总线数据进行数据采样、数据解码和数据校验,并保存校验正确的总线数据,以使MCU从总线通信控制器中获取到校验正确的总线数据。
[0159] 上述各个步骤的具体过程可以参阅上述装置实施例中的相关说明,对此本方法实施例不再阐述。
[0160] 需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于方法实施例而言,由于其与装置实施例基本相似,所以描述的比较简单,相关之处参见装置实施例的部分说明即可。
[0161] 最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0162] 对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
[0163] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈