QuartusII150中仿真Altera三速以太网IP核.docx
《QuartusII150中仿真Altera三速以太网IP核.docx》由会员分享,可在线阅读,更多相关《QuartusII150中仿真Altera三速以太网IP核.docx(18页珍藏版)》请在冰豆网上搜索。
![QuartusII150中仿真Altera三速以太网IP核.docx](https://file1.bdocx.com/fileroot1/2022-10/16/762103b3-4c4a-4355-941b-df9828adcece/762103b3-4c4a-4355-941b-df9828adcece1.gif)
QuartusII150中仿真Altera三速以太网IP核
小梅哥FPGA学习笔记之
QuartusII15.0中仿真Altera三速以太网IP核
(友情提示:
图片有点多,默认缩小状态下可能看不清楚,点击图片可查看高清大图哦)
近期的项目需要用到网络端口通过UDP协议来进行数据的与PC机的交互。
FPGA系统中实
现网口有多种方式,包括友晶的DE2-35开发板上使用的NIOSII处理器通过外部MAC芯片DM9000实现的webserver,以及DE2-115开发板上使用NIOSII处理器与三速以太网(TSEIP核实现webserver,再就是W5X00系列的硬件TCP/IP网络芯片,配合FPGA实现网络数据传输。
当然,我自己也曾经在项目中直接使用完全自己编写的UDP协议网络收发逻辑配
合外部网络PHY芯片,实现数据的收发。
早就知道QuartusII中提供了有三速以太网的MAC
层IP,今天,在新项目的网络接口开工前,先通过仿真来了解一下该IP核的基本情况,相
信该IP核的仿真结果一定很标准,能够为我后期手动写MAC层逻辑提供一个标准的时序
参照。
这里我使用Altera公司最新的FPGA开发工具Quartus1115.0(前天刚刚出了update1版本,不过公司网速慢,我还没来得及更新)来生成该以太网IP核以及设计实例,并使用Modelsim-Altera来仿真,来得到仿真波形。
在QuartusII15.0中,新建一个空白工程,工程名字任意,这里我命名为TSE_SIM器件我选择在至芯科技学习时发给我的ZX-1开发板上使用的FPGA芯片EP4CE10C8仿真工具选择
modelsim-altera,语言为Verilog。
(创建工程这些的我就不上图了,相信大家都很熟悉)最终,创建工程完成后的Summary如下图所示:
点击Finish完成工程的创建。
在软件的右侧IPCatlog中(以前的博客有提到,Quartus1115.0中的IP核调用不再是在MegaWizardPlug-InManager中,而是IPCatlog)依次展开Interface
这里,语言选择Verilog,IP核被我自己命名为TSE然后点击OK,则开始启动参数配置界面,启动过程很长,从点击OK到最终GUI弹出来大约需要20秒左右的时间,大家要耐心点,不要怀疑是否是软件出了故障。
在CoreConfiguration选项卡中,选择CoreVariation为10/100/1000MbEthernetMAC(自适应以太网介质访问控制子层协议),interface选择RGMII接口(参照友晶DE2-115硬件结构),勾选上使用内部fifo选项,具体如下图所示:
在MACOptions选项卡中,EthernetMACOptions默认选择即可,在MOIDModule中,勾选IneludeMDIOModule(MDC/MDIO)。
如下图所示:
在FIFOOptions选项卡中,选择Width为8bits,Depth默认2048即可,如下图所示:
另外两个选项卡TimestampOptions和PCS/TransceriverOptions不需要修改(全灰色,器件
不支持,咱也改不了)。
接下来点击右下角的Finish按钮,会弹出如下图所示的界面,这
里提示是否生成设计示例,将其勾选上,然后点击Generate,则软件开始生成IP核核参考
设计,整个过程大约需要1到2分钟。
Gener-ation
InadditiontogeneratingtiieIPccmponentwiththesettings_.oucr&ated.youcanalsogenerateanexampledesign.Generatinganexarpledesigncan引gnific:
生ntr,incre^s^processingtimes.
生成完成后点击Exit退出,回到QuartusII工程中。
我们发现自动将生成的两个文件TSE.qip
和TSE.sip文件添加进来了,这里我们选中TSE.qip文件,右键单击,选择将其设置为顶层
文件
ProjectNavigator
4Sx
4
*1
卜W]TSE円ipI
i]TS^.sip
.SHiera-ftiy冒Fies
/Design卜
E■m・
1Scias&otrCsi+5iA+v
P^aperties-...
\4Q.LJrtu4n64-£:
J-Emp/TMHt£_S]M-ItE.
ffe-MewfrcriectAssgrvnmis
Tadb
」_3丄丄执[△町“
TSE^SM
Ra»rfHt耳*评畔el
析和综合,当然,如果需要进行全编译,则可使用组合键“Ctrl+L。
(接上篇)
编译完成后,一般不会出现错误,这时候,就可以通过设置NativeLink来将QuartusII工程
文件与Modelsim-Altera软件关联起来了。
设置NaitveLink的详细步骤如下图所示:
点击Assignments—>Settings
在弹出的对话框中(如下图所示)选择EDAToolSettings(红框1处),选择Simulation(红框2处),核对红框3处和4处是否与图上设置的一致,然后勾选红框5处的Compiletest
bench,点击红框6处的TestBenches以进入新的testbench设置窗口。
在新的testbench设置窗口中,点击New以创建一个新的Testbench设置脚本,如下图所示:
”<|名>_testbench/testbench_verilog/”
目录下,选择_tb.V文件并Open(如下图所示),返回到NewTestBenchSettings选项卡中。
点击Add将_tb.v添加进去,然后再次点击那三个小点(如下图所示)
Edittestberxtisettingsforthe建Hadtestbench.
Lestbenchnarr»e:
ToplevelrntxJuleintestbench;
IJgetestbenchtoperformT'HDLtinningsirnul^hicin
Desgrtinstancenameintestbencbi:
MA
^irmjlationperiod
aRun^imul^tianuntilallzsctorsbrnuliareu^ed
0目idsimulationat:
_C5tbenchandsimulatiorifiles
Add
Filen^me:
Q
_J_ifrirarifHT1LVgfsjQn
Remove
1T5E_testbcnch/t...Cefaiit
[5]
Down
groperties.h.
进入文件选择选项卡中,将目录定位到工程目录下的
”<1名>_testbench/testbench_verilog/models文件夹中,选择除以timing开头的文件(时
序仿真时才需要用到)以外的其他所有文件,点击Open。
如下图所示:
这些文件都是为了配合仿真TSEIP核而存在的,属于仿真模型,这些文件组合在一起相当于虚拟了一个物理的网络收发器PHY。
这样,就能够模拟真实的板级环境进行仿真测试了。
在NewTestBenchSettings选项卡中,Testbench—栏中输入_tb,TopLevelmoduleintestbench—栏中输入tb。
至于这里为什么要手动输入tb,而不是由软件自动填充的名>tb。
为什么是这样,这里小梅哥最开始也郁闷了很久,我最开始也是直接使用<IP名>_tb来填
入topLevelmoduleintestbench中,结果modelsim-altera中仿真总是报错,提示找不到<IP名>_tb.V文件,我就郁闷了,明明是已经加入进来了,为什么进行仿真时总说找不到呢?
直到后来我打开<IP名>_tb.V这个文件一看,才找到了原因,如下图所示:
虽然文件名字是_tb.V,但是文件中testbench的顶层实体名字任然是tb,因此,我
们直接设置_tb.V作为topLevelmoduleintestbench的名字当然不对了,所以我们需要根据实际情况,输入topLevelmoduleintestbench的名字为tb。
设置完毕,连续点击两次OK,回到Settings-<工程名>选项卡中,勾选UseScripttosetup
simulation,并定位到文件_testbench/testbench_verilog//_wave.do。
这个文件是一个脚本文件,主要功能是有条理的添加信号到仿真波形窗口中,以使我们看起来更加直观,如下图所示。
然后apply,OK即可。
此时在QuartusII软件中点击RTLSimulation按钮即可启动仿真,如
下图所示:
整个过程较为漫长,modelsim-altera需要首先对设计文件进行编译,然后才能运行仿真,
大约需要3分钟左右的时间吧。
仿真开始后,会自动在波形窗口中添加好信号并停在仿真时间0处,如下图所示:
-Haw>wD«*a-■NODoU*
■HoOatsf*JD4»■Hag-柚0m«-
因为仿真脚本中没有run这个命令,所以添加完波形后modelsim就进入等待状态,因此我们必须手动输入run-all命令,或者在GUI上点击run-all按钮来运行仿真,如下图所示:
仿真大约运行10秒左右就会停下来,此时就可以观察波形了,在Transcript窗口中也会打
印仿真过程中的一些数据信息。
下图为仿真结果欣赏:
接收模块和接收FIFO模块信号仿真波形:
发送模块和发送fifo模块仿真波形:
打印的信息:
450ns-Re-StartRxFIFORead
*-AlteraDesignYeraion:
15.0
f
*-KrineSczacch:
#-ReadSetarch:
#
*-MACConfiguration
+
i■WriteMA匚Address
扌-WriteMaximumFrameLength
t
#一WriteFatiaeQuanta
4
4-SettingFIFOTh.resh^lds
Cost
Mel如P-mi*牝妙O:
0
ljar.3niLr-l亡orrestfrar*5-MichFauscHriae?
:
ftec*F*b±**-右:
巴即車含:
r:
吐進占:
Jrm-sftvca^vwdkritLCltCt
T:
s^#=lweaOeret^