加法计数器eda.doc
文本预览下载声明
PAGE 1
日期 2011年11月24日
实验名称 设计含异步清零和同步时钟使能的加法计数器
实验目的
学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。
实验步骤
【1】实验程序:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT12 IS
PORT(CLK,RST,EN:IN STD_LOGIC;
CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT:OUT STD_LOGIC);
END CNT12;
ARCHITECTURE behav OF CNT12 IS
BEGIN
PROCESS(CLK,RST,EN)
VARIABLE CQI :STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
IF RST=1THEN CQI:=(OTHERS=0);
ELSIF CLKEVENT AND CLK=1THEN
IF EN=1THEN
IF CQI11 THEN CQI:=CQI+1;
ELSE CQI:=(OTHERS=0);
END IF;
END IF;
END IF;
IF CQI=11 THEN COUT=1;
ELSE COUT=0;
END IF;
CQ=CQI;
END PROCESS;
END behav;
【2】实验结构图
【3】在quartus II上对上述程序进行编辑、编译、综合、适配、仿真。
仿真测试得仿真波形如下:
?功能仿真波形
?时序仿真波形
【4】引脚锁定以及硬件下载测试
?管脚图
?下载后选到电路模式5,按下键1,可以看到电路自动计数。
【5】使用SignalTap II对此计数器进行实时测试
?按实验流程调试得采样波形:
?在CQI上单击右键,在下拉菜单中选择总线显示模式Bus Display Format为Unsigned Line Chart,获得模拟信号波形为:
【6】为此项设计加入一个可用于SignalTap II采样的独立的时钟输入端,并进行实时测试。
?实验程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT12 IS
PORT(CLK,RST,EN,clk_samp:IN STD_LOGIC;
CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT:OUT STD_LOGIC);
END CNT12;
ARCHITECTURE behav OF CNT12 IS
BEGIN
PROCESS(CLK,RST,EN)
VARIABLE CQI :STD_LOGIC_VECTOR(3 DOWNTO 0);
BEGIN
IF RST=1THEN CQI:=(OTHERS=0);
ELSIF CLKEVENT AND CLK=1THEN
IF EN=1THEN
IF CQI11 THEN CQI:=CQI+1;
ELSE CQI:=(OTHERS=0);
END IF;
END IF;
END IF;
IF CQI=11 THEN COUT=1;
ELSE COUT=0;
END IF;
CQ=CQI;
END PROCESS;
END behav;
?时钟端clk_samp接clock5.
?管脚图
④模拟信号采样波形
【7】思考题:在程序中是否可以不定义信号 CQI,而直接用输出端口信号完成加法运算,即 : CQ = CQ+ 1?为什么?
答:不可以,因为信号 CQ定义的端口模式是OUT,是单向输出模式,所以只能作为输出信号,不能在结构体内再用来作为输入信号;如果CQ定义的端口模式是BUFFER,就可以将计数器输出的计数信号回读来作为下一个计数值的初值。在本实验中,该信号是一个反馈信号。
实验心得
耐心调试程序,更好的熟悉quartusII的使用流程,加深了对quartusII的仿真的认识。学会了使用Signal
显示全部