实验一QuartusⅡ9.1软件的使用一、实验目的:1、通过实现书上的例子,掌握QUARTUSII9.1软件的使用;2、编程实现3-8译码电路以掌握VHDL组合逻辑的设计以及QUARTUSII9.1软件的使用。
二、实验流程:1、仔细阅读书上的操作指南,学会在QuartusⅡ9.1中创建新的工程,创建过程如下所示:1)、建立新设计项目:①启动QuartusⅡ9.1软件,在软件的管理器窗口选File下拉菜单,即File→New Project Wizard,则出现新建工程向导窗口。
如下所示:②点击Next按钮,将弹出新建工程设置窗口,如下图所示。
在新建工程设置窗口中设置好工程的存放路径、工程名称等。
③点击Next进入添加文件窗口,如下图。
由于尚未创建文件,跳过该步骤。
④点击Next按钮,进入选择目标芯片窗口。
在这里我们选择Cyclone系列的EP1C6Q240C8,如下图:⑤点击Next按钮,进入EDA工具设置窗口,通常选择默认的“None”,表示选择QuartusⅡ自带的仿真器和综合器。
如下图:⑥点击Next按钮,弹出New Project Wizard概要对话框,在这个窗口中列出了所有前面设置的结果。
若有错误则点击Back回去修改,否则点击Finish结束,即完成新工程的设定工作。
如下图:2)、文本设计输入:①在QuartusⅡ主界面菜单栏中选择File下拉菜单中的New,弹出新建设计文件窗口,选择VHDL File项,点击OK按钮即可打开VHDL文本编辑窗口,其默认文件名为“Vhdl.vhd”。
②出现文本编辑窗口后,我们可以直接在空白界面中键入所设计的VHDL文本。
这时我们将书本中的程序输入到文本编辑环境中去。
程序如下:library IEEE;use IEEE.std_logic_1164.all;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity count10 isport(clk,load,en:in std_logic;data_in:in std_logic_vector(3 downto 0);seg:out std_logic_vector(6 downto 0));end count10;architecture beha of count10 issignal qout:std_logic_vector(3 downto 0);signal q_temp:std_logic_vector(3 downto 0);beginprocess(clk,load)beginif(load='1')thenq_temp<=data_in;elsif(clk'event and clk='1')thenif(en='0')thenqout<=qout;elsif(qout="1001")thenqout<="0000";elseqout<=qout+1;end if;q_temp<=qout;end if;end process;process(q_temp)begincase q_temp iswhen"0000"=>seg<="1000000";when"0001"=>seg<="1111001";when"0010"=>seg<="0100100";when"0011"=>seg<="0110000";when"0100"=>seg<="0011001";when"0101"=>seg<="0010010";when"0110"=>seg<="0000010";when"0111"=>seg<="1111000";when"1000"=>seg<="0000000";when"1001"=>seg<="0010000";when others=>seg<="0001000";end case;end process;end beha;键入完毕后进行保存。
3)、输入并保存成功后,需要对设计项目进行全编译。
编译过程中会对程序进行检查,若程序无错误,则全编译成功,否则编译不成功,需要返回程序进行检查,修改错误。
选取菜单中Processing→Start Compilation进行全编译,最终程序无错误,编译成功。
4)、全编译成功后,则需要进行仿真。
仿真包括功能仿真和时序仿真。
首先进行功能仿真:①指定功能仿真模式。
选择菜单中Assignment→setting,在左侧Category栏中选中Simulator setting,然后在右侧Simulation mode的下拉菜单中选Functional。
如下图所示:②通过建立波形文件进行仿真,具体步骤如下:第一步:在菜单栏中选择File→New,选择Vector Waveform File项,点击OK 按钮打开空白波形编辑窗口,使用下拉菜单File中的Save as命令,将其另存为“count10.vwf”文件。
第二步:选择菜单栏中Edit→Insert Node or Bus,弹出插入节点窗口。
第三步:点击插入节点窗口的Node Finder按钮,再点击List按钮。
在左侧Node Found窗口中选取将要仿真的节点,然后将选取信号选取至右侧的Select Node窗口中。
最后点击OK按钮回到插入节点窗口,再次点击OK按钮回到波形编辑窗口。
第四步:设置信号的方针激励,首先选中所需赋值的信号之后点击鼠标右键,在弹出的活动菜单中选Value子菜单,出现仿真激励类型子菜单。
设置时钟时,即选择Value子菜单中的Clock。
所有的输入信号均要赋值,最后保存完成赋值后的波形文件。
第五步:运行菜单Processing→Generate Functional Simulation Net list 命令产生用于功能仿真的网表文件。
第六步:选取Processing→Start Simulation执行仿真模拟,将出现仿真结果波形。
结果如下所示:经过分析,结果正确。
下面进行时序仿真:①指定功能仿真模式。
选择菜单中Assignment→setting,在左侧Category栏中选中Simulator setting,然后在右侧Simulation mode的下拉菜单中选Timing。
如下图所示:②通过建立波形文件进行仿真,具体步骤如下: 第一步:在菜单栏中选择File →New ,选择Vector Waveform File 项,点击OK 按钮打开空白波形编辑窗口,其默认文件名为“Waveforml.vwf ”。
第二步:对于时序仿真来说,将仿真时间设置在一个合理区域十分重要,通常设置的时间范围在数十微秒之间。
选择菜单中Edit →End Time ,在弹出的结束时间窗口中设置为1µs。
第三步:加入输入、输出信号,设置输入信号周期,保存文件等步骤均与前面功能仿真相同。
第四步:选取Processing →Start Simulation 进行模拟仿真,仿真结果将出现。
结果如下所示:经过分析,结果正确。
2、七段译码器程序的功能图如下所示:关于7段译码器的说明:在实验1中使用了一个7段译码器,其由7个发光二极管构成,二极管的负极接到对应引脚,正极接高电平构成共阳极的7段数码管。
abcdefgq_tempCount10如下如所示:显示0时,a,b,c,d,e,f管脚接低电平,g管脚接高电平点亮的二极管会显示数字0 。
如图所示:1)、三-八译码器功能仿真注意事项:因为需要考察电路输入的所有状态,因此需要输入分别有000、001、010、011、100、101、110、111八个状态,在仿真通道文件中选择d界面旁边的赋值选项此时高亮显示表示可用,选中C,在弹出的对话框中进行设置。
2)、实验设计程序代码如下:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_ARITH.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity count38 isPORT(x:in STD_LOGIC_VECTOR(2 DOWNTO 0);y:out STD_LOGIC_VECTOR(7 DOWNTO 0));end count38;architecture beha of count38 isbeginprocess(x)begincase x iswhen"000"=>y<="00000001";when"001"=>y<="00000010";when"010"=>y<="00000100";when"011"=>y<="00001000";when"100"=>y<="00010000";when"101"=>y<="00100000";when"110"=>y<="01000000";when"111"=>y<="10000000";when others=>y<="ZZZZZZZZ";end case;end process;end beha;3)、3-8译码器程序设计思路:输入三位,输出八位,无使能端。
采用case-when 语句,将输入与输出对应起来。
因when已列举出了所有情况,故when others 可不写。
4)、程序设计好之后,输入QuartusⅡ中进行仿真,仿真结果如下:功能仿真结果:时序仿真结果:经过分析,结果符合预期3-8译码器的功能,结果正确。