Quarttus|| 9.0 创建并执行第一个VHDL程序(流水灯程序)
前言
本次实验所用软件为Quartus||9.0
,所用板载为EPF10K20T144-4
。
注意事项
(1)创建VHDL工程时选择板载系列一定要按照板载芯片上的系列选中。
(2)目前使用的Quartus || 9.0
不支持输入汉字的功能,只支持显示汉字的功能,所以想要在上面显示汉字,得先在记事本中写好自己要写的汉字内容,然后再复制粘贴到Quartus || 9.0
上的文件中。
(3)安装驱动程序前一定要记得禁止驱动程序签名。
(4)配置完引脚以后一定要记得要再编译一次。
创建一个VHDL工程
1、点击File->new project Wzarid
。
2、默认Next
即可。
3、在图中灰圈所圈中地方选择工程保存文件,红圈所圈中地方输入项目名称(注:项目名称为自定义,不要出现空格),然后点击Next
即可。
4、如果需要添加自己已经写好的文件,在红圈圈中的地方找到文件路径,然后点击Add
即可添加,若不需要,则默认Next
即可。
5、在图中灰圈所圈中地方选择程序所要烧入板载系类,红圈所圈中地方选择板载芯片上所标系列,然后点击Next
即可。
6、默认Next
即可。
7、默认Finish
即可。
创建一个VHDL程序文件(流水灯程序)
1、点击File->new
或直接点击图中红线所圈按钮即可。
2、点击VHDL File
即可。
3、在此界面输入自己要写的程序即可。
书写并编译一个VHDL程序(流水灯程序)
1、在创建好的VHDL程序文件中用VHDL语言书写以下程序
Library IEEE; --调用IEEE库
use IEEE.STD_LOGIC_1164.ALL; --调用IEEE库中的STD_LOGIC_1164程序包(必须在设计实体前显示出来)
--创建实体hello
entity hello is
port(clk,rst:in std_logic; --创建时钟端口clk和复位端口rst(输入模式)
out1:out std_logic_vector(3 downto 0)); --创建输出端口,对应4个LED。要使用移位操作符(位输出模式)其左侧必须为BIT_VECTOR类型(位矢量类型)
end hello;
--创建结构体behave并综合结构体behave到实体hello上
architecture behav of hello is
signal sta:std_logic_vector(1 downto 0); --创建两位的逻辑向量
signal cnt:integer range 0 to 20; --创建整型的cnt,数值范围为0到20
begin
process(clk)
begin
if clk'event and clk='1' then --如果时钟上升沿,则cnt加1(一个进程只能有一个边缘触发)
cnt<=cnt+1;
if rst='0' then --如果复位端口为0,则cnt为0
cnt<=0;
elsif cnt=1 then --如果cnt为1,则sta为00
sta<="00";
elsif cnt=5 then --如果cnt为5,则sta为01
sta<="01";
elsif cnt=10 then --如果cnt为10,则sta为10
sta<="10";
elsif cnt=15 then --如果cnt为15,则sta为11
sta<="11";
elsif cnt=20 then --如果cnt为20,则cnt为0
cnt<=0;
end if;
case sta is
when"00"=>out1<="0001"; --如果sta为00,则outl为0001
when"01"=>out1<="0010"; --如果sta为01,则outl为0010
when"10"=>out1<="0100"; --如果sta为10,则outl为0100
when"11"=>out1<="1000"; --如果sta为11,则outl为1000
end case;
end if;
end process;
end behav;
2、点击红线圈中的按钮保存程序(注:在点击保存弹出的页面中要注意程序文件名必须与工程文件名相同,即图中灰线圈中地方必须一致)
3、点击Assignments->setting
,然后在出现的界面里点击红线圈住的地方,按照如图所示设置然后点击“OK
”即可。(注:这样做会加快我们的编译速度。)
4、点击红线圈中的按钮编译VHDL程序即可。
4.1——第4步中出现的问题
问题一:编译报错:Error: Top-level design entity "Hello" is undefined
问题原因:
(1)可能的第一种原因:文件名与工程文件名没统一;
(1)的解决办法:找到存储的文件,然后将工程名或者文件名更改,使其一致;
(2)可能的第二种原因:VHDL程序中创建的实体出现问题;
(2)的解决办法:将VHDL程序中实体名改成与工程名一致;(注:实体名即为图中红线圈出的地方的字符)
5、点击Tools->Netlist Viewers->RTL Viewer
,即可看到经过综合生成的RTL(寄存器传输级电路原理图)。
6、点击Tools->Netlist Viewers->Technology Map Viewer
,即可看到经过综合生成的RTL(门级电路原理图)。
对VHDL程序(流水灯程序)进行仿真
1、点击File->new->Vector Waveform File
创建一个Vector Waveform File文件。
2、填添加仿真的引脚。(注:如下图所示)
3、点击图中红线所圈中的时序仿真按钮得到如图所示结果即可。
将VHDL程序文件(流水灯程序)烧入板载测试
1、点击Assignments->Pins
在图中红线圈中的地方设置对应板载的引脚
2、点击烧入按钮,再在弹出的界面上点击start
将VHDL程序烧入板载
3、不断改变CLK相对应引脚的电平,使流水灯显示,成功界面如下