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文件中定义的中间变量位数要与子模块的变量位数相匹配,若不匹配,输出无数据,为高阻态。

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C#实现简单网页

    C#实现简单网页⑴创建ASP.NET网站新建MyWebSite网站,添加一个WebForm1网页,其中包含一个文本框TextBox1一个按钮Button1(计算)和一个标签Label1(””)。在文本框中输入一个数,当点击“计算”按钮时,在标签中显示此数的平方根。WebForm1.aspx文件内容如下:<%@PageLanguage=”C#”AutoEventWireup=”true…

    2022年10月13日
    2
  • Latex学习 day1「建议收藏」

    Latex学习 day1「建议收藏」这周学习超卖力,到今天周五累到了,不想搞遗传算法也不想搞神经网络了,今天来玩玩latex,系统地看看刘海洋老师的书书,之前也鼓捣过,不系统,查漏补缺吧。玩一玩大概就可以通过愧疚学习法找到继续搞正经活儿的动力了Ctrl+鼠标左键正反向查找按tab自动补全\docTab补全\documentclass{}\beqtab补全公式环境\begin{equation}…

    2022年6月2日
    37
  • 第二届全国大学生网络安全精英赛初赛错题笔记

    第二届全国大学生网络安全精英赛初赛错题笔记(一)1.通信保密阶段主要威胁:搭线窃听和密码分析主要措施:数据加密保护机密性和完整性开始标志:香农的《保密系统的信息理论》2.信息安全的阶段四个阶段:通信安全、计算机安全、信息安全、信息保障3.信息系统安全保障蕴含:生命周期、保障要素、安全特征4.完整性:确保信息在存储、使用、传输的过程中不会被非授权按用户篡改,同时还要防止授权用户对信息进行不恰当篡改,保持信息内外部表示的一致性国际标准化组织:IOS/OSI提供了五种安全服务:以及八类安全机制。五类安全服务:认证(鉴别)服

    2022年5月25日
    58
  • Windows 技术篇-LDSGameMaster文件夹有什么用,删除方法

    Windows 技术篇-LDSGameMaster文件夹有什么用,删除方法LDS是鲁大师的拼写,应该是用过鲁大师,偷偷给你安装的。分析:没什么用,流氓程序,还很大占地方,4个G,可以放心的卸掉。卸载方法:找到里面的卸载程序来卸载,卸载完后把文件夹删除就好了。

    2022年6月14日
    84
  • c# mysql executenonquery_C#与数据库访问技术之ExecuteNonQuery方法

    c# mysql executenonquery_C#与数据库访问技术之ExecuteNonQuery方法ExecuteNonQuery方法主要用来更新数据。通常使用它来执行Update、Insert和Delete语句。该方法返回值意义如下:对于Update、Insert和Delete语句,返回值为该命令所影响的行数。对于所有其他类型的语句,返回值为-1。Command对象通过ExecuteNonQuery方法更新数据库的过程非常简单,需要进行的步骤如下:(1)创建数据库连接。(2)创建Command…

    2025年10月29日
    4
  • readprocessmemory函数分析_in the process

    readprocessmemory函数分析_in the process函数功能:该函数从指定的进程中读入内存信息,被读取的区域必须具有访问权限。函数原型:BOOLReadProcessMemory(HANDLEhProcess,LPCVOIDlpBaseAddress,LPVOIDlpBuffer,DWORDnSize,LPDWORDlpNumberOfBytesRead);参数:hProcess:进程句柄

    2022年10月4日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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