可控计数器的设计(总11页)
--本页仅作为文档封面,使用时请直接删除即可-- --内页可以根据需求调整合适字体及大小--
《可编程器件》课程设计报告
课题: 可控计数器的设计
班级 学号 学生姓名 专业 电子科学与技术 系别 电子信息工程系 指导老师
淮阴工学院 电子与电气工程学院 2014年11月
可控计数器的设计
一、设计目的
《可编程器件》课程设计是一项重要的实践性教育环节,是学生在校期间必须接受的一项工程训练。在课程设计过程中,在教师指导下,运用工程的方法,通过一个简单课题的设计练习,可是学生通过综合的系统设计,熟悉应用系统的是设计过程、设计要求、完成的工作内容和具体的设计方法,了解必须提交的各项工程文件,也达到巩固、充实和综合运用所学知识解决实际问题的目的。
通过课程设计,应能加强学生如下能力的培养: (1)工作能力和创造力;
(2)综合运用专业及基础知识,解决实际工程技术问题的能力; (3)查阅图书资料、产品手册和各种工具书的能力; (4)工程绘图的能力;
(5)编写技术报告和编制技术资料的能力。
二、设计要求
① 1、设计一个五进制的计数器,由两个控制键SEL控制不同的计数方式
② 2、当SEL=00时,按0、1、2、3、4、0、1、2,3、4···顺序计数 ③ 3、当SEL=01时,按0、2、4、6、8、0、2、4、6、8···顺序计数 ④ 4、当SEL=10时,按1、3、5、7、9、1、3、5、7、9···顺序计数 ⑤ 5、当SEL=11时,按5、4、3、2、1、5、4、3、2、1···顺序计数
3
⑥ 6、由数码管分别译码显示控制信号和计数状态,分别用3 位数码管动态显示
⑦ 7、给出VHDL语言的源程序
三、一般设计要求
(1)完成设计任务; (2)绘制系统硬件总框图; (3)绘制系统原理电路图;
(4)制定编写设计方案,编制软件框图,完成详细完整的程序清单和注释; (5)制定编写调试方案,编写用户操作使用说明书;
(6)写出设计工作小结。对在完成以上文件过程所进行的有关步骤如设计思想、指标论证、方案确定、参数计算、元器件选择、原理分析等作出说明,并对所完成得设计作出评价,对自己整个设计工作中经验教训,总结收获和今后研修方向。
四、设计的具体实现
1、实验原理
计数器是一种多功能的电子测量仪器。它利用电子学的方法测出一定时间内输入的脉冲数目,并将结果以数字形式显示出来。可控五进制计数器是每五个脉冲信号向前进一位,且当控制端不同时,产生的进位输出不同。再利用数码管显示相应的数值。
首先利用进程p1来实现4种模式的计数功能,由信号sel来控制选择具体是哪种模式;再利用进程p2来扫描3个数码管,而其中1个用来显示计数
4
值,2个用来显示控制信号的值;最后通过进程p3来对数码管进行驱动译码,将相应的五进制数值利用数码管体现出来。
图1.实验原理图
2、模拟框图
clk sel 计数器模块 cnt y 5 数码管 扫描模块
x
clk
duan
图2.模拟结构框图
sm
3、可控计数器设计流程
由sel来
控制4种 扫描3数码管模块 对数码管进行驱动五进制可控计数器 图3.设计流程
4、各个模块
(1)计数器单元模块
SHENGHAO
CLK Y[3···0] 图4.计数器单元模块
CLK是计时时钟,也是扫描时钟,SEL计数模式控制信号,Y接收cnt的计数值。它利用电子学的方法测出一定时间内输入的脉冲数目,并将结果以数字
6
形式显示出来。可控五进制计数器是每五个脉冲信号向前进一位,且当控制端不同时,产生的进位输出不同。
(2)扫描单元
SHEJI3
CLK CLK DUAN[5··0] 图5.扫描单元模块
CLK是计时时钟,也是扫描时钟,SEL计数模式控制信号,DUAN代表3个数码管。利用扫描脉冲扫描3个数码管,而其中1个用来显示计数值,2个用来显示控制信号的值。
(3)数码管译码
7
SHEJI3 CLK SM[6··0] CLK DUAN[5··0] 图6.数码管译码模块
CLK是计时时钟,也是扫描时钟,SEL计数模式控制信号,DUAN代表3个数码管,SM是数码管的七段是数码管数字七段,它主要用来对数码管进行驱动译码,将相应的五进制数值利用数码管体现出来。 5、管脚分配
五、系统的源程序(VHDL)
1.计数环节 library ieee; use
8
use entity LQ is
port(clk,ck:in std_logic;--clk是计数时钟,ck是扫描时钟 sel:in std_logic_vector(1 downto 0);--计数模式控制信号 sm:out std_logic_vector(6 downto 0);---数码管的七段 duan:out std_logic_vector(2 downto 0));--3个数码管 end LQ;
architecture art of LQ is
signal cnt:std_logic_vector(3 downto 0);--信号cnt用来计数 signal temp:integer range 0 to 2;
signal x: std_logic_vector(3 downto 0);--数码管动态显示的值 signal y: std_logic_vector(3 downto 0);--接收cnt的计数值 begin
p1:process(clk)--进程p1主要用来实现4种模式的计数功能,由信号sel来控制选择具体是哪种模式 begin
if(clk'event and clk='1')then case sel is
when \"00\"=>if(cnt>=\"0100\")then cnt<=\"0000\"; else cnt<=cnt+1; end if;
9
when \"01\"=>if(cnt>=\"1000\" or cnt=\"0001\" or cnt=\"0011\" or
cnt=\"0101\" or cnt=\"0111\")then cnt<=\"0000\"; else cnt<=cnt+2; end if;
when \"10\"=>if(cnt>=\"1001\" or cnt=\"0000\" or cnt=\"0010\" or cnt=\"0100\" or cnt=\"0110\" or cnt=\"1000\")then cnt<=\"0001\"; else cnt<=cnt+2; end if;
When \"11\"=>if(cnt>\"0101\" or cnt=\"0001\" or cnt=\"0000\")then cnt<=\"0101\"; else cnt<=cnt-1; end if;
when others=>cnt<=\"1111\"; end case; y<=cnt;
end if; end process p1;
2.扫描单元
p2:process(clk) --进程p2主要用来扫描3个数码管,其中1个用来显示计数值,2个用来显示控制信号的值 begin
if(clk'event and clk='1') then
10
case temp is when 0=>duan<=\"001\"; case sel is
when\"00\"=>x<=(4-y); when\"01\"=>x<=(8-y); when\"10\"=>x<=(10-y); when\"11\"=>x<=(6-y); end case;
when others=>duan<=\"010\"or\"100\"; x<=\"00\"&sel; end case; temp<=temp+1; end if; end process p2;
3.数码管译码部分
p3:process(x) --进程p3主要用来对数码管进行驱动译码 begin case x is
when \"0000\"=>sm<=\"1111110\"; when \"0001\"=>sm<=\"0110000\"; when \"0010\"=>sm<=\"1101101\"; when \"0011\"=>sm<=\"1111001\";
11
when \"0100\"=>sm<=\"0110011\"; when \"0101\"=>sm<=\"1011011\"; when \"0110\"=>sm<=\"1011111\"; when \"0111\"=>sm<=\"1110000\"; when \"1000\"=>sm<=\"1111111\"; when \"1001\"=>sm<=\"1111011\"; when others=>sm<=\"0000000\"; end case; end process p3; end art;
六、程序的调试分析与仿真 1、SEL=00
2、SEL=01
12
3、SEL=10
4、SEL=11
七、总结
为期两周的课程设计结束了,从程序的编写,到编译调试和仿真,最后得出实验结果,在这一过程中,我学到了许多,可以说是收获颇丰。
首先,我便发现我学习中的一大陋习,那就是基础知识不够牢固,而原因就是我上课的时候不太认真听讲,所以在刚开始编写代码的时候,我一头雾水,根
13
本不知该从何处下手。还好我通过上网查找资料,去图书馆翻阅书籍,还有询问指导老师不懂的地方,我渐渐的补充了基础知识,也对本次实习内容有所了解,并且对我们小组的实验课题--可控计数器的设计有了明确认识。于是我和同组的一些成员一起研究,翻阅相关查找资料,找寻相似的例题,通过对比和排查,初步仿照着设计出了代码,然后再通过检查核实,最终编写出满足设计要求的代码。
接着我们就带着编写好的代码来到了实验室,对它进行编译,八、参考文献
14