Quartus II 15.0中仿真Altera三速以太网IP核 - 图文

更新时间:2024-01-10 18:35:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

小梅哥FPGA学习笔记之

Quartus II 15.0中仿真Altera三速以太网IP核

(友情提示:图片有点多,默认缩小状态下可能看不清楚,点击图片可查看高清大图哦)

近期的项目需要用到网络端口通过UDP协议来进行数据的与PC机的交互。FPGA系统中实现网口有多种方式,包括友晶的DE2-35开发板上使用的NIOS II处理器通过外部MAC芯片DM9000实现的web server,以及DE2-115开发板上使用NIOS II处理器与三速以太网(TSE)IP核实现web server,再就是W5X00系列的硬件TCP/IP网络芯片,配合FPGA实现网络数据传输。当然,我自己也曾经在项目中直接使用完全自己编写的UDP协议网络收发逻辑配合外部网络PHY芯片,实现数据的收发。早就知道Quartus II中提供了有三速以太网的MAC层IP,今天,在新项目的网络接口开工前,先通过仿真来了解一下该IP核的基本情况,相信该IP核的仿真结果一定很标准,能够为我后期手动写MAC层逻辑提供一个标准的时序参照。

这里我使用Altera 公司最新的FPGA开发工具Quartus II15.0(前天刚刚出了update1版本,不过公司网速慢,我还没来得及更新)来生成该以太网IP核以及设计实例,并使用Modelsim – Altera来仿真,来得到仿真波形。

在Quartus II15.0中,新建一个空白工程,工程名字任意,这里我命名为TSE_SIM,器件我选择在至芯科技学习时发给我的ZX-1开发板上使用的FPGA芯片EP4CE10C8,仿真工具选择modelsim-altera,语言为Verilog。(创建工程这些的我就不上图了,相信大家都很熟悉)最终,创建工程完成后的Summary如下图所示:

点击Finish完成工程的创建。在软件的右侧IPCatlog中(以前的博客有提到,Quartus II15.0中的IP核调用不再是在MegaWizard Plug-In Manager中,而是IPCatlog)依次展开Interface Protocols/Ethernet,然后双击Triple-Speed Ethernet,就会弹出下面的对话框:

这里,语言选择Verilog,IP核被我自己命名为TSE,然后点击OK,则开始启动参数配置界面,启动过程很长,从点击OK到最终GUI弹出来大约需要20秒左右的时间,大家要耐心点,不要怀疑是否是软件出了故障。

在Core Configuration选项卡中,选择Core Variation为10/100/1000Mb Ethernet MAC(自适应以太网介质访问控制子层协议),interface选择RGMII接口(参照友晶DE2-115硬件结构),勾选上使用内部fifo选项,具体如下图所示:

在MAC Options选项卡中,Ethernet MAC Options默认选择即可,在MOID Module中,勾选Include MDIO Module(MDC/MDIO)。如下图所示:

在FIFO Options选项卡中,选择Width为8bits,Depth默认2048即可,如下图所示:

另外两个选项卡Timestamp Options和PCS/Transceriver Options不需要修改(全灰色,器件不支持,咱也改不了)。接下来点击右下角的Finish按钮,会弹出如下图所示的界面,这里提示是否生成设计示例,将其勾选上,然后点击Generate,则软件开始生成IP核核参考设计,整个过程大约需要1到2分钟。

生成完成后点击Exit退出,回到Quartus II工程中。我们发现自动将生成的两个文件TSE.qip和TSE.sip文件添加进来了,这里我们选中TSE.qip文件,右键单击,选择将其设置为顶层文件

接下来,就可以对整个工程进行分析和综合了,这里提供一组快捷键:“Ctrl + K”来实现分析和综合,当然,如果需要进行全编译,则可使用组合键“Ctrl + L”。 (接上篇)

编译完成后,一般不会出现错误,这时候,就可以通过设置NativeLink来将Quartus II工程文件与Modelsim-Altera软件关联起来了。设置NaitveLink的详细步骤如下图所示: 点击Assignments—>Settings

在弹出的对话框中(如下图所示)选择EDA Tool Settings(红框1处),选择Simulation(红框2处),核对红框3处和4处是否与图上设置的一致,然后勾选红框5处的Compile test bench,点击红框6处的Test Benches以进入新的testbench设置窗口。

在新的testbench设置窗口中,点击New以创建一个新的Testbench设置脚本,如下图所示:

单击New Test Bench Settings选项卡中的File name一栏最右侧的三个小点(红框1处所示):

在弹出的文件选项卡中,将目录定位到工程目录下的 ” _testbench/testbench_verilog/

目录下,选择_tb.V文件并Open(如下图所示),返回到New Test Bench Settings选项卡中。

点击Add将_tb.v添加进去,然后再次点击那三个小点(如下图所示):

进入文件选择选项卡中,将目录定位到工程目录下的

_testbench/testbench_verilog/models”文件夹中,选择除以timing开头的文件(时序仿真时才需要用到)以外的其他所有文件,点击Open。如下图所示:

这些文件都是为了配合仿真TSE IP核而存在的,属于仿真模型,这些文件组合在一起相当于虚拟了一个物理的网络收发器PHY。这样,就能够模拟真实的板级环境进行仿真测试了。 在New Test Bench Settings选项卡中,Test bench一栏中输入_tb,Top Level module in test bench一栏中输入tb。至于这里为什么要手动输入tb,而不是由软件自动填充的_tb。

为什么是这样,这里小梅哥最开始也郁闷了很久,我最开始也是直接使用_tb来填入top Level module in test bench中,结果modelsim – altera中仿真总是报错,提示找不到_tb.V文件,我就郁闷了,明明是已经加入进来了,为什么进行仿真时总说找不到呢?直到后来我打开_tb.V这个文件一看,才找到了原因,如下图所示:

虽然文件名字是_tb.V,但是文件中test bench的顶层实体名字任然是tb,因此,我们直接设置_tb.V作为top Level module in test bench的名字当然不对了,所以我们需要根据实际情况,输入top Level module in test bench的名字为tb。

设置完毕,连续点击两次OK,回到Settings - <工程名>选项卡中,勾选Use Script to setup simulation,并定位到文件_testbench/testbench_verilog//_wave.do。这个文件是一个脚本文件,主要功能是有条理的添加信号到仿真波形窗口中,以使我们看起来更加直观,如下图所示。

然后apply,OK即可。此时在Quartus II软件中点击RTL Simulation按钮即可启动仿真,如下图所示:

整个过程较为漫长,modelsim-altera需要首先对设计文件进行编译,然后才能运行仿真,大约需要3分钟左右的时间吧。仿真开始后,会自动在波形窗口中添加好信号并停在仿真时间0处,如下图所示:

因为仿真脚本中没有run这个命令,所以添加完波形后modelsim就进入等待状态,因此我们必须手动输入run –all命令,或者在GUI上点击run –all按钮来运行仿真,如下图所示:

仿真大约运行10秒左右就会停下来,此时就可以观察波形了,在Transcript窗口中也会打印仿真过程中的一些数据信息。下图为仿真结果欣赏: 接收模块和接收FIFO模块信号仿真波形:

发送模块和发送fifo模块仿真波形:

打印的信息:

本文来源:https://www.bwwdw.com/article/eg0o.html

Top