实验一:全加器设计
1. 实验目的
(1)熟悉EDA设计流程;
(2)熟悉QUARTUS II工具软件。
2. 实验内容
(1)用原理图输入的方法,设计一个半加器,验证其功能;
(2)设计一个全加器,验证其功能。
3、实验步骤
进入Windows XP操作系统
1) 建立文件夹
建立自己的文件夹(目录),如d:\\myeda。文件夹的命名应该符合C语言中标识符的命名规则:以字母或下划线开头,包含字母、下划线、数字,不能含有中文。(电脑的硬盘是保护的,请在下课之前把自己实验的东西拷进U盘带走。)
●QUARTUS II不能识别中文,文件及文件夹名不能用中文。
2)建立新的工程
(1)打开QUARTUS II,选菜单File→New Project Wizard
项目工程的路径目录:选择之前自己新建的文件夹即可
项目工程的名字:自己取,应该要符合标识符的命名规则,本项目取名为hadd。
项目工程的顶层文件名:系统会自动取为工程的同名。
(2)可以一步一步NEXT,不做任何修改,用默认情况,也可以直接Finish。所有的相关设置以后再做。
3) 原理图设计输入
选菜单File→New,在弹出的窗口中选择Block Diagram/Schematic File项,按OK后打开原理图编辑窗。
(1) 放置元件
在原理图编辑窗中的任何一个空白处双击鼠标左键或单击右键,跳出一个选择窗,选择此窗中的Enter Symbol项输入元件,出现元件选择窗口。
元件选择窗口中Symbol Libraries:的路径c:\ QUARTUS II\max2lib\\primitives下为基本逻辑元件库,双击之,在Symbol Files:下出现prim中的所有元件,选中你需要的元件(如:二与门,即and2);
或者在Symbol Name:中直接输入元件名称(and2),单击OK键。你需要的元件(and2)会出现在原理图编辑窗中。
为了设计半加器,分别调入元件and2、not、xnor、input和output等。
●如果安放相同元件,只要按住CTRL键,同时用鼠标拖动该元件,即可实现复制功能。
●输入端和输出端也需要画出来,有专门的Input和Output元件。
(2) 添加连线
把鼠标移到引脚附近,则鼠标光标自动由箭头变位十字,按住鼠标左键拖动,即可画出连线。然后用鼠标分别在input和output的PIN-NAME上双击,再用键盘分别输入各引脚名:a_in、b_in、c_out和s_out。
(3) 保存原理图
单击File→Save ,出现对话框,一般默认以项目工程的名字来命名刚才输入的原理图,原理图的扩展名为.bdf(本实验取名hadd.bdf)。如图1-1所示。
图1-1 一位半加器图
4) 编译(Compiler)
单击Processing→Compiler Tool,Start Compilation,跳出Compiler窗口,此编译器的功能包括网表文件的提取、设计文件的排错、逻辑综合、逻辑分配、适配(结构综合)、时序仿真文件提取和编程下载文件装配等。单击Start,开始编译。或者单击Processing→Start Compilation,可以直接完成所有编译的工作。
如果发现有错,排除错误后再次编译。
编译的作用是检查画法错误,如有没有断线等,不能检查是否实现了自己期望的功能----这个由功能仿真来检查。
5) 功能仿真
(1)建立波形文件
在编译通过的情况下,选择File→New,选择Vector Waveform file项,打开波形编辑窗。
(2)输入节点信号
鼠标在波形编辑窗的Name下方的空白区域双击。在弹出的窗口中,首先单击右下方的Node Founder..按钮,打开新的窗口。Filter项,下拉菜单中选Pin:all,然后单击List按钮,这时左窗口将列出该项设计的所有信号节点。可以利用>>按钮将要所有的节点选到右栏,如果设计者只需要观察其中部分信号的波形,也可以利用中间的“=>”键将需要观察的节点选到右栏中,然后单击OK键。Radix项,选择Binary,二进制。其它选项不做修改。单击OK。
(3)加上输入信号
参考图1-2为输入信号设定测试电平,利用功能键为ain、 bin加上适当的电平(应该包含四种状态:00,01,10,11),以便仿真后能测试s_out和c_out输出信号。
●在Options选项中消去网格对齐Snap to Grid的选择(消去勾),以便能够任意设置输入电平,或设置输入时钟信号的周期。
●只要给出输入信号的波形,输出信号的波形通过仿真能够得到。
(4)波形文件存盘
选择File→Save 选项,按OK键即可。由于存盘窗中的波形文件名是默认的(这里是hadd.vwf),所以直接存盘即可。
(5)设置仿真参数
Assignments→Settings→Simulator Settings.
Simulator mode,选Functional(功能仿真,是理想模型情况下,没有延时;如果选Timing,则为时序仿真,即考虑器件的特性,会有延时。)
Simulator input,默认的是刚才编辑的hadd.vwf文件。如果有其他合适的仿真波形文件,也可以选其他的波形文件。
Simulator period,可以使用默认,即测试完所有向量;或者也可以自己设置End Time.
单击OK。
(6)运行仿真器
Processing→ Generate Functional Simulation Netlist
Processing→Start Simulation
仿真运算完成后生成Simulation Report,给出仿真波形,如图1-2。
●刚进入图1-2的窗口时,应该将最下方的滑标拖向最左侧,以便观察到初始波形。
图1-2 半加器的仿真波形
6) 包装元件入库。
编译通过后,单击File→Create/Updata →Creat Symbol Files for Current File,当前文件变成了一个包装好的自己的单一元件(半加器:hadd),并被放置在工程路径指定的目录中以备后用。
7) 用两个半加器及一个或门连接而成一位全加器
我们将上述3~6步的工作看成是完成了的一个底层元件,并被包装入库。利用已做好的半加器hadd,完成原理图输入、连线、引脚命名、器件选择、保存等过程,完成顶层项目全加器的设计。如图1-3所示。
图1-3 一位全加器
●半加器元件hadd的调用与库元件的调用方法一样。
●以文件名add.gdf存在同一目录(c:\\myeda)中。
8)编译
Project→Set as Top-level Entity,将当前编写的文件设置为顶层文件,然后开始编译。编译方法如前(单击Processing→Start Compilation),如有错误,改正后再编译,直到编译成功。
7) 仿真,测试项目的正确性
(1)新建波形文件
(2)输入节点信号
(3)加上输入信号
参考图1-4为输入信号设定测试电平,利用功能键为ain、 bin和cin加上适当的电平,以便仿真后能测试sum和cout输出信号。
(4)波形文件存盘
选择File→Save as选项,按OK键即可。由于存盘窗中的波形文件名是默认的(这里是add.vwf),所以直接存盘即可。
(5)设置仿真参数,还是做功能仿真
Assignments→Settings→Simulator Settings.
Simulator mode,选Functional(功能仿真,是理想模型情况下,没有延时;如果选Timing,则为时序仿真,即考虑器件的特性,会有延时。)
Simulator input,应该是刚才编辑的add.vwf文件。
Simulator period,可以使用默认,即测试完所有向量;或者也可以自己设置End Time.
单击OK。
(6)运行仿真器
Processing→ Generate Functional Simulation Netlist
Processing→Start Simulation
仿真运算完成后生成Simulation Report,给出仿真波形,如图1-4。
图1-4 全加器的功能仿真波形
8) 观察分析波形
全加器add.gdf的仿真波形如图1-4所示,图中C0、A1和B1为输入信号电平的设置,观察输出波形的情况,根据电路知识,图示的全加器的时序波形是正确的。
我们还可以进一步了解信号的延时情况。图1-4右侧的蓝色竖线是测试参考线,它上方标出的10.0ns是此线所在位置对应的参考时间。
9) 时序仿真
(1)选择目标器件
Assignments→Device
系列Family:Max7000s
具体器件Available davices: EPM7128SLC84-15
单击OK,选定器件。
(2)设置仿真参数
Assignments→Settings→Simulator Settings.
Simulator mode,选Timing,则为时序仿真,即考虑器件的特性,会有延时。
Simulator input,应该是刚才编辑的add.vwf文件。
Simulator period,可以使用默认,即测试完所有向量;或者也可以自己设置End Time.
单击OK。
(3)再次编译
(4)运行仿真器
Processing→Start Simulation
仿真运算完成后生成Simulation Report,给出仿真波形,如图1-5。
图1-5 全加器的时序仿真波形
10) 时序分析
3. 实验报告
根据以上的实验内容写出实验报告,包括原理图设计、软件编译、仿真分析和详细实验过程;仿真波形图及其分析报告。