您现在的位置:首页 > >

数字系统设计QuartusⅡ的VerilogHDL建模与仿真_图文


数字系统设计
-------Quartus Ⅱ的Verilog HDL建 模与仿真

常用的PLD设计EDA工具软件

? PLD设计EDA工具软件的分类 1. 由芯片制造商提供

– 提供了一个CPLD/FPGA 的完全集成化设计环境

EDA Tool

Provider

Description

MAX+PLUSⅡ

Altera

早期PLD开发工具,易于学 习和使用

Quartus Ⅱ

Altera

第4代EDA工具,功能强大, 并适于 SOPC 开发

Foundation

Xilinx Xilinx的早期 PLD 开发工具

ISE
ispDesignEXPERT, ispLEVER

Xilinx Lattice

Xilinx的最新 PLD开发工具 2002年推出ispLEVER

常用的PLD设计EDA工具软件

支持多家公
2. 由专业EDA软件商提供——第三方设计软件 司的PLD

EDA Tool
FPGA Advantage
Synplify LeonardoSpectrm FPGA Compiler II ModelSim Active HDL NC-Verilog/ NCVHDL/NC-SIM

Provider
Mentor Graphics
Synplicity Mentor Graphics
Synopsys Mentor Graphics
Aldec Cadence

Description
包括 HDL Designer Series (可视化的 设计输入工具), ModelSim(仿真工 具),Precision RTL Synthesis (最 新的逻辑综合器)。 优秀的逻辑综合工具
Mentor早期的逻辑综合工具
新的逻辑综合工具
高效、功能强大的仿真工具
仿真工具,简单易用
优秀的仿真工具

QuartusⅡ简介

? Quartus Ⅱ

? 美国Altera公司自行设计的第四代PLD开发软件

? 目前最新版本:9.1

?

1. 完全集成化的设计工具

? 将设计输入、逻辑综合、布局与布线、仿真、时序分析、器件编程集成在同一开 发环境下;

? 可加快动态调试,缩短开发周期。

2. 与器件结构无关 ? 其核心Compiler支持Altera所有PLD器件:
? Stratix II, Cyclone II, Stratix GX, MAX II, Stratix HardCopy, Stratix, Cyclone, APEX II, APEX 20K/E/C, Excalibur, & Mercury Devices
? FLEX 10K/A/E, ACEX 1K, FLEX 6000, MAX 7000S/AE/B, MAX 3000A Devices

支持的第三方工具

? 综合工具 ? Leonardo Spectrum* ? Design Compiler ? FPGA Compiler II ? Standard* & ? Altera Edition* ? FPGA Express* ? Synplicity Synplify*

? 仿真工具 ? ModelSim* ? ModelSim OEM* ? Cadence Verilog-XL ? Innoveda BLAST ? PrimeTime* ? Synopsys VCS ? Synopsys VSS

注意* 表示支持内部链接

QuartusⅡ简介
? QuartusⅡ的启动界面
1 Project Navigator窗口
2 Status窗口

5 工具栏 3 主工作区域

4 Messages窗口

QuartusⅡ的图形用户界面功能

1 Design Entry(设计输入) ? Text Editor ? Block & Symbol Editor ? MegaWizard Plug-In Manager ? Assignment Editor ? Floorplan Editor
2 Synthesis(综合) ? Analysis & Synthesis ? VHDL, Verilog HDL & AHDL ? Design Assistant ? RTL Viewer ? Technology Map Viewer ? Incremental Synthesis

3 Place & Route(布局布线) ? Fitter ? Assignment Editor ? Floorplan Editor ? Chip Editor ? Report Window ? Resource Optimization Advisor ? Design Space Explorer
4 Timing Analysis(时序分析) ? Timing Analyzer ? Report Window ? Technology Map Viewer
5 Simulation(仿真) ? Simulator ? Waveform Editor

QuartusⅡ的图形用户界面功能

6 Programming(编程) ? Assembler ? Programmer

10 EDA Interface(EDA界面) ? EDA Netlist Writer

? Convert Programming Files

11 Power Analysis(功耗分析)

7 System-Level Design(系统级设计) ? PowerPlay Analyzer Tool

? SOPC Builder

? PowerPlay Early Power

? DSP Builder

Estimator

8 Software Development(软件开发) 12 Timing Closure(时序逼近)

? Software Builder

? Floorplan Editor

9 ? ?

Block-Based Design(基于块的设计) LogicLock Window Floorplan Editor

? ? ?

LogicLock Window Timing Optimization Advisor Design Space Explorer

? VQM Writer

QuartusⅡ的图形用户界面功能
? 13 Debugging(调试) ? SignalTap II ? SignalProbe ? In-System Memory Content Editor ? RTL Viewer ? Technology Map Viewer ? Chip Editor
? 14 Engineering Change Management(工程变动管理) ? Chip Editor ? Resource Property Editor ? Change Manage

如何在线获取帮助?

? 按F1键,可打开帮助窗口,即时访问对话框上的信息、高亮度的菜单命 令或弹出式信息;

? 或按Shift + F1键,鼠标变为一个问号,在图元、宏单元符号等屏幕显 示的任何项目上单击鼠标左键,可获得该项目的帮助;

? 或单击工具栏上的帮助按钮 击想要获得帮助的项目。

,鼠标也会变为一个问号,然后单

Quartus Ⅱ的设计流程

(1)

(2)

(3)

全编译

(4)

(5)

(6)

(7)

设计要求 设计输入 功能仿真
综合 布局布线 时序分析 时序仿真 编程、配置

设计修改

设计输入
? Quartus II – Text Editor文本输入 ? AHDL, VHDL, Verilog HDL – Memory Editor存储器输入 ? HEX, MIF – Schematic Design Entry图形设计输入
? 3rd-Party EDA Tools第3方EDA工具 – EDIF – HDL – VQM(Verilog Quartus Mapping)
? Mixing & Matching Design Files Allowed

设计输入文件

设计实例1
设计要求
设计一个3线-8线译码器,真值表如表1所示:(1)设置使能控制 端,低电平有效。(2)输出高电平有效。 (3)采用Verilog语 言的文本输入方式。(4) 进行功能仿真与验证。 *说明:本例采用门级描述和行为描述两种方式。两种方式描述均能 完成设计要求。

设计实例1

? 1 门级描述(程序如下)

顶层实体名称

//Gate-level description of a 3-to-8line decoder (Figure 1)

? module _3to8decode(A1,A2,A3,E,Y);

? input A1,A2,A3,E; //定义输入信号

? output[7:0] Y; //定义输出信号

? wire A1not,A2not,A3not,Enot; //定义电路内部节点信号

? not n1(A1not,A1), //非门调用

?

n2(A2not,A2),

?

n3(A3not,A3),

?

n4(Enot,E);

? and n5(Y[0],A3not,A2not,A1not,Enot), //与门调用

?

n6(Y[1],A3not,A2not,A1,Enot),

?

n7(Y[2],A3not,A2,A1not,Enot),

设计实例1

? 续上页

?

n8(Y[3],A3not,A2,A1,Enot), //与门调用

?

n9(Y[4],A3,A2not,A1not,Enot),

?

n10(Y[5],A3,A2not,A1,Enot),

?

n11(Y[6],A3,A2,A1not,Enot),

?

n12(Y[7],A3,A2,A1,Enot);

? endmodule

设计实例1

? 2 行为描述(程序如下)

? module _3to8decode(Y,E,A);

?

output[7:0] Y; //输出信号

?

input[2:0] A; //输入信号

?

input E; //输入使能

?

assign Y=(E==0)?(1‘b1<<A):8’b00000000; //移位操作

? Endmodule

*说明:该程序放在Quartus II 的安装目录“C:\altera\80\quartus”的 decode文件夹下。如未建立该工作目录,请先将程序_3to8decode.v 文件放在“C:\altera\80\quartus\decode”目录下。下面的具体步骤都 是以该安装目录建立工程。请按照“#”后的步骤操作。

建立工程环境
? 一、 创建工程 # ? 1. 打开创建工程向导
? 执行菜单命令“ File > New Project Wizard”, 打开Introduction对话框。
单击“Next”。
# ? 2. 选择所建立工程的工作 目录,输入工程名称、顶 层实体名 ? 工程名称可以是任何 名字,建议使用和顶 层实体名相同的名字。 ? 顶层实体名称必须和 顶层文件名字相同! ? 单击“Next”。

此处为安装的默认路径 此处为_3to8decode 此处为_3to8decode

?第3步也可以略过,以后再创建设计文件,或者以后 再用“Project>Add/Remove Files in Project…”命令将 其他工作目录中的文件添加到本工程中。

? 3. 加入设计文件 (必要时)
# ? (1)单击Add按钮, 从其他工作目录中 选择所需要的现成 的源文件(只是指 向该文件位置) ;
如果未加入设计文 件,可直接单击 “Next”,参见后面 文件输入步骤。

此处添加位于软件安装的默认路径下 decode文件夹中的_3to8decode文件

# ? (2)单击“Next”。

建立工程环境
# ? 4. 指定目标器件类型 ? 在“Family”栏中选 择“Cyclone II”,其 它选项默认即可; ? 单击“Next”;

器件系列名称 器件涮选信息 具体器件列表

建立工程环境
# ? 5. 指定第三方对代码进行 综合和仿真的工具(需要 时) ? 在安装Quartus II软 件时,缺省的情况下 安装了综合和仿真工 具,也可以选择 Quartus II软件支持 的其它综合或仿真工 具。 ? 在弹出的对话框中, 选择适当的工具,或 者什么也不选,单击
“Next”。

此处都选择None即可

建立工程环境
# ? 6. 完成 ? 在最后一步中,显示 了在前面几步中所做 选择的信息。确认无 误后单击“Finish”。

建立工程环境
# ? 7. 完成后如右图所示 ? 双击_3todecode 可以打开顶层文 件 (程序说明见 设计实例)

建立工程环境

? 执行“Assignments > Settings” 菜单命令,弹出 “Settings”窗口
? Files——添加和删除文件;
? User Libraries——添加用 户库;
? Device——更改器件系列;
? EDA Tool Settings——设 置其它EDA工具;
? Timing Analyzer——定时 分析设置
? Simulator——仿真设置: 选择功能仿真或时序仿真

对工程设置进行修改

设计输入
*说明:如果在建立工程时没有加入设计文件,则执行以下本文文件输入步 骤; 1. 建立一个新文件 用File-New命令,在Device Design Files标签下选择文件类型为 “Verilog HDL File”。 2. 输入HDL语言程序。 3. 保存文件,文件名与顶层设计实体相同。在工程环境建立完后, 新建的文件自动加入当前工程中。此处为_3to8code.v。双击 _3to8code.v可以在工程中打开程序。 ? 用File > Save As…命令(用AHDL语言编写的文件名后缀 为.tdf,用VHDL语言编写的文件名后缀为.vhd,用Verilog HDL语言编写的文件名后缀为.v) 。

设计的编译
编译器的结构
? 执行“Tools > Compiler Tool”命令,打开编译器; 时序分析

分析和综合

适配

开始全编译

装配

网表写入

设计的编译

功能模块
Analysis & Synthesis
Fitter
Timing Analyzer

功能描述
检查句法错误及普通易犯的设计错误,将设计映射到 具体器件的基本模块上(如触发器、逻辑门)
在器件中布局布线
进行时序分析和性能分析,将延时信息加到网表文件 中

Assembler 产生器件编程文件(.pof ,.sof,.hexout,.ttf,.rbf)

EDA Netlist Writer*

产生第三方EDA工具所用的网表文件 (如Verilog HDL 的输出文件.vo ,VHDL的输出文件.vho )

设计的编译
编译的步骤
# 1. 打开编译器窗口 ? 执行“Processing> Compiler Tool”命令;
# 2 . 编译器选项设置(*此处默认即可,具体设置略过) ? 用以控制编译过程:指定目标器件系列、Compilation Process设置、 Analysis & Synthesis设置、Fitter设置等——所有选项通过Settings对话 框进行设置。 ? 打开Settings对话框的两种方法: – 方法一:执行“Assignments > Settings”命令; – 方法二:单击工具条上的Settings 按钮。

设计的编译
# 3 .进行分析综合(分析综合窗口见下页),单击编译器上 的Start Analysis & Synthesis 快捷按钮,单击Report 出现分析报告。
? 创建工程数据库,检查语法错误,设计文件逻辑综合 *说明:本次实验只进行功能仿真,可以只进行分析综合,
不需要进行全编译。 ? 进行分析和综合有3种方法
? 方法一: 在编译器窗口中,单击Start Analysis & Synthesis按钮; ? 方法二:执行“Processing > Start > Start Analysis & Synthesis”命
令; ? 方法三:单击工具条上的Start Analysis & Synthesis 快捷按钮。

设计的编译

分析综合窗口

Status

分析综合报告 Messages

设计的编译
# ? 查看message窗口,检查错误 ? 所有信息、错误和警告会在自动打开的Message 窗口中显示: ? 在一条消息上双击左键,或单击右键,然后从弹出菜单中选择 “Locate > Locate in Design File”,可给错误信息定位; ? 选择“Help” ,可查看错误信息的详细说明。
?阅读编译报告 ? 如果编译报告窗口已关闭,单击快捷按钮 可以打开编译报告。 ? 在编译报告左边窗口点击要查看部分前的加号,然后选择要查看的部 分。

设计的编译
4. 启动全编译过程: 说明:此过程包含布局布线、延时、编程下载文件生成、第三方文件
输出等,在本功能仿真中可以不执行。此过程耗时比单独分析综 合要慢得多; ? 执行 “Processing > Start Compilation”命令,或单击工具条上的 全编译快捷按钮
? 在编译过程中,自动显示状态窗口、消息窗口和编译报告窗口。

设计的仿真验证
一、 QuartusⅡ仿真器的功能 1. 功能仿真(前仿真)
? 检验逻辑功能是否正确。 ? 在仿真开始前,必须将要仿真的设计文件设为顶层实体,然后执
行 “Processing >Generate Functional Simulation Netlist”命令, 进行功能编译,产生功能仿真网表文件。 ? 编译过程快。 ? 只运行仿真网表的提取,不作布局布线,故输出相对于输入没有 延时。 ? 需加入激励信号(用波形编辑器输入,或用文本编辑器生成)。 ? 所有节点信号均可观测到。

设计的仿真验证
2. 时序仿真(后仿真) ? 检验逻辑功能是否正确,并验证器件配置后的时序关系是否正确。 ? 在仿真开始前必须执行 “Processing >Start Compilation”命令, 对设计进行全编译,产生时序仿真网表文件。 ? 编译过程较慢。 ? 仿真所有综合结果,输出相对于输入有时间延迟。 ? 需加入激励信号,或利用功能仿真时生成的激励波形。 ? 组合逻辑的节点信号有可能观测不到。

设计的仿真验证
# 二、 创建仿真文件步骤 1. 建立一个仿真文件(.vwf) (1)执行File>New命令 ? 在New对话框中选择Verification/Debugging Files标签,文件 类型选择“Vector Waveform File”; ? 单击OK,则打开一个空的波形编辑器窗口。

设计的仿真验证
# ?在标签栏按右键选择 “Detach Window”可 以使波形窗口放大,方 便设置激励波形。

设计的仿真验证

# (2)设置仿真的结束时间 ? 默认为1?s

一般根据输出 信号的时钟周
期来设置

? 可根据需要用Edit>End Time命令设置(如这里设置为100s)

# (3)设置网格间距 ? 用Edit > Grid Size命令(如这里设置为1s)

一般设置为与输 入时钟信号的时
钟周期相同

# (4)保存文件

? 执行“File>Save As…”命令,仿真文件名为与工程文件名 (_3to8decode)同名,后缀为.vwf,并选中“Add file to current project”复选框,将其加入到本工程中。

设计的仿真验证
# 2. 在波形文件中添加节点 (1)查找设计中的节点名(有两种方法) ? 方法一:执行“Edit > Insert > Insert Node or Bus”命令,弹出 “Insert Node or Bus”界面; ? 方法二:在波形编辑器左边Name列的空白处单击右键,在弹出菜 单中选择“Insert Node or Bus…”命令,或双击左键,则弹出对话 框Insert Node or Bus,在其中选择“Node Finder…”按钮。

设计的仿真验证
# (2)列出设计中的所有节点名 ? 在Node Finder界面中,在Filter列表中选择Pins:all,在 Named栏中键入“*”,然后单击List按钮,则在“Nodes Found”中会出现所有节点名。

设计的仿真验证
# (3)选择节点加入波形文件(如上图) ? 在Node Found栏中选择要加入波形文件中的节点(可用Shift键 或Ctrl键选择多个连续或不连续的节点,此处选择 A3,A2,A1,E,Y节点),单击右箭头,将所选择节点送入 “Selected Nodes”栏中。 ? 单击“OK”,则所选的信号和组出现在波形编辑器中(见下页 图)。
? 总线信号最好不要选择单个信号,而是选择一 组信号!
? 一般将输入信号放在波形编辑器中的上方,输 出信号放在下方——便于观察波形!

设计的仿真验证
波形编辑器
? 未编辑的输入信号波形 默认为低电平;
? 输出信号和隐含节点默 认为未定义(X)电平。

设计的仿真验证
图形工具按钮
低电平 高阻态 定义一个计数序列 对齐网格

未定义逻辑电平 高电平
使高低电平反相 定义一个时钟

设计的仿真验证
(4)信号波形输入 ? 在波形编辑器中选择某输入节点,单击窗口左部的图形工具按钮,编辑整 个波形; ? 或拖动鼠标选定信号在某个时间段的区域,单击图形工具按钮;或在选中 区域上单击右键,在Value菜单中选择需要设置的值,编辑该段波形。
# ? 在下图中单击 图标,分别以1s,2s,4s定义A1、A2、A3。 # ? 选定E信号从零开始的某一段,单击 图标,置为高电平;
选择“View > Snap to Grid”命 令,可以去除鼠标只能选定网 格整数倍的波形段的限制。

设计的仿真验证

设计的仿真验证
三、 进行仿真 1. 指定仿真器设置 # (1)执行“Assignments > Settings…”命令,打开Settings对话框。 # (2)在Category列表中选择Simulator Settings ,则显示Simulator页面。 # (3)若要进行功能仿真,则在Simulation栏中选择Functional;若要进行
时序仿真,则在Simulation栏中选择Timing。此处选择Functional。 # (4)指定仿真文件,这里为_3to8decode.vwf。 # (5)执行“Processing > Generate Functional Simulation Netlist”命令,
生成网表。 # (6)执行“Processing > Start Simulation”命令,开始仿真。 # (7)仿真完后,选择Y节点,右键Properties把Radix改为Binary可以更
好的观察结果。

设计的仿真验证

仿真器的设置

设计的仿真验证

仿真结果

设计的仿真验证
四、仿真结果分析 仿真结束时,出现仿真成功提示框。 # ? 分析仿真结果是否符合设计要
求,如果验证正确,选择 “File/Save Current Report Section As”保存仿真结果,以 默认工程名_3to8decode保存 为.cvwf格式。
小提示
移动蓝色的参考线,在Value域观察对 应时刻各输出的逻辑状态值是否正确。

设计实例2 设计要求

001

000

010

设计一个模数为6的同步二进制计 数器:(1)设置异步清零控制端, 低电平复位。 (2)输入数据保持 (3)输出进位提示。 (4)采用 Verilog语言的文本输入方式。(5) 进行功能仿真与验证。
*说明:本例采用行为描述方式。 第二种方法先定义一个类似产品 74LVC161器件(模8),再反馈置数 去掉无用状态。两种描述均能完成 设计要求。该程序放在Quartus II 的安装目录“C:\altera\80\quartus” 的counter6文件夹下。

101

011

100

状态图

CR D0 D1 D2

CE TC
三位同步二

进制计数器

CLK

PE

Q0 Q1 Q2

&o

设计实例2

顶层实体名称

//behavior description of a module_6 counter

? module counter6 (CLK,CE,CR,Q,TC);

? input CLK,CE,CR; //定义输入信号

? output TC; //定义输出信号

? output[2:0] Q; //定义输出信号

? reg[2:0] Q; //定义信号类型

? assign TC=CE&(Q==3‘b101); //进位信号 指示,输出5时进位

? always @(posedge CLK or negedge CR)

? begin

?

if (CR==1‘b0) //复位

?

Q<=3'b0;

?

else if (Q==3‘b101)//0~5循环计数

?

Q<=3'b0;

?

else if( CE==1‘b0) //输出保持

续右

? Q<=Q;

? else//计数

?

Q<=Q+3'b1;

? end

? endmodule

设计实例2
*说明:步骤基本与实例1相同 ? 一、建立工程环境
# ? 执行菜单命令“ File > New Project Wizard”, 打开Introduction对话框。
单击“Next”。输入工
作目录文件夹名、工程 名、顶层文件名,此处 都为counter6即可; ? 点击“Next” 。

设计实例2
# ? 在安装目录counter6文 件夹下选择counter6.v 文件,单击“Add”按钮 添加文件;
# ? 其他步骤默认,直接点 “Finish”完成工程环境 建立。

设计实例2

二、分析与综合
# ? 单击工具条上的Start Analysis & Synthesis 快捷按钮。编译成功 后弹出提示对话框。Message窗口提示“0 error,0warning”;如有错 误,在Message栏选择错误条目,右键Help,查找原因。
三、功能仿真与验证

1. 建立一个仿真文件(.vwf)

# (1)执行File>New命令

? 在New对话框中选择Verification/Debugging Files标签,文件 类型选择“Vector Waveform File”;

? 单击OK,则打开一个空的波形编辑器窗口。

# (2)设置仿真的结束时间 ,执行“ Edit>End Time” ,默认为1?s



可。

设计实例2
#(3)设置网格间距,用Edit > Grid Size命令,(默认设置10ns即可)
# (4)保存文件 ? 执行“File>Save As…”命令,仿真文件名为与工程文件名 (counter6)同名,后缀为.vwf,并选中“Add file to current project”复选框,将其加入到本工程中。
# (5)在波形文件中添加节点 ? 在波形编辑器左边Name列双击左键,则弹出对话框Insert Node
or Bus,在其中选择“Node Finder…”按钮。
? 在Node Finder界面中,在Filter列表中选择Pins: all,在Named栏 中键入“*”,然后单击List按钮,则在“Nodes Found”中会出现 所有节点名。
? 在Node Found栏中选择全部节点,单击右箭头,将所选择节点 送入“Selected Nodes”栏中。
? 单击“OK”,则所选的信号和组出现在波形编辑器中。

设计实例2
# (6)在波形编辑器中用图形编辑按钮给输入信号添加适当的激励。 波形编辑器
具体操作见例1 CE设置高->低(高计数,低保持) CLK信号设置周期10ns CR设置低->高

设计实例2
七、 进行仿真 1. 指定仿真器设置 # (1)执行“Assignments > Settings…”命令,打开Settings对话框。 # (2)在Category列表中选择Simulator Settings ,则显示Simulator页面。 # (3)在Simulation栏中选择Functional进行功能仿真选择。 # (4)指定仿真文件,这里为counter6.vwf。 # (5)执行“Processing > Generate Functional Simulation Netlist”命令,
生成网表。 # (6)执行“Processing > Start Simulation”命令,开始仿真。 # (7)仿真完后,选择Q节点,右键Properties把Radix改为Binary可以更
好的观察结果。仿真结果如下,功能正确。

设计实例2

功能仿真结果

计数

进位指示

Quartus II设计的其他步骤
? 功能仿真完成之后,还需要进行布局布线、时序分析、时序仿真、下 载编程才能完成整个FPGA设计流程。
? Fitter设置完成后,运行Fitter:完成设计逻辑在器件中的布局和布线; 并进行引脚自动或手动分配分配。
? 根据设计要求完成Timing Analyzer时序分析器设置,运行Timing Analyzer,计算给定设计与器件上的延时,并注释在网表文件中,完成 设计的时序分析和所有逻辑的性能分析。
? 运行时序仿真,确认设计的正确性。 ? 根据FPGA配置方式、下载硬件类型设置Programmer,并将程序下载
到FPGA配置芯片中。 ? 在线调试。



友情链接: 工作计划 总结汇报 团党工作范文 工作范文 表格模版 生活休闲