实验一 设计含异步复位和同步加载功能的加法计数器
一、实验目的
学习计数器的设计、仿真和硬件测试,进一步熟悉VHDL设计技术。
二、实验原理
在Quartus II 上对源程序进行编辑、编译、综合、适配、仿真。说明源程序各语句的作用,详细描述其功能特点,给出其所有信号的时序仿真波形。RST为异步清零信号,高电平有效;CLK是锁存信号;EN为计数使能信号,LOAD为加载控制信号,DATA为预置数。当时钟信号CLK、加载控制信号LOAD、复位信号RST或时钟使能信号EN中任一信号发生变化,都将启动进程语句PROCESS。此时如果RST为‘0’,将对计数器清零,即复位,这项操作是独立于CLK的,因而称异步。
三、实验仪器
(1)配套计算机及Quartus II 软件
四、实验步骤
(1)完成含异步清零和同步使能的加法计数器的VHDL描述,并对其进行波形仿真,确定结果正确。
五、 VHDL仿真实验
(1)建立文件夹E:\\alteral\\edashiyan\\che3-20,启动QuartusII软件工作平台,打开并建立新工程管理窗口,完成创建工程。
图1 利用New Project Wizard创建工程CNT10
(2) 打开文本编辑。NEW→VHDL File→相应的输入源程序代码→存盘为CNT10.vhd.。
图2 选择编辑文件类型
源程序代码如下: LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10 IS
PORT (CLK,EN,RST,LOAD: IN STD_LOGIC;
DATA: IN STD_LOGIC_VECTOR(3 DOWNTO 0); DOUT: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUT: OUT STD_LOGIC ); END;
ARCHITECTURE behav OF CNT10 IS BEGIN
PROCESS(CLK,RST,EN,LOAD)
VARIABLE Q:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN
IF RST='0' THEN Q:=(OTHERS=>'0');
ELSIF CLK'EVENT AND CLK='1' THEN IF EN='1' THEN
IF (LOAD='0') THEN Q:=DATA;ELSE IF Q<9 THEN Q:=Q+1; ELSE Q:=(others=>'0'); END IF; END IF; END IF; END IF;
IF Q=\ ELSE COUT<='0'; END IF; DOUT<=Q;
END PROCESS; END behav;
(3)综合运行,检查设计是否正确。
图3 全程编译无错后的报告信息
(4)生成symbol。
图4 生成symbol
(5)建立波形编辑文件进行功能仿真,仿真结果如下图所示,在脉冲上升 沿出现时,只要满足RST=1,EN=1,计数器就开始计数。
图5 设置时钟CLK的周期
图6 仿真波形输出报告
(6)查看RTL电路。选择Tools->Netlist Viewers->RTL Viewers命令,即HDL的RTL级图形观测器,选择好后即自动弹出计数器设计的RTL电路,如下图:
图7 RTL电路图