《实验四_十二进制计数器.doc》由会员分享,可在线阅读,更多相关《实验四_十二进制计数器.doc(4页珍藏版)》请在金锄头文库上搜索。
1、桂林电子科技大学EDA技术及应用实验报告(实验四)实验名称:12进制计数器生命与环境科学学院 生物医学工程作者:学号:实验日期:2012年10月9日一、 实验目的:1、 掌握12进制计数器的VHDL程序设计和其设计原理2、 了解计数器的功能二、 实验内容:分别定义clk、clr和en为输入端口,q为四位输出端口。Qa为标准逻辑矢量,clk输入时钟信号,clr输入清零信号,en为使能端,其为高电平是开始工作,它控制是否开始计数。clr高电平清零。当时钟处于上升沿时,开始计数一次,qa值加1。计数值满11时,清空qa。三、 实验设计及步骤:1、程序代码:library ieee;use ieee.
2、std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cout12 isport(clk,clr,en:in std_logic;q:out std_logic_vector(3 downto 0);end cout12;architecture a of cout12 issignal qa:std_logic_vector(3 downto 0);beginq=qa;process(clk,clr)beginif(clr=1) then -如果clr为高电平,清零qa=0000;elsif(clk=1 and clkevent)
3、 then -如果时钟信号处于上升沿if(en=1) then -en高电平,执行、if(qa=1011) then -如果计数满11,置零qa=0000;elseqaNetlist Viewers-RTL Viewer 可以得到:2、如果代码中没有定义逻辑矢量qa会如何?即:结果有出错信息,Error (10309): VHDL Interface Declaration error in tanjiu.vhd(18): interface object q of mode out cannot be read. Change object mode to buffer. 后来我查了下资料,
4、端口说明是为设计实体和其外部环境的动态通信提供通道,是对基本设计实体与外部接口的描述,及对外部引脚信号的名称、数据类型和输入、输出方向的描述。所以我猜想q是外部信号的名称,它并不能实现一个内部逻辑矢量的运算。故,必须要定义一个标准逻辑矢量qa。 八、 实验小结通过这次实验,我对12进制计数器的理解是,它的功能有点像秒表吧,有个控制开始计数的开关,还有清除数据的控制键,但是它的计数范围只是从0到11。我明白了12进制计数器VHDL的设计方法和设计原理,也基本了解其工作原理。对其时序仿真的分析,这里也是有一个时钟信号的驱动,当时钟信号处于上升沿状态,就在原来的基础上计数一次,前提是计数器工作,及不处于清0状态。但是,从RTL Viewer那里得到的那个原理图,不是很明白。