EDA模可变计数器设计Word文档格式.doc
《EDA模可变计数器设计Word文档格式.doc》由会员分享,可在线阅读,更多相关《EDA模可变计数器设计Word文档格式.doc(8页珍藏版)》请在冰点文库上搜索。
学生姓名:
邱永洪学号:
专业班级:
中兴101班
实验类型:
□验证□综合■设计□创新实验日期:
2012.10.19
实验二模可变计数器的设计
一、实验目的
1、学习设计脉冲分频程序的设计,掌握分频的作用。
2、学会利用控制位M来控制计数器的模值。
二、实验内容与要求
1、计设置一位控制模的位M,要求M=0,模23计数;
当M=1,模109计数;
2、计数结果用三位数码管显示,显示BCD码;
3、利用Quartus软件实现波形仿真;
4、应用实验箱验证此计数器的功能。
三、实验思路
1、要求分别实现模23和模109的计数,因些我分别用GW、SW、BW代表个位,十位和百位。
还有一个控制模的位M,当M为0时实现模23计数,只用到GW和SW分别为个位和十位;
当M为1时实现模109计数,用GW、SW、BW分别为个位,十位和百位计数。
2、由于要求用三个数码管显示,由于每次只能只能选中一个数码管显示管,因此我使用了数码管的动态扫描来实现视觉上多个数码管显示管同时显示的效果,这个步骤中分频计的作用很重要。
我使用了一个可变的R作为分频计的初值。
3、计数时分两种情况
1)、当M为0时,实现模23计数,当个位为9则向十位进位,并个位清0,当个位小于9,则个位自身加1;
计数到22时当下一个时钟上升沿到来时就清0重计。
2)、当M为1时,实现模109计数,当个位为9则向十位进位,并个位清0,当个位小于9,则个位自身加1;
当个位和十位均为9时,就向百位进位,同时个位和十位自身清0;
计数到108时当下一个时钟上升沿到来时就清0重计。
四、实验程序
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYcountIS
PORT(CLK,M,EN,RST:
INSTD_LOGIC;
R:
INSTD_LOGIC_VECTOR(7DOWNTO0);
---分频计数初值
sel0,sel1,sel2:
bufferSTD_LOGIC;
SG:
OUTSTD_LOGIC_VECTOR(7DOWNTO0);
--数码管八段
CLK1:
GW,SW,BW:
bufferSTD_LOGIC_VECTOR(3DOWNTO0);
--计数器的个,十,百位
COUT:
OUTSTD_LOGIC;
--溢出信号
SEL:
OUTSTD_LOGIC_VECTOR(7DOWNTO0)--位选信号
);
ENDcount;
ARCHITECTUREbehavOFcountIS
SIGNALCNT,X:
STD_LOGIC_VECTOR(7DOWNTO0);
--数码管分频计数
SIGNALJ:
STD_LOGIC_VECTOR(11DOWNTO0);
--12位BCD计数值
SIGNALCNT8:
STD_LOGIC_VECTOR(2DOWNTO0);
--数码管选择
SIGNALA:
STD_LOGIC_VECTOR(3DOWNTO0);
--数码管显示值
SIGNALMODEL:
--模长信号
BEGIN
P1:
PROCESS(CLK,R)--进程P1分出的频率用来数码管的位
BEGIN
X<
=R;
IFCLK'
EVENTANDCLK='
1'
THENCNT<
=CNT+1;
IFCNT=X-1THENCLK1<
='
;
CNT<
="
"
--R分频:
R是一个八位的二进制数
ELSECLK1<
0'
ENDIF;
ENDIF;
ENDPROCESS;
P2:
PROCESS(EN,RST,M,CLK1)--计数
BEGIN
CASEMIS
WHEN'
=>
MODEL<
0"
--23
--109
ENDCASE;
GW<
=J(3downto0);
SW<
=J(7downto4);
BW<
=J(11downto8);
IFRST='
THENJ<
=(others=>
'
);
ELSIFCLK1'
EVENTANDCLK1='
THEN
IFEN='
THEN
IFJ<
MODELTHEN
IFGW=9THEN--个位为9时加7调整
J<
=J+7;
IFSW=9THEN--十位为9时加103调整
=J+103;
ENDIF;
ELSEJ<
=J+1;
ENDIF;
ELSEJ<
ENDIF;
ENDIF;
ENDPROCESS;
P3:
PROCESS(CLK)--数码管控制
BEGIN
IFCLK'
EVENTANDCLK='
IFCNT8<
010"
THENCNT8<
=CNT8+1;
ELSECNT8<
=(OTHERS=>
ENDI