




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
可编程器件及数字系统设计实习报告 学院: 仪器科学与电气工程 专业: 电气工程及其自动化 姓名: 皇甫幼朋 学号: 65080623 实习地点:吉林大学朝阳校区地质宫416实习时间: 2010-08-162010-08-26 指导教师: 张怀柱、李春生 一、基本逻辑设计及调试 1、7段译码器;(数码管,DIP拨码开关) 2、BCD码加法器;(数码管,DIP拨码开关) 3、计数(分频)器;(数码管) 4、按键去抖 5、抢答器1.七段译码器一、实验目的1、学习基于VHDL 语言设计组合逻辑。2、学习VHDL 语言的编程规范,初步养成良好的编程习惯。二、实验平台微机一台(Windows XP 系统、安装Quartus等相关软件)、CPLD 学习板一块、5V 电源线一个、下载线一条。三、设计要求设计一个 7 段数码管显示译码器,并用4 位拨码开关和数码管验证其功能。四、设计提示1. 设计方案显示译码器是一种比较常用的组合逻辑模块,可以通过多种方式来实现。方法一: 采用经典设计方法,用基本门电路设计实现;方法二: 调用现成的 74 系列功能模块(如7447)实现;方法三: 基于VHDL 语言设计实现。2硬件连接图为了共用外围器件,可以采用4 位拨码开关和1 个4 位共阳数码管(后面的实验会用到)来验证设计,硬件连线图如下。3. 软件设计(1) VHDL 源程序建立工程,输入以下源文件:文件名:Seg7.vhdlibrary ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity seg7 isport (swd: in std_logic_vector(3 downto 0);seg: out std_logic_vector(7 downto 0);end seg7;architecture behave of seg7 isbeginprocess (swd)begincase swd iswhen 0000= seg seg seg seg seg seg seg seg seg seg seg seg seg seg seg seg seg =00000000;end case;end process;end behave;(2) 编译对文件seg7.vhd 进行编译综合及管脚分配后,执行一次全编译。(3) 仿真使用Quartus对其进行仿真。3. 下载调试利用 Quartus 的 Programmer 将编译好的 pof 文件下载到 EPM240 当中。下载完成后,改变 4 位拨码开关的输入状态,观察数码管显示情况是否符合设计要求。如不符合,重复以上步骤。4.仿真波形图2.8421BCD码加法器一、实验目的1、 学习基于VHDL 语言设计组合逻辑。2、 学习VHDL 语言的编程规范,初步养成良好的编程习惯。二、实验平台微机一台(Windows XP 系统、安装Quartus等相关软件)、CPLD 学习板一块、5V 电源线一个、下载线一条。三、设计要求设计一个BCD 码加法器,并设计硬件电路进行验证。四、设计提示1. 设计方案思路分析:8421BCD 码加法器与一般二进制加法器的运算规则一样,不同的是,需要对相加以后的结果进行变换,保证相加之后的结果仍然为8421BCD 码。实现可以分两步完成:首先将两个BCD 码按照二进制相加,然后将得到的二进制数转换为8421BCD 码。上述过程可以用VHDL 设计实现。3. 硬件连接图可以分别用两个4 位的拨码开关表示输入的8421BCD 码,相加之后的结果可以用发光管或者数码管指示。3. 软件设计(1)输入设计文件建立工程,输入以下源文件:文件名:adder.vhdlibrary IEEE;use IEEE.Std_logic_1164.all;use IEEE.Std_logic_arith.all;use IEEE.Std_logic_unsigned.all;entity adder isport (a: in Std_logic_vector(3 downto 0);b: in Std_logic_vector(3 downto 0);c: out Std_logic_vector(7 downto 0);end adder;architecture behave of adder issignal tmp:std_logic_vector(7 downto 0);signal set:std_logic_vector(7 downto 0);signal pes:std_logic_vector(7 downto 0);beginset=0000&a;pes=0000&b;tmp=set+pes;c=tmp when (tmp=00001001 and a=1001 and b=1001)else tmp+6 when (tmp=00010010 and a=1001 and b=1001);end behave;(2)编译综合编译无误及引脚分配后,进行全编译。(3)仿真使用 Quartus对其进行仿真。3. 下载调试利用 Quartus的Programmer 将编译好的pof 文件下载到 EPM240 当中。下载完成后,改变8 位拨码开关的状态,观察发光管的亮灭情况是否符合设计要求。如不符合,重复以上步骤。4仿真波形五、思考题用同样的设计方法设计一个8 路数据选择器。源程序如下:library ieee ;use ieee.std_logic_1164.all ;use ieee.std_logic_arith.all ;use ieee.std_logic_unsigned.all ;entity exam08 isport (a, b, c, d,e,f,g,h : in std_logic_vector( 3 downto 0) ;s : in std_logic_vector( 2 downto 0) ;z : out std_logic_vector( 3 downto 0 ) ) ;end exam08 ;architecture behave of exam08 isbeginzQIf(am=0) then If(Q=1000) then Q=Q+1; else Q=0001)then Q=Q-1; else Qif(sd=0) then s=s0; else sif(sd=0) then s=s0; else sif(sd=0) then s=s0; else sif(sd=0) then s=s0; else s=s3; end if;end case;end if;end process;Q=1when s=s3 else0;end behave;(2)编译综合编译无误及引脚分配后,进行全编译。(3)仿真使用 Quartus对其进行仿真。3. 下载调试利用 Quartus的Programmer 将编译好的pof 文件下载到 EPM240 当中。下载完成后,按动按键,观察发光管的变化情况;将去抖电路去掉后,按动按键,观察发光管变化有什么不同。4仿真波形5.抢答器一、实验目的1、学习基于VHDL 设计时序逻辑;2、学习 VHDL 语言的规范化编程,学习抢答器的设计方法。二、实验平台微机一台(Windows XP 系统、安装Quartus等相关软件)、CPLD 学习板一块、5V 电源线一个、下载线一条。三、设计要求设计一个 4 路抢答器,当按下抢答键开始抢答,设置 4 个按键作为 4 路抢答开关,4 个LED 作为抢答显示,一旦抢答成功,蜂鸣器发声,与抢答开关对应的 LED 亮。四、设计提示1. 设计方案抢答器具有存储功能,属于时序电路范畴。该设计可以利用触发器来完成设计。用触发器的清零端作为抢答控制,触发器输出做反馈来禁止抢答。2硬件连接图3. 软件设计(1)输入设计文件按照设计提示设计并输入VHDL 源程序。library IEEE;use IEEE.Std_logic_1164.all;use IEEE.Std_logic_arith.all;use IEEE.Std_logic_unsigned.all;Entity qdq isport(a,b,c,d,clk,res,clk1:in std_logic; Q: buffer std_logic_vector(3 downto 0); W:out std_logic);end qdq;architecture behave of qdq issignal s:std_logic_vector(3 downto 0);signal e:bit;beginprocess(clk)beginif(clk event and clk=1) thenif(res=0) thens=0000 ;e=0;elseif(s=0000) thenif(a=1) thens=1000;e=1;elseif(b=1) thens=0100;e=1;elseif(c=1) thens=0010;e=1;elseif(d=1) thens=0001;e=1;end if;end if;end if;end if;end if;end if;end if;if(e=1) thenw=clk1;end if;Q=s;end process;end behave;(2)编译综合编译无误及引脚分配后,进行全编译。(3)仿真使用 Quartus对其进行仿真。3. 下载调试利用 Quartus的Programmer 将编译好的pof 文件下载到 EPM240 当中。下载完成后,按动按键,观察发光管的变化情况是否符合设计要求。4仿真波形二、综合设计实验 1、数码管动态显示2、交通灯控制器 3、LED点阵汉字显示*4、行列式键盘扫描*5、数字钟*6、数字频率计*7、数字密码锁*1、数码管动态显示一、实验目的熟悉数码管动态显示的原理,掌握编程实现动态显示的方法。二、实验平台微机一台(Windows XP 系统、安装Quartus等相关软件)、CPLD 学习板一块、5V 电源线一个、下载线一条。三、设计要求利用动态显示方式,在8 个数码管上依次显示 18。四、设计提示1. 设计方案动态显示原理:利用人眼的视觉暂留效应,依次点亮各个数码管,当速度达到一定程度后,人眼看到的效果就是8 个数码管同时显示的效果。具体显示过程是:将第一个数码管显示的段码输出,同时点亮第一个数码管,熄灭其余数码管;将第二个数码管显示的段码输出,同时点亮第二个数码管,熄灭其余数码管将第八个数码管显示的段码输出,同时点亮第八个数码管,熄灭其余数码管。循环进行上述步骤,调节扫描时钟的频率,就可利用人眼的视觉暂留效应,达到八个数码管同时显示的效果。2硬件连接图如图所示。将2 个4 位数码管的8 个段对应连在一起,然后将8 个段控和8 个位控接到CPLD 的I/O 上。3. 软件设计(1)设计输入按照上述原理,基于VHDL 设计代码如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SEG_SWEEP isPORT( CLK: IN STD_LOGIC; SEGOUT: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); SELOUT: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END SEG_SWEEP ;ARCHITECTURE behave OF SEG_SWEEP ISSIGNAL Q: STD_LOGIC_VECTOR(2 DOWNTO 0); BEGINPROCESS (CLK)BeginIF(CLKEvent AND CLK=1) thenQ = Q+1;END IF;END PROCESS;with Q selectSELOUT =01111111 when 000,10111111 when 001,11011111 when 010,11101111 when 011,11110111 when 100,11111011 when 101,11111101 when 110,11111110 when 111;with Q selectSEGOUT = 1001111 when 000,0010010 when 001,0000110 when 010,1001100 when 011,0100100 when 100,0100000 when 101,0001111 when 110,0000000 when 111;END behave;(2)编译综合编译无误及引脚分配后,进行全编译。(3)仿真使用 Quartus对其进行仿真。3. 下载调试利用 Quartus的Programmer 将编译好的pof 文件下载到 EPM240 当中。下载完成后,观察数码管的显示情况是否符合设计要求。4.仿真波形在QuartusII软件环境下仿真,波形如图所示,结果正确。将程序下载到EP1C6中,给予适当时钟,数码管上正常显示相应的数字。2.交通灯控制器一、实验目的1、学习层次化设计方法。2、初步学会分析设计较为复杂的数字逻辑。二、实验平台微机一台(Windows XP 系统、安装Quartus等相关软件)、CPLD 学习板一块、5V 电源线一个、下载线一条。三、设计要求设计一个十字路口的交通灯控制器,东西方向的红灯,绿灯,黄灯亮的时间分别为50 秒,28 秒,2 秒;南北方向的红灯,绿灯,黄灯亮的时间分别为30 秒,48 秒,2 秒;四、设计提示1. 设计方案:交通灯控制器可分为两部分,一部分为状态机,其状态数可观察十字路口的交通灯变化情况获得,转移条件受时间控制;另一部分为定时器,为状态机提供时间信息。2硬件连接图用红、黄、绿四组发光管模拟十字路口的交通灯,一路时钟作为定时信号。3. 软件设计(1)输入设计文件按照设计提示设计并输入VHDL 源程序。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity jiao is port(res,clk: in std_logic; r1,g1,y1,r2,g2,y2: out std_logic; r3,g3,y3,r4,g4,y4: out std_logic);end jiao;architecture behave of jiao istype state is(s0,s1,s2,s3);signal S:state;signal Q:integer range 0 to 79;beginprocess(clk)beginif(clkevent and clk=1) thenif(Q=78) thenQ=Q+1;else Q=0;end if;if(res=0) thenr1=0;r2=0;r3=0;r4=0;g1=0;g2=0;g3=0;g4=0;y1=0;y2=0;y3=0;y4 if(Q=0 and Q=27) thenr1=1;r2=0;r3=1;r4=0;g1=0;g2=1;g3=0;g4=1;y1=0;y2=0;y3=0;y4=0; S=s0;else S if(Q=28 or Q=29) thenr1=1;r2=0;r3=1;r4=0;y1=0;y2=1;y3=0;y4=1;g1=0;g2=0;g3=0;g4=0; S=s1;else S if(Q=30 and Q=77) theng1=1;g2=0;g3=1;g4=0;r1=0;r2=1;r3=0;r4=1;y1=0;y2=0;y3=0;y4=0; S=s2;else S if(Q=78 or Q=79) theny1=1;y2=0;y3=1;y4=0;r1=0;r2=1;r3=0;r4=1;g1=0;g2=0;g3=0;g4=0; S=s3;else Sssss=s0; end case;i:=0;else i:=i+1; end if;end if;end process;process(clk,s,q)begin if(clkevent and clk=1) then qcase q iswhen0000=lie=0000000000000000;hanglie=0010000000000000;hanglie=0000101111111110;hanglie=0010010000100000;hanglie=0001000000100000;hanglie=0000100000100000;hanglie=0000010111111100;hanglie=0000000000100000;hanglie=0000000000100000;hanglie=0000010000100000;hangiie=0000100000100000;hanglie=0001011111111111;hanglie=0010000000000000;hanglie=0000000000000000;hanglie=0000000000000000;hangcase q is when0000=lie=0000000000000000;hanglie=0000000000000000;hanglie=0000100000010000;hanglie=0000100000010000;hanglie=0000100000010000;hanglie=1000100000010001;hanglie=0100100000010010;hanglie=0010100000010100;hanglie=0001100000011000;hanglie=0000100000010000;hanglie=0000100000010000;hanglie=0000100000010000;hanglie=1111111111111111;hanglie=0000000000000000;hanglie=0000000000000000;hanglie=0000000000000000;hangcase q iswhen0000=lie=0000000000000000;hanglie=0000100000000000;hanglie=0001000000000000;hanglie=0110000111111100;hanglie=0100000000000100;hanglie=0111100010000100;hanglie=0100000010000100;hanglie=0101000010010100;hanglie=0110000010001100;hanglie=0000000010000000;hanglie=0000000010000000;hanglie=0000000010000000;hanglie=0000000010000000;hanglie=0000000010000000;hanglie=0000000010000000;hanglie=0000000000000000;hang=0000000000000001;end case;end case;end if;end process;end a;(2)编译综合编译无误及引脚分配后,进行全编译。(3)仿真使用 Quartus对其进行仿真。3. 下载调试利用 Quartus的Programmer 将编译好的pof 文件下载到 EPM240 当中。下载完成后,观察LED 点阵显示是否满足设计要求。4.仿真波形 给予适当的扫描频率,点阵显示“仪电学院”。4.行列式键盘扫描逻辑(未验收)一、实验目的熟悉行列式键盘工作原理,掌握编程实现行列式键盘扫描的方法。二、实验平台微机一台(Windows XP 系统、安装Quartus等相关软件)、CPLD 学习板一块、5V 电源线一个、下载线一条。三、设计要求设计44 行列式键盘扫描电路,键码用数码管显示。四、设计提示1设计方案行列式键盘是较为常用的一种按键连接方式,其优点是可以节省I/O 资源。下面以44 行列式键盘为例说明其工作原理:将16 个按键按照图6.3 的方式连接,分别将4 根行线和4 根列线连接至CPLD 的I/O 口。对于CPLD 而言,行线为输出口,列线为输入口。列线对应的I/O口内部接上拉电阻。扫描时,将某一列行线置0,若该行无按键按下,则列线输入应该全部为1;若该行有健按下,则列线输入中会出现0,根据0 出现的位置结合行线就可以判断出哪个按键被按下。依次将各个行线置0,并检查列线输入,就可以实现对整个键盘的扫描。另外,检测到按键按下后,还需要进行去抖动处理,以消除干扰。上述过程可以用状态机实现。2.硬件连接图把16 个按键按照下图方式连接,然后将4 根行线和4 根列线分别连接至CPLD 的I/O 口即可。图为行列式键盘硬件连接图3. 软件设计(1)输入设计文件按照设计提示设计并输入VHDL 源程序。library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity scan isport(clk,clr:in std_logic; led: out std_logic; sin: in std_logic_vector(3 downto 0); a:buffer std_logic_vector(3 downto 0); sout: out std_logic_vector(3 downto 0);end scan;architecture behave of scan issignal s: integer range 0 to 3:=0;beginprocess(clk,s)beginif clkevent and clk=1 then if clr=1 then a =0000;led =0;s =0;elseif s3 then s=s+1;else s sout =0111;if sin=0111 then a =0111;led =1;elsif sin=1011 then a =1000;led =1;elsif sin=1101 then a =1001;led =1;elsif sin=1110 then a =1010;led =1;elsif sin=1111 and (a=0111 or a=1000 or a=1001 or a=1010) then led sout =1011;if sin=0111 then a =0100;led =1;elsif sin=1011 then a =0101;led =1;elsif sin=1101 then a =0110;led =1;elsif sin=1110 then a =1011;led =1;elsif sin=1111 and (a=0100 or a=0101 or a=0110 or a=1011) then led sout =1101;if sin=0111 then a =0001;led =1;elsif sin=1011 then a =0010;led =1;elsif sin=1101 then a =0011;led =1;elsif sin=1110 then a =1100;led =1;elsif sin=1111 and (a=0001 or a=0010 or a=0011 or a=1100) then led sout =1110;if sin=0111 then a =0000;led =1;elsif sin=1011 then a =1111;led =1;elsif sin=1101 then a =1110;led =1;elsif sin=1110 then a =1101;led =1;elsif sin=1111 and (a=0000 or a=1111 or a=1110 or a=1101) then led =0;end if;end case;end if;end if;end process;end behave;(2)编译综合编译无误及引脚分配后,进行全编译。(3)仿真使用 Quartus对其进行仿真。3. 下载调试利用 Quart
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年自考专业(计算机信息管理)考前冲刺练习试题含答案详解【培优B卷】
- 2025年邮政行业职业技能鉴定考前冲刺试卷含答案详解(突破训练)
- 乌海职业技术学院单招《职业适应性测试》自我提分评估有答案详解
- 2025年事业单位招聘复习提分资料含完整答案详解(夺冠)
- 2025年注册公用设备工程师考前冲刺测试卷附参考答案详解(满分必刷)
- 2023年度汽车技师职业鉴定考试历年机考真题集(培优)附答案详解
- 2024主管护师(中级)测试卷附答案详解【培优B卷】
- 2024-2025学年电梯考试试题预测试卷含答案详解(培优A卷)
- 2025计算机四级考前冲刺练习附完整答案详解【名师系列】
- 2024年临床执业医师预测复习及参考答案详解【达标题】
- 发电厂继电保护培训课件
- 校企“双元”合作探索开发轨道交通新型活页式、工作手册式教材
- 肺癌全程管理
- 2024年考研英语核心词汇
- 信息系统定期安全检查检查表和安全检查报告
- 钢筋混凝土污水管道施工工程施工组织设计方案
- 颅脑外伤患者的麻醉管理专家共识(2021版)
- 质量警示卡模板
- DZ∕T 0219-2006 滑坡防治工程设计与施工技术规范(正式版)
- 《马克思主义基本原理概论》试题库含答案(典型题)
- JJG 86-2011 标准玻璃浮计
评论
0/150
提交评论