fpga开发原理图设计仿真分析
目录
原理图设计方法的流程
仿真分析
method1. 基于向量波形的仿真方法
method2. 基于testbench的仿真方法
在Quartus Prime开发环境下,进行EDA设计的基本流程如图所示。 包括五个主要任务: (1) 建立工程 (2) 设计输入 (3) 编译、综合与适配 (4) 引脚锁定 (5) 编程与配置 同时,还可以根据需要进行仿真分析、在线测试和时序分析。
Quartus Prime支持硬件描述语言、原理图和状态机等多种设计输入方法,同时EDIF第三方输入方法。
原理图方法的优点: (1) 容易上手。有数字电路课程基础,就可以应用EDA技术在电子技术课程设计中应用原理图设计数字系统; (2) 直观、形象。应用原理图设计系统顶层电路,系统的总体结构直观清晰,易于理解系统的功能。
原理图方法的缺点很突出: (1) 设计效率低; (2) 可移植性差。
Quartus Prime提供了3类用于原理图设计的符号库:megafunctions、others和primitives。另外: (1) 用户也可以将自己设计好的模块,通过选择Quartus Prime Files菜单下的Create∠Update→“Create Symbol Files for Current File”命令封装成图形化符号,以便在原理图设计中调用; (2) 定制IP得到的模块,生成原理图符号。
原理图设计方法的流程
与HDL设计方法的流程相同,只是在step2-设计输入,选择设计文件类型时,在新建文件对话页中选择Block diagram/Schematic Files文件类型,弹出原理图设计窗口,用于编辑“.bdf”的原理图文件。
原理图设计窗口包括原理图编辑区和设计工具栏两部分。原理图编辑区用于绘制原理图,编辑工具栏则包含了绘制原理图所需要的工具。
应用原理图输入法的基本步骤如下: step1: 添加器件和符号 在原理图编辑区的任意空白处双击鼠标,或者点击工具栏中的 按钮将弹出添加图形符号(Symbol)对话框。在左侧的Libraries栏按分类查找所需要的器件,选中后点击编辑区右下方的OK按钮后在原理图编辑区出现随鼠标移动的元器件符号,在绘图区适当的位置点击鼠标左键放置元器件。
step2: 连接元器件 放置好元器件或符号后需要连线时,将鼠标指向器件图标的端口上,当鼠标指示符变为“直角”形状时进入连线状态。按住鼠标左键拖到另一个连接点位置,放开鼠标后则会放置一段连线。反复操作完成所有的连线。
需要删除连线时,先单击连线使其处于选中状态,然后用键盘上的“Delete”键删除,或者点击鼠标右键在弹出的菜单上选择Delete删除。
需要注意的是,原理图中的总线(bus)为粗线,导线(wire)为细线。 需要放置总线时,必须从器件或者pin的总线端口开始引出连线,这样才能保证引出的是总线而不是导线。
step3: 设置I/O端口 在原理图编辑区的任意空白处双击鼠标,或者点击工具栏中的按钮弹出添加图形符号对话页。在primitives的pin栏中选择input、output或者inout端口符号,点击OK出现随鼠标移动的端口图标,在绘图区合适的位置点击鼠标左键放置端口符号,调整端口图标方向,连接到器件需要输入/输出的引脚上。
双击端口符号中的pin_name修改端口名。 端口名的格式为: 端口名[msb..lsb] 其中msb和lsb用于定义端口的位宽,必须与器件端口的位宽严格一致。 缺省时默认位宽为1。 注意:用于定义位宽的msb和lsb中间为“..”而不是“:”,应用“:”会导致编译错误。
step4: 保存文件 选择File菜单下的Save/Save as命令保存原理图设计文件。如果为顶层设计电路,则保存的文件名应为工程名加上原理图文件扩展名“.bdf”。 4选一数据选择器的原理图电路如下图所示,设计文件名为MUX4to1.bdf。
原理图编辑完成之后,同样需要进行编译、综合与适配。这些过程与HDL输入法完全相同。
仿真分析
仿真是通过计算机算法来模拟代码的运行以检查电路设计的逻辑是否正确,以及在适配过程中引入分布参数(器件传输延迟和布线延迟)后,其功能是否依然正确。
目前广泛应用的仿真软件有Mentor公司的 Modelsim 和 Aldec 公司的 Active-HDL 等。 Mentor公司为Intel公司提供了两种OEM版的Modelsim:Modelsim_ae和Modelsim_ase。使用Modelsim_ae需要有相应license的支持,Modelsim_ase为入门版,在应用上有一定的限制,只能仿真10000行及以下可执行代码,完全能够满足大部分工程项目的仿真需求。
仿真分为功能仿真和时序仿真两种类型。
功能仿真(Functional Simulation)是指在不考虑器件的传输延迟时间和布线延迟时间情况下的理想仿真,而时序仿真(Timing Simulation)是在完成布局布线之后进行,包含了器件传输延迟和布线延迟信息的仿真。
Quartus Prime 支持两种仿真方式:一是基于Intel公司大学计划(University Program)项目的向量波形文件VWF(vector waveform)仿真方法,二是通过编写测试平台文件testbench进行仿真。
method1. 基于向量波形的仿真方法
基于向量波形的仿真方法具有直观易用的优点,适合于简单工程的仿真需要。
step1: 建立向量波形文件 在Quartus Prime主界面中,选择File菜单下的New命令打开新建文件对话页,选中Verification/Debugging Files栏下的University Program VWF文件后点击OK确认,将弹出如图所示的仿真波形编辑窗口,其中矩形框中为波形编辑工具栏。
step2: 插入节点或总线 在仿真波形窗口左侧的Name栏的空白处右击鼠标,在弹出的菜单中选择Insert Node or Bus…将弹出如图3-47所示的插入节点或总线对话页。点击图中的Node Finder进入图3-48所示的查找节点对话页。
在查找节点对话框中的Filter下拉菜单中选中Pins:all,单击List将会在Nodes Found区域列出工程所有的I/O信号。将需要设置和观测的信号单击“>”移动到Selected Nodes区域(不需要的信号也可以通过“<”移出),也可以通过“>>”和“<<”将信号全部移入或移出,完成后点击OK按钮返回插入节点/总线对话页,再点击该对话页中的OK按钮返回波形文件主窗口。
step3: 设置仿真参数 仿真波形编辑窗口Edit菜单中的Grid Size和Set End Time用于设置仿真步长和仿真结束时间。
step4: 编辑输入信号波形 利用波形编辑工具设置输入信号的波形,每个工具的功能说明如表所示。
设置4选一数据选择器输入信号的波形如图所示,其中4路数据D0、D1、D2和D3分别为以10ns、20ns、30ns和40ns为步长循环变化。展开两位地址a,设置a[1]和a[0]以500ns和250ns为步长变化,则可以得到两位地址按00、01、10和11变化。
step5: 保存波形文件 选择File菜单下的Save /Save as命令将波形文件保存为扩展名“.vwf”的向量波形文件。需要注意的是,向量波形文件名必须与工程名一致!
step6: 启动仿真, 进行功能仿真时,选择Simulation菜单下的Run Functional Simulation命令,或者直接点击按钮启动仿真。
进行时序仿真时,选择Simulation菜单下的Run Timing Simulation命令,或者直接点击按钮启动仿真。
method2. 基于testbench的仿真方法
应用testbench进行仿真时,首先需要编写testbench测试平台文件。
需要注意的是:当Modelsim仿真软件随Quartus Prime一起安装时,Quartus Prime会自动关联Modelsim。
在仿真过程中,如果出现Quartus Prime无法调用Modelsim的情况,则需要手动关联Modelsim:
在Quartus Prime主界面中,选择Tools菜单中的Options命令,在弹出的设置对话页中选择General栏下的EDA Tool Options,进入EDA工具选择对话页。在Modelsim-Altera栏中设置Modelsim的安装路径,如图所示。具体与安装Quartus Prime时的路径设置有关。设置完成后点击OK退出。
step1. 生成testbench模板文件
在Quartus Prime主界面中,选择Processing菜单下Start栏中的Start Test Bench Template Writer命令,将会在“目前工程目录\simulation\modelsim”文件夹中自动生成一个扩展名为.vt测试平台文件(vt表示verilog testbench),文件名与工程名一致。
step2. 编辑Testbench文件
编辑testbench文件,通过initial和always过程语句设置激励信号起始值和波形,同时应用系统任务加入需要观测的输出信号,如右图所示。
step3. 关联testbench文件
选择Assignments菜单中的Settings,在弹出的设置对话页中选择EDA Tool Settings栏下的Simulation,进入如图所示的仿真设置对话页,将图中Time scale参数值设置为1ns(与MUX41a.vt中的参数设置一致)。
设定完成后, 在Quartus Prime主界面下,选择 Tools菜单下Run Simulation Tool栏中的RTL Simulation命令调用Modelsim进行功能仿真。如果需要进行时序仿真,则选择Tools菜单下Run Simulation Tool栏中的Gate Level Simulation命令。仿真完成后,会自动弹出Modelsim波形窗口。选定波形栏,用缩放波形以便于分析,如图所示。