首页> 中国专利> 现场可编程门阵列及其模块间同步信号的传递方法

现场可编程门阵列及其模块间同步信号的传递方法

摘要

本发明提供一种现场可编程门阵列及其模块间同步信号的传递方法,其中,所述方法包括:对FPGA进行初始化;第一模块在接收到时钟脉冲时,检测一次预设事件是否发生;如果发生,则第一模块将输出的第一信号进行取反操作;判断异或门电路输出的第三信号是否为1;如果为1,则在下一个时钟脉冲到来时,第二模块执行相应操作,并将输出的第二信号取反;异或门电路根据输入的第一信号和第二信号,将输出的第三信号变为0,第二模块根据接收到为0的第三信号而进入等待状态。本发明提供的技术方案能够在FPGA内不同的同步模块之间有效的传递信号,实现更加灵活的功能设计。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-04-28

    授权

    授权

  • 2018-04-17

    实质审查的生效 IPC(主分类):H03K19/21 申请日:20171031

    实质审查的生效

  • 2018-03-23

    公开

    公开

说明书

技术领域

本发明涉及通信领域,尤其涉及一种现场可编程门阵列及其模块间同步信号的传递方法。

背景技术

FPGA即现场可编程门阵列,它是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

随着科技的发展,FPGA已经大量应用在工业、通讯、雷达、数据处理等重要场合。FPGA的开发一般使用硬件描述语言(如VHDL、Verilog),使得开发者不必使用寄存器、连接线等FPGA底层原语开发,而是可以使用语法类似于计算机编程中C语言这样的高级语言做开发,简化了开发过程,保证了开发质量。然而,由于FPGA本身的特殊性,使得在使用硬件描述语言时,与C语言相比有很大的差别,在某些情况下需要特殊的处理。

以C语言为例,比如C语言程序中有两个函数foo1()和foo2()。foo1()函数反复检测某个事件是否发生,如果发生了,则将全局变量var置为真。而foo2()则是反复检测变量var是否为真,如果为假则不执行任何操作,如果为真,则在执行完某指定操作之后将变量var置为假,然后等待foo1()函数再次将它置为真。由于var为全局变量,在它声明的范围内任何函数都可以对它进行读写。整个过程的伪码如图1所示。

在使用硬件描述语言开发FPGA时,C语言中的函数,对应于硬件描述语言中的模块(module)。然而,与C语言不同的是,硬件描述语言中的模块对应于FPGA中真实存在的电路结构,模块A向模块B传递信息的信号,也对应于FPGA中真实的连线。如果要实现上述C语言中的功能:模块A检测某种情况是否发生,发生之后将某信号置为真传递给模块B,模块B再执行某种操作之后将信号置为假以等待模块A下一次将信号置为真,这种做法是不可行的,因为信号是真实的连线,它是模块A的输出,模块B只能读取它的值,无法对它进行操作,这样的话,模块B就无法将该信号置为假,就会反复的执行不应该执行的操作,使FPGA无法按照设计意图来工作。

发明内容

有鉴于此,本发明的目的在于提供一种现场可编程门阵列及其模块间同步信号的传递方法,旨在解决现有现场可编程门阵列中模块间同步信号传输的问题。

本发明提出一种现场可编程门阵列中模块间同步信号的传递方法,其中,所述现场可编程门阵列包括第一模块、异或门电路以及第二模块,所述第一模块、所述异或门电路、所述第二模块在同一个时钟下同步工作,所述第一模块输出的第一信号和所述第二模块输出的第二信号均作为所述异或门电路的输入,所述异或门电路输出的第三信号输入至所述第二模块,所述方法包括:

对所述现场可编程门阵列进行初始化;

所述第一模块在接收到时钟脉冲时,检测一次预设事件是否发生;

如果发生,则所述第一模块将输出的所述第一信号进行取反操作;

判断所述异或门电路输出的第三信号是否为1;

如果为1,则在下一个时钟脉冲到来时,所述第二模块执行相应操作,并将输出的所述第二信号取反;

所述异或门电路根据输入的所述第一信号和所述第二信号,将输出的第三信号变为0,所述第二模块根据接收到为0的第三信号而进入等待状态。

优选的,所述对所述现场可编程门阵列进行初始化的步骤具体包括:

将所述第一模块输出的所述第一信号和所述第二模块输出的所述第二信号都初始化为0;

所述异或门电路根据初始化后的第一信号和第二信号,输出所述第三信号为0;

所述第二模块在接收到为0的第三信号后,不执行操作以处于等待状态。

优选的,所述方法还包括:

所述第一模块在接收到时钟脉冲时,如果检测一次预设事件没有发生,则结束操作。

优选的,所述方法还包括:

如果判断所述异或门电路输出的第三信号不为1,则结束操作。

另一方面,本发明还提供一种现场可编程门阵列,其中,所述现场可编程门阵列包括第一模块、异或门电路以及第二模块,所述第一模块、所述异或门电路、所述第二模块在同一个时钟下同步工作,所述第一模块输出的第一信号和所述第二模块输出的第二信号均作为所述异或门电路的输入,所述异或门电路输出的第三信号输入至所述第二模块,

其中,所述现场可编程门阵列还包括初始化模块,用于对所述现场可编程门阵列进行初始化;

其中,所述第一模块,用于在接收到时钟脉冲时,检测一次预设事件是否发生,如果发生,则将输出的所述第一信号进行取反操作;

其中,所述异或门电路,用于判断所述异或门电路输出的第三信号是否为1;

如果为1,则在下一个时钟脉冲到来时,所述第二模块,用于执行相应操作并将输出的所述第二信号取反;

其中,所述异或门电路,还用于根据输入的所述第一信号和所述第二信号,将输出的第三信号变为0;

其中,所述第二模块,还用于根据接收到为0的第三信号而进入等待状态。

优选的,所述初始化模块,用于将所述第一模块输出的所述第一信号和所述第二模块输出的所述第二信号都初始化为0;

其中,所述异或门电路,还用于根据初始化后的第一信号和第二信号,输出所述第三信号为0;

其中,所述第二模块,还用于在接收到为0的第三信号后,不执行操作以处于等待状态。

优选的,所述第一模块,还用于在接收到时钟脉冲时,如果检测一次预设事件没有发生,则结束操作。

优选的,所述异或门电路,还用于如果判断输出的第三信号不为1,则结束操作。

本发明提供的技术方案应用于现场可编程门阵列(FPGA)硬件编程的实现方法,特别是同步信号在硬件模块之间的一种传递方法,能够在FPGA内不同的同步模块之间有效的传递信号,实现更加灵活的功能设计。

附图说明

图1为现有技术中利用C语言处理现场可编程门阵列中不同模块间进行同步信号传递的整个过程的伪码示意图;

图2为本发明一实施方式中现场可编程门阵列中模块间同步信号的传递方法流程图;

图3为本发明一实施方式中现场可编程门阵列的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

以下将对本发明所提供的一种现场可编程门阵列中模块间同步信号的传递方法进行详细说明。

请参阅图2,为本发明一实施方式中现场可编程门阵列中模块间同步信号的传递方法流程图。

在本实施方式中,该方法应用于现场可编程门阵列(FPGA),所述FPGA包括第一模块、异或门电路以及第二模块,所述第一模块、所述异或门电路、所述第二模块在同一个时钟(clk)下同步工作,所述第一模块输出的第一信号和所述第二模块输出的第二信号均作为所述异或门电路的输入,所述异或门电路输出的第三信号输入至所述第二模块。

在步骤S10中,对FPGA进行初始化。

在本实施方式中,主要是对第一模块和第二模块进行初始化,其中,当FPGA上电时,所述对所述FPGA进行初始化的步骤S10具体包括:

将所述第一模块输出的所述第一信号和所述第二模块输出的所述第二信号都初始化为0;

所述异或门电路根据初始化后的第一信号和第二信号,输出所述第三信号为0;

所述第二模块在接收到为0的第三信号后,不执行操作以处于等待状态。

在本实施方式中,当第一信号和第二信号都初始化为0时,经过异或门电路的异或运算之后输出的第三信号也为0,此时为0的第三信号输入至第二模块中使得第二模块不执行操作,处于等待状态中。

在步骤S11中,第一模块在接收到时钟脉冲时,检测一次预设事件是否发生。

在本实施方式中,第一模块、异或门电路、第二模块都在同一个时钟(clk)下同步工作,当第一模块在接收到时钟脉冲时,首先检测一次预设事件是否发生,其中预设事件可以由用户任意设置,在此不做限定。后续当第一模块每接收到一次时钟脉冲之后,都会检测一次预设事件是否发生。

如果发生,则在步骤S12中,第一模块将输出的第一信号进行取反操作。

在本实施方式中,由于在初始化过程中,第一信号和第二信号都初始化为0,当第一模块将输出的第一信号进行取反操作后,第一信号就变为1,此时,异或门电路的两个输入端就分别是:为1的第一信号和为0的第二信号,在为1的第一信号和为0的第二信号经过异或门电路的异或运算之后输出的第三信号为1。

在本实施方式中,第一模块在接收到时钟脉冲时,如果检测一次预设事件没有发生,则结束操作。

在步骤S13中,判断异或门电路输出的第三信号是否为1。

如果为1,则在步骤S14中,在下一个时钟脉冲到来时,第二模块执行相应操作,并将输出的第二信号取反。

在本实施方式中,由于在初始化过程中,第一信号和第二信号都初始化为0,当输出的第二信号取反时,第二信号就变为1。

在步骤S15中,异或门电路根据输入的第一信号和第二信号,将输出的第三信号变为0,第二模块根据接收到为0的第三信号而进入等待状态。

在本实施方式中,由于第一模块在接收到时钟脉冲时检测一次预设事件发生时,已经将输出的第一信号变为1,而且在步骤S14中第二信号也变为1,此时两个同为1的信号(即为1的第一信号和为1的第二信号)输入到异或门电路,经过异或门电路的异或运算之后输出的第三信号就变为0,当第二模块接收到为0的第三信号而进入等待状态。

在本实施方式中,如果步骤S13判断所述异或门电路输出的第三信号不为1,则结束操作。此时,如果判断第三信号不为1,则有可能是异或门电路出现故障。

本发明提供的一种FPGA中模块间同步信号的传递方法,不仅限于从一个模块向另一个模块传输同步信号,还可用于一个模块向多个模块传递信号,只需要每个接收模块都对应地添加一个异或门即可,能够在FPGA内不同的同步模块之间有效的传递信号,实现更加灵活的功能设计。

以下将对本发明所提供的一种FPGA进行详细说明。

请参阅图3,所示为本发明一实施方式中FPGA的结构示意图。

在本实施方式中,FPGA包括第一模块、异或门电路以及第二模块,所述第一模块、所述异或门电路、所述第二模块在同一个时钟下同步工作,所述第一模块输出的第一信号和所述第二模块输出的第二信号均作为所述异或门电路的输入,所述异或门电路输出的第三信号输入至所述第二模块,

其中,所述FPGA还包括初始化模块(图中未示出),用于对所述FPGA进行初始化;

其中,所述第一模块,用于在接收到时钟脉冲时,检测一次预设事件是否发生,如果发生,则将输出的所述第一信号进行取反操作;

其中,所述异或门电路,用于判断所述异或门电路输出的第三信号是否为1;

如果为1,则在下一个时钟脉冲到来时,所述第二模块,用于执行相应操作并将输出的所述第二信号取反;

其中,所述异或门电路,还用于根据输入的所述第一信号和所述第二信号,将输出的第三信号变为0;

其中,所述第二模块,还用于根据接收到为0的第三信号而进入等待状态。

在本实施方式中,所述初始化模块,用于将所述第一模块输出的所述第一信号和所述第二模块输出的所述第二信号都初始化为0;

其中,所述异或门电路,还用于根据初始化后的第一信号和第二信号,输出所述第三信号为0;

其中,所述第二模块,还用于在接收到为0的第三信号后,不执行操作以处于等待状态。

在本实施方式中,所述第一模块,还用于在接收到时钟脉冲时,如果检测一次预设事件没有发生,则结束操作。

在本实施方式中,所述异或门电路,还用于如果判断输出的第三信号不为1,则结束操作。

本发明提供的一种FPGA,不仅限于从一个模块向另一个模块传输同步信号,还可用于一个模块向多个模块传递信号,只需要每个接收模块都对应地添加一个异或门即可,能够在FPGA内不同的同步模块之间有效的传递信号,实现更加灵活的功能设计。

值得注意的是,所述实施例中,所包括的各个单元只是按照功能逻辑进行划分的,但并不局限于所述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。

另外,本领域普通技术人员可以理解实现所述各实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,相应的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘或光盘等。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号