北邮数电实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

北京邮电大学实验报告

实验名称:数字电路与逻辑设计实验报告

学院:信息与通信工程学院

班级:

姓名:

学号:

序号:

日期:

实验三:用VHDL语言设计与实现逻辑电路

一、实验内容

1. 用VHDL语言设计实现一个带异步复位的8421码十进制计数器,仿真验证其功能,并下载到实验版测试。要求用按键设定输入信号,发光二极管显示输出信号;

2.用VHDL语言设计实现一个分频系数为12,分频输出信号占空比为50%的分频器,仿真验证其功能;

3.将(1),(2)和数码管译码器3个电路进行连接,并下载到实验板显示计数结果。

二、模块端口说明及连接图

1.分频器

2. 计数器

clk: 时钟输入信号 clk: 时钟信号输入

clear: 复位信号输入 clear: 复位信号输入

clk_out: 时钟分频后的信号输出 q: 计数器的输出

3.数码管显示

b: 数码管的输入信号

seg: 译码显示输出

onoff: 数码管的输出控制

4.连接图

三、实验分析

1.设计思路

本实验将之前的分频器和计数器以及数码管显示模块组合起来,实现了单个数码管现显示0~9,每隔0.5s切换一次显示内容。

COMPONENT div_12实现了时钟分频,将50MHz的单片机晶振时钟进行分频,输出频率2HZ占空比50%的方波时钟,以此时钟作为内部时钟驱动计数器。

COMPONENT jishuqi是一个十进制计数器,NUM从“0000”到“1001”循环变化,模为10。计数器的输出传递给数码管译码显示电路。

COMPONENT seg7_1是数码管译码显示电路,将收到的信号NUM译码并控制数码管的段锁存来控制数码管的显示。

整体来看,div-12提供了分频后2Hz的时钟,驱动计数器计数,计数的结果作为数码管译码显示模块的输入,根据计数器实时的数进行数码管的显示。综合起来就实现了设计的功能。

在进行电路的连接时,可直接在代码中分成三个进程来实现,也可通过为每个模块建立符号,连接电路图来实现。

2. 具体代码如下:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY fenpinjishu IS

PORT(

clear2 :IN STD_LOGIC;

clk1:IN STD_LOGIC;

b1:OUT STD_LOGIC_VECTOR(6 downto 0);

CAT:OUT STD_LOGIC_VECTOR(7 downto 0)

);

end fenpinjishu;

ARCHITECTURE a OF fenpinjishu IS

COMPONENT div_12

PORT(

clk :IN STD_LOGIC;

clk_out:OUT STD_LOGIC

);

END COMPONENT;

COMPONENT jishuqi

PORT(

clk,reset:IN STD_LOGIC;

q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)

);

END COMPONENT;

COMPONENT seg7_1

PORT(

a:IN STD_LOGIC_VECTOR(3 downto 0);

b:OUT STD_LOGIC_VECTOR(6 downto 0)

);

END COMPONENT;

SIGNAL na:STD_LOGIC;

SIGNAL nb:STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

u1:div_12 PORT MAP(clk_out=>na,clk=>clk1);

u2:jishuqi PORT MAP(reset=clear2,clk=>na,q=>nb); u3:seg7_1 PORT MAP(a=>nb,b=>b1);

CAT<="11111101";

END a;

3.波形图如下:

4.波形分析:由波形图我们可以看出,输入的时钟信号经过分频器后产生了周期为输入信号12倍的时钟信号,实现了分频器的12倍分频功能,同时clear实现的是清零功能,为高电平有效,当输入clear信号时,分频器的输出重新进行周期分频,clear信号之后经过六个周期信号进行一次反转;

接着进行上升沿有效的从0~9的8421十进制计数器,每个计数数字都对应一个七位输出来控制数码管。

四、分块实验分析

1、数码管译码器:

VHDL代码:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY seg7_1 IS

PORT(

a:IN STD_LOGIC_VECTOR(3 downto 0);

b:OUT STD_LOGIC_VECTOR(6 downto 0);

cat:out std_logic_vector(5 downto 0)

);

end seg7_1;

ARCHITECTURE seg7_1_arch OF seg7_1 IS

BEGIN

PROCESS(a)

BEGIN

CASE a IS

WHEN"0000" => b <="1111110";--0

WHEN"0001" => b <="0110000";--1

WHEN"0010" => b <="1101101";--2

WHEN"0011" => b <="1111001";--3

WHEN"0100" => b <="0110011";--4

WHEN"0101" => b <="1011011";--5

WHEN"0110" => b <="1011111";--6

WHEN"0111" => b <="1110000";--7

WHEN"1000" => b <="1111111";--8

WHEN"1001" => b <="1111011";--9

WHEN OTHERS =>b <="0000000";

END CASE;

END PROCESS;

cat<="111101";

END;

2、8421十进制计数器:

VHDL代码:

相关文档
最新文档