EDA课程设计数字秒表设计.docx
- 文档编号:11267212
- 上传时间:2023-05-30
- 格式:DOCX
- 页数:9
- 大小:80.83KB
EDA课程设计数字秒表设计.docx
《EDA课程设计数字秒表设计.docx》由会员分享,可在线阅读,更多相关《EDA课程设计数字秒表设计.docx(9页珍藏版)》请在冰点文库上搜索。
EDA课程设计数字秒表设计
学校
课程设计报告
(理工类)
课程名称:
EDA技术专业班级:
电子信息工程101
学生学号:
学生姓名:
所属院部:
指导教师:
2011——2012学年第2学期
设计项目名称:
数字秒表设计实验地点:
同组学生姓名:
设计成绩:
批改教师:
批改时间:
一、设计目的和要求
1.课程设计目的
2.课程设计的基本要求
3.课程设计类型
二、仪器和设备
三、设计过程
1.设计内容和要求
2.设计方法和开发步骤
3.设计思路
4.设计难点
四、设计结果与分析
1.思路问题以及测试结果失败分析
2.程序简要说明
一、设计目的和要求
1.课程设计目的
1)根据设计要求,完成对数字秒表的设计。
2)进一步加强对MaxplusⅡ软件的应用和对VHDL语言的使用。
2.课程设计的基本要求
1)提供的时钟信号频率为100Hz,实现计数从0.01s到0.1s,再到1s,10s,1min,10min,1h。
3.课程设计类型
1)综合应用设计
二、仪器和设备
1.计算机,1台
三、设计过程
1.设计内容和要求
1)用MaxplusⅡ软件编程实现六进制计数器、十进制计数器、分频器(3MHz——100MHz)模块。
2)编译各个模块,连接各模块,最终实现一小时的秒表计数功能。
2.设计方法和开发步骤
1)编程实现十进制计数器
十进制计数器源代码:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entitycnt10is
port(clk:
instd_logic;
clr:
instd_logic;
ena:
instd_logic;
cq:
outintegerrange0to15;
carry_out:
outstd_logic);
endentitycnt10;
architectureartofcnt10is
signalcqi:
integerrange0to15;
begin
process(clk,clr,ena)is
begin
ifclr='1'thencqi<=0;
elsifclk'eventandclk='1'then
ifena='1'then
ifcqi<9thencqi<=cqi+1;
elsecqi<=0;endif;
endif;
endif;
endprocess;
process(cqi)is
begin
ifcqi=9thencarry_out<='1';
elsecarry_out<='0';endif;
endprocess;
cq<=cqi;
endarchitectureart;
2)编程实现六进制计数器
六进制计数器源代码:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entitycnt6is
port(clk:
instd_logic;
clr:
instd_logic;
ena:
instd_logic;
cq:
outstd_logic_vector(3downto0);
carry_out:
outstd_logic);
endentitycnt6;
architectureartofcnt6is
signalcqi:
std_logic_vector(3downto0);
begin
process(clk,clr,ena)is
begin
ifclr='1'thencqi<="0000";
elsifclk'eventandclk='1'then
ifena='1'then
ifcqi="0101"thencqi<="0000";
elsecqi<=cqi+'1';endif;
endif;
endif;
endprocess;
process(cqi)is
begin
ifcqi="0000"thencarry_out<='1';
elsecarry_out<='0';endif;
endprocess;
cq<=cqi;
endarchitectureart;
3)编程实现分频器模块
分频器源代码(3MHz—100Hz)
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entityclkgenis
port(clk:
instd_logic;
newclk:
outstd_logic);
endentityclkgen;
architectureartofclkgenis
signalcnter:
integerrange0to10#29999#;
begin
process(clk)is
begin
ifclk'eventandclk='1'then
ifcnter=29999thencnter<=0;
elsecnter<=cnter+1;
endif;
endif;
endprocess;
process(cnter)is
begin
ifcnter=29999thennewclk<='1';
elsenewclk<='0';
endif;
endprocess;
endarchitectureart;
3.设计思路
因为实验硬件仿真提供3MHz的时钟信号,所以要用分频器实现3MHz到100Hz的时钟信号的转换。
用四个十进制计数器和两个六进制计数器实现0.01s到1h的计数。
第一个十进制计数器计数0.01s,计数到0.1s,第二个十进制计数器计数到1s,第三个十进制计数器计数到10s,第四个计数器用六进制计数器,计数到60s(即1min),第五个用十进制计数器,计数到10min,第六个用六进制计数器,计数到60min(即1h)。
连接每个模块,最终实现秒表的功能。
4.设计难点
我们设计的过程中主要遇到的难点是最终的各个模块的连接与编译。
连接模块的原理图后,编译出现错误。
经过老师的指导,发现端口的连接线有问题。
不能从输入输出端口拖出线连接到模块上,这样只能连接一个端口,而无法将全部端口正确连接到模块上。
而且各个模块排列比较紧是,容易在连接线上出现问题,所以各个模块的排列要合理的分散。
在实际的设计过程中,分频器的模块也遇到了困难。
因为我们参考了书上的部分程序,不过有一句语句有语法错误。
所以找了很长时间,最后在老师的帮助下,通过ISE软件找出了错误。
实际的过程中我们没有加入分频器模块,仿真时直接提供100Hz的时钟信号进行仿真。
四、设计结果与分析
1、思路问题以及测试结果失败分析
设计的过程中没有注意到分频器模块的设计,没有考虑到实际的时钟脉冲信号的频率问题。
实际的时钟脉冲信号不一定是我们的100Hz。
所以一定要设计分频器模块。
最终的原理图连接后,端口的连接没有注意,尤其是一对多的端口的连接。
所以编译出现错误。
多个输出端口同过命名的方式连接到一起的,要注意最终的输出端口模块的线要用粗线,表示可以连接多个端口。
这样,前面的六个端口连接到上面就不会出现错误。
每一个单独的输出端口的输出线也要用粗线,而且要拉长些,但不要与其他的线连接到一起,引起编译出现错误。
2、程序简要说明
十进制计数器:
每有一个时钟信号,计数1,依次增加,当计数到第十个脉冲时,输出进位为1。
该进位作为下一个计数器的时钟信号,连接各个计数器,就可实现设计要求的计数到1h。
五、设计过程与结果截图
1、原理图
2、程序设计结果截图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程设计 数字 秒表 设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)