1 / 18

FPGA 和 SOPC 应用 —— 熟悉 ModelSim

FPGA 和 SOPC 应用 —— 熟悉 ModelSim. 华中科技大学启明学院电工电子科技创新中心 王贞炎. 内容. 使用 ModelSim 仿真 Verilog HDL 编写仿真平台( Testbench ) 编译和仿真 查看仿真结 果. ModelSim 介绍. 为什么要使用 ModelSim ? Quartus II 从 10.0 版本起不再提供对波形仿真的支持!! ModelSim 仿真更快、功能更强 在业界应用广泛. ModelSim 介绍. 为什么要仿真 复杂的设计几乎不可能写完功能就是对的,因此需要在投入使用前仿真验证

Download Presentation

FPGA 和 SOPC 应用 —— 熟悉 ModelSim

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. FPGA和SOPC应用——熟悉ModelSim 华中科技大学启明学院电工电子科技创新中心 王贞炎

  2. 内容 • 使用ModelSim仿真Verilog HDL • 编写仿真平台(Testbench) • 编译和仿真 • 查看仿真结果

  3. ModelSim介绍 • 为什么要使用ModelSim? • Quartus II从10.0版本起不再提供对波形仿真的支持!! • ModelSim仿真更快、功能更强 • 在业界应用广泛

  4. ModelSim介绍 • 为什么要仿真 • 复杂的设计几乎不可能写完功能就是对的,因此需要在投入使用前仿真验证 • 仿真分为功能仿真(一般即RTL级)和时序仿真(一般即Gate级) • 仿真的概念 • 通过产生一定的激励信号送给被测逻辑,并观察被被测逻辑的行为(包括输出和内部行为),来判断被测逻辑是否满足功能需求以及时序需求的过程。

  5. 使用ModelSim仿真 • 工程 • 采用ModelSim进行仿真,可以使用其仿真工程管理各种源代码文件、数据文件、设置文件等等;也可以不需要仿真工程,仅仅依赖源代码文件。 • Quartus调用ModelSim进行仿真的时候,属于后者,一般自行仿真,可采用前者。

  6. 使用ModelSim仿真 • ModelSim的界面 • 界面中的窗口都可以拖动停靠在主界面的左、右或者下方。

  7. 使用ModelSim仿真 • 建立工程 • 打开ModelSim • altera • /opt/altera/modelsim_ae/linuxaloem/vsim • 新建工程 • File - New - Project… 工程名 工程目录 可为新的工程建目录 或在待仿真的源文件处建立工程 这里新建一个目录

  8. 使用ModelSim仿真 • 为工程添加文件 • 将待仿真的文件复制进刚刚建立的目录内,并“Add Existing File”,将待仿真的文件添加进工程

  9. 使用ModelSim仿真 • 为工程添加文件 • 创建用于书写Testbench的源文件,“Create New File” 文件名 文件类型 放置在哪个目录

  10. 使用ModelSim仿真 • 为工程添加文件 • 创建仿真设定 testbench的顶层模块名

  11. 编写Testbench • 编写testbench • Testbench中可以使用全部的verilog语法,包括: • #(延时) • initial • 各种系统函数,$stop,$readmemh等等 • …… • 在ModelSim中做功能仿真时,需要注意: • 所有寄存器型变量(如reg、initial)的仿真初始值均为不确定值“X”,如果你的模块中含有不会在运行期间被赋予确定值的reg,那么在ModelSim中它会一直保持为“X”,这是与实际器件不符的,因为实际器件中不会出现“X”。 这些语法是不可综合进FPGA的

  12. 编写Testbench • 一个Testbench解析 `timescale 1ns/1ps module testbench; reg clk, arst; wire en; wire [15 : 0] gray; reg [3 : 0] cnt; initial begin gray_inst.cnt <= 1’b0; clk <= 1'b1; arst <= 1'b0; cnt <= 1'b0; #1234 arst <= 1'b1; #1234 arst <= 1'b0; end always begin #10 clk <= ~clk; end always@(posedge clk) begin if(cnt < 4'd9) begin cnt <= cnt + 1'b1; end else begin cnt <= 1'b0; end end assign en = (cnt == 4'd0); gray #(.W(16)) gray_inst( .clk(clk), .en(en), .arst(arst), .gray(gray)); endmodule 时间单位/时间精度 仿真的顶层模块 申明需要的寄存器和线网 Initial, 初始化 初始化gray_inst中的寄存器 在1234ns处产生一个宽度为1234ns的arst信号 产生周期为20ns的时钟 模为10的计数器cnt,用于驱动en信号每10个周期有效 调用被测试的模块

  13. 编译和仿真 • 编译 • 在project视图中右键单击,选择菜单 - Compile - Compile All • 如果编译有错误,会在脚本窗口中出现红色提示,双击它可以定位错误

  14. 编译和仿真 • 启动仿真 • 双击仿真设定文件“Simulation 1”,ModelSim启动仿真并切换到仿真界面布局

  15. 编译和仿真 • 添加待观察信号 • 在Instance窗口中选择模块,在Objects窗口中选择待观察对象拖拽到Wave窗口中。 右键菜单中可设置信号的显示格式(数字或模拟波形)和进制;拖动可排序 长短对象名切换 可添加新光标 光标

  16. 编译和仿真 • 设定仿真时间,并仿真 • 在仿真事件文本框里输入时间,并单击Run按钮 仿真复位(Restart) 设定仿真时间 仿真(Run) 被中断/断点后继续仿真(ContinueRun) 中断仿真(Break) 仿真直到源文件指定的结束条件(RunAll)

  17. 编译和仿真 • 调试 • 可在源文件中设定断点,仿真至断点时,会暂停 • 需要注意:HDL描述的逻辑是并发的,虽然ModelSim可以单步,但应理解为,它只是将并发发生的事件,展开分时展示给我们观察 调试运行 断点

  18. 查看结果 • 仿真开始之后,便可以看到Wave窗口中出现波形 • 如果发现错误需要修改源文件: • 修改 - 保存 - 编译此文件 - 仿真复位 - 重新仿真 波形视图缩放 可是窗口脱离主界面最大化 在波形窗口中,按住Ctrl,左键斜上拖拽鼠标,可缩小波形,斜下拖拽可放大

More Related