CPLD制作数字钟的评测报告.docx
- 文档编号:12259737
- 上传时间:2023-06-05
- 格式:DOCX
- 页数:16
- 大小:20.16KB
CPLD制作数字钟的评测报告.docx
《CPLD制作数字钟的评测报告.docx》由会员分享,可在线阅读,更多相关《CPLD制作数字钟的评测报告.docx(16页珍藏版)》请在冰点文库上搜索。
CPLD制作数字钟的评测报告
CPLD制作数字钟的报告
论文2008-06-1811:
45:
01阅读429评论0字号:
大中小
通过这8周的学习,我知道了CPLD及电子电路CAD主要是学习里利用可编程器件使其实现某种指定功能。
将通过编程做出的器件进行设计组装,调试使其成为一个简易的电子产品。
同时我也了解如何设计一个电子产品。
首先必须明确系统的设计任务,根据任务设计方案,然后对方案中的各部分进行单元电路的设计,参数计算和器件选择,最后将各部分连接在一起,画出符合设计要求的完整的电路图。
然后进行编译,使其功能在可编程器件上能够实现。
在这8周的时间里,我们主要完成了以下六个实验:
实验一:
组合逻辑设计、实验装置的使用方法
一 实验目的:
1通过一个简单的3-8译码器的设计,掌握组合 逻辑电路的设计方法。
2.初步了解EPLD设计的全过程,初步掌握Altera软件的使用。
3.掌握组合逻辑电路的静态测试方法.
二实验步骤:
1 进入Windows操作系统,打开Max+PLUSII的设计软件.启动File口Project Name菜单,将出现ProjectName对话框,在对话框内键入设计项目名YUSHI,选Ok即可
2.点击Assign口Device菜单,选择器件EPF10K144-1
3设计的输入. 画出的实验原理图如下:
点击保存按钮保存原理图.将起保存在YUSHI文件下,起扩展名为.gdf
4.设计项目的编译. 点击MAX+PLUSII口compiler项,出现编译窗口,点击start即可开始编译
5.设计项目的模拟仿真. 通过模拟一个项目来证明它的功能是否是正确的. 上述电路的仿真波形如下:
6.在底层图编辑器中观察适配结果以及管脚的重新分配定位.对照结构管脚分配表,根据自己的设计进行分配.
7, 器件的编译.
三. 实验效果产生的现象:
通过按键输入,发光二极管显示3-8译码器的功能。
四 实验小结:
通过这个实验,我们初步了解了Max+PLUSII软件设计环境以及软件的使用。
也实现了3-8译码器的从理论到实践验证过程。
让我们亲身体验了3-8译码器的逻辑功能。
实验二 用D触发器设计异步四位二进制加法计数器
实验目的:
1了解时序电路的经典设计方法。
2.理解D触发器和一般逻辑门组成的时序逻辑电路
实验原理图:
仿真波形:
实验产生的现象或效果:
每个时钟下降沿时计数器就加一,D0,D1,D2,D3表示四进制的从低位到高位的四进制数。
Reset是清零端,低电平后计数重新开始。
小结:
通过这个实验进一步了解软件的使用,更加熟悉了四进制的原理。
通过软件实现D触发器设计异步四位二进制加法计数。
实验三 6进制、60,24进制计数器
实验目的:
1 了解同用同步记数器,异步计数器的使用方法
2.了解用同步计数器通过清零阻塞法和预显数法得到循环任意进制计数器的方法
3 理解时序电路和同步计数器加译码电路的联系,设计任意编码计数器
实验原理:
对可编程器件EPF10K144-1进行编程,通过程序的控制,使起实现6进制,60进制,24进制计数器功能.各计数器的程序如下:
六进制:
libraryieee。
useieee.std_logic_1164.all。
useieee.std_logic_unsigned.all。
entitysy6is
port(clk,clr,en:
instd_logic。
count :
outstd_logic。
q :
outstd_logic_vector(3downto0>>。
endsy6。
architectureoneofsy6is
signalm:
std_logic_vector(3downto0>。
begin
process(clk,clr,en,m>
begin
ifclr='1'then
m<="0000"。
elsifclk'eventandclk='1'then
ifen='0' then
ifm="0101"then
m<="0000"。
count<='1'。
else
m<=m+1。
count<='0'。
endif。
endif。
endif。
endprocess。
q<=m。
end。
仿真产生的波形是:
六十进制:
libraryieee。
useieee.std_logic_1164.all。
useieee.std_logic_unsigned.all。
entitysy60is
port(clk,clr,en:
instd_logic。
count :
outstd_logic。
q :
outstd_logic_vector(3downto0>。
shi :
out std_logic_vector(3downto0>>。
endsy60。
architectureoneofsy60is
signalg :
std_logic_vector(3downto0>。
signals:
std_logic_vector(3downto0>。
begin
process(clk,clr,en,s,g>
begin
ifclr='1'then
s<="0000"。
g<="0000"。
elsifclk'eventandclk='1'then
ifen='0' then
ifs<5andg="1001"then
s<=s+1。
g<="0000"。
elsifs=5andg="1001"then
s<="0000"。
g<="0000"。
count<='1'。
else
g<=g+1。
count<='0'。
endif。
endif。
endif。
endprocess。
q<=g。
shi<=s。
end。
仿真波形:
二十四进制:
libraryieee。
useieee.std_logic_1164.all。
useieee.std_logic_unsigned.all。
entitysy24is
port(clk,clr,en:
instd_logic。
count :
outstd_logic。
q :
outstd_logic_vector(3downto0>。
shi :
out std_logic_vector(3downto0>>。
endsy24。
architectureoneofsy24is
signalg :
std_logic_vector(3downto0>。
signals:
std_logic_vector(3downto0>。
begin
process(clk,clr,en,s,g>
begin
ifclr='1'then
s<="0000"。
g<="0000"。
elsifclk'eventandclk='1'then
ifen='0' then
ifs<2andg="1001"then
s<=s+1。
g<="0000"。
elsifs=2andg="0011"then
s<="0000"。
g<="0000"。
count<='1'。
else
g<=g+1。
count<='0'。
endif。
endif。
endif。
endprocess。
q<=g。
shi<=s。
end。
仿真波形:
实验效果:
<1> 6进制计数器 每当有一个时钟脉冲到来,计数器加1。
当其值为"0101"时,再来一个脉冲则计数器就向上一位进1,其本身值为"0000"。
<2> 60进制计数器 每当有一个时钟脉冲到来,计数器加1。
当其个位的值为"1001"时,再来一个脉冲时向十位进1,其本身值为"0000"。
当个位为"1001",十位为"0101"时,再来一个脉冲时计数器就向上一位进1,其本身的值为"0000"
<3> 24进制计数器 每当有一个时钟脉冲到来,计数器加1。
当其十位值小于2,个位值为"1001"时,再来一个脉冲则计数器个位向十位进1。
当十位为"0010",个位"0011"就向更高一位进1,其本身值为"0000"。
实验小结:
通过本实验熟悉了6进制、60进制,以及24进制的软件实现方法。
掌握了举一反三,其他各进制的软件实现都可以通过类似的方法实现。
设计也开始向复杂进了一步,更深入地了解运用该设计软件。
初步了解如何用AHDL语言编写程序。
实验四 报时电路、分频电路、二选一电路
实验目的:
1 报时电路实现时钟在接近整点时间能提供报时信号。
2 分频电路将给定的频率分成所需要的频率。
3 二选一电路是实现在计时和设置时间两个界面之间的切换.
实验原理:
对可编程器件EPF10K144-1进行编程,通过程序的控制,使起实现报时,分频和二选一的功能. 它们的编辑程序如下
报时电路:
libraryieee。
useieee.std_logic_1164.all。
useieee.std_logic_unsigned.all。
entitybaoshi1is
port(fg,fs,mg,ms:
instd_logic_vector(3downto0>。
clk2,clk3:
instd_logic。
sp :
outstd_logic>。
endbaoshi1。
architectureoneofbaoshi1is
begin
process(fg,fs,mg,ms,clk2,clk3>
begin
iffs="0101"andfg="1001"andms="0101"andmg>"0100"then
sp<=clk2。
elsiffs=0andfg=0andms=0andmg=0then
sp<=clk3。
else
sp<='0'。
endif。
endprocess。
end。
分频程序:
libraryieee。
useieee.std_logic_1164.all。
useieee.std_logic_unsigned.all。
entitysy100fpis
port(clk:
instd_logic。
count :
outstd_logic>。
endsy100fp。
architectureoneofsy100fpis
signalg :
std_logic_vector(3downto0>。
signals:
std_logic_vector(3downto0>。
begin
process(clk,s,g>
begin
ifclk'eventandclk='1'then
ifs<9andg="1001"then
s<=s+1。
g<="0000"。
elsifs=9andg="1001"then
s<="0000"。
g<="0000"。
count<='1'。
else
g<=g+1。
count<='0'。
endif。
endif。
endprocess。
end。
二选一:
libraryieee。
useieee.std_logic_1164.all。
useieee.std_logic_unsigned.all。
entitysy2v1is
port(mg,ms,fg,fs,ss,sg,dss,dsg,dfs,dfg:
instd_logic_vector(3downto0>。
s:
in std_logic。
mga:
outstd_logic_vector(3downto0>。
msa:
outstd_logic_vector(3downto0>。
fga:
outstd_logic_vector(3downto0>。
fsa:
outstd_logic_vector(3downto0>。
ssa:
outstd_logic_vector(3downto0>。
sga:
outstd_logic_vector(3downto0>>。
endsy2v1。
architectureoneofsy2v1is
begin
process(mg,ms,fg,fs,ss,sg,dfg,dfs,dsg,dss,s>
begin
ifs='0'then
mga<=mg。
msa<=ms。
fga<=fg。
fsa<=fs。
sga<=sg。
ssa<=ss。
else
mga<="0000"。
msa<="0000"。
fga<=dfg。
fsa<=dfs。
sga<=dsg。
ssa<=dss。
endif。
endprocess。
end。
实验效果:
1. 报时电路:
当时间的分钟到了59且秒到了55开始响铃,每进一秒响一次,直到59秒;最后一秒分钟秒钟同时进位,并以另一频率响铃一声。
从而达到了最后报时功能。
2. 分频电路:
将系统所提供的3MHz通过两次100分频和一次3分频将其分成所需的100Hz.
3. 通过软件实现显示通路的切换,当s为低电平时显示当前时间;当s为高电平时,显示定时界面。
通过操作操作另外的键调节定时。
实验五 数字钟综合设计
实验目的:
1 掌握多位计数器相连的设计方法
2 掌握十进制,六进制,二十四进制计数器的设计方法
3 继续巩固多位共用级扫描显示数码管的驱动及编码
4.掌握扬声器的驱动。
5 LED灯的花样显示.
6.掌握EPLD技术的层次化设计方法。
实验原理:
在同一EPLD芯片EPF10K10上集成如下电路模块:
1时钟计数 秒————60进制BCD码计数
分————60进制BCD码计数
时————24进制BCD码计数
2具有驱动8位8段共阴扫描数码管的片选驱动信号输出和八段字型译码输出。
3扬声器在整点时有报时信号产生。
4LED灯按个人爱好在整点时有花样显示信号产生。
实验电路:
该电路的模块组成:
各种进制的计数及时钟控制模块<60进制,6进制,24进制);
扫描分时显示,译码模块;
彩灯,扬声键编码模块
各模块都由AHDL语言编写,各模块产生的波形在前面实验中已出现
实验效果:
将程序下载到实验板上,先将S键设为低电平,使LED显示当前记时时间,从低位到高位依次是微秒,秒,分,时。
在显示过程中可通过按EN键暂停。
通过按clear键清除当前显示,即复位。
通过另两个键设置时间的分和时。
将S设置为高电平,即灯为亮时,显示定时设置界面。
通过按df键设置定时的分,ds设置定时时。
当时间到了预设的定时间时通过定时比较器比较定时时间和当前时间,若一致便驱动喇叭响。
实验小结:
本实验着重锻炼实验者的实验创新能力以及综合设计能力。
这个实验不仅要求对前几个实验有较深入的了解掌握,而且还要求对这些实验成果的组合兼容。
这个实验要求对在以前实验的基础上进行综合创新。
通过此项实验熟悉了电子表的原理功能,以及实现途径。
这个实验也是整个CPLD及CAD课程的精华,知识量最大,对实验者的创新意识要求较高。
要求掌握的东西也很多;如多位计数器相连的设计方法,掌握十进制,六进制,二十四进制计数器的设计方法;进一步巩固了多位共用级扫描显示数码管的驱动及编码;掌握扬声器的驱动;LED显示的多样性;掌握EPLD技术的层次化设计方法。
在同一EPLD芯片EPF10K10上集成了六十进制BCD码计数器,二十四进制BCD码计数器。
具有驱动八位八段共阴扫描数码管的片选驱动信号输出和八段字形译码输出。
喇叭在整点有报时驱动信号产生。
通过此项实验成功锻炼了实验者的综合能力,不论是从基础方面,还是创新意识,创新思想上都有了提高。
体会到了综合设计的趣味与要求。
实验六 PROTEL99SE原理图、印制电路板图 实验目的 初步了解利用PROTEL设计PCB版图 实验内容 555组成的多谐振荡器: 电路图: 自动布线后的电路板: 实验小结: 此项实验重在熟悉PROTEL软件的基本运用,学习了制作简单的PCB板,通过该软件制作设计电路。 课程心得 学习了CPLD这门课,我学到了最重要的东西便是: 是让自己对CPLD有了一个初步的认识,知道它可以做哪些事情了。 也是通过这次课,让我快速入门了,在上这门课之前,我也听其他同学谈起过CPLD这门课,但是也只是听说过而已。 根本就不知道学什么,怎么学。 因为上课的时间太短,老师没有时间讲它的语法和结构等等。 我刚开始是根据自己试试出来的,但是太浪费时间了,后来我在写一些自己的程序时,要是遇到问题就去图书馆借了本参考书,有针对性地找问题的答案,感觉效果还不错,还懂了很多课上没有用过的语法和结构。 在课上听了老师的讲解后,有些问题就很快解决了。 所以我觉得不管学什么东西,都要结合自学与课堂教案或者是说是要加强与别人的交流,这样的话对自己的知识结构会是一个很大的补充。 的确,在完成了这些实验,我对这门课程有了一些认识。 电子线路设计是在插线板上用已经存在的芯片,电容,电阻等器件连接,组装以实现某种功能或某种电子产品,它主要进行的是硬件的开发与组装;与“电子线路设计”相比,“CPLD及电子电路CAD” 是软件方面的应用。 它利用AHDL语言编写程序使其实现特定功能,因而需要我们对计算机编程语言有一定的基础和运用。 在进行电子设计时软件控制与硬件组装相比节省了器件,不用担心因为设计疏忽而使器件报废造成经济损失。 同时,也不用再为连接烦琐的电路而头痛,在调试时也不用被插线板上五颜六色的导线弄得眼花缭乱。 这使得电子电路的组装调试变得格外的简单。 虽然仅仅只有八周的时间,我们从中学习了很多东西,足以让我受益匪浅,但是,其中也存在了很多问题,就我个人看来,老师的讲课速度有时候真的很快,使我们难以接受和理解,故而我希望老师能够改一改。 还有就是在同学们询问的时候,老师的态度让人难以接受,我们也知道,老师你在讲授这门课时是很有经验,教导我们易于反掌,感觉对这些理解很透彻,,再加上可能是老师经常面对这些,有点厌倦,但是我们学生就不一样,毕竟是刚刚接触,很多都要学习。 在这过程中,肯定存在着很多问题,所以希望老师能够改进,这样更能使人接受,更能让人尊重,这些是我的一些拙见,只能代表个人的建议,谢谢
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CPLD 制作 数字 评测 报告