近期的项目需要用到网络端口通过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”。