模111计数器

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

实 验 报 告

实验日期: 学 号:

姓 名:

实验名称:

模111计数器

总 分:

一、实验原理

计数器是一种常用的可统计时钟脉冲个数的时序逻辑器件。计数器中的“数”是触发器的状态组合,即编码。计数器循环一次所包含的状态总数就称作模。

计数器应用广泛,适用于计数、分频、运算、定时、脉冲产生等。计数器种类繁多,按级联方式可分为同步计数器和异步计数器;按数字增减方式可分为加法计数器、减法计数器和可逆计数器。按编码方式可分为二进制计数器、十进制计数器等。

二、实验框图

三、实验设计

对于模111计数器的三位数字采用三个模10计数器和设置计数清零的方法,分别控制模111计数器的三位。设置时钟信号clock ,清零端aclr ,时钟信号使能端clk_en ,输入端cin ,计数使能端cnt_en ,进位输出端cout ,数值输出端q (4位二进制表示0-9)。运用语句b(0) and s(0) and g(0),即计数到111时,aclr 清零有效;b(0) and s(0) and (not g(0)),即计数到110时,cout 输出1即成功进位。 (1)模10计数器VHDL (LPM 定制)

LIBRARY ieee;

USE ieee.std_logic_1164.all; LIBRARY lpm;

USE lpm.all; ENTITY cnt10 IS PORT (

aclr : IN STD_LOGIC ;

时钟信号clk 模4计数器

2-3译码器

确定位选

时钟信号clock 模111

计数器

3选1多路选择器

七段译码器

确定段选

cin : IN STD_LOGIC ;

clk_en : IN STD_LOGIC ;

clock : IN STD_LOGIC ;

cnt_en : IN STD_LOGIC ;

cout : OUT STD_LOGIC ;

q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0) );

END cnt10;

ARCHITECTURE SYN OF cnt10 IS

SIGNAL sub_wire0 : STD_LOGIC ;

SIGNAL sub_wire1 : STD_LOGIC_VECTOR (3 DOWNTO 0); COMPONENT lpm_counter

GENERIC (

lpm_direction : STRING;

lpm_modulus : NATURAL;

lpm_port_updown : STRING;

lpm_type : STRING;

lpm_width : NATURAL

);

PORT (

cin : IN STD_LOGIC ;

clk_en : IN STD_LOGIC ;

aclr : IN STD_LOGIC ;

clock : IN STD_LOGIC ;

cout : OUT STD_LOGIC ;

q : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);

cnt_en : IN STD_LOGIC

);

END COMPONENT;

BEGIN

cout <= sub_wire0;

q <= sub_wire1(3 DOWNTO 0);

lpm_counter_component : lpm_counter

GENERIC MAP (

lpm_direction => "UP",

lpm_modulus => 10,

lpm_port_updown => "PORT_UNUSED",

lpm_type => "LPM_COUNTER",

lpm_width => 4

)

PORT MAP (

cin => cin,

clk_en => clk_en,

aclr => aclr, clock => clock, cnt_en => cnt_en, cout => sub_wire0, q => sub_wire1 ); END SYN;

(2)模111计数器 library ieee;

use ieee.std_logic_1164.all; entity cnt111 is

port(clock,aclr,clk_en,cnt_en,cin:in std_logic; bw,sw,gw:out std_logic_vector(3 downto 0); cout:out std_logic); end cnt111; architecture arch of cnt111 is

component cnt10

port(aclr:in std_logic; cin:in std_logic; clk_en:in std_logic; clock:in std_logic; cnt_en:in std_logic; cout:out std_logic; q:out std_logic_vector (3 downto 0)); end component;

signal aclr1:std_logic; signal c1,c2,c3:std_logic;

signal b,s,g:std_logic_vector(3 downto 0); begin

x1:cnt10 port map(aclr or aclr1,cin,clk_en,clock,cnt_en,c1,gw); x2:cnt10 port map(aclr or aclr1,c1,clk_en,clock,cnt_en,c2,sw); x3:cnt10 port map(aclr or aclr1,c2,clk_en,clock,cnt_en,c3,bw); aclr1<=bw(0) and sw(0) and gw(0);

cout<=bw(0) and sw(0) and (not gw(0));

end arch;

bw 表示计数器百位数值,sw 表示计数器十位数值,gw 表示计数器个位数值,皆为四位二进制 c1控制个位数值的模10计数器的输出,c2控制十位数值的模10计数器的输出,c3控制百位数值的模10计数器的输出 cin 为控制个位数值的模10计数器的输入,其输出c1作为控制十位数值的模10计数器的输入,其输出c2作为控制百位数值的模10计数器的输入 计数至110,

cout 输出1,即进位。 计数至111,实现自动清零功能

相关文档
最新文档