实验 报告书
课程名称
数字电路与逻辑设计
专
业
计算机科学与技术
班
级
2
姓
名
刘
腾
飞
学
号
09030234
指导教师
王
丹
志
成
绩
2010年 年 11月 月 10 日
实验题目:
译码器、数据选择器及其应用
一、实验目的 1、掌握中规模集成译码器与数据选择器的逻辑功能与使用方法
2、熟悉数码管的使用 3、学习用数据选择器构成组合逻辑电路的方法 二 、实验原理 1 1 、中规模集成译码器 74 LS 138
74LS138是集成3线-8线译码器,在数字系统中应用比较广泛。图-1是其引脚排列。其中 A2 、A1 、A0为地址输入端, 0Y~ 7Y为译码输出端,S1、2S、3S为使能端。
图-1 74LS138真值表图-2如下:
图- 2 74HC138工作原理为:当S1=1,S— 2+S — 3=0时,器件使能,电路完成译码功能,输出低电平有效。当S=0,S— 2+S — 3=X时,或S1=1, S— 2+S — 3=1,译码器被禁止,所有输出同时为1 2 2 、双4 4 选1 1 数据选择器
74LS153 ?
所谓双4选1数据选择器就是在一块集成芯片上有两个4选1数据选择器。引脚排列如图-3所示,功能表如图-4所示。
图-3
输入 输出 S—
A1 A0 Q 1 0 0 0 0 X 0 0 1 1 X 0 1 0 1 0 D0 D1 D2 D3 图-4
1S— 、2S — 为两个独立的使能端;A1、A0为两个公用的地址输入端;1D0~1D3和2D0~2D3分别为两个4选1数据选择器的数据输入端;Q1、Q2为两个输出端。
当使能端1S— (2S — )=1时,多路开关被禁止,无输出,Q=0。
当使能端1S— (2S — )=0时,多路开关正常工作,根据地址码A1、A0的状态,将相应的数据D0~D3送到输出端Q。
3 3 、8 8 选1 1 数据选择器 74LS151
74LS151为互补输出的8选1数据选择器,引脚排列如图-5所示,功能表如图-6所示。
图-5
图-6 选择控制端(地址端)为A2~A0,按二进制译码,从8个输入数据D0~D7中,选择一个需要的数据送到输出端Q,S— 为使能端,低电平有效。
使能端S— =1时,不论A2~A0状态如何,均无输出,多路开关被禁止。
使能端S— =0时,多路开关正常工作,根据地址码A2、A1、A0的状态选择D0~D7中某一个通道的数据输送到输出端Q。
三 、实验设备及器件 ●
硬件:PC机一台 ●
软件:QuartusⅡ5.0集成开发环境 四、实验内容 1.使用74LS138实现逻辑函数 F=A’B’C’+AB’C’+ABC 2.使用74LS151实现逻辑函数 F=AB’+A’B+AB 3.使用74LS153实现逻辑函数 F=A’BC+AB’C+ABC’+ABC
五 、实 验过程 1、使用74LS138实现逻辑函数 F=A’B’C’+AB’C’+ABC ① 由74LS138功能表(图-1)可知电路图连接如图-7所示
图-7 ② 经编译检查无错(图-8)
图-8
③ 对其进行仿真,设置好一定仿真时间区域与输入波形后启动仿真器得仿真结果如图-9
图-9 2、使用74LS151实现逻辑函数F=AB’+A’B+AB
①将输入变量C、B、A作为8选1数据选择器的地址码A2、A1、A0。使8选1数据选择器的各个数据输入D0~D7分别与函数F的输出值一一对应,即A2A1A0=CBA、D0=D2=D3=0、D0=D4=D5=D6=D7=1则输出Q便实现了函数AB’+A’B+AB接线图如图-10
图-10 ②经编译检查无错(图-11)
图- 11 ③对其进行仿真,设置好一定仿真时间区域与输入波形后启动仿真器得仿真结果如图-12
图-12 3、使用74LS153实现逻辑函数 F=A’BC+AB’C+ABC’+ABC
①函数F有3个输入变量A、B、C,而数据选择器有2个地址端A1、A0少于数据函数输入变量个数,在设计时可任选A接A1,B接A0。接线如图-13
图-13
②经编译检查无错如图-14
图-14 ③对其进行仿真,设置好一定仿真时间区域与输入波形后启动仿真器得仿真结果如图-15
图-15 六 、实验心得 通过这次试验,我熟练掌握了74LS138译码器、74LS151和74LS153数据选择器的使用特点和方法。加强了对这些知识的了解,熟练掌握了QuartusⅡ5.0集成开发环境的使用。
第二次实验是Quartus11原理图输入法设计,由于是第一次使用Quartus11软件,实验中遇到了不少问题,总结起来主要有以下几个: (1)在创建工程并且编译通过之后得不到仿真波形
解决方法:经过仔细检查,发现在创建符号文件时,未对其重新命名,使得符号文件名与顶层文件的实体名一样。在改变符号文件名之后成功的得到了仿真波形。
(2) 得到的仿真波形过于紧密不便于观察
解决方法:重新对仿真域的时间进行设定,并且对输入信号的周期做相应的调整,最终得到了疏密有致的仿真波形。
实验总结及心得体会
通过本次实验我初步掌握了Quartus11的使用方法,并且熟悉了电路板的使用。在实验具体操作的过程中,对理论知识(半加器和全加器)也有了更近一步的理解,真正达到了理论指导实践,实践检验理论的目的。
实验操作中应特别注意的几点:
(1)刚开始创建工程时选择的目标芯片一定要与实验板上的芯片相对应。 (2)连接电路时要注意保证线与端口连接好,并且注意不要画到器件图形符号的虚线框里面。
(3)顶层文件的实体名只能有一个,而且注意符号文件不能与顶层文件的实体名相同。
(4)保存波形文件时,注意文件名必须与工程名一致,因为在多次为一个工程建立波形文件时,一定要注意保存时文件名要与工程名一致,否则不能得到正确的仿真结果。
(5)仿真时间区域的设定与输入波形周期的设定一定要协调,否则得到波形可能不便于观察或发生错误。
心得体会:刚接触使用一个新的软件,实验前一定要做好预习工作,在具体的实验操作过程中一定要细心,比如在引脚设定时一定要做到“对号入座”,曾经自己由于这一点没做好耗费了很多时间。实验中遇到的各种大小问题基本都是自己独立排查解决的,这对于自己独立解决问题的能力也是一个极大地提高和锻炼,总之这次实验我获益匪浅。
第三次实验是用
VHDL语言设计组合逻辑电路和时序逻辑电路,由于Quartus11软件在之前已经使用过,所以本实验的主要任务就是编写与实验要求相对应的VHDL程序。
总体来说此次实验比较顺利,基本没有遇到什么问题,但有几点需要特别注意。首先是要区分实体名称和结构体名,这一点是程序编写的关键。其次在时序逻辑电路的设计实验中时钟的设置很关键,设置不当的话仿真波形可能不正确。 通过本次实验我初步学会用VHDL语言编写一些简单的程序,同时也进一步熟悉了Quartus11软件的使用。
实验八
彩灯控制电路设计与实现
一、实验目的
1、进一步了解时序电路设计方法
2、熟悉状态机的设计方法
二、实验内容
用VHDL语言设计并实现一个彩灯控制(八个发光二极管)电路,仿真并下载验证其功能。彩灯有两种工作模式,可通过拨码开关或按键进行切换。
(1)单点移动模式:一个点在八个发光二极管上来回亮
(2)幕布式:从中间两个点,同时向两边依次点亮直至全亮,然后再向中间点灭,依次往复。
三、实验设计编码 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY shine IS PORT( clk,a:IN STD_LOGIC;
b:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)); END shine; ARCHITECTURE struc OF shine IS SIGNAL temp:INTEGER RANGE 0 TO 49999999; SIGNAL switch:STD_LOGIC_VECTOR(2 DOWNTO 0); SIGNAL clkout:STD_LOGIC; BEGIN PROCESS(clk) BEGIN IF(clk\\"event and clk=\\"1\\") THEN
IF temp=49999999 THEN
temp
ELSE temp
END IF;
IF temp=49999999 THEN
clkout
ELSE clkout
END IF; END IF; END PROCESS; PROCESS(clkout) BEGIN
IF(clkout\\"event and clkout=\\"1\\") THEN
switch
END IF; END PROCESS; PROCESS(a,switch) BEGIN
IF(a=\\"0\\") THEN
CASE switch IS
WHEN"0001" =>b
WHEN"0010" =>b
WHEN"0011" =>b
WHEN"0100" =>b
WHEN"0101" =>b
WHEN"0110" =>b
WHEN"0111" =>b
WHEN"1000" =>b
WHEN"1001" =>b
WHEN"1010" =>b
WHEN"1011" =>b
WHEN"1100" =>b
WHEN"1101" =>b
WHEN"1110" =>b
WHEN"1111" =>b
WHEN OTHERS =>b
END CASE;
ELSIF a=\\"1\\" THEN
CASE switch IS
WHEN"0001" =>b
WHEN"0010" =>b
WHEN"0011" =>b
WHEN"0100" =>b
WHEN"0101" =>b
WHEN"0110" =>b
WHEN"0111" =>b
WHEN"1000" =>b
WHEN"1001" =>b
WHEN"1010" =>b
WHEN"1011" =>b
WHEN"1100" =>b
WHEN"1101" =>b
WHEN"1110" =>b
WHEN"1111" =>b
WHEN OTHERS =>b
END CASE;
END IF;
END PROCESS; END struc; 此次实验的主要问题是分频器的设置,开始并未设置分频器,clk的频率为50MHz,这个频率过高,若直接用于提供时钟,不但不能看清现象,还会因为周期过短导致输出错误,在加了一个50M的分频器后,使作用的有效时钟信号为1Hz。
四、实验总结
回顾本学期的四次实验,我的收获颇丰,总结起来主要有以下几点。
首先通过这几次实验我掌握了Quarters11的使用,学会用VHDL语言编写一些简单的程序,实现简单计数器和译码器的功能。在实验的过程中我对书本上的理论知识有了更进一步的理解,如门电路的延迟对输出波形的影响、冒险现象的产生原因等,真正达到了理论指导实验,实验检验理论的目的。
其次通过这几次实验我深刻地意识到实验过程中注重细节的重要性。在Quartus11软件的使用过程中有很多细节需要注意,比如引脚锁定、输入变量的周期设置等。曾经自己就犯过一个错误------在引脚锁定之后没有让程序在运行一遍,导致仿真完全正确,但下载到实验板上却得不到正确的结果,因此而耗费了很多时间。还有一次是保存波形文件时的一时疏忽将其命名为conut10,而工程名是count10,就是这样一个小小的疏忽导致了自己怎么也得不到仿真波形。可以说这几次实验极大地磨练我细心认真的实验品质。
再次通过这几次实验我的动手能力和独立解决问题的能力也得到了不小的提高,实验中的很多问题只能是在实验的具体操作过程中才能发现的,这些在预习的过程中都是没有预想到的,都得自己临场解决。比如最后一次实验需要增加一个时钟分频器,预习的时候自己根本没有注意到这一点,都是自己在实验的过程中想办法解决的。另外通过这几次实验我对这种仿真型实验的设计思想也有一些体会,特别是用VHDL语言编写代码时,设计思想的简洁会给实验省去很多不便。
数字电路与逻辑设计实验总结报告
学院:电子工程
班级:2008211204
姓名:徐浩然
学号:08210999
范文大胆,锐利。
作者的水平还是那么高!