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
    +关注

    关注

    1655

    文章

    22283

    浏览量

    630152
  • vhdl
    +关注

    关注

    30

    文章

    820

    浏览量

    131323
  • 触发器
    +关注

    关注

    14

    文章

    2050

    浏览量

    63037

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    使用NucleiStudio生成tb仿真需要的.verilog文件

    打开仿真顶层文件tb_top.v,存放在ITCM模块里面的指令是通过readmemh函数读入.verilog文件实现的: 下面通过对NucleiStudio IDE进行设置,实现将c
    发表于 11-05 07:07

    Python调用API教程

    两个不同系统之间的信息交互。在这篇文章中,我们将详细介绍Python调用API的方法和技巧。 一、用Requests库发送HTTP请求 使用Python调用API的第一步是发送HTTP请求,通常
    的头像 发表于 11-03 09:15 320次阅读

    DSP芯片与800G光模块的核心关系:Transmit Retimed DSP、LPO与LRO方案的探讨

    本文深入探讨DSP芯片在800G光模块中的核心作用,包括Transmit Retimed DSP架构与新兴LPO/LRO方案的对比分析。DSP在信号均衡、误码控制与长距离传输中不可或缺,而LPO/LRO以低功耗优势适用于短距互联。未来两者将根据场景长期共存,共同推动光
    的头像 发表于 09-10 16:32 1461次阅读
    DSP芯片与800G光<b class='flag-5'>模块</b>的核心关系:Transmit Retimed DSP、LPO与LRO方案的<b class='flag-5'>探讨</b>

    为什么我选择VHDL入门

    在群里交流提问的时候,大家总是惊讶并疑惑:为什么我要选择 VHDL入门?因为好像 99% 搞 FPGA 开发的人都在用 Verilog。 我的选择,是通过网上搜索的讨论而做出的,为了留存,我这里水一
    的头像 发表于 06-25 11:18 878次阅读
    为什么我选择<b class='flag-5'>VHDL</b>入门

    verilog模块调用、任务和函数

    在做模块划分时,通常会出现这种情形,某个大的模块中包含了一个或多个功能子模块verilog是通过模块
    的头像 发表于 05-03 10:29 1283次阅读
    <b class='flag-5'>verilog</b><b class='flag-5'>模块</b>的<b class='flag-5'>调用</b>、任务和函数

    在Vivado调用MIG产生DDR3的问题解析

    下面是调用的DDR3模块的,模块的倒数第二行是,模块的时钟输入,时钟源来自PLL产生的系统时钟的倍频。
    的头像 发表于 05-03 10:21 1215次阅读
    在Vivado<b class='flag-5'>调用</b>MIG产生DDR3的问题解析

    FPGA Verilog HDL语法之编译预处理

    Verilog HDL语言和C语言一样也提供了编译预处理的功能。“编译预处理”是Verilog HDL编译系统的一个组成部分。Verilog HDL语言允许在程序中使用几种特殊的命令(它们不是一般
    的头像 发表于 03-27 13:30 1086次阅读
    FPGA <b class='flag-5'>Verilog</b> HDL语法之编译预处理

    Verilog中signed和$signed()的用法

    1、在verilog中有时会用signed修饰符来修饰定义的数据,运算的时候也会用$signed()任务来强制转换数据,那么signed的修饰是为什么呢,是为了区分有符号数和无符号数的加法和乘法
    的头像 发表于 02-17 17:47 1185次阅读
    <b class='flag-5'>Verilog</b>中signed和$signed()的用法

    浅谈VerilogVHDL的区别

    VerilogVHDL是两种广泛使用的硬件描述语言(HDL),它们用于描述和模拟数字电路系统的行为和结构。这两种语言的主要作用是帮助工程师设计、仿真和验证集成电路(IC)和系统级芯片(SoC)中的硬件模块
    的头像 发表于 02-17 14:20 2623次阅读
    浅谈<b class='flag-5'>Verilog</b>和<b class='flag-5'>VHDL</b>的区别

    MT-HIL(4):如何在Simulink下使用HDL Coder导出FPGA/VHDL代码

    vhdl
    芒果树数字
    发布于 :2025年01月10日 17:22:17

    Verilog例化说明

    Verilog例化说明 1.什么是模块例化?为什么要例化? 模块例化可以理解成模块调用。对于一个FPGA工程,通常是由一个顶层
    的头像 发表于 12-17 11:29 3121次阅读
    <b class='flag-5'>Verilog</b>例化说明

    Verilog 电路仿真常见问题 Verilog 在芯片设计中的应用

    在现代电子设计自动化(EDA)领域,Verilog作为一种硬件描述语言,已经成为数字电路设计和验证的标准工具。它允许设计师以高级抽象的方式定义电路的行为和结构,从而简化了从概念到硅片的整个设计流程
    的头像 发表于 12-17 09:53 1601次阅读

    Verilog 与 ASIC 设计的关系 Verilog 代码优化技巧

    Verilog与ASIC设计的关系 Verilog作为一种硬件描述语言(HDL),在ASIC设计中扮演着至关重要的角色。ASIC(Application Specific Integrated
    的头像 发表于 12-17 09:52 1436次阅读

    Verilog 测试平台设计方法 Verilog FPGA开发指南

    Verilog设计的仿真需求。 编写测试文件 : 编写Verilog测试文件,对设计的各个模块进行测试。测试文件应覆盖各种情况,包括正
    的头像 发表于 12-17 09:50 1558次阅读

    VerilogVHDL的比较 Verilog HDL编程技巧

    VerilogVHDL 比较 1. 语法和风格 VerilogVerilog 的语法更接近于 C 语言,对于有 C 语言背景的工程师来说,学习曲线较平缓。它支持结构化编程,代
    的头像 发表于 12-17 09:44 2682次阅读