资源描述
数字系统设计基础实验报告
实验名称: 1.组合电路设计___
2.失序电路设计___
3.计数器的设计___
4.原理图设计加法器
学 号:___ 08093342__ ____
姓 名:___ 姚 伟_______
班 级: __ 计科09-1班_____
老 师:__ ______
中国矿业大学计算机学院
2011年10月27日
实验一:组合电路的设计
一. 实验目的
熟悉QuartusⅡ的VHDL文本设计流程全过程,学习简单组合电路的设计、仿真和硬件测试。
二. 实验任务
任务1:利用QuartusⅡ完成2选1多路选择器的文本编辑输入和仿真测试等步骤,得出仿真波形。最后在试验系统上进行硬件测试,验证本项设计的功能。
任务2:将此多路选择器看成是一个元件mux21a,利用元件例化语句描述电路图,并将此文件放在同一目录中。
对于任务中的例子分别进行编译、综合、仿真,并对其仿真波形作出分析说明。
三. 实验过程
1. 新建一个文件夹,取名CNT10。
2. 输入源程序。
3. 文件存盘,文件名为cnt10,扩展名为.vhd。
4. 创建工程,按照老师要求对软件进行设置。
5. 进行失序仿真,得到仿真图形。
四. 实验程序
任务1:
entity CNT10 IS
port (a,b,s:in bit;
y:out bit);
end entity CNT10;
architecture one of CNT10 is
begin
process (a,b,s)
if s='0' then y<=a; else y<=b;
end if;
end process;
end architecture one;
任务2:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY MUXK IS
PORT (s0,s1: in STD_LOGIC;
a1,a2,a3: in STD_LOGIC;
outy: out STD_LOGIC );
END ENTITY MUXK;
ARCHITECTURE double OF MUXK IS
SIGNAL tmpout,tmp:STD_LOGIC;
BEGIN
u1: PROCESS(s0,a2,a3,tmp)
BEGIN
IF s0='0' then tmp<=a2;
else tmp<=a3;
END IF ;
END PROCESS u1 ;
u2: PROCESS(s1,a1,tmp,tmpout)
BEGIN
IF s1='0' then tmpout<=a1;
else tmpout<=tmp;
END IF ;
END PROCESS u2 ;
outy<=tmpout;
END ARCHITECTURE double;
五. 实验结果
任务1:
任务2:
六. 实验体会
在课堂上对于“EDA与VHDL”这门课的用处及用法一直一知半解,课上对于一些编程也是学的很模糊,因为学习过模拟电路与数字电路,所以总认为器件仿真要用电脑模拟器件或者直接用实物,但是通过本次实验对QuartusⅡ的初步接触,了解了其功能的强大。通过实验我初步掌握了软件的使用技巧,对下节课的实验打下了很好的基本功。
实验二:时序电路设计
一. 实验目的
熟悉QuartusⅡ的VHDL文本设计过程,学习简单时序电路的设计、仿真和测试。
二. 实验任务
任务1:设计触发器,给出程序设计、软件编译、仿真分析、硬件测试及详细实验过程。
任务2:设计锁存器,同样给出程序设计、软件编译、仿真分析、硬件测试及详细实验过程。
三. 实验过程
a) 新建一个文件夹,取名second。
b) 输入源程序。
c) 文件存盘,文件名为second,扩展名为.vhd。
d) 创建工程,按照老师要求对软件进行设置。
e) 进行失序仿真,得到仿真图形。
四. 实验程序
任务1:
library ieee;
use ieee.std_logic_1164.all;
entity second is
port(clk,d:in std_logic;
q:out std_logic);
end;
architecture bhv of second is
signal q1:std_logic;
begin
process(clk,q1)
begin
if clk'event and clk ='1'
then q1<=d;
end if;
end process;
q<=q1;
end bhv;
任务2:
library ieee;
use ieee.std_logic_1164.all;
entity suocun is
port (clk,d:in std_logic;
q:out std_logic);
end;
architecture bhv of suocun is
begin
process (clk,d)
begin
if clk='1'
then q<=d;
end if;
end process;
end;
五. 实验结果
任务1:
任务2:
六. 实验体会
本次实验虽然是参照书上的例子,但是由于书上只提供了结构体部分,所以实体部分需要自己来设计。虽然难度不是很大,但是觉得自己的收获还是非常不小。本次实验分别设计了锁存器和触发器,唯一的不足就是得到的波形图与书上稍微有些出入,由于自己弄的是时序仿真,所以会有很大的延时。总之,这次实验的收获还是很大的。
实验三:加法计数器的设计
一. 实验目的
学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。
二. 实验任务
任务1:在QuartusⅡ上对加法计数器进行编辑、编译、综合、适配以及仿真。说明例中各语句作用,详细描述示例的功能特点,给出其所有信号的时序仿真波形。
任务2:引脚锁定以及硬件下载测试。引脚锁定后进行编译、下载和硬件测试实验,将实验过程和实验结果写进实验报告。
三. 实验过程
依据以前实验步骤,对加法器进行设计,得出时序仿真图。
四. 实验程序
任务1:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity jiafa is
port (clk,rst,en:in std_logic;
cq:out std_logic_vector(3 downto 0);
cout:out std_logic);
end jiafa;
architecture behav of jiafa is
begin
process(clk,rst,en)
variable cqi:std_logic_vector(3 downto 0);
begin
if rst='1' then cqi:=(others=>'0');
elsif clk'event and clk='1' then
if en='1' then
if cqi<9 then cqi:=cqi+1;
else cqi:=(others=>'0');
end if;
end if;
end if;
if cqi=9 then cout<='1';
else cout<='0';
end if;
cq<=cqi;
end process;
end behav;
五. 实验结果
任务1:
任务2:
六. 实验体会
本次实验主要涉及到了硬件仿真的内容,但是实验完成的并不是很顺利,由于机箱的原因,自己并没有亲自进行操作,而是和别人共同完成。即使如此,我也初步掌握了下载文件的操作,对机箱有了一些认识。本次实验内容不多,但是涉及范围比较广,所以学到了很多知识点。
实验四:原理图输入法设计全加器
一. 实验目的
熟悉利用QuartusⅡ原理图输入方法设计简单组合电路,掌握层次化设计的方法,并通过一个八位全加器的设计把握利用EDA软件进行原理图输入方式的电子线路设计的详细流程。
二. 实验任务
任务1:完成半加器和全加器的设计,包括原理图输入、编译、综合、适配、仿真和实验板上硬件测试,并将此全加器电路设置成一个硬件符号入库。
任务2:建立一个高层次的原理图设计,利用以上获得的1位全加器构成8位全加器,并完成编译、综合、适配、仿真和硬件测试。
三. 实验过程
a) 打开QuartusⅡ软件,选择File->New命令,并选择Block Diagram/Schematic File选项,打开原理图编辑窗口。
b) 右击鼠标,选择Insert->Symbol命令,在窗口中点击“…”按钮找到基本单元库路径,然后选择原件,编辑原理图。
c) 保存所创建的原理图,文件取名为banjia.bdf。
d) 选择File->Create/Update->Create Symbol File for Current File命令,将上述得到的文件变成一个元件符号存盘,留着设计全加器调用。
e) 在打开一个原理图编辑窗口,调用半加器元件后对全加器进行设计,然后存盘,取名为quanjia.bdf。
f) 然后按照以前的步骤创建名为quanjia的工程,并得到时序仿真波形。
g) 全加器设计:
设计8位全加器即把一位全加器转变为一个元件符号存盘,然后按照一位全加器设计方法,利用8个一位全加器连接,构成一个8位全加器。
四. 实验程序及原理图
任务1:
半加器程序:
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY work;
ENTITY banjia IS
PORT
(
a : IN STD_LOGIC;
b : IN STD_LOGIC;
co : OUT STD_LOGIC;
so : OUT STD_LOGIC
);
END banjia;
ARCHITECTURE bdf_type OF banjia IS
SIGNAL SYNTHESIZED_WIRE_0 : STD_LOGIC;
BEGIN
或门程序:
library ieee;
use ieee.std_logic_1164.all;
entity or2a is
port(a,b:in std_logic;
c:out std_logic);
end entity or2a;
architecture one of or2a is
begin
c<=a or b;
end;
全加器程序(例化):
-- Copyright (C) 1991-2009 Altera Corporation
-- Your use of Altera Corporation's design tools, logic functions
-- and other software and tools, and its AMPP partner logic
-- functions, and any output files from any of the foregoing
-- (including device programming or simulation files), and any
-- associated documentation or information are expressly subject
-- to the terms and conditions of the Altera Program License
-- Subscription Agreement, Altera MegaCore Function License
-- Agreement, or other applicable license agreement, including,
-- without limitation, that your use is for the sole purpose of
-- programming logic devices manufactured by Altera and sold by
-- Altera or its authorized distributors. Please refer to the
-- applicable agreement for further details.
-- PROGRAM "Quartus II"
-- VERSION "Version 9.0 Build 184 04/29/2009 Service Pack 1 SJ Full Version"
-- CREATED ON "Fri Oct 28 15:29:12 2011"
LIBRARY ieee;
USE ieee.std_logic_1164.all;
LIBRARY work;
ENTITY quanjia IS
PORT
(
ain : IN STD_LOGIC;
bin : IN STD_LOGIC;
cin : IN STD_LOGIC;
cout : OUT STD_LOGIC;
sum : OUT STD_LOGIC
);
END quanjia;
ARCHITECTURE bdf_type OF quanjia IS
COMPONENT banjia
PORT(a : IN STD_LOGIC;
b : IN STD_LOGIC;
so : OUT STD_LOGIC;
co : OUT STD_LOGIC
);
END COMPONENT;
SIGNAL SYNTHESIZED_WIRE_0 : STD_LOGIC;
SIGNAL SYNTHESIZED_WIRE_1 : STD_LOGIC;
SIGNAL SYNTHESIZED_WIRE_2 : STD_LOGIC;
BEGIN
b2v_inst : banjia
PORT MAP(a => ain,
b => bin,
so => SYNTHESIZED_WIRE_2,
co => SYNTHESIZED_WIRE_0);
b2v_inst1 : banjia
PORT MAP(a => SYNTHESIZED_WIRE_0,
b => cin,
so => SYNTHESIZED_WIRE_1,
co => sum);
cout <= SYNTHESIZED_WIRE_1 OR SYNTHESIZED_WIRE_2;
END bdf_type;
半加器原理图:
元件符号存盘:
全加器原理图:
元件符号存盘:
8位全加器原理图:
五. 实验结果
任务1:
任务2:
六. 实验体会
本次实验内容比较多,也比较复杂,一开始并不是很清楚该怎么做,也犯过很多错误,最后经过多次问老师,在老师的指导下,明白了一些脉络。由于对8位全加器的设计很陌生,所以在网上查了许多资料,通过一点一点学习,掌握了一些基本原理。虽然这次实验用了很长时间,并且效果也并不怎么好,但是总体来说,收获还是很多的。
总体收获
通过以上四次实验,不但增强了我的动手能力,对EDA的编程熟练了许多,更主要的是建立了我对这门课程的兴趣,非常有助于我在今后对于专业课的强化学习。感谢这次实验,真的让我收获很多,给了我自信。
第16页(共16页)
展开阅读全文