verilog调用vhdl模块_verilog和vhdl哪个更好

verilog调用vhdl模块_verilog和vhdl哪个更好初学FPGA,记录一些个人的探索历程和心得。本文的初衷是为了验证VHDL和Verilog文件互相调用功能。以一个简单的二选一选择器为例,分别用两种方法实现功能。一、用Verilog文件调用VHDL以Verilog文件为顶层文件,调用VHDL模块,testbench为Verilog文件。1、新建project2、编写.vhd文件,FPGA_VHDL.vhd,文件名与模块名称一致;3、编写FPGA_Verilog.v文件,文件名与模块名称一致,且设为top文件。4、编写testbench文件

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

初学FPGA,记录一些个人的探索历程和心得。本文的初衷是为了验证VHDL和Verilog文件互相调用功能。以一个简单的二选一选择器为例,分别用两种方法实现功能。

一、 用Verilog文件调用VHDL

以Verilog文件为顶层文件,调用VHDL模块,testbench为Verilog文件。
1、新建project
2、编写.vhd文件,FPGA_VHDL.vhd,文件名与模块名称一致;

在这里插入图片描述
3、编写FPGA_Verilog.v文件,文件名与模块名称一致,且设为top文件。
在这里插入图片描述
4、编写testbench文件,FPGA_VHDL.vt,设置时钟周期为20ns,延时50ns后reset=1,aa=0,bb=1,每16个时钟,ss信号翻转一次;
在这里插入图片描述
在这里插入图片描述
5、仿真,调用出Modelsim,选择testbench文件编译,设置仿真时长100us,执行仿真,仿真波形如下:
在这里插入图片描述
在这里插入图片描述
结论:时钟周期为20ns,reset在50ns时置高,计数cnter到15后回0,到零后ss电平翻转,当ss=0时,yy=0;当ss=1时,yy=1,与目标功能一致。

二、 用VHDL文件调用Verilog

1、新建project
2、编写.v文件,FPGA_Chooser.v,模块名称要与文件命名一致,定义模块端口名和组合逻辑;a,b,s为输入端口,y为输出端口。当s=0时,y=a;当s=1时,y=b。
在这里插入图片描述
3、编写.vhd文件FPGA_VHDL_top.vhd,并设为top文件,模块名称要与命名模块一致, 例化元件端口名要与.v文件的模块端口名一致,连接端口名则为实体定义的端口名。定义输入端口aa,bb,ss,输出端口yy,分别与模块FPGA_Chooser的端口a,b,s,y对应。
在这里插入图片描述
4、生成testbench仿真测试文件FPGA_VHDL_top.vht,给变量赋值,定义时钟周期为20ns;reset初始值为0,在50ns后为1;aa,bb分别为0和1,ss每16个时钟信号翻转一次。
在这里插入图片描述在这里插入图片描述
5、仿真,调用出Modelsim,选择testbench文件编译,设置仿真时长100us,执行仿真,仿真波形如下:
在这里插入图片描述
结论:从波形可得,时钟周期为20ns,50ns后reset=1;ss每16个时钟周期电平翻转一次,当ss为1时,yy为1;当ss为0时,yy为0。仿真与设计初衷一致。

三、测试总结

1、Verilog调用VHDL比较简单,需要把VHDL的实体(entity)当成一个verilog模块(module),按verilog的格式调用。“FPGA_Verilog.v + FPGA_VHDL.vhd”
2、VHDL调用verilog hdl相对较复杂,需要先将verilog的模块(module)做成VHDL的元件(component),再进行调用。“FPGA_VHDL_top.vhd+FPGA_Chooser.v”
3、在用Verilog文件调用VHDL模块时,定义中间变量为wire型。例化底层模块时,“.”为例化端口,”()”内为wire型变量。调用结束后,将例化模块的输出值赋给top文件的输出端口,若未赋值,输出无数据,为高阻态;
4、在top文件中定义的中间变量位数要与子模块的变量位数相匹配,若不匹配,输出无数据,为高阻态。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/191088.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)
blank

相关推荐

  • Java IO流学习总结一:输入输出流[通俗易懂]

    Java IO流学习总结一:输入输出流[通俗易懂]JavaIO流学习总结一:输入输出流转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/53761199本文出自【赵彦军的博客】Java流类图结构:流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直

  • JavaScript页面后退或关闭

    JavaScript页面后退或关闭后退方法history.go(-1)如果无法后退时,会返回一个undefined,利用这一点来判断是否可以后退,不能后退时执行window.close();if(!history.go(-1)){window.close();}window.close();对于火狐浏览器经常会无法关闭。因为火狐浏览器只能关闭通过JS新建的窗口,即有target=”_blank”属性的标签,或者

  • 02_SpringBoot在IDEA环境下的热部署

    02_SpringBoot在IDEA环境下的热部署

  • html、css 实现二级菜单「建议收藏」

    html、css 实现二级菜单「建议收藏」利用html、css实现二级菜单,一级菜单用浮动,二级菜单用定位

  • Jenkins详细安装与构建部署使用教程[通俗易懂]

    Jenkins详细安装与构建部署使用教程[通俗易懂]     Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:1、持续的软件版本发布/测试项目。2、监控外部调用执行的工作。本文使用的Linux:Ubuntu其中JDK、Tomcat、SVN服务器请看这里Ubuntu安装配置JDK、Tomcat、SVN…

  • 弹性网络回归模型_数据模型剪枝

    弹性网络回归模型_数据模型剪枝本文首发于PandaCV公众号。导语:模型剪枝算法核心在于找到“不重要”的参数并且实现裁剪。为寻找到较优的剪枝策略,我们往往需要尝试多种剪枝策略和剪枝策略性能评估。通常剪枝策略评估方法是将剪枝后的模型训练到收敛或者训练规定好数量epoch后进行性能比较。不管是人工调试剪枝策略还是自动搜索剪枝策略,都需要多次评估剪枝策略。剪枝策略的评估效率一定程度上影响了整体压缩效率。因此,本文提出了一种能够快速衡量剪枝后模型性能的方法,经实验能够对MobilenetV1减少50%的FLOPs情况下,仍能保证在Image

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号