第二次实验是Quartus11原理图输入法设计,由于是第一次使用Quartus11软件,实验中遇到了不少问题,总结起来主要有以下几个: (1)在创建工程并且编译通过之后得不到仿真波形
解决方法:经过仔细检查,发现在创建符号文件时,未对其重新命名,使得符号文件名与顶层文件的实体名一样。在改变符号文件名之后成功的得到了仿真波形。
(2) 得到的仿真波形过于紧密不便于观察
解决方法:重新对仿真域的时间进行设定,并且对输入信号的周期做相应的调整,最终得到了疏密有致的仿真波形。
实验总结及心得体会
通过本次实验我初步掌握了Quartus11的使用方法,并且熟悉了电路板的使用。在实验具体操作的过程中,对理论知识(半加器和全加器)也有了更近一步的理解,真正达到了理论指导实践,实践检验理论的目的。
实验操作中应特别注意的几点:
(1)刚开始创建工程时选择的目标芯片一定要与实验板上的芯片相对应。 (2)连接电路时要注意保证线与端口连接好,并且注意不要画到器件图形符号的虚线框里面。
(3)顶层文件的实体名只能有一个,而且注意符号文件不能与顶层文件的实体名相同。
(4)保存波形文件时,注意文件名必须与工程名一致,因为在多次为一个工程建立波形文件时,一定要注意保存时文件名要与工程名一致,否则不能得到正确的仿真结果。
(5)仿真时间区域的设定与输入波形周期的设定一定要协调,否则得到波形可能不便于观察或发生错误。
心得体会:刚接触使用一个新的软件,实验前一定要做好预习工作,在具体的实验操作过程中一定要细心,比如在引脚设定时一定要做到“对号入座”,曾经自己由于这一点没做好耗费了很多时间。实验中遇到的各种大小问题基本都是自己独立排查解决的,这对于自己独立解决问题的能力也是一个极大地提高和锻炼,总之这次实验我获益匪浅。
第三次实验是用
VHDL语言设计组合逻辑电路和时序逻辑电路,由于Quartus11软件在之前已经使用过,所以本实验的主要任务就是编写与实验要求相对应的VHDL程序。
总体来说此次实验比较顺利,基本没有遇到什么问题,但有几点需要特别注意。首先是要区分实体名称和结构体名,这一点是程序编写的关键。其次在时序逻辑电路的设计实验中时钟的设置很关键,设置不当的话仿真波形可能不正确。 通过本次实验我初步学会用VHDL语言编写一些简单的程序,同时也进一步熟悉了Quartus11软件的使用。
实验八
彩灯控制电路设计与实现
一、实验目的
1、进一步了解时序电路设计方法
2、熟悉状态机的设计方法
二、实验内容
用VHDL语言设计并实现一个彩灯控制(八个发光二极管)电路,仿真并下载验证其功能。彩灯有两种工作模式,可通过拨码开关或按键进行切换。
(1)单点移动模式:一个点在八个发光二极管上来回亮
(2)幕布式:从中间两个点,同时向两边依次点亮直至全亮,然后再向中间点灭,依次往复。
三、实验设计编码 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY shine IS PORT( clk,a:IN STD_LOGIC;
b:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END shine; ARCHITECTURE struc OF shine IS SIGNAL temp:INTEGER RANGE 0 TO 49999999; SIGNAL switch:STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL clkout:STD_LOGIC; BEGIN PROCESS(clk) BEGIN IF(clk\'event and clk=\'1\') THEN
IF temp=49999999 THEN
temp
ELSE temp
END IF;
IF temp=49999999 THEN
clkout
ELSE clkout
END IF; END IF; END PROCESS; PROCESS(clkout) BEGIN
IF(clkout\'event and clkout=\'1\') THEN
switch
END IF; END PROCESS; PROCESS(a,switch) BEGIN
IF(a=\'0\') THEN
CASE switch IS
WHEN\"0001\" =>b
WHEN\"0010\" =>b
WHEN\"0011\" =>b
WHEN\"0100\" =>b
WHEN\"0101\" =>b
WHEN\"0110\" =>b
WHEN\"0111\" =>b
WHEN\"1000\" =>b
WHEN\"1001\" =>b
WHEN\"1010\" =>b
WHEN\"1011\" =>b
WHEN\"1100\" =>b
WHEN\"1101\" =>b
WHEN\"1110\" =>b
WHEN\"1111\" =>b
WHEN OTHERS =>b
END CASE;
ELSIF a=\'1\' THEN
CASE switch IS
WHEN\"0001\" =>b
WHEN\"0010\" =>b
WHEN\"0011\" =>b
WHEN\"0100\" =>b
WHEN\"0101\" =>b
WHEN\"0110\" =>b
WHEN\"0111\" =>b
WHEN\"1000\" =>b
WHEN\"1001\" =>b
WHEN\"1010\" =>b
WHEN\"1011\" =>b
WHEN\"1100\" =>b
WHEN\"1101\" =>b
WHEN\"1110\" =>b
WHEN\"1111\" =>b
WHEN OTHERS =>b
END CASE;
END IF;
END PROCESS; END struc; 此次实验的主要问题是分频器的设置,开始并未设置分频器,clk的频率为50MHz,这个频率过高,若直接用于提供时钟,不但不能看清现象,还会因为周期过短导致输出错误,在加了一个50M的分频器后,使作用的有效时钟信号为1Hz。
四、实验总结
回顾本学期的四次实验,我的收获颇丰,总结起来主要有以下几点。
首先通过这几次实验我掌握了Quarters11的使用,学会用VHDL语言编写一些简单的程序,实现简单计数器和译码器的功能。在实验的过程中我对书本上的理论知识有了更进一步的理解,如门电路的延迟对输出波形的影响、冒险现象的产生原因等,真正达到了理论指导实验,实验检验理论的目的。
其次通过这几次实验我深刻地意识到实验过程中注重细节的重要性。在Quartus11软件的使用过程中有很多细节需要注意,比如引脚锁定、输入变量的周期设置等。曾经自己就犯过一个错误------在引脚锁定之后没有让程序在运行一遍,导致仿真完全正确,但下载到实验板上却得不到正确的结果,因此而耗费了很多时间。还有一次是保存波形文件时的一时疏忽将其命名为conut10,而工程名是count10,就是这样一个小小的疏忽导致了自己怎么也得不到仿真波形。可以说这几次实验极大地磨练我细心认真的实验品质。
再次通过这几次实验我的动手能力和独立解决问题的能力也得到了不小的提高,实验中的很多问题只能是在实验的具体操作过程中才能发现的,这些在预习的过程中都是没有预想到的,都得自己临场解决。比如最后一次实验需要增加一个时钟分频器,预习的时候自己根本没有注意到这一点,都是自己在实验的过程中想办法解决的。另外通过这几次实验我对这种仿真型实验的设计思想也有一些体会,特别是用VHDL语言编写代码时,设计思想的简洁会给实验省去很多不便。
数字电路与逻辑设计实验总结报告
学院:电子工程
班级:2008211204
姓名:徐浩然
学号:08210999