cpld实训报告样表_第1页
cpld实训报告样表_第2页
cpld实训报告样表_第3页
cpld实训报告样表_第4页
cpld实训报告样表_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、陕西国防工业职业技术学院实训报告科 目 CPLD 技术实训班级dz5081姓名贾彬 李丹路清云学号10# 28# 11#指导教师李想许燕2012 年 05 月 28 日目录一、项目记录卡1) 8 灯跑马灯 32) 16 灯跑马灯 53) 8 位数码扫描显示电路 84) 7 人表决器 105) 14 人表决器 136) 4*4 键盘控制电路 167) 简单时钟 198) 数字频率计 269) 乒乓游戏机 2910) 通灯 35、 实训总结 42CPLD技术实训项目记录卡编号( 001)项目名称8 灯跑马灯项目组成员贾彬 李丹 路清云项目内容LIBRARY IEEE;USE ieee.std_lo

2、gic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY test53 ISPORT(clk,rst: IN std_logic;q: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END test53;ARCHITECTURE one OF test53 IS 定义 4 种模式type states is (s0,s1,s2,s3);signal present:states;signal q1:STD_LOGIC_VECTOR(7 DOWNTO 0);signal cnt:STD_LOGIC_VECTOR(3 DOWNTO

3、0); BEGINPROCESS(clk,rst)BEGIN 系统复位if rst=1 then present=s0;q10);elsif clkevent and clk=1 thencase present iss0 模式:从左到右逐个点亮 LEDwhen s0=if q1=00000000 then q1=10000000;elsif cnt=0111 then cnt0); q1=00000001; present=s1;else q1=q1(0)&q1(7 DOWNTO 1); cnt=cnt+1;presentif cnt=0111 then cnt0); q1=10000001

4、; present=s2;else q1=q1(6 DOWNTO 0)&q1(7); cnt=cnt+1;presentif cnt=0111 then cnt0);q1=00011000;present=s3;else q1(7 DOWNTO 4)=q1(4)&q1(7 DOWNTO 5); q1(3 DOWNTO 0)=q1(2 DOWNTO 0)&q1(3); cnt=cnt+1;presentif cnt=0111 then cnt0);q1=10000000;present=s0;else q1(7 DOWNTO 4)=q1(6 DOWNTO 4)&q1(7); q1(3 DOWNT

5、O 0)=q1(0)&q1(3 DOWNTO 1); cnt=cnt+1;present=s3;end if;end case;end if;END PROCESS; q=q1;END ARCHITECTURE one ;贾彬编程项目组 成员分工贾彬调试贾彬在功能板上实现程序项目实施过程中遇到的困难第一次接触 eda 功能板不了解内部原理,功能板和编译好的程序 没有办法匹配。解决问题的过程及方法通过老师的讲解了解。总结与反思Eda功能板很强大,可以讲理论与实践很好的结合。编号( 002)项目名称16灯跑马灯项目组成员贾彬 李丹 路清云项目内容LIBRARY IEEE;USE ieee.std_

6、logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY cpld ISPORT(clk,rst: IN std_logic;q: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); END cpld;ARCHITECTURE cpld OF cpld IS 定义 4 种模式 type states is (s0,s1,s2,s3); signal present:states;signal q1:STD_LOGIC_VECTOR(7 DOWNTO 0);signal cnt:STD_LOGIC_VECTOR(3 DOWNTO

7、0); BEGINPROCESS(clk,rst)BEGIN 系统复位if rst=1 then present=s0;q10);elsif clkevent and clk=1 then case present iss0 模式:从左到右逐个点亮 LED when s0=if q1=00000000 then q1=10000000;elsif cnt=0111 then cnt0); q1=00000001; present=s1;else q1=q1(0)&q1(7 DOWNTO 1); cnt=cnt+1;presentif cnt=0111 then cnt0); q1=100000

8、01; present=s2;else q1=q1(6 DOWNTO 0)&q1(7); cnt=cnt+1;presentif cnt=0111 thencnt0);q1=00011000;present=s3;else q1(7 DOWNTO 4)=q1(4)&q1(7 DOWNTO 5); q1(3 DOWNTO 0)=q1(2 DOWNTO 0)&q1(3); cnt=cnt+1;presentif cnt=0111 thencnt0);q1=10000000;present=s0;else q1(7 DOWNTO 4)=q1(6 DOWNTO 4)&q1(7); q1(3 DOWNT

9、O 0)=q1(0)&q1(3 DOWNTO 1); cnt=cnt+1;present=s3;end if;end case;end if;END PROCESS;q=q1;END ARCHITECTURE cpld ;贾彬项目组 成员分工项目实 施过 程中遇 到的 困难李丹,路清云贾彬编程,调试检查程序在功能板上实现程序Led灯的显示频率太快解决问题的过程及方法讲频率的范围值改变。总结与反思灯的显示快慢与频率息息相关。编号( 003)项目名称8 位数码扫描显示电路项目组成员贾彬 李丹 路清云项目内容LIBRARY IEEE;USE ieee.std_logic_1164.ALL;USE i

10、eee.std_logic_unsigned.ALL;ENTITY cpld ISPORT(clk: IN std_logic;seg: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); scan: OUT STD_LOGIC_VECTOR(2 DOWNTO 0); END cpld;ARCHITECTURE one OF cpld IS 扫描数码管地址的计数器 signal cnt8:integer range 0 to 7; 数码管的数据显示signal data:integer range 0 to 15;BEGIN PROCESS(clk)BEGINif clkeve

11、nt and clk=1 then cnt8scan=000;datascan=001;datascan=010;datascan=011;datascan=100;datascan=101;datascan=110;datascan=111;datanull;end case;END PROCESS; process(data) begin case data is when 0=segsegsegsegsegsegsegsegsegsegsegsegsegsegsegsegnull; end case;END PROCESS;END ARCHITECTUR one;项目组贾彬编写程序成员分

12、工路清云,李丹运行程序贾彬在功能板上实现程序项目实施过程中 遇到的困难不理解数码管的显示功能和引脚连接功能 ,解决问题的过程及方法通过学习 ppt 里面的内容总结与反思学会应用 8 段数码管了,并实现了自己的学号。编号( 004)项目名称7 人表决器项目组成员贾彬 李丹 路清云项目内容LIBRARY IEEE;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY test55 ISPORT(clk,k1,k2,k3,k4,k5,k6,k7: IN std_logic;led1,led2:OUT STD_LOGIC;

13、seg: OUT STD_LOGIC_VECTOR(7 DOWNTO 0); scan: OUT STD_LOGIC_VECTOR(2 DOWNTO 0); END test55;ARCHITECTURE one OF test55 IS 赞成票的二进制计数器 signal q:STD_LOGIC_VECTOR(3 DOWNTO 0); 赞成票的十进制计数器 signal qy:integer range 0 to 7; 反对票的十进制计数器signal qn:integer range 0 to ; 扫描数码管地址的计数器signal cnt8:integer range 0 to 7; 数

14、码管的数据显示signal data:integer range 0 to ;BEGIN 计票进程 process(qy,qn,q) begin q=(000&k1)+k2+k3+k4+k5+k6+k7; qy=conv integer(q);qn=7-qy;if qy8 then led1=0;led2=1; else led1=1;led2=0; end if;END PROCESS; 扫描数码管地址的计数进程 PROCESS(clk) BEGINif clkevent and clk=1 then cnt8scan=000;datascan=001;datascan=010;datasc

15、an=011;datascan=100;datascan=101;datascan=110;datascan=111;datanull; end case;END PROCESS; 7 段译码 process(data) begin case data is when 0=segsegsegsegsegsegsegsegsegsegsegsegsegsegsegsegnull;end case;END PROCESS;END ARCHITECTURE one ;李丹 编写程序项目组成员分工李丹 运行程序贾彬 改写程序并在功能板上实现程序 没有理解程序,不会使用表决器项目实施过程中遇到的困难了解

16、程序后,一切很容易就化解了解决问题的过程及方法总结与反思这个实验很有意思,通过数码管和开关实现表决。编号( 005)项目名称14 人表决器项目组成员贾彬 李丹 路清云项目内容LIBRARY IEEE;USE ieee.std_logic_1164.ALL;USE ieee.std_logic_unsigned.ALL;ENTITY test55 ISPORT(clk,k1,k2,k3,k4,k5,k6,k7,k8,k9,k10,k11,k12,k13,k14: IN std_logic;led1,led2:OUT STD_LOGIC;seg: OUT STD_LOGIC_VECTOR(7 DO

17、WNTO 0);scan: OUT STD_LOGIC_VECTOR(2 DOWNTO 0);END test55;ARCHITECTURE one OF test55 IS 赞成票的二进制计数器signal q:STD_LOGIC_VECTOR(2 DOWNTO 0); 赞成票的十进制计数器signal qy:integer range 0 to 14; 反对票的十进制计数器signal qn:integer range 0 to 14; 扫描数码管地址的计数器signal cnt8:integer range 0 to 7; 数码管的数据显示signal data:integer rang

18、e 0 to 15;BEGIN 计票进程process(qy,qn,q)beginq=(00&k1)+k2+k3+k4+k5+k6+k7+k8+k9+k10+k11+k12+k13+k 14;qy=conv integer(q); qn=14-qy;if qy7 then led1=0;led2=1; else led1=1;led2=0; end if;END PROCESS; 扫描数码管地址的计数进程 PROCESS(clk) BEGINif clkevent and clk=1 then cnt8scan=000;datascan=001;datascan=010;datascan=01

19、1;datascan=100;datascan=101;datascan=110;datascan=111;datanull;end case; END PROCESS; 7 段译码 process(data) begin case data is when 0=segsegsegsegsegsegsegsegsegsegsegsegsegsegsegsegnull;end case;END PROCE;SSEND ARCHITECTURE o;ne李丹,贾彬 编写程序路清云 运行程序贾彬 改写程序并在功能板上实现程序 没有理解程序,不会使用表决器项目实施过程中遇到的困难了解程序后,一切很容易

20、就化解了解决问题的过程及方法总结与反思1. 这个实验很有意思,通过数码管和开关实现表决。2.要认真去看程序理解程序,才能很快完成它。编号( 006)项目名称4*4 键盘控制电路项目组成员贾彬 李丹 路清云项目内容library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cpld is port(clk,start:in std_logic; 列扫描信号kbrow:in std_logic_vector(3 downto 0); 行扫描信号kbcol:out std_logic_vector(3

21、 downto 0); 数码管显示信号 (abcdefgh) seg7:out std_logic_vector(7 downto 0); 数码管地址选择信号scan:out std_logic_vector(2 downto 0); end cpld;architecture one of cpld issignal count:std_logic_vector(1 downto 0); signal state:std_logic_vector(1 downto 0); signal seg7_1:std_logic_vector(7 downto 0); signal dat:std_l

22、ogic_vector(4 downto 0); signal fn:std_logic;begin 只使用一个数码管显示scan=000; 循环扫描计数器 process(clk) begin if clkevent and clk=1 then countkbcol=0001;statekbcol=0010;statekbcol=0100;statekbcol=1000;statekbcol=1111; end case;end if; end process; 列扫描译码 process(clk,start) beginif start=0 then seg7_1 case kbrow

23、iswhen 0001= seg7_1=10001110; dat seg7_1=10011110; dat seg7_1=01111010; dat seg7_1=10011100; datseg7_1=00000000;dat case kbrow is when 0001= seg7_1=00111110; dat seg7_1=11101110; dat seg7_1=11110110; dat seg7_1=11111110; datseg7_1=00000000;dat case kbrow is when 0001= seg7_1=11100000; dat seg7_1=101

24、11110; dat seg7_1=10110110; dat seg7_1=01100110; datseg7_1=00000000;datcase kbrow iswhen 0001= seg7_1=11110010; dat seg7_1=11011010; dat seg7_1=01100000; dat seg7_1=11111100; datseg7_1=00000000;datseg7_1=00000000;end case;end if;end process;fn=not(dat(0)and dat(1)and dat(2)and dat(3)and dat(4); 产生按键

25、标志位,用于存储按键信息process(fn)begin 按键信息存储if fnevent and fn=1 thenseg7=seg7_1;end if;end process;end;李丹编写程序路清云运行程序贾彬 改写程序并在功能板上实现程序项目实施过 程中遇到的 困难1. 刚开始编译时,程序出错。2. 在实验箱与计算机结合时,连接不上。3.看不懂程序,不理解 4*4 键盘实现的理解, 通过对十六进制与二进制 的转换便可改变它的值。解决问题的过程及方法1. 在检查了程序时,发现忘了拷贝是少了一行程序, 然后添加了程序后, 正常运行。2. 端口线与实验箱没连接上,然后连接好了,正常运行。3

26、. 看 ppt ,了解到了程序运行的原理。总结与反思1.在做 4*4 键盘控制电路设计中, 当中程序有很多问题, 认真检查了程 序,然后改正,让其正常运行,实现功能。2. 再这次实验中懂得了, 要认真负责的看好每一个环节, 才保证实验能 够顺利进行,进而完成实验项目。编号( 007)项目名称简单时钟项目组成员贾彬 李丹 路清云项目内容library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cpld isport(clk:in std_logic; 时钟输入1024hzclr:in std_l

27、ogic; 清零en:in std_logic; 暂停seg:out std_logic_vector(7 downto 0);-数码管显示信号scan:outstd logic vector(2 downto 0);-数码管扫描信号end;architecture one of cpld issignal qhh,qhl,qmh,qml,qsh,qsl:std_logic_vector(3 downto 0);signal data:std_logic_vector(3 downto 0);signal cnt:integer range 0 to 5;signal clk1hz:std_l

28、ogic;signal sec,min:integer range 0 to 59;signal hour:integer range 0 to 23;begin 1hz 分频 process(clk) variable count:integer range 0 to 511; beginif clkevent and clk=1 thenif count=511 then clk1hz=not clk1hz;count:=0;else count:=count+1;end if;end if;end process; 记时process(clk1hz,clr,en,hour,min,sec

29、)beginif en=1 then hour=hour;min=min;sec=sec; elsif clr=1 then hour=0;min=0;sec=0;elsif clk1hzevent and clk1hz=1 thenif sec=59 then sec=0;if min=59 then min=0;if hour=23 then hour=0;else hour=hour+1;end if;else min=min+1;end if;else secqslqslqslqslqslqslqslqslqslqslnull;end case;case sec iswhen 0|1|

30、2|3|4|5|6|7|8|9 =qshqshqshqshqshqshnull;end case;end process; 分计数的十进制转 BCD码 process(min) begin case min iswhen 0|10|20|30|40|50 =qmlqmlqmlqmlqmlqmlqmlqmlqmlqmlnull;end case;case min iswhen 0|1|2|3|4|5|6|7|8|9 =qmhqmhqmhqmhqmhqmhnull;end case;end process; 小时计数的十进制转 BCD码 process(hour) begin case hour

31、iswhen 0|10|20 =qhlqhlqhlqhlqhlqhlqhlqhlqhlqhlnull;end case;case hour iswhen 0|1|2|3|4|5|6|7|8|9 =qhhqhhqhhnull;end case;end process; 数码管动态扫描计数 process(clk) beginif clkevent and clk=1 thenif cnt=5 then cnt=0;else cnt data=qsl;scan data=qsh;scan data=qml;scan data=qmh;scan data=qhl;scan data=qhh;scan

32、null;end case;end process; 七段译码process(data)begincase data iswhen0000=segsegsegsegsegsegsegsegsegsegseg=00000000;end;李丹,贾彬编写程序项目组成员分工项目实施过程中遇到的困难解决问题的过程及方法总结与反思编号( 008)路清云检查程序贾彬运行程序并实现在实施时不了解程序的原理,看不懂如何使用。看过书之后懂得了接线和如何使用。1.在拿到这个试验项目时, 先不要盲目的去看, 要认真对待, 才能顺利地完成实验。2. 学会使用实箱去定时。项目名称数字频率计项目组成员贾彬 李丹 路清云项目

33、内容library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cpld isport(sysclk:in std_logic;12mhz 时钟输入clkin:in std_logic; 待测频率信号输入seg7:out std_logic_vector(7 downto 0);7 段显示控制信号 (abcdefg)scan:out std_logic_vector(2 downto 0);-数码管地址选择信号 end;architecture one of cpld issignal cnt:

34、std_logic_vector(24 downto 0); 用于分频的计数器signal clk_cnt :std_logic;signal cntp1,cntp2,cntp3,cntp4,cntp5,cntp6,cntp7,cntp8:std_log ic_vector(3 downto 0);signal cntq1,cntq2,cntq3,cntq4,cntq5,cntq6,cntq7,cntq8:std_log ic_vector(3 downto 0);signal dat:std_logic_vector(3 downto 0);begin0.5Hz 分 频process(sysclk)beginif sysclkevent and sysclk=1 thenif cnt=11999999 then clk_cnt=not clk_cnt;cnt0);e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论