欢迎来到天天文库
浏览记录
ID:40816873
大小:465.60 KB
页数:31页
时间:2019-08-08
《计数计时器的VHDL设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、计数/计时器的VHDL设计本课要解决的问题:一般计时器的VHDL描述;六十进制计数器和计时器的VHDL设计;二十四进制计时器的VHDL设计;数字钟的VHDL设计。一、计数器的作用在时钟的驱动下,对输入脉冲进行计数;如果输入的脉冲为时钟脉冲,就成为计时器。当计数值达到一定数值,计数器产生进位输出,并复位。二、计数器的设计(P63-67)简单计时器的设计;六十进制计数器和计时器的设计;二十四进制计时器的设计;数字钟的设计。最简单的计时器ENTITYCNT4ISPORT(CLK:INBIT;Q:BUFFERINTEGERRANGE15DOWNTO0);END;ARCHITECTUREbhvOFCNT
2、4ISBEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ<=Q+1;ENDIF;ENDPROCESS;ENDbhv;BUFFER模式才可以读取在时钟CLK信号的驱动下Q对时钟信号CLK进行计数;由于Q为BUFFER模式,所以可以读取Q的值【例3-19】表式Q<=Q+1的右项与左项并非处于相同的时刻内,对于时序电路,除了传输延时外,前者的结果出现于当前时钟周期;后者,即左项要获得当前的Q+1,需等待下一个时钟周期。时钟信号到来?Q计数加1结束TRUEFALSELIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE
3、.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT4ISPORT(CLK:INSTD_LOGIC;Q:OUTSTD_LOGIC_VECTOR(3DOWNTO0));END;ARCHITECTUREbhvOFCNT4ISSIGNALQ1:STD_LOGIC_VECTOR(3DOWNTO0);BEGINPROCESS(CLK)BEGINIFCLK'EVENTANDCLK='1'THENQ1<=Q1+1;ENDIF;ENDPROCESS;Q<=Q1;ENDbhv;【例3-20】std_logic_unsigned程序包包含对运算符的重载定义信号Q1Q1作为内部信号,可以进行改写和读取
4、;对’+’进行运算符重载,标准逻辑类型可进行加法加上异步复位和置位的十进制计时器LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYCNT10ISPORT(CLK,RST,EN:INSTD_LOGIC;CQ:OUTSTD_LOGIC_VECTOR(3DOWNTO0);COUT:OUTSTD_LOGIC);ENDCNT10;RST为复位端,EN为使能端;COUT为进位输出端;ARCHITECTUREbehavOFCNT10ISBEGINPROCESS(CLK,RST,EN)VARIABLECQI:
5、STD_LOGIC_VECTOR(3DOWNTO0);BEGINIFRST='1'THENCQI:=(OTHERS=>'0');ELSIFCLK'EVENTANDCLK='1'THENIFEN='1'THENIFCQI<9THENCQI:=CQI+1;ELSECQI:=(OTHERS=>'0');ENDIF;ENDIF;ENDIF;IFCQI=9THENCOUT<='1';ELSECOUT<='0';ENDIF;CQ<=CQI;ENDPROCESS;ENDbehav;异步复位,CQI:=(OTHERS=>‘0’)为省略赋值方式,对CQI清零检测是否允许计数允许计数,检测是否小于9大于9,计数值
6、清零计数大于等于9,输出进位信号将计数值向端口输出LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_unsigned.ALL;ENTITYbcd60countISPORT(clk,bcd1wr,bcd10wr,cin:INSTD_LOGIC;co:OUTSTD_LOGIC;datain:INSTD_LOGIC_VECTOR(3DOWNTO0);bcd10n:BUFFERSTD_LOGIC_VECTOR(2DOWNTO0);bcd1n:BUFFERSTD_LOGIC_VECTOR(3DOWNTO0));ENDbcd60count;【
7、六十进制计数器】实体六十进制计数器的设计clk:时钟端;bcd1wr,bcd10wr:计数初值的个位和十位允许写入端;datain:计数初值输入端;bcd1n,bcd10n:计数值的个位输出和十位输出;co:计数值进位输出。结构体ARCHITECTUREbehaveOFbcd60countISBEGINENDbehave;PROCESS(clk,bcd1wr)BEGINIF(bcd1wr='1')
此文档下载收益归作者所有