Quartus Ⅱ 9.0 使用教程(初级)
Quartus Ⅱ 是Altera公司推出的专业EDA工具,支持原理图输入、硬件描述语言的输入等多种输入方式。硬件描述语言的输入方式是利用类似高级程序的设计方法来设计出数字系统。接下来我们对这种智能的EDA工具进行初步的学习。使大家以后的数字系统设计更加容易上手。
第一步:打开软件
![]() |
|||
![]() |
|||
快捷工具栏 |
菜单栏 |
资源管理窗口 |
![矩形标注: 资源管理窗口](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image003.gif)
工作区 |
![矩形标注: 工作区](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image004.gif)
编译及综合的进度栏 |
![矩形标注: 编译及综合的进度栏](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image005.gif)
信息栏 |
![矩形标注: 信息栏](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image006.gif)
l 菜单栏:软件所有功能的控制选项都可以在其下拉菜单中找到。
l 编译及综合的进度栏:编译和综合的时候该窗口可以显示进度,当 显示100%是表示编译或者综合通过。
l 信息栏:编译或者综合整个过程的详细信息显示窗口,包括编译通过信息和报错信息。
所建工程的保存路径 |
![矩形标注: 所建工程的保存路径](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image009.gif)
1 工程名称:
顶层模块名(芯片级设计为实体名),要求与工程名称相同 |
![矩形标注: 顶层模块名(芯片级设计为实体名),要求与工程名称相同](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image010.gif)
如果有已经存在的文件就在该过程中添加,软件将直接将用户所添加的文件添加到工程中。 |
![矩形标注: 如果有已经存在的文件就在该过程中添加,软件将直接将用户所添加的文件添加到工程中。](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image011.gif)
工程名称 |
![矩形标注: 工程名称](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image012.gif)
![](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image014.jpg)
2添加已有文件(没有已有文件的直接跳过next)
3 选择芯片型号(我们选择MAX3000A系列下的EPM3256AQC208-10芯片)
选择芯片 |
![矩形标注: 选择芯片](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image017.gif)
快速搜索所需的芯片 |
![矩形标注: 快速搜索所需的芯片](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image018.gif)
所选的芯片的系列型号 |
![矩形标注: 所选的芯片的系列型号](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image019.gif)
![](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image021.jpg)
4 选择仿真,综合工具(第一次实验全部利用quartus做,三项都选None,然后next)
选择时序分析仪 |
![矩形标注: 选择时序分析仪](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image022.gif)
选择第三方仿真工具,如果使用Quartus内部仿真工具则选择none |
![矩形标注: 选择第三方仿真工具,如果使用Quartus内部仿真工具则选择none](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image023.gif)
选择第三方综合工具,如果使用Quartus内部综合工具则选择none |
![矩形标注: 选择第三方综合工具,如果使用Quartus内部综合工具则选择none](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image024.gif)
![](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image026.jpg)
5 工程建立完成(点finish)
工程建立完成,该窗口显示所建立工程所有的芯片,其他第三方EDA工具选择情况,以及模块名等等信息。 |
![矩形标注: 工程建立完成,该窗口显示所建立工程所有的芯片,其他第三方EDA工具选择情况,以及模块名等等信息。](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image027.gif)
![](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image029.jpg)
第三步:添加文件(file>new> VHDL file),新建完成之后要先保存。
我们选择VHDL file设计文件格式既选择VHDL文本输入形式 |
![矩形标注: 我们选择VHDL file设计文件格式既选择VHDL文本输入形式](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image030.gif)
![](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image032.jpg)
第四步:编写程序
3-8译码器的VHDL描述源文件如下:
library ieee;
use ieee.std_logic_1164.all;
entity decoder3_8 is
port( A:in std_logic_vector(2 downto 0);
EN:in std_logic;
Y:out std_logic_vector(7 downto 0));
end decoder3_8;
architecture example_1 of decoder3_8 is
signal sel:std_logic_vector(3 downto 0);
begin
sel<=A & EN;
with sel select
Y <= "11111110" when "0001",
"11111101" when "0011",
"11111011" when "0101",
"11110111" when "0111",
"11101111" when "1001",
"11011111" when "1011",
"10111111" when "1101",
"01111111" when "1111",
"11111111" when others;
end example_1;
然后保存源文件;
第五步:检查语法(点击工具栏的这个按钮(start Analysis
& synthesis))
语法检查成功,没有error级别以上的错误 |
![矩形标注: 语法检查成功,没有error级别以上的错误](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image034.gif)
该窗口显示了语法检查后的详细信息,包括所使用的io口资源的多少等内容,相应的英文名大家可以自己查阅 |
![矩形标注: 该窗口显示了语法检查后的详细信息,包括所使用的io口资源的多少等内容,相应的英文名大家可以自己查阅](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image035.gif)
![说明: C:\Documents and Settings\LXQ\Application Data\Tencent\Users\876138276\QQ\WinTemp\RichOle\Z[9S5VNS(2_]6K6396NHMW4.jpg](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image037.jpg)
点击确定完成语法检查
第六步:(锁定引脚,点击工具栏的(pin planner))
顶层某块的输入输出口与物理的芯片端口想对应 |
![矩形标注: 顶层某块的输入输出口与物理的芯片端口想对应](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image039.gif)
各个端口的输入输出类型 |
![矩形标注: 各个端口的输入输出类型](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image040.gif)
![](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image042.jpg)
双击location 为您的输入输出配置引脚(见管脚分配表)。
管脚分配表
信 号 |
实验板引出插孔标注 |
芯片引脚号 |
功能 |
EN |
P43 |
69 |
I/O |
A2 |
P76 |
7 |
I/O |
A1 |
P75 |
8 |
I/O |
A0 |
P74 |
9 |
I/O |
Y0 |
P50 |
37 |
I/O |
Y1 |
P51 |
36 |
I/O |
Y2 |
P53 |
34 |
I/O |
Y3 |
P54 |
33 |
I/O |
Y4 |
P55 |
31 |
I/O |
Y5 |
P57 |
28 |
I/O |
Y6 |
P59 |
26 |
I/O |
Y7 |
P61 |
24 |
I/O |
选择为使用端口选项卡 |
![矩形标注: 选择为使用端口选项卡](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image043.gif)
第七步:整体编译(工具栏的按钮(start Complilation))
该窗口给出综合后代码的资源使用情况既芯片型号等等信息。 |
![矩形标注: 该窗口给出综合后代码的资源使用情况既芯片型号等等信息。](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image045.gif)
![说明: C:\Documents and Settings\LXQ\Application Data\Tencent\Users\876138276\QQ\WinTemp\RichOle\HB3Q`1C_GSQUWGQS@I0GAQT.jpg](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image047.jpg)
第八步:功能仿真(直接利用quratus进行功能仿真)
1 将仿真类型设置为功能仿真(setting>Simulator Settings>下拉>Function)
Functional表示功能仿真,既不包括时序信息,timinng表示时序仿真。加入线及寄存器的延时信息 |
![矩形标注: Functional表示功能仿真,既不包括时序信息,timinng表示时序仿真。加入线及寄存器的延时信息](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image048.gif)
![](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image050.jpg)
2 建立一个波形文件:
(new>Vector Waveform File)
添加波形文件作为信号输出文件,以便观察信号的输出情况 |
![矩形标注: 添加波形文件作为信号输出文件,以便观察信号的输出情况](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image051.gif)
![](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image053.jpg)
然后导入引脚(双击Name下面空白区域>Node Finder>list>点击):
(以实现一个与门和或门为例,3-8译码器与以下的设计步骤类似)
点击产生端口列表 |
![矩形标注: 点击产生端口列表](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image056.gif)
点击如下图添加信号 |
![矩形标注: 点击如下图添加信号](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image057.gif)
双击弹出右边的对话框 |
![矩形标注: 双击弹出右边的对话框](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image058.gif)
![说明: C:\Documents and Settings\LXQ\Application Data\Tencent\Users\876138276\QQ\WinTemp\RichOle\K99`G61`ZBSLVZ_}FUBRJ[9.jpg](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image060.jpg)
![](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image062.jpg)
接下来设置激励信号(单击>选择
>Timing>Multiplied
by 1)
我们自定义的输入信号 |
![矩形标注: 我们自定义的输入信号](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image068.gif)
设置输入信号周期 |
![矩形标注: 设置输入信号周期](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image069.gif)
设置仿真的开始及结束时间 |
![矩形标注: 设置仿真的开始及结束时间](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image070.gif)
![](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image072.jpg)
设置b信号源的时候类同设置a信号源,最后一步改为Multiplied by 2
然后要先生成仿真需要的网表(工具栏processing>Generate Functional Simulation Netlist)
接下来开始仿真(仿真前要将波形文件保存,点击工具栏开始仿真):
由a,b 两个信号经过我们设计的模块产生的结果 |
![矩形标注: 由a,b 两个信号经过我们设计的模块产生的结果](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image078.gif)
![说明: C:\Documents and Settings\LXQ\Application Data\Tencent\Users\876138276\QQ\WinTemp\RichOle\MO_JL{{UGK7A4A8DZGBFN`3.jpg](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image080.jpg)
观察波形,刚好符合我们的逻辑。功能仿真通过。
第九步:下载(点击(Programmer),再点击Hardware Setup配置下载电缆,单击弹出窗口的“Add Hardware”按钮,选择并口下载ByteBlasterMV or
ByteBlasterMVⅡ,单击“Close”按钮完成设置。CPLD器件生成的下载文件后缀名为.pof,点击下图所示方框,选中下载文件,然后直接点击start按钮开始下载)
点击该按钮开始下载 |
![矩形标注: 点击该按钮开始下载](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image082.gif)
下载进度条 |
![矩形标注: 下载进度条](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image083.gif)
下载是该选项必须打勾 |
![矩形标注: 下载是该选项必须打勾](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image084.gif)
![](file://C:/Users/user/AppData/Local/Temp/msohtml1/01/clip_image086.jpg)