EDA秒表电路课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学号:11446129
常州大学
EDA 技术
课程设计报告
题目:秒表电路设计
学生:袁李飞
学院(系):信息科学与工程专业班级:电子111
指导教师:李文杰
EDA课程设计任务书
目录
1.前言 (1)
2.设计要求 (1)
3.实验目的 (1)
4.实验原理 (2)
5.设计框图 (2)
6.模块说明 (3)
6.1分频器 (3)
6.2十进制计数器 (4)
6.3六进制计数器 (5)
7.顶层文件 (7)
7.1整体连接图 (7)
7.2仿真波形 (7)
8.硬件调试 (8)
8.1硬件要求 (8)
8.2引脚锁定 (8)
9.实验总结 (9)
9.1错误与解决方法 (9)
9.2心得体会 (9)
10.参考文献 (10)
1.前言
本次设计的目的就是在掌握EDA实验开发系统的初步使用基础上,了解EDA技术,对计算机系统中时钟控制系统进一步了解,掌握状态机工作原理,同时了解计算机时钟脉冲是怎么产生和工作的。

在掌握所学的计算机组成与结构课程理论知识时,通过对数字秒表的设计,进行理论与实际的结合,提高与计算机有关设计能力,提高分析,解决计算机与控制实现的技术,达到课程设计的目标。

利用VHDL语言设计基于计算机电路中时钟脉冲原理的数字秒表,显示最长时间是59分59秒99,设计了复位和启停开关。

复位开关reset可以在任何情况下使用,使用以后计时器清零,并做好下一次计时的准备,启停开关为en,高电平时秒表工作,低电平时秒表停止计时,在触发高电平时接着上次的计时继续计时。

数字秒表在日常生活中有广泛的用途,秒表的逻辑结构较简单,它主要由显示译码器、十进制计数器、六进制计数器和分频器组成。

四个10进制计数器:用来分别对百分之一秒、十分之一秒、秒和分进行计数;两个6进制计数器:用来分别对十秒和十分进行计数;显示译码器:完成对显示的控制。

根据电路持点,用层次设计概念将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,然后再将各模块合起来联试。

通过MAX+plusⅡ软件,对上述模块设计,仿真无误后,设计顶层文件,仿真无误后,下载到主芯片EPF10K10LC84-4中,按适配划分后的管脚定位,同相关功能块硬件电路接口连线,进行硬件实验。

EPF10K10LC84-4是Altera公司生产的FLEX10K系列可编程逻辑器件。

主要采用了嵌入式阵列,容量高达百万门,为可重复配置的CMOS SRAM工艺,系统工作过程中可随时改变配置,有利于现场编程,完成秒表设计的修改于完善。

2设计要求
⑴秒表共有6个输出显示,分别为百分之一秒、十分之一秒、秒、分、十分,所
以共有6个计数器与之相对应,6个计数器的输出全部为BCD码输出,这样便
于和显示译码器的连接。

⑵整个秒表还需要有一个启动停止信号和一个置零信号,以便秒表能随意停止及
启动。

⑶秒表的逻辑结构较简单,它主要由显示译码器、分频器、十进制计数器和六进
制计数器组成,由于实验板上面的数码管自带译码器,所以无需再行设计译码
器。

3.实验目的
通过本次课设,加深对EDA技术设计的理解,学会用MaxplusⅡ工具软件设计基本电路,熟练掌握VHDL语言,为以后工作使用打下坚实的基础。

4.实验原理
根据数字秒表的设计要求,可以使用多个不同的计数器单元模块,通过有机的组合来得到数字秒表系统。

要满足数字秒表的精度,首先应获得精确地计时基准信号,这里的系统精度要求为0.01s,因此必须设置周期为0.01s的时钟脉冲,由于数字秒表输入的脉冲为1024MHz,因此将来每10个外界输入脉冲就输出一个频率,该频率的时间周期正好为0.01s,即先将外界脉冲进行1024Hz----100Hz分频;
5.设计框图
系统组成框图
6.模块说明
6.1分频计
能进行十分频的分频计,将实验板上的1024HZ信号十分频得到100HZ,为所需要的能够精确到最小精度为0.01秒,其文本语言(文件名:fenpingqi.vhd)为底层文本,图1为分频器的仿真波形图
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY fenpinqi IS
PORT(clk:IN STD_LOGIC;
clka:OUT STD_LOGIC);
END fenpinqi;
ARCHITECTURE ylf OF fenpinqi IS
BEGIN
PROCESS(clk)
V ARIABLE NUM:INTEGER RANGE 0 TO 4;
V ARIABLE q:STD_LOGIC;
BEGIN
IF clk'EVENT AND clk='1' THEN
IF NUM=4 THEN NUM:=0;q:=NOT q;
ELSE NUM:=NUM+1;
END IF;
END IF;
clka<=q;
END PROCESS;
END ylf;
图1
6.2十进制计数器
能够实现10进制循环计数,带有清零端reset、开始端en、时钟信号端clk、其文本语言(文件名:CNT10.vhd)为底层文本,图2为十进制计数器的仿真波形图
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT10 IS
PORT(reset,en,clk:IN STD_LOGIC;
carry:OUT STD_LOGIC;
q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END CNT10;
ARCHITECTURE ylf OF cnt10 IS
SIGNAL qs:STD_LOGIC_VECTOR(3 DOWNTO 0);
SIGNAL CA:STD_LOGIC;
BEGIN
PROCESS(clk)
BEGIN
IF(reset='1')THEN
qs<="0000";
ELSIF(clk'event and clk='1') then
IF en='1'then
IF(qs="1001")THEN
qs<="0000";
ca<='0';
ELSIF(qs="1000")THEN
qs<=qs+1;
ca<='1';
ELSE
qs<=qs+1;
ca<='0';
END IF;
END IF;
END IF;
END PROCESS;
PROCESS(ca,en)
BEGIN
q<=qs;
carry<=ca AND en;
END PROCESS;
END ylf;
图2
6.3六进制计数器
能够实现6进制循环计数,带有清零端reset、开始端en、时钟信号端clk、其文本语言(文件名:CNT6.vhd)为底层文本,图3为六进制计数器的仿真波形图
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT6 IS
PORT(reset,en,clk:IN STD_LOGIC;
carry:OUT STD_LOGIC;
q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END CNT6;
ARCHITECTURE ylf OF cnt6 IS
SIGNAL qs:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL ca:STD_LOGIC;
BEGIN
PROCESS(clk)
BEGIN
IF(reset='1')THEN
qs<="0000";
ELSIF(clk'event and clk='1') then
IF en='1' THEN
IF(qs="0101")THEN
qs<="0000";
ca<='0';
ELSIF(qs="0100")THEN
qs<=qs+1;
ca<='1';
ELSE
qs<=qs+1;
ca<='0';
END IF;
END IF;
END IF;
END PROCESS;
PROCESS(ca,en)
BEGIN
q<=qs;
carry<=ca AND en;
END PROCESS;
END ylf;
图3
7.顶层文件
7.1整体连接图
7.2仿真波形
8.硬件调试
8.1硬件要求
⑴主芯片EPF10K10LC84_4;
⑵6位八段扫描共阴极数码管显示;
⑶两个按键开关(reset置零,en启停);
⑷CLK的跳线冒接在1024HZ上;
⑸选择实验板上的模式5。

8.2引脚锁定
9.实验总结
9.1错误与解决方法
①分频器VHDL语言设计时,想要将1024HZ的频率十分频为100HZ,所犯的错
误定义一个变量NUM时RANGE范围从0到9,
V ARIABLE NUM:INTEGER RANGE 0 TO 9;
仿真时所得频率的一个上升沿就对应原始频率的十个脉冲,变成了20分频,所以NUM的RANGE范围改正为
V ARIABLE NUM:INTEGER RANGE 0 TO 4;
②顶层文件仿真出波形时发现reset置零按键不起作用,但是计时完全可以,而且
reset的功能和en启停按键一样,后来检查发现是十进制计数器和六进制计数器里面VHDL语言出现了差错,原先错误地方
BEGIN
IF(clk'EVENT AND clk='1')THEN
IF(reset='1')THEN
qs<="0000";
这样对十进制计数器和六进制计数器本身没有影响,但是reset所起的置零作用必须在有脉冲也就是en必须使能的情况下而且必须在脉冲上升沿到来时才能工作。

后来将VHDL改成
BEGIN
IF(reset='1')THEN
qs<="0000";
ELSIF(clk'event and clk='1') then
这样一旦reset置零按键触发就会有高电平,所有的数码管都会立即清零达到置零的目的。

③硬件验证时,也遇到了两个问题。

第一个,按下en启停键,实验板上的数码管
计时没有走起来,然后检查了一下CLOCK的跳线冒,发现时接触良好的,由于软件仿真已经成功,所以我只怀疑实验板上面的问题,然后我发现,我所锁定的那个按键接触不良,应该已经被损坏,于是重新换个按键,锁定引脚。

本以为已经成功了,但是在秒表计时到分时,新的问题又出现了,第二个问题,数码管从左向后第四位显示的是乱码,我直接怀疑应该是引脚锁定出错了,然后查看锁定的引脚,发现数码管的LED21,LED22,LED23锁成42,43,44引脚,后来查阅实验指导书改成47,48,49引脚,实验总算成功。

9.2心得体会
本次EDA课程设计历时一个星期,一个星期的日子里,可以说是苦多于甜,但是让我学到了很多东西,同时巩固以前所学过的知识,而且还学到了很多在书本上所没有学到过的知识。

通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。

但是在编调试顶层文件的程序时,遇到了不少问题,特
别是各元件之间的连接,以及信号的定义,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了。

在硬件实验时,也遇到了一点困难,想要的结果不能在数码管上得到正确的显示:在设定输入的时钟信号后,数字秒表计数一会儿,始终是会出现乱码。

后来,经过调试之后,才发现是因为数码管的引脚锁定出了问题。

经过调试错误与改正,终于实现了秒表计时电路的课程设计。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正解决问题,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

总的来说,这次设计的秒表计时电路还是比较成功的,虽然在实际的过程中曾经遇到了大量的问题,但是经过自己的努力,都给妥善解决了,这样的积累对于现在大学生来说是十分宝贵的。

希望以后能有更多的动手实践机会,在硬件中发现自己的不足,弥补自己的不足,最终成为一个合格的大学生。

10.参考文献
[1]朱正伟,韩学超.EDA技术与应用[M].北京:清华大学出版社,2005
[2]潘松,黄继业.EDA技术与VHDL[M].北京:清华大学出版社,2007
[3]聂春燕.EDA技术实验与课程设计.北京:清华大学出版社,2006
[4]张亦华,延明.EDA技术实用教程.北京:北京邮电大学出版社,2005
[5]黄仁欣.EDA技术实用教程.北京:清华大学出版社,2006
[6]林明泉.VHDL数字控制系统设计范例.北京:电子工业出版社,2003。

相关文档
最新文档