CPLD学习报告.docx
- 文档编号:5501602
- 上传时间:2022-12-17
- 格式:DOCX
- 页数:12
- 大小:428.16KB
CPLD学习报告.docx
《CPLD学习报告.docx》由会员分享,可在线阅读,更多相关《CPLD学习报告.docx(12页珍藏版)》请在冰豆网上搜索。
CPLD学习报告
CPLD学习报告
CPLD课程介绍:
CPLD是一种用户根据各自需要而自行构造逻辑功能的数字集成电路。
其基本设计方法是借助集成开发软件平台,用原理图、硬件描述语言等方法,生成相应的目标文件,通过下载电缆将代码传送到目标芯片中,实现设计的数字系统。
CPLD主要是由可编程逻辑宏单元围绕中心的可编程互连矩阵单元组成。
其中MC结构较复杂,并具有复杂的I/O单元互连结构,可由用户根据需要生成特定的电路结构,完成一定的功能。
由于CPLD内部采用固定长度的金属线进行各逻辑块的互连,所以设计的逻辑电路具有时间可预测性,避免了分段式互连结构时序不完全预测的缺点。
CPLD这门课程使学生掌握电子设计自动化(EDA)技术,能够进行对计算机电路的功能设计、逻辑设计、性能分析、时序测试,要求学生对计算机和EDA工具进行电路设计和仿真有一定的了解,并会使用开发系统设计PLD器件。
学习基本任务:
1、时、分、秒六位数码管显示(标准时间23点59分59秒);
2、具有小时、分钟校准功能;
3、完成合乎要求的设计报告。
学习扩展任务:
1、整点报时:
55,56,57,58,59低音响,正点高音,间断振铃(嘟--嘟--嘟--嘟--嘟--嘀)。
2、跑表:
最大计时99分59秒999毫秒。
独立的跑表功能,不影响数字钟正常工作。
3、定时闹钟:
可在00:
00到23:
59之间由用户设定任一时间,到时报警。
4、定时闹钟花样:
前10s一般振铃,其后13秒较急促,再其后17秒急促,最后20秒特急促振铃。
并可随时关断。
5、其他(加减调时调分、音乐铃声等,越新奇越好)。
酌情加分。
下面我就整个数字电子钟功能的实现过程做一一讲解。
首先,要完成一个最基本的时钟,首要任务就是编写两个计数器(24进制和60进制)。
60进制计数器的VHDL描述如下:
libraryieee;
USEieee.std_logic_1164.all;
USEieee.std_logic_unsigned.all;
ENTITYgt13_cnt60IS
port(clk,reset,en:
instd_logic;
g,s:
outstd_logic_vector(3downto0);
carry:
outstd_logic);
end;
architectureoneofgt13_cnt60is
signalm,n:
std_logic_vector(3downto0);
begin
process(clk,en,reset)
begin
ifreset='1'then
m<="0000";n<="0000";
elsifclk'eventandclk='1'then
ifen='0'then
ifm="0101"andn="1001"then
m<="0000";n<="0000";
carry<='1';
elsifn="1001"then
n<="0000";m<=m+1;
else
n<=n+1;
carry<='0';
endif;
endif;
endif;
endprocess;
g<=n;s<=m;
end;
通过对程序的保存、创建项目、编译之后,我们可以得到下图所示的实体器件:
同理,24进制进制计数器的VHDL描述如下:
libraryieee;
USEieee.std_logic_1164.all;
USEieee.std_logic_unsigned.all;
ENTITYgt13_cnt24IS
port(clk,reset,en:
instd_logic;
g,s:
outstd_logic_vector(3downto0);
carry:
outstd_logic);
end;
architectureoneofgt13_cnt24is
signalm,n:
std_logic_vector(3downto0);
begin
process(clk,en,reset)
begin
ifreset='1'then
m<="0000";n<="0000";
elsifclk'eventandclk='1'then
ifen='0'then
ifm="0011"andn="0010"then
m<="0000";n<="0000";
carry<='1';
elsifn="1001"then
n<="0000";n<=n+1;
else
m<=m+1;
carry<='0';
endif;
endif;
endif;
endprocess;
g<=n;s<=m;
end;
可以得到下图所示的实体器件:
接下来的任务当然就是将这两个做出来的器件进行合理的连接组成我们所需要的最基本的时钟,其连接图如下图所示:
这就大体上完成了我们所要求的基本时钟,只要进行适当的引脚分配就能拿到实验箱上试一试它的功能如何,结果正如我们所想的一样,跟一般的数字时钟没什么差别。
既然说到了引脚分配就看一下到底是怎么回事吧:
下面来完成基本要求的第二个功能:
小时分钟校准功能。
这个就不用大费周章地去做很复杂的工作了,只需要运用两个二输入或门就能解决问题。
把秒钟的进位和调分按键相或接分钟的脉冲输入端,同理,把分钟的进位和调时按键相或接到时钟的脉冲输入端,这样就完成了。
但是有一点要注意,在调节完时钟或者分钟的时间后,一定要记得将调时和调分按键按到低电平,否则分钟和时钟就不会产生进位了。
在完成这一步之后,我们就可以得到一个具有基本要求的时钟电路:
基本要求到这里就要告一段落了,下面一起来看一下扩展部分的设计过程。
扩展要求1、整点报时:
55,56,57,58,59低音响,正点高音,间断振铃(嘟--嘟--嘟--嘟--嘟--嘀)
因为有低音和高音之分,所以要两种频率。
通过编程实现分钟为59,秒钟十位为5,个位大于4时选择低频率;当分钟为0秒钟也为0时选择高频率,两个频率通过或门相连,最后接蜂鸣器。
这样就能达到设计要求了。
编程实现部分:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitygt13_zdbsis
port(
A,B,C,D:
instd_logic_vector(3downto0);
DU,DI:
outstd_logic
);
end;
architectureoneofgt13_zdbsis
begin
process(A,B,C,D)
begin
ifD=5andC=9andB=5andA>4then
DU<='1';
ifD=0andC=0andB=0andA=0then
DI<='1';
else
DU<='1';
DI<='0';
endif;
endif;
endprocess;
end;
所生成的器件:
整点报时功能模块
连接完成后就可以得到下图所示电路:
扩展要求2、跑表:
最大计时99分59秒999毫秒。
独立的跑表功能,不影响数字钟正常工作。
说到跑表,它的设计与时钟没有什么本质的区别。
所以这里也就不再赘述跑表的VHDL语言描述了。
扩展要求3、定时闹钟:
可在00:
00到23:
59之间由用户设定任一时间,到时报警。
定时闹钟设计中,可以先完成一个没有秒钟的基本时钟作为定时基准,只需要将第一个的时钟信号换成调分按键,断开分钟向时钟的进位,将时钟信号换成调时按键就可以了。
基准时钟的图示如下所示:
剩下的任务就是编程控制实现在时钟时间与设定时间相等的时刻让蜂鸣器发声。
考虑到跑表、基准时钟、基本时钟要分时显示在数码管上,所以先在这里引入选择器的设计。
以二选一为例,选择器的VHDL描述如下:
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitygt13_mux2is
port(
s:
instd_logic;
a,b:
instd_logic_vector(3downto0);
y:
outstd_logic_vector(3downto0);
k:
outstd_logic
);
end;
architectureoneofgt13_mux2is
signalm:
std_logic_vector(3downto0);
begin
process(a,b,s)
begin
ifs='1'then
y<=a;
elsey<=b;
endif;
endprocess;
process(a,b,s)
begin
ifa=bthen
k<='1';
elsek<='0';
endif;
endprocess;
end;
二选一选择器的实体器件如下所示:
那么在这里就需要做一个三选一的选择器了,考虑到这个选择器里面还要实现基本闹钟、花样闹钟功能,所以可以采用多进程编程来实现,这个选择器的VHDL语言描述如下:
最后,将跑表、基准时钟、基本闹钟组合起来可以得到整个设计图如下:
整个设计的实验效果:
首先,电子钟处于基准时钟模式下,3、4、5、6这几个数码管显示的就是闹钟的时间,不断地按下按键1,可以看到分钟的时间在增加,不断地按下按键2,可以看到时钟的时间在增加。
当我们按下按键6时,闹钟的时间清零。
这时我们按下按键5进行模式选择最后来看一下整点报时,将闹钟时间调整到00:
01:
00,然后将时钟时间调整到23:
59:
51。
当时间到了23:
59:
55时,我们听到了嘟的声音一直持续到23:
59:
59,00:
00:
00时我们听到了滴的一声。
课程学习体会
为期8周的CPLD课程学习,让我受益匪浅。
在学习这门课程之前,我们连什么是CPLD和VHDL语言都不知道,后来通过老师的讲解和自己对它们的不断认识,加深了对CPLD和VHDL语言的理解。
在CPLD课程学习过程中,我们不断地提出问题、发现问题和解决问题,使自己的发散思维能力和动手能力得到很大的提高。
我们全班分为三十个小组,每组两个同学,遇到问题共同讨论,共同解决,整个实验过程,培养了一种团队合作精神,为我们以后走上社会与同事友好的相处打下了一定的基础。
当然,整个课程学习过程中,让人印象最为深刻的一点就是
当一个任务放在你面前的时候,不要企图一步来完成,我们应当制定详细的计划,先做什么,然后做什么,当然实验过程中也会遇到很多问题,当出现问题的时候,我们不能慌张,要一步步检查,一定要仔细,有耐心,看一看是不是有哪些重要的步骤漏掉了或者是什么地方出了点小错误,因为只有不断发现错误,改正错误,我们才能发现自己的缺点和不足,并且不断的提高。
同时,我们也应该多虚心的请教老师,弄清问题的源头,并加深对问题的理解,避免在后面的实验过程中犯相同的错误。
在各个部分的任务完成以后,将它们进行整合以得到我们所预期的实验结果。
最后希望学校能给我们多开设一些像CPLD这样的课程,应为这样的课程才能真正的锻炼我们的动手操作能力。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CPLD 学习 报告