当前位置:首页 > 实验四 异步计数器
班级:电信101 姓名:李永宝 学号:100819529
实验四 计数器的设计
一、实验目的
1.掌握异步计数器的工作原理; 2.用VHDL语言设计异步计数器; 二、实验原理
含有异步清零和计数使能的4位二进制加减计数器电路如下图,其中CLK为时钟信号,RST为异步清零信号,EN为计数使能信号,MODE为加、减计数控制信号。Q3Q2Q1Q0为4位二进制计数输出信号,COUT为计数溢出信号。
CLK RST EN MODE 计 数 器 Q0 Q2 Q1 COUTQ3
三、实验内容
l.用VHDL语言设计四位计数器
2.通过仿真或观察波形图验证设计的正确性
3.进行管脚分配。其中EN,MODE、RST为芯片P94、P93、P92管脚,CLK为芯片p183管脚(内部已接50M晶振),Q0为芯片p172管脚、Q1为芯片p170管脚、Q2为芯片p169管脚、Q3为芯片p168管脚。 四、设计提示
注意IF语句的嵌套。 五、实验报告要求
l.写出四位计数器的VHDL源程序; 2.画出工作波形图。 LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY jishuqi IS PORT( clk,rst,mode,en : IN STD_LOGIC; cq : OUT STD_LOGIC_VECTOR(3 downto 0); cout : OUT STD_LOGIC); END jishuqi;
ARCHITECTURE a OF jishuqi IS
signal lm : std_logic_vector(32 downto 0);
1
班级:电信101 姓名:李永宝 学号:100819529
signal inclk: std_logic; BEGIN
process(clk) begin
if (clk'event and clk='1') then if lm=20000000 then
lm<=(OTHERS => '0');inclk<=not inclk; else
lm<=lm+1; end if; end if; end process;
PROCESS (inclk,rst,en) VARIABLE cqi : STD_LOGIC_VECTOR(3 downto 0); BEGIN IF rst='1' THEN cqi:=(others=>'0'); ELSIF inclk'event and inclk='1' THEN IF en='1' THEN
IF mode='1' THEN IF cqi<9 THEN cqi:=cqi+1; ELSE cqi:=(others=>'0'); END IF;
ELSIF mode='0' THEN IF cqi>0 THEN cqi:=cqi-1; ELSE cqi:=\ END IF; END IF; END IF; END IF;
IF mode='1' and cqi=9 THEN cout<='1'; ELSIF mode='0' and cqi=0 THEN cout<='1'; ELSE cout<='0'; END IF; cq<=cqi; END PROCESS; END a;
2
班级:电信101 姓名:李永宝 学号:100819529
3
共分享92篇相关文档