内容发布更新时间 : 2024/12/23 12:21:11星期一 下面是文章的全部内容请认真阅读。
中北大学2012届毕业设计说明书
图4.4 分计数器的功能仿真波形
4.3 时计数器电路实现
在这里我们设计了时计数电路模块。其对应的VHDL代码、模块符号及功能仿真波形分别如下:
library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all;
ENTITY con24v is port(clk,reset,en:in bit;
q0,q1:out std_logic_vector(3 downto 0)); end;
architecture one of con24v is
signal m0,m1:std_logic_vector(3 downto 0); begin
process(clk,reset,en) begin
if reset='0'then m0<=\elsif clk'event and clk='1' then if en='1' then
if m0=\
12
中北大学2012届毕业设计说明书
m1<=\
elsif m0=\else m0<=m0+1; end if; end if; end if; end process; q0<=m0;q1<=m1; end;
图4.5 时计数电路模块符号
图4.6 时计数器功能仿真波形
13
中北大学2012届毕业设计说明书
5 扫描显示电路实现
5.1 动态扫描显示电路的工作原理
动态扫描显示电路的整体框图如图5.1所示,它由六进制计数器、3-8译码器、数据选择器、扫描控制电路、七段显示译码器等组成。它共有6组BCD码输入线A03-A00、A13-A10、A23-A20 、A33-A30、A43-A40、A53-A50,7根LED七段显示译码输出线a、b、c、d、e、g和6根位选通线sel0、sel1、sel2、sel3、sel4、sel5。
片选 六个数码管
片选 24选4数据选择器和数据扫描控制器 3-8译码器 ???? ?????? 六进制计数器 A00-A03 A53 clk
图5.1 动态扫描显示电路的整体框图
七段显示译码器
在时钟脉冲clk的作用下,六进制计数器开始计数,其输出通过3-8译码器作为24选4 数据选择器的片选信号,从6组输入的BCD码数据中选出一组BCD码,经过BCD七段显示译码器译码后去控制LED七段数码管。即24选4数据选择器一方面从6路数据中选出一路BCD码数据,通过七段显示译码器控制数码管的a-g管脚;另一方面产生6个控制信号sel0、sel1、sel2、sel3、sel4、sel5,使六个LED数码管每一时刻只有一只工作,即被点亮。这样六进制计数器在时钟脉冲clk作用下循环计数,从而控制6个LED七段数码管轮流显示,在扫描频率足够高的情况下,6个LED数码管能稳定显示
14
中北大学2012届毕业设计说明书
6个数码。
上面我们介绍了扫描显示电路的工作原理,接下来我们来实现扫描显示电路中的各电路模块。
5.2 动态扫描显示电路所需基本模块的实现 5.2.1 六进制计数器的电路实现
六进制计数器循环产生3为二进制数000-101。六进制计数器的VHDL代码、模块符号、功能仿真波形如下:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.ALL;
ENTITY count6 IS PORT(clk:IN std_logic;
q:OUT std_logic_vector(2 DOWNTO 0)); END count6;
ARCHITECTURE bhv OF count6 IS
SIGNAL cq:std_logic_vector(2 DOWNTO 0); BEGIN PROCESS(clk) BEGIN
IF (clk'event AND clk='1') THEN
IF (cq=\ ELSE cq<=cq+1; END IF; END IF; q<=cq;
15
中北大学2012届毕业设计说明书
END PROCESS; END bhv;
图5.2 六进制计数器模块符号
图5.3 六进制计数器功能仿真模块
5.2.2 3-8译码器电路的实现
3-8译码器模块将输入的3位二进制数000-101进行译码,对于每一组二进制数,使得只有一路输出,产生的信号为数据选择器的片选信号,。3-8译码器的VHDL代码、模块符号、功能仿真波形如下:
LIBRARY ieee;
USE ieee.std_logic_1164.ALL; USE Ieee.std_logic_unsigned.ALL;
ENTITY decod38 IS
16