您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > CPLD及电子CAD课程学习报告
CPLD及电子CAD课程学习报告实验一:3-8译码器的设计该实验是以硬件直接连接,使我们对MAX+PLUS2这个软件有个基本的了解,并且会使用它的基本功能,例如编译、仿真、下载等功能。实验目的:1.通过一个简单的3—8译码器的设计,让学生掌握组合逻辑电路的设计方法;2.初步了解EPLD设计的全过程,初步掌握Altera软件的使用;3.掌握组合逻辑电路的静态测试方法。实验过程:1:首先建立一个以GDF为后缀的文本,画出3—8译码器的原理图:2:设计项目的编译:选择Start即可开始编译。MAX+PLUSⅡ编译器将检查项目是否有错。3.在底层图编辑器中观察适配结果以及管脚的重新分配、定位。4.对原理图进行波形仿真,逻辑功能正确后下载测试。实验小结:这是第一次接触MAX+PLUS2软件进行译码器设计,虽然操作不怎么熟练,但能最终完成实验,并得到相应的试验结果。通过对MAX+PLUS的使用,我们顺利的完成了3-8译码器的设计.在前续课程的学习中已经知道,所谓译码器就是将具有特定涵义的二进制码进行辨别,并转换成控制信号,而这恰恰是我们这次实验最终需要看到的结果.在完成了上述电路的连接之后,我们验证了它的功能,该译码器有3个输入,8种组合状态,通过控制输入高低电平,可以得到不同的状态,通过这次试验让我们对译码器有了更深入的了解。实验二:3-8译码器的设计(VHDL)实验目的:学习用TEXT编写VHDL程序,并掌握其意义及用法。实验内容:1.用VHD语言编写3-8译码器的程序(程序如下):libraryieee;USEieee.std_logic_1164.all;USEieee.std_logic_unsigned.all;Entityyl65_ymq38isport(m,n,p:instd_logic;y:outstd_logic_vector(7downto0));end;architectureoneofyl65_ymq38isbeginprocess(m,n,p)beginifm='0'andn='0'andp='0'theny=00000001;elsifm='0'andn='0'andp='1'theny=00000010;elsifm='0'andn='1'andp='0'theny=00000100;elsifm='0'andn='1'andp='1'theny=00001000;elsifm='1'andn='0'andp='0'theny=00010000;elsifm='1'andn='0'andp='1'theny=00100000;elsifm='1'andn='1'andp='0'theny=01000000;elsifm='1'andn='1'andp='1'theny=10000000;endif;endprocess;end;2.编程编好后进行编译,检查是否有错,没错之后进行仿真,仿真结果如下。小结:通过这次的学习,我初步学习了如何用VHDL进行编程,了解了该语言的语句意义和使用方法,掌握了一门新的应用工具。实验三:十进制计数器的设计(VHDL)实验目的:1:掌握VHD语言的基本操作;2:掌握VHD语言产生的逻辑电路图;3:掌握十进制计数器的原理实验内容:1.用VHD语言编写十进制计数器的程序(程序如下):libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityl65_c10isport(clk,clr,en:instd_logic;q:outstd_logic_vector(3downto0);c_out:outstd_logic);end;architectureoneofyl65_c10issignalm:std_logic_vector(3downto0);beginprocess(clk,clr,en)beginifclr='1'thenm=0000;elsifclk'eventandclk='1'thenifen='0'thenifm=1001thenm=0000;c_out='1';elsem=m+1;c_out='0';endif;endif;endif;endprocess;q=m;end;2.保存为.vhd格式的文件,并编译源程序,测试有无错误。3.在MAX+PLUSⅡ中选择Simulator,进行仿真。得到以下图4.得到译码器模型小结:这次亲自用VHDL语言编程10进制和60进制计数器让我对该语言的使用和其语句所表达的意义有了更清楚的认识,并且初步懂得了平时经常使用但不知其中工作原理的器件的工作方法实验四:多路选择器的设计(VHDL)实验目的:1.熟练运用VHDL语言编写元器件;2.学习报时电路、分频电路、二选一电路的原理。实验原理:1.报时电路实现的功能是整点报时,我们设计的报时方式是在整点的前十秒每隔两秒低声响一下,整点高声响一下。编写的程序如下所示:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitybaoshiISport(clk1,clk2:instd_logic;sg,ss,mg,ms:instd_logic_vector(3downto0);speak:outstd_logic);endbaoshi;architectureoneofbaoshiisbeginprocess(clk1,clk2,sg,ss,mg,ms)beginifsg=0andss=5andmg=9andms=5thenspeak=clk1;elsifsg=2andss=5andmg=9andms=5thenspeak=clk1;elsifsg=4andss=5andmg=9andms=5thenspeak=clk1;elsifsg=6andss=5andmg=9andms=5thenspeak=clk1;elsifsg=8andss=5andmg=9andms=5thenspeak=clk1;elsifsg=0andss=0andmg=0andms=0thenspeak=clk2;elsespeak='0';endif;endprocess;end;2.分频电路实现的是秒表的功能,我们选用的频率是接近4千赫兹的。因此选用四十进制和一百进制的计数器对其进行分频,从而实现每跳一下的时间间隔是一毫秒,能够准确地显示时间。四十进制的计数器程序如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityc40Isport(clk,clr,en:INstd_logic;cout:OUTstd_logic;G1:OUTstd_logic_vector(3downto0);S1:OUTstd_logic_vector(3downto0));Endentityc40;Architectureoneofc40IsSignalG,S:std_logic_vector(3downto0);beginprocess(clk,clr,en)beginifclr='1'thenG=0000;S=0000;cout='0';elsifclk='1'andclk'eventthenifen='0'thenifG=1001andS=3thenG=0000;S=0000;cout='1';elsifG=1001andS3thenG=0000;S=S+1;cout='0';elseG=G+1;cout='0';endif;endif;endif;endprocess;G1=G;S1=S;endarchitectureone;3.一百进制程序如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entityc100isport(cg,cs:outstd_logic_vector(3downto0);clk,clr,en:INstd_logic;count:outstd_logic);endentityc100;architectureoneofc100issignalg1,s1:std_logic_vector(3downto0);beginprocess(clk,clr,en)beginifclr='1'theng1=0000;s1=0000;count='0';elsifclk='1'andclk'eventthenifen='0'thenifg1=1001ands1=1001theng1=0000;s1=0000;count='1';elsifg1=1001ands11001thens1=s1+1;g1=0000;elseg1=g1+1;count='0';endif;endif;endif;endprocess;cs=s1;cg=g1;endarchitectureone;4.二选一电路的功能是实现两种显示的切换,程序如下:libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entity2xuan1isport(HG2,HS2,MG2,MS2,SG2,SS2:outstd_logic_vector(3downto0);SELC:INstd_logic;HG0,HS0,MG0,MS0,SG0,SS0,MG1,MS1,HG1,HS1:INstd_logic_vector(3downto0));endentity2xuan1;architectureoneof2xuan1issignalSS,SG,HG,HS,MG,MS:std_logic_vector(3downto0);beginprocess(SELC,HG0,HS0,MG0,MS0,MG1,MS1,HG1,HS1)beginifSELC='1'thenHG=HG1;HS=HS1;MG=MG1;MS=MS1;elseHG=HG0;HS=HS0;MG=MG0;MS=MS0;SG=SG0;SS=SS0;endif;endprocess;HG2=HG;HS2=HS;MG2=MG;MS2=MS;SG2=SG;SS2=SS;end;实验五:PROTEL99SE原理图及PCB设计一、实验目的:1.了解PROTEL99SE,会基本的操作。2.会做出印制电路板图。二、实验过程1.如下图把线路连接好,保存并命名2.PCB板的布线图3.PCB的板图生成的网络表与原理图生成的网络表比较的结果实验六:CPLD数字电子钟设计实验任务:1.具有时,分,秒,计数显示功能,以24小时循环计时;2.具有清零,调整小时,分钟功能;3.具有整点报时功能,整点报时的同时可以发出两种不同的声音.4.能随时定闹钟,并且到点能闹,可以随时关闹钟。实验目的:1.掌握多位计数器相连的设计方法;2.掌握十进制,六十进制,二十四进制计数器的设计方法;3.继续巩固多位共用级扫描显示数码管的驱动及编码;4.掌握扬声器的驱动;5.数码管的显示,可显示定的闹钟的时间,也可以显示时钟的时间6.掌握CPLD技术的层次化设计方法.硬件要求:1.主芯片EPF10K10L84-4;2.8个LED灯;3.扬声器;4.8位八段扫描共阴极数码显示管;5.三个按键开关(清零,调小时,调分钟);试验内容:1.编程设计两个60进制的计数器,分别用于秒及分的计时,另外设计一个24进制的计数器用于小时的计时,秒计数器的溢出位连接到分计数器的CLK端,分计数器的溢出端连接到小时计数器的CLK端,从而实现秒分时的进位记数。在分计数器和小时计数器的CLK端加一个
本文标题:CPLD及电子CAD课程学习报告
链接地址:https://www.777doc.com/doc-4475788 .html