打印
[Verilog HDL]

Verilog hdl与VHDL混用详解

[复制链接]
9541|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一、 用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,与目标功能一致。


使用特权

评论回复

相关帖子

沙发
gaochy1126|  楼主 | 2021-9-28 14:43 | 只看该作者
二、 用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。仿真与设计初衷一致。


使用特权

评论回复
板凳
gaochy1126|  楼主 | 2021-9-28 14:43 | 只看该作者
三、测试总结
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文件中定义的中间变量位数要与子模块的变量位数相匹配,若不匹配,输出无数据,为高阻态
————————————————
版权声明:本文为CSDN博主「玉薄樱」的原创**,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43090994/article/details/111559277

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:这个社会混好的两种人:一是有权有势,二是没脸没皮的。

1050

主题

11299

帖子

26

粉丝