0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

探讨VHDL和Verilog模块互相调用的问题

FPGA之家 来源:Aries FPGA开源 作者:Aries FPGA开源 2021-04-30 14:06 次阅读

1、关于如何在VHDL模块调用一个Verilog模块

在VHDL模块声明一个要与调用的Verilog模块相同名称的元件(component),元件的名称和端口模式应与Verilog模块的名称和输入/输出模式相同。注意Verilog区分大小写,VHDL不区分,所以模块名字一定要完全一致,不能搞混。

举个例子:下面是一个VHDL模块,在里面声明了一个元件(component)

cb372b9a-a95f-11eb-9728-12bb97331649.png

看Verilog模块再

cb4b3734-a95f-11eb-9728-12bb97331649.png

VHDL的模块就是通过声明一个元件(component)来调用这个Verilog模块,将元件声明提出来讲,如下图:

cb5e3e6a-a95f-11eb-9728-12bb97331649.png

对比这个Verilog模块和VHDL中声明的元件不难发现,模块名/端口/输入输出模式完全一样,这和VHDL自己调用用VHDL的元件(component)基本一样。

2、关于如何在Verilog中调用VHDL模块

在Verilog中,通过在Verilog模块中输入其名称(标识符)及端口来调用VHDL实体。模块的参数应该与实体的类型和端口的方向匹配,可以映射到Verilog模块的VHDL端口为:in,out和inout;在某些模拟器中,不允许使用缓冲区。Verilog模块只能使整个VHDL实体可见。

举个例子:下图是一个Verilog模块调用了VHDL模块(高亮处)

cb6f7040-a95f-11eb-9728-12bb97331649.png

下图是一个VHDL模块

cb7d681c-a95f-11eb-9728-12bb97331649.png

Simulator(模拟器,注:这个是英文原版使用的词语,我的理解就是一些EDA)首先在Verilog模块中查找,以查看是否有任何名为VHD_enty的Verilog模块。如果找不到,模拟器将在VHDL实体中查找。当模拟器找到名称为VHD_enty的实体时,它将该实体绑定到Verilog模块。在代码中,输入a被传递到输入端口x;输入b传递给输入y。VHDL实体计算输出O1和O2;这两个输出分别传递到Verilog输出c和d。调用VHDL模块与调用功能或任务非常相似。

例子举完了,下面验证一下

验证:在Verilog中调用VHDL模块实体(VHDL调用Verilog考虑到比较简单,大家用的更多是Verilog,就不举例子了)

验证内容:使用Verilog调用两个VHDL写的D触发器模块实现打两拍。

cb94f78e-a95f-11eb-9728-12bb97331649.png

这个代码是一个用VHDL语言写的D触发器模块,在FIFO中也写过。

cbcaf12c-a95f-11eb-9728-12bb97331649.png

这个代码是Verilog写的,在内部调用两个由VHDL写的D触发器,实现两级D触发器。

cbd45aa0-a95f-11eb-9728-12bb97331649.png

上图是VHDL写的D触发器综合出的原理图,注意对应的端口。

cbe2e0de-a95f-11eb-9728-12bb97331649.png

上图是Verilog代码综合出来的原理图,从代码上看,定义了vclk、x、y三个端口,连接VHDL写的两个D触发器,基本的调用过程就是这样。

总结:两者的互相调用过程都不复杂,举个基础的例子只是为了大家熟悉这个过程。在实际中难免会遇到有互相调用的地方。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1626

    文章

    21665

    浏览量

    601804
  • vhdl
    +关注

    关注

    30

    文章

    816

    浏览量

    128076
  • 触发器
    +关注

    关注

    14

    文章

    1995

    浏览量

    61049

原文标题:关于VHDL和Verilog模块互相调用的问题

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Verilog vhdl fpga

    相关专业,具有良好的专业基础知识。 感兴趣可滴滴 JYHXDX534 2.工作年限不限,有工作经验或优秀应届毕业生亦可。 3.对FPGA芯片架构和资源有深入的理解,精通Verilog HDL、VHDL
    发表于 11-12 16:40

    【招聘】verilog vhdl FPGA

    1.熟悉FPGA架构及应用,熟悉图像算法的FPGA实现。 2.熟悉verilog vhdl,熟悉Xilinx或Intel等开发工具。 3.有AI算法 fpga实现经验优先。 4.本科及以上学历,硕士优先。具有强烈的责任心,执行力,良好的沟通能力和团队合作能力。
    发表于 09-02 15:50

    AC/DC电源模块在医疗设备领域的应用探讨

    BOSHIDA AC/DC电源模块在医疗设备领域的应用探讨 AC/DC电源模块是一种将交流电转换为直流电的设备,广泛应用于各种电子设备中。在医疗设备领域,AC/DC电源模块的应用具有重
    的头像 发表于 05-08 14:30 391次阅读
    AC/DC电源<b class='flag-5'>模块</b>在医疗设备领域的应用<b class='flag-5'>探讨</b>

    VerilogVHDL转换的经验与技巧总结

    VerilogVHDL语法是互通且相互对应的,如何查看二者对同一硬件结构的描述,可以借助EDA工具,如Vivado,打开Vivado后它里面的语言模板后,也可以对比查看VerilogVHD
    的头像 发表于 04-28 17:47 2196次阅读
    <b class='flag-5'>Verilog</b>到<b class='flag-5'>VHDL</b>转换的经验与技巧总结

    请问Systemverilog中如何使用VHDL的package?

    现在需要使用system verilog写代码,但是想复用之前VHDL的package,里面有写的现成的function等,请问如何调用呢。总是报错说找不到_pkg
    发表于 03-12 15:37

    verilog中input和output作用

    Verilog中,input和output用于定义模块的输入和输出端口。它们是用于通信的关键元素,定义了模块与其它模块之间的数据传输接口。通过input和output端口,
    的头像 发表于 02-23 10:29 2933次阅读

    verilog中端口类型有哪三种

    Verilog 中,端口类型有三种:输入端口(input)、输出端口(output)和双向端口(inout)。 输入端口(input)用于接收来自其他模块的信号。在一个模块中,输入端口是被
    的头像 发表于 02-23 10:28 1925次阅读

    verilog与其他编程语言的接口机制

    语言的接口机制,并深入探讨其原理和应用。 Verilog语言概述 Verilog是由美国专业电子设计自动化公司Cadence设计系统有限公司(前身是Gateway Design Automation公司)开发的一种硬件描述语言。
    的头像 发表于 02-23 10:22 623次阅读

    verilog调用模块端口对应方式

    Verilog是一种硬件描述语言(HDL),广泛应用于数字电路设计和硬件验证。在Verilog中,模块是构建电路的基本单元,而模块端口对应方式则用于描述
    的头像 发表于 02-23 10:20 1637次阅读

    verilog双向端口的使用

    Verilog硬件描述语言中,端口是指连接模块(Module)与其他模块、寄存器或是物理设备的输入或输出接口。单向端口可以作为输入或输出使用,而双向端口具有双重作用,既可以接收输入信号,又可以输出
    的头像 发表于 02-23 10:18 1296次阅读

    verilog中for循环是串行执行还是并行执行

    Verilog中,for循环是并行执行的。Verilog是一种硬件描述语言,用于描述和设计数字电路和系统。在硬件系统中,各个电路模块是同时运行的,并且可以并行执行多个操作。因此,在Veril
    的头像 发表于 02-22 16:06 2710次阅读

    verilog如何调用其他module

    第一部分:简介 1.1 什么是Verilog模块? 在Verilog中,模块是其设计层次结构的基本单元。模块是一个用于实现特定功能的单独的硬
    的头像 发表于 02-22 15:56 5401次阅读

    verilog function函数的用法

    Verilog 中被广泛用于对电路进行模块化设计,以简化和组织代码。 本文将详细介绍 Verilog 函数的用法,并探讨函数在硬件设计中的重要性和实际应用场景。 一.
    的头像 发表于 02-22 15:49 5045次阅读

    verilog中function和task的区别

    Verilog中,Function和Task是用于模块化设计和重用代码的两种重要元素。它们允许开发人员将复杂的操作分解为更小的功能单元,并在需要时调用它们。虽然Function和Task在某些方面
    的头像 发表于 02-22 15:40 1767次阅读

    例说Verilog HDL和VHDL区别

    VerilogVHDL之间的区别将在本文中通过示例进行详细说明。对优点和缺点的VerilogVHDL进行了讨论。
    的头像 发表于 12-20 09:03 3291次阅读
    例说<b class='flag-5'>Verilog</b> HDL和<b class='flag-5'>VHDL</b>区别