实验四、7段显示译码器_

实验四、7段显示译码器_
实验四、7段显示译码器_

EDA与VHDL语言课程

实验报告

实验名称:7段数码显示译码器设计班级:

学号:

实验日期:

实验名称7段数码显示译码器设计

一、实验目的

学习7段数码显示译码器设计;学习VHDL的CASE语句应用及多层次设计方法。

二、实验原理

7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD译码器,然而数字系统中的数据处理和运算都是二进制的,所以输出表达都是十六进制的,为了满足十六进制数的译码显示,最方便的方法就是利用译码程序在FPGA/CPLD中来实现。如下程序作为7段译码器,输出信号LED7S的7位分别接下图数码管的7个段,高位在左,低位在右。例:当LED7S 输出为“1101101”时,数码管的7个段g、f、e、d、c、b、a分别接1、1、0、1、1、0、1;接有高电平的段发光,于是数码管显示“5”。

实验原理图

三、实验内容及步骤

一、实验内容1

在Quartus II上对下面的程序进行编辑、编译、综合、适配、仿真,给出其所有信号的时序仿真波形。

1、程序文本

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY DECL7S IS

PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END;

ARCHITECTURE one OF DECL7S IS

BEGIN

PROCESS(A)

BEGIN

CASE A IS

WHEN "0000"=> LED7S <="0111111";

WHEN "0001"=> LED7S <="0000110";

WHEN "0010"=> LED7S <="1011011";

WHEN "0011"=> LED7S <="1001111";

WHEN "0100"=> LED7S <="1100110";

WHEN "0101"=> LED7S <="1101101";

WHEN "0110"=> LED7S <="1111101";

WHEN "0111"=> LED7S <="0000111";

WHEN "1000"=> LED7S <="1111111";

WHEN "1001"=> LED7S <="1101111";

WHEN "1010"=> LED7S <="1110111";

WHEN "1011"=> LED7S <="1111100";

WHEN "1100"=> LED7S <="0111001";

WHEN "1101"=> LED7S <="1011110";

WHEN "1110"=> LED7S <="1111001";

WHEN "1111"=> LED7S <="1110001";

WHEN OTHERS=> NULL;

END CASE;

END PROCESS;

END;

四、实验报告

用例化语句,按实验原理图的方式连接成顶层设计电路。图中cnt4是一个4位二进制加法计数器;模块DECL7S即为实验内容一实体。注:原理图tmp是4位总线,led是7位总线。选实验模式6,用数码8显示译码输出,时钟输入直接接时钟信号clock0,cout0接spker,EN0接键7,rst0接键6

1、cnt4文本输入

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY cnt4 IS

PORT(CLK,RST,EN:IN STD_LOGIC;

OUTY:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

COUT:OUT STD_LOGIC);

END ENTITY;

ARCHITECTURE bhv OF cnt4 IS

SIGNAL CQ1:STD_LOGIC_VECTOR(3 DOWNTO 0);

BEGIN

PROCESS(CLK)

BEGIN

IF RST='1' THEN CQ1<=(OTHERS => '0');

ELSIF CLK'EVENT AND CLK='1' THEN

IF EN='1' THEN

IF CQ1< 15THEN CQ1<=CQ1+1;

ELSE CQ1<=(OTHERS=>'0');

END IF;

END IF;

END IF;

IF CQ1=15 THEN COUT<='1';

ELSE COUT <='0';

END IF;

END PROCESS ;

OUTY<=CQ1;

END ARCHITECTURE bhv;

2、顶层文件LED_C文本输入

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

ENTITY LED_C IS

PORT (CLK0,RST0,EN0 : IN STD_LOGIC;

COUT0 : OUT STD_LOGIC);

LED:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));

END;

ARCHITECTURE bhv OF LED_C IS

SIGNAL tmp: STD_LOGIC_VECTOR (3 DOWNTO 0);

COMPONENT DECL7S

PORT (A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);

LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) );

END COMPONENT;

COMPONENT cnt4

PORT (CLK,RST,EN : IN STD_LOGIC;

OUTY : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

COUT : OUT STD_LOGIC);

END COMPONENT;

BEGIN

u1: DECL7S PORT MAP (A=>tmp,LED7S=>LED);

u2: cnt4 PORT MAP (CLK=>CLK0,RST=>RST0,EN=>EN0,OUTY=>tmp,COUT=>COUT0); END;

3、实验仿真波形

波形图1

波形图2

五、实验心得

学习了7段数码显示译码器设计,学习了VHDL的CASE语句应用及多层次设计方法。认真分析程序,弄清实验原理,做实验时耐心、认真,遇到问题争取自己解决。认真总结实验,分析波形,完成实验报告。

译码器和编码器实验

实验三译码器和编码器 一实验目的 1.掌握译码器、编码器的工作原理和特点。 2.熟悉常用译码器、编码器的逻辑功能和它们的典型应用。 二、实验原理和电路 按照逻辑功能的不同特点,常把数字电路分两大类:一类叫做组合逻辑电路,另一类称为时序逻辑电路。组合逻辑电路在任何时刻其输出的稳态值,仅决定于该时刻各个输入信号取值组合的电路。在这种电路中,输入信号作用以前电路所处的状态对输出信号无影响。通常,组合逻辑电路由门电路组成。 组合逻辑电路的分析方法:根据逻辑图进行二步工作: a.根据逻辑图,逐级写出函数表达式。 b.进行化简:用公式法、图形法或真值表进行化简、归纳。 组合逻辑电路的设计方法:就是从给定逻辑要求出发,求出逻辑图。一般分四步进行。 a.分析要求;将问题分析清楚,理清哪些是输入变量,哪些是输出函数。 b.列真值表。 c.进行化简:变量比较少时,用图形法。变量多时,可用公式化简。 d.画逻辑图:按函数要求画逻辑图。 进行前四步工作,设计已基本完成,但还需选择元件——集成电路,进行实验论证。 值得注意的是,这些步骤并不是固定不变的程序,实际设计时,应根据具体情况和问题难易程度进行取舍。 1.译码器 译码器是组合电路的一部分,所谓译码,就是把代码的特定含义“翻译”出来的过程,而实现译码操作的电路称为译码器。译码器分成三类: a.二进制译码器:如中规模2—4线译码器74LS139。,3—8线译码器74LS138等。 b.二—十进制译码器:实现各种代码之间的转换,如BCD码—十进制译码器74LS145等。 c.显示译码器:用来驱动各种数字显示器,如共阴数码管译码驱动74LS48,(74LS248),共阳数码管译码驱动74LS47(74LS247)等。 2.编码器 编码器也是组合电路的一部分。编码器就是实现编码操作的电路,编码实际上是译码相反的过程。按照被编码信号的不同特点和要求,编码器也分成三类: a.二进制编码器:如用门电路构成的4—2线,8—3线编码器等。 b.二—十进制编码器:将十进制的0~9编成BCD码,如:10线十进制—4线BCD码编码器74LS147等。 c.优先编码器:如8—3线优先编码器74LS148等。 三、实验内容及步骤 1.译码器实验 (1)将二进制2-4线译码器74LS139,及二进制3-8译码器74LS138分别插入实验系统IC 空插座中。 按图1.3.1接线,输入G、A、B信号(开关开为“1”、关为“0”),观察LED输出Yo、Y1、Y2、Y3的状态(亮为“1”,灭为“0”),并将结果填入表1.3.1中。

译码器实验报告

译码器实验报告 一、实验目的 1、掌握中规模集成译码器的逻辑功能和使用方法 2、熟悉数码管的使用 二、实验原理 译码器是一个多输入、多输出的组合逻辑电路。它的作用是把给定的代码进行“翻译”,变成相应的状态,使输出通道中相应的一路有信号输出。译码器在数字系统中有广泛的用途,不仅用于代码的转换、终端的数字显示,还用于数据分配,存贮器寻址和组合控制信号等。不同的功能可选用不同种类的译码器。 译码器可分为通用译码器和显示译码器两大类。前者又分为变量译码器和代码变换译码器。 变量译码器(又称二进制译码器),用以表示输入变量的状态,如2线-4线、3线-8线和4线-16线译码器。若有n个输入变量,则有2n个不同的组合状态,就有2n个输出端供其使用。而每一个输出所

代表的函数对应于n个输入变量的最小项。 三、实验设备与器件 1.+5V直流电源 2.单次脉冲源 3.逻辑电平开关 4.74LS138 四、实验内容及步骤 1.74LS138译码器逻辑功能测试 将译码器使能端STA、STB、STC与地址端A2、A1、A0分别接到逻辑电平开关输入口,八个输出端Y7…Y0依次连接在十六位逻辑电平显示上,拨动逻辑电平开关,逐项测试74LS138的逻辑功能。2.实验箱电源连接正确,电路自查确定无误后,电路验证还是不正确的情况下进行下面的排错检查:

1)检查芯片的电源和地的电平是否正确。 2)芯片的使能端连接的电平正确。 3)从逻辑电平开关输入信号是否正确。 4)从输出端按逻辑功能状态往前一步一步排查。 3.两片3线-8线译码器74LS138扩展为4线-16线译码器 用两片74LS138组合成一个四线-十六线译码器进行实验,并分析逻辑功能。

数字电路译码器实验报告

一、实验目的与要求 1.了解和正确使用MSI组合逻辑部件; 2.掌握一般组合逻辑电路的特点及分析、设计方法; 3. 学会对所设计的电路进行静态功能测试的方法; 4. 观察组合逻辑电路的竞争冒险现象。 预习要求: (1)复习组合逻辑电路的分析与设计方法; (2)根据任务要求设计电路,并拟定试验方法; (3)熟悉所用芯片的逻辑功能、引脚功能和参数; (4)了解组合逻辑电路中竞争冒险现象的原因及消除方法。 (5)二、实验说明 译码器是组合逻辑电路的一部分。所谓译码就是不代码的特定含义“翻译”出来的过程,而实现译码操作的电路称为译码器。译码器分成三类: 1.二进制译码器:把二进制代码的各种状态,按照其原意翻译成对应输出信号的电路。如中规模2线—4线译码器74LS139,3线—8线译码器74LS138等。 2.二—十进制译码器:把输入BCC码的十个代码译成十个高、低电平信号。 3.字符显示译码器:把数字、文字和符号的二进制编码翻译成人们习惯的形式并直观地显示出来的电路,如共阴极数码管译码驱动的74LS48(74LS248),共阳极数码管译码驱动的74LS49(74LS249)等。 三、实验设备 1.RXB-1B数字电路实验箱 2.器件 74LS00 四2输入与非门 74LS20 双4输入与非门 74LS138 3线—8线译码器 四、任务与步骤 任务一:测试3线—8线译码器74LS138逻辑功能 将一片3线—8线译码器74LS138插入RXB-1B数字电路实验箱的IC空插座中,按图3-15接线。A0、A1、A2、STA、STB、STC端是输入端,分别接至数字电路实验箱的任意6个电平开关。Y7、Y6、Y5、Y4、Y3、Y2、Y1、Y0输出端,分别接至数字电路实验箱的电平显示器的任意8个发光二极管的插孔8号引脚地接至RXB—IB型数字电路实验箱的电源“ ”,16号引脚+5V接至RXB-1B数字电路实验箱的电源“+5V”。按表3-2中输入值设置电平开关状态,观察发光二极管(简称LED)的状态,并将结果填入表中。 根据实验数据归纳出74LS138芯片的功能。 表3-2 3线-8线译码器74LS138功能表

七段数码显示译码器电路的设计

WHEN "1001" => LED7s <="1101111"; WHEN "1010" => LED7s <="1110111"; WHEN "1011" => LED7s <="1111100"; WHEN "1100" => LED7s <="0111001"; WHEN "1101" => LED7s <="1011110"; WHEN "1110" => LED7s <="1111001"; WHEN "1111" => LED7s <="1110001"; WHEN OTHERS => NULL; END CASE; END PROCESS; END; 在完成源程序的编辑后,执行”Processing”菜单下的“Start Compilation”命令,对DECL7s.vhd进行编译。在完成对源文件的编译后,执行“File”菜单的“New”命令,或者直接按主窗口上的“创建新的文本文件”按钮,在弹出的新文件类型选择对话框中,选择“Vector Waveform File”生成仿真文件。 对引脚进行锁定。执行”Assignments”菜单下的“Pins”命令,根据下图进行引脚设置。 用电缆连接电脑与设备箱,执行”Tools”菜单下的“Programmer”命令,在弹出的对话框中,单击“Hardware Setup”并在新弹出的对话框中选择驱动,然后退出至上一层对话框,单击“Start”进行下载烧录。 【实验数据整理与归纳】

DECL7s11.vhd 实际效果图 DECL7s11.vwf 【实验结果与分析】 计数译码系统电路的仿真波形如图DECL7s.vwf所示,键值为"0000"时,数码管显示数值应为"0";键值为"0001"时,数码管显示数值应为"1",依此类推。仿真结果验证了设计的正确性。而实际情况与仿真结果相吻合。 【实验中遇到的问题及解决方案】 1.驱动安装失败。 解决方案:根据老师发的教程,更换别的方法进行安装。 2.虽然数码管显示数值正确,但对应按键与想象的有出入。 解决方案:经排查发现是管脚分配时颠倒了顺序导致的,按键时亦随之颠倒顺序即可。

实验三 3-8译码器的功能测试及仿真

实验三3-8译码器功能测试及仿真 一、实验目的 1、掌握中规模集成3-8译码器的逻辑功能和使用方法。 2、进一步掌握VHDL语言的设计。 二、预习要求 复习有关译码器的原理。 三、实验仪器和设备 1.数字电子技术实验台1台 2.数字万用表1块 3.导线若干 4.MUX PLUSII软件 5.74LS138集成块若干 四、实验原理 译码器是一个多输入、多输出的组合逻辑电路。它的作用是把给定的代码进行“翻译”,变成相应的状态,使输出通道中相应的一路有信号输出。译码器在数字系统中有广泛的用途,不仅用于代码的转换、终端的数字显示,还用于数据分配,存贮器寻址和组合控制信号等。不同的功能可选用不同种类的译码器。 译码器分为通用译码器和显示译码器两大类。前者又分为变量译码器和代码变换译码器。 1.变量译码器(又称二进制译码器) 用以表示输入变量的状态,如2线-4线、3线-8线和4线-16线译码器。若有n个输入变量,则有2n个不同的组合状态,就有2n个输出端供其使用。而每一个输出所代表的函数对应于n个输入变量的最小项。 以3线-8线译码器74LS138为例进行分析,下图(a)、(b)分别为其逻辑图及引脚排列。其中 A2、A1、A0为地址输入端,0Y~7Y为译码输出端,S1、2S、3S为使能端。下表为74LS138功能表,当S1=1,2S+3S=0时,器件使能,地址码所指定的输出端有信号(为0)输出,其它所有输出端均无信号(全为1)输出。当S1=0,2S+3S=X时,或 S1=X,2S+3S=1时,译码器被禁止,所有输出同时为1。

3-8线译码器74LS138逻辑图及引脚排列图 74LS138功能表 二进制译码器实际上也是负脉冲输出的脉冲分配器。若利用使能端中的一个输入端输入数据信息,器件就成为一个数据分配器(又称多路分配器),如图3-2所示。若在S1输入 端输入数据信息,2S=3S=0,地址码所对应的输出是S1数据信息的反码;若从2S端输入数据信息,令S1=1、3S=0,地址码所对应的输出就是2S端数据信息的原码。若数据信息是时钟脉冲,则数据分配器便成为时钟脉冲分配器。 根据输入地址的不同组合译出唯一地址,故可用作地址译码器。接成多路分配器,可

编码器和译码器实验报告

译码器、编码器及其应用 一、实验目的 (1) 掌握中规模集成译码器的逻辑功能和使用方法; (2) 熟悉掌握集成译码器和编码器的应用; (3) 掌握集成译码器的扩展方法。 二、实验设备 数字电路实验箱,74LS20,74LS138。 三、实验内容 (1) 74LS138译码器逻辑功能的测试。将74LS138输出??接数字实验箱LED 管,地址输入接实验箱开关,使能端接固定电平(或GND)。电路图如Figure 1所示: Figure 2 ??????????????时,任意拨动开关,观察LED显示状态,记录观察结果。 ??????????????时,按二进制顺序拨动开关,观察LED显示状态,并与功能表对照,记录观察结果。 用Multisim进行仿真,电路如Figure 3所示。将结果与上面实验结果对照。

Figure 4 (2) 利用3-8译码器74LS138和与非门74LS20实现函数: ?? 四输入与非门74LS20的管脚图如下: 对函数表达式进行化简: ?? ?? A ? ??????????? ???? 按Figure 5所示的电路连接。并用Multisim进行仿真,将结果对比。 Figure 6

(3) 用两片74LS138组成4-16线译码器。 因为要用两片3-8实现4-16译码器,输出端子数目刚好够用。 而输入端只有 A、、三个,故要另用使能端进行片选使两片138译码器 进行分时工作。而实验台上的小灯泡不够用,故只用一个灯泡,而用连接灯泡的导线测试?,在各端子上移动即可。在multisim中仿真电路连接如Figure 7所示(实验台上的电路没有接下面的两个8灯LED): Figure 8 四、实验结果 (1) 74LS138译码器逻辑功能的测试。 当输入 A时,应该是输出低电平,故应该第一个小灯亮。实际用实验台测试时,LE0灯显示如Figure 9所示。当输入 A时,应该是输出低电平,故理论上应该第二个小灯亮。实际用实验台测试时,LE0灯显示如Figure 6所示。 Figure 10

实验一 七段数码显示译码器

实验一七段数码显示译码器 一、实验目的 1.学会的破解quartusII方法并破解机房电脑。 2.掌握七段数码管显示的工作原理并能够用verilog语言编程。 3.初步了解quartusII建立程序编译、仿真及下载的操作流程并学会七段数码显示译码器的 Verilog硬件设计。 二、实验原理 7段数码管是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能做十进制BCD译码,然而数字系统中的处理和运算都是二进制,所以输出表达都是十六进制的,为了满足十六进制数的译码显示,最方便的方法就是利用译码程序在FPGA/CPLD中来实现。本实验中的7段译码管输出信号LED7S的7位分别接数码管的7个段,高位在左,低位在右 三、实验内容 1、实现BCD/七段显示译码器的“ Verilog ”语言设计。 说明:7段显示译码器的输入为:IN0…IN3共4根, 7段译码器的逻辑表,同学自行设计,要求实现功能为:输入“ 0…15 ”(二进制)输出“ 0…9…F ”(显示数码),输出结果应在数码管(共阴)上显示出来。 2、使用工具为译码器建立一个元件符号 3、设计仿真文件,进行验证。 4、编程下载并在实验箱上进行验证。 四、实验步骤 第一步破解quartusII 1.在安装目录找到本机中关于quartusII的证书文件 2.运行未破解的quartusII,在【tools】>【license setup】路径下的倒数第三行中找到本机 网卡号并复制; 3.以记事本方式打开证书文件,在编辑替换中将证书文件中host id后面的号码替换为上一 步复制的内容,保存退出; 4.在quartusII中打开【tools】>【license setup】中找到证书所在路径并打开单击ok即完成 破解。 证书所在目录license setup选项

VHDL语言设计七段示波译码器

课程: 数字逻辑与数字系统BCD-七段译码示波器实验报告 系:电子信息与计算机科学系 专业:自动化 班级:文自112—2班 姓名:桑*超 学号: 2011905192** 指导教师:徐红霞 学年学期:2012-2013学年(第一学期) 2012年12月19日

姓名: 桑*超班级: 文自112-2班学号: 2011905192** 试验: VHDL语言设计日期:2012.12.19 指导老师: 徐洪霞 一、实验报告的名称: VHDL语言设计BCD-七段译码示波器 二、本次实验的目的: 1.掌握VHDL 语言的设计技巧 2.用VHDL语言设计BCD-七段译码示波器 三、设计过程: 1.工程编译源:用VHDL语言编程。 2.功能仿真:将功能编译后的结果进行仿真。 3.引脚锁定:将个信号按要求分配到相应引脚. 4.物理实现:将结果下载到所悬着的器件中 四、写出源程序,画出防真波形图. 例化后: 显示器: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity v_deco74 is port( num : in std_logic_vector(3 downto 0); b : out std_logic_vector(6 downto 0)); end v_deco74; architecture one of v_deco74 is begin process(num)

begin case a is when "0000"=>b<="1111110"; when "0001"=>b<="0110000"; when "0010"=>b<="1101101"; when "0011"=>b<="1111001"; when "0100"=>b<="0110011"; when "0101"=>b<="1011011"; when "0110"=>b<="1011111"; when "0111"=>b<="1110000"; when "1000"=>b<="1111111"; when "1001"=>b<="1111011"; when others =>b<="XXXXXXX"; end case; end process; end one; 五、实验总结,主要包括实验中所犯错误,怎样改正等 1.在文件名必须与VHDL文件中的设计实体名保持一致。 2.要记住七段示波译码器是共阴极的. 3.要知道七段示波译码器的a、b、c、d、e、f段分别所对应的位置

实验三译码器及其应用、数据选择器及其应用

实验三译码器及其应用、数据选择器及其应用 一、实验目的 1 ?掌握采用中规模集成器件进行组合逻辑电路设计、电路连接及测试的方法. 2 ?用实验验证所设计电路的逻辑功能. 二、实验设备与器件 1.电子学实验装置 2.集成块74LS20、74LS00、74LS138、74LS151、74LS153。 三、实验原理 中规模集成器件多数是专用的功能器件,具有某种特定的逻辑功能,采用这些功能器件实现组合逻辑函数,基本 方法是采用逻辑函数对比法. 中规模集成器件多数都带有控制端(片选端),例如译码器74LS138有三个附加控制端S B、S C和S A,当S A=1、 S B= S C =0时,译码器才被选通工作,否则,译码器被禁止,所有的输出端被封锁在高电平?利用片选可将多片连接 起来以扩展译码器的功能. 在一般情况下,使用译码器和附加的门电路实现多输出逻辑函数较方便,使用数据选择器实现单输出逻辑函数较方便,当逻辑函数输出为输入变量相加时,则采用全加器实现较为方便. 1 ?译码器 一个n变量的译码器的输出包含了n变量的所有最小项.例如3线/8线译码器(74LS138)的8个输出包含了3个变 量的全部最小项的译码?参见模拟电子技术基础教材中3线/8线译码器功能表. 用n变量译码器加上输出与非门电路,就能获得任何形式的输入变量不大于n的组合逻辑电路. 2 ?数据选择器 一个n个地址端的数据选择器, 具有2n个数据选择的功能.例如,数据选择器74LS151, n=3,可完成八选一的功能?参见附录中八选一数据选择器(74LS151)的真值表.由真值表可写出: 丫A2AA0D0 A2AA0D1A 2 Al A o D 2 A? A1A0D 3 A2A A0D 4 A2A A0D 5 A2 A A) A2AA0D7 数据选择器又称多路开关,其功能是把多路并行传输数据选通一路送到输出线上. 四、实验内容 1 ?三输入变量译码器功能测试 地址输入端AA1A0是一组三位二进制代码,其中A权最高,A o权最低,按实验电路图3-1接线,将实验结果填入

哈夫曼编码译码器实验报告免费

哈夫曼编码译码器实验报告(免费)

————————————————————————————————作者:————————————————————————————————日期:

问题解析与解题方法 问题分析: 设计一个哈夫曼编码、译码系统。对一个ASCII编码的文本文件中的字符进行哈夫曼编码,生成编码文件;反过来,可将编码文件译码还原为一个文本文件。 (1)从文件中读入任意一篇英文短文(文件为ASCII编码,扩展名为txt); (2)统计并输出不同字符在文章中出现的频率(空格、换行、标点等也按字符处理);(3)根据字符频率构造哈夫曼树,并给出每个字符的哈夫曼编码; (4)将文本文件利用哈夫曼树进行编码,存储成压缩文件(编码文件后缀名.huf)(5)用哈夫曼编码来存储文件,并和输入文本文件大小进行比较,计算文件压缩率;(6)进行译码,将huf文件译码为ASCII编码的txt文件,与原txt文件进行比较。 根据上述过程可以知道该编码译码器的关键在于字符统计和哈夫曼树的创建以及解码。 哈夫曼树的理论创建过程如下: 一、构成初始集合 对给定的n个权值{W1,W2,W3,...,Wi,...,Wn}构成n棵二叉树的初始集合 F={T1,T2,T3,...,Ti,...,Tn},其中每棵二叉树Ti中只有一个权值为Wi的根结 点,它的左右子树均为空。 二、选取左右子树 在F中选取两棵根结点权值最小的树作为新构造的二叉树的左右子树,新二 叉树的根结点的权值为其左右子树的根结点的权值之和。 三、删除左右子树 从F中删除这两棵树,并把这棵新的二叉树同样以升序排列加入到集合F中。 四、重复二和三两步, 重复二和三两步,直到集合F中只有一棵二叉树为止。 因此,有如下分析: 1.我们需要一个功能函数对ASCII码的初始化并需要一个数组来保存它们; 2.定义代表森林的数组,在创建哈夫曼树的过程当中保存被选中的字符,即给定报文 中出现的字符,模拟哈夫曼树选取和删除左右子树的过程; 3.自底而上地创建哈夫曼树,保存根的地址和每个叶节点的地址,即字符的地址,然 后自底而上检索,首尾对换调整为哈夫曼树实现哈弗曼编码; 4.从哈弗曼编码文件当中读入字符,根据当前字符为0或者1的状况访问左子树或者 右孩子,实现解码; 5.使用文件读写操作哈夫曼编码和解码结果的写入; 解题方法: 结构体、数组、类的定义: 1.定义结构体类型的signode 作为哈夫曼树的节点,定义结构体类型的hufnode 作为

七段译码器显示电路

数字显示译码器 在数字系统中,常需要将数字、文字或符号等直观地显示出来。能够显示数字、文字或符号的器件称为显示器。数字电路中的数字量都是以一定的代码形式出现的,所以这些数字量要先经过译码,才能送到显示器去显示。这种能把数字量翻译成数字显示器所能识别的信号的译码器为数字显示译码器。 数字显示器有多种类型。按显示方式分,有字型重叠式、点阵式、分段式等。按发光物质分,有半导体显示器,又称发光二极管(LED)显示器、荧光显示器、液晶显示器、气体放电管显示器等。目前应用较广泛的是由发光二极管构成的七段数字显示器。 ①七段数字显示器 图6-53为发光二极管构成的七段数字显示器。它是将七个发光二极管(小数点也是一个发光二极管,共八个)按一定的方式排列起来,七段a、b、c、d、e、f、g(小数点DP)各对应一个发光二极管,利用不同发光段的组合,显示不同的阿拉伯数字。 (a)(b) 图6-53 七段数字显示器 (a)数字显示器(b)显示的数字 根据七个发光二极管的连接形式不同,七段数字显示器分为共阴极和共阳极接法两种。 (a)(b) 图6-54 七段数字显示器的内部接法 (a)共阳极(b)共阴极 图6-54(a)是共阳极接法,它是将七个发光二极管的阳极连在一起作公共端,使用时要接高电平。发光二极管的阴极经过限流电阻接到输出低电平有效的七段译码器相应的输出端。 图6-54(b)所示是共阴极接法,它是将七个发光二极管的阴极连在一起作公共端,使用时要接低电平。发光二极管的阳极经过限流电阻接到输出高电平有效的七段译码器相应的输出端。 改变限流电阻的阻值,可改变发光二极管电流的大小,从而控制显示器的发

BCD七段显示译码器的设计报告

实验二、BCD七段显示译码器的设计 一、实验目的 学习利用VHDL语言设计BCD七段显示译码器的方法,掌握BCD七段显示译码器的设计思路:掌握软件工具的使用方法。 二、实验原理 三、实验内容 1.用VHDL语言设计BCD七段显示译码器,进行编译、波形仿真及器件编程。(代码一详见附录)产生仿真波形如下:

BCD七段显示译码器仿真1 分析: 问:给定的代码驱动的是共阴极还是共阳极的七段数码管显示器? 由BCD七段显示译码器真值表可知是共阴极七段数码管显示器。 2.用VHDL语言设计3-8译码器,进行编译、波形仿真及器件编程。(代码二详 见附录)产生仿真波形如下:

3-8译码器仿真1 四、实验心得 在实验中,通过BCD七段显示译码器真值表真值表得到BCD七段显示译码器case 代码。同理通过8-3译码器真值表修改BCD七段显示译码器case代码得到8-3译码器case代码。 附录 代码一(BCD七段显示译码器代码): library ieee; use ieee.std_logic_1164.all; entity bcdym is port (a:in std_logic_vector(3 downto 0); y:out std_logic_vector(6 downto 0)); end bcdym; architecture zhang of bcdym is begin process(a) begin case a is when"0000"=>y<="0111111"; when"0001"=>y<="0000110";

when"0010"=>y<="1011011"; when"0011"=>y<="1001111"; when"0100"=>y<="1100110"; when"0101"=>y<="1101101"; when"0110"=>y<="1111101"; when"0111"=>y<="0100111"; when"1000"=>y<="1111111"; when"1001"=>y<="1101111"; when"1010"=>y<="1110111"; when"1011"=>y<="1111100"; when"1100"=>y<="0111001"; when"1101"=>y<="1011110"; when"1110"=>y<="1111001"; when others=>y<="1110001"; end case; end process; end zhang; 代码二(8-3译码器代码):library ieee; use ieee.std_logic_1164.all; entity bm3_8 is port(a:in std_logic_vector(0 to 2); b:out std_logic_vector(0 to 7)); end bm3_8; architecture zhang of bm3_8 is begin process(a) begin case a is when"000"=>b<="00000001"; when"001"=>b<="00000010"; when"010"=>b<="00000100"; when"011"=>b<="00001000"; when"100"=>b<="00010000"; when"101"=>b<="00100000"; when"110"=>b<="01000000"; when others =>b<="10000000"; end case; end process; end zhang;

EDA实验-- 译码器与编码器的设计与仿真

实验三译码器与编码器的设计与仿真 一、实验目的: 熟悉Quartus软件的基本操作,掌握用Quartus软件验证VHDL语言。熟悉译码器与编码器所实现功能及其应用,通过实验堆译码器与编码器有更深刻理解。一、实验内容: 1.参照芯片74LS138的电路结构,用逻辑图和VHDL语言设计3-8译码器;2.参照芯片74LS148的电路结构,用逻辑图和VHDL语言设计8-3优先编码器。 三、实验原理: 电路功能介绍 1.74148:8-3优先编码器(8 to 3 Priority Encoder) 用途:将各种输入信号转换成一组二进制代码,使得计算机可以识别这一信号的作用。键盘里就有大家天天打交道的编码器,当你敲击按键时,被敲击的按键被键盘里的编码器编码成计算机能够识别的ASCII码。译码器与编码器的功能正好相反。 逻辑框图 逻辑功能表

逻辑表达式和逻辑图:由你来完成。 2.74138:3-8译码器(3 to 8 Demultiplexer ),也叫3-8解码器 用途:用一组二进制代码来产生各种独立的输出信号,这种输 出信号可以用来执行不同的工作。显示器中的像素点受到译码器的输出控制。 逻辑框图:用逻辑符号(Symbol )来解释该电路输入与输出信号 之间的逻辑关系,既省事又直观。如下图所示。 逻辑功能表:用真值表来定量描述该电路的逻辑功能。这个表 是设计3-8译码器的关键;74138的逻辑功能表如下: 代码输入端 解码信号输出端 低电平有效 使能输入端

注:使能端G1是高电平有效; 使能端G2是低电平有效,G2 = G2A AND G2B。 四、实验步骤: 1、译码器: (1)在Quartus软件中输入以下程序: library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity lbz3 is port (A : in std_logic_vector(2 downto 0); Y : out std_logic_vector(7 downto 0)); end lbz3; architecture art of lbz3 is begin Y<="10000000" when(A="111")else "01000000" when(A="110")else "00100000" when(A="101")else "00010000" when(A="100")else "00001000" when(A="011")else "00000100" when(A="010")else "00000010" when(A="001")else "00000001"; end art; 在Quartus中对程序进行编译如下所示:

实验三---译码器及其应用实验报告

实验三译码器及其应用 一、实验目的 (1) 掌握中规模集成译码器的逻辑功能和使用方法; (2) 熟悉掌握集成译码器的应用; (3) 掌握集成译码器的扩展方法。 二、实验设备 数字电路实验箱,电脑一台,74LS20,74LS138。 三、实验内容 (1)利用3-8译码器74LS138和与非门74LS20实现函数: 四输入与非门74LS20的管脚图如下: 对函数表达式进行化简: 按Figure 1所示的电路连接。并用Multisim进行仿真,将结果对比。

Figure 1 (2) 用两片74LS138组成4-16线译码器。 因为要用两片3-8实现4-16译码器,输出端子数目刚好够用。 导线测试,在各端子上移动即可。在multisim中仿真电路连接如Figure 2所示(实 验台上的电路没有接下面的两个8灯LED): Figure 2 四、实验结果 (1) 利用3-8译码器74LS138和与非门74LS20实现函数。

输入,由可知,小灯应该亮。测试结果如Figure 1所示。输入,分析知小灯应该灭,测试结果如Figure 2所示。输入 ,分析知小灯应该亮,测试结果如Figure 3所示。 Figure 4 Figure 5

Figure 6 同理测试,得到结果列为下面的真值表: A B C Y 0 0 0 1 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 1 1 0 1 0 1 1 0 0 1 1 1 1 与所要实现的逻辑功能相一致。 (2) 用两片74LS138组成4-16线译码器。 进行测试,得到的结果列为真值表如下: G1 A B C 1 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1

十六进制七段数码显示译码器

十六进制七段数码显示译码器 一、实验目的:学习7段数码显示器的Verilog硬件设计。 二、实验原理:7段数码显示器是纯组合电路。通常的小规模专用IC,如74 或4000系列的器件只能做十进制BCD码译码器(其真值表如图(1)所示),然而数字系统中的数据处理和运算都是二进制的,所以输出表达式都是十六进制的,为了满足十六进制的译码显示,最方便的方法就是利用Verilog译码程序在FPGA/CPLD中来实现。所以首先要设计一段程序。设输入的4位码为A[3:0],输出控制7段共阴数码管(如图(2)所示)的7位数据为LED7S[6:0]。输出信号LED7S的7位接共阴数码管的7个段,高位在左,低位在右。例如当LED7S输出为“1101101”时,数码管7个段g、f、e、d、c、b、a分别接1、1、0、1、1、0、1;接有高电平的段发亮,于是数码管显示“5”。这里没有考虑表示小数点的发光管,如果要考虑,需要增加段h,然后将LED7S改为8位输出。 图(2)7段共阴数码管 三、实验任务:将设计好的Verilog译码器程序在Quartus II上进行编辑、 编译、综合、适配、仿真,给出其所有信号的时序仿真波形图(注意仿真波形输入激励信号的设置)。提示:设定仿真激励信号是用输入总线的方式给出输入信

号的仿真数据。 四、实验步骤: (一)、建立工作库文件和编辑设计文文件 任何一项设计都是一项Project(工程),而把一个工程下的所有文件放在一个文件夹内是一个非常好的习惯,以便于我们整理,利用和提取不同工程下的文件,而此文件夹将被EDA软件默认为Work Library(工作库),所以第一步先根据自己的习惯,建立个新的文件夹。 (1)新建文件夹:我的习惯在D盘建立并保存工程,我将文件夹取名Test, (2)输入源程序:打开Quartus II,选择菜单File-->New-->Design Files-->VerilogHDL File-->OK(如图1所示) 代码如下: module DECL7S(A,LED7S); input[3:0] A; output[6:0] LED7S; reg[6:0] LED7S; always@(A ) case(A) 4'b0000 :LED7S<=7'b0111111; 4'b0001 :LED7S<=7'b0000110; 4'b0010 :LED7S<=7'b1011011; 4'b0011 :LED7S<=7'b1001111; 4'b0100 :LED7S<=7'b1100110; 4'b0101 :LED7S<=7'b1101101; 4'b0110 :LED7S<=7'b1111101; 4'b0111 :LED7S<=7'b0000111; 4'b1000 :LED7S<=7'b1111111; 4'b1001 :LED7S<=7'b1101111; 4'b1010 :LED7S<=7'b1110111;

七段数码显示译码器设计

七段数码显示译码器设计 实验目的: 学习7段数码显示译码器设计,学习VHD啲多层次设计方法。 二、实验原理: 七段数码管由8个(a,b,c,d,e,f,g,dp )按照一定位置排列的发光二极管构成, 通常采取共阴极或者共阳极的设计,将8个二极管的同一极接在一起,通过分别控制另外的8个电极的电平,使二极管导通(发光)或截止(不发光)。 七段数码显示译码器的功能就是根据需要显示的字符,输出能够控制七段数 码管显示出该字符的编码。 三、实验内容: 1)用VHDL设计7段数码管显示译码电路,并在VHDL苗述的测试平台下对译码器进行功能仿真,给出仿真的波形。 CNT46 DECL7S A[.iu . 0] LED??[4B . ay rstG ObiitCl 程序: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY SMG IS PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0); LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END; ARCHITECTURE ONE OF SMG IS BEGIN PROCESS(A) BEGIN

CASE A IS WHEN"0000"=>LED7S<="0111111"; WHEN"0001"=>LED7S<="0000110"; WHEN"0010"=>LED7S<="1011011"; WHEN"0011"=>LED7S<="1001111"; WHEN"0100"=>LED7S<="1100110"; WHEN"0101"=>LED7S<="1101101"; WHEN"0110"=>LED7S<="1111101"; WHEN"0111"=>LED7S<="0000111"; WHEN"1000"=>LED7S<="1111111"; WHEN"1001"=>LED7S<="1101111"; WHEN"1010"=>LED7S<="1110111"; WHEN"1011"=>LED7S<="1111100"; WHEN"1100"=>LED7S<="0111001"; WHEN"1101"=>LED7S<="1011110"; WHEN"1110"=>LED7S<="1111001"; WHEN"1111"=>LED7S<="1110001"; WHEN OTHERS=>NULL; END CASE; 仿真波形:

实验2 译码器及其应用

实验2 译码器及其应用 10数计计科2班 丁琴(41)林晶(39) 一、实验目的 1、掌握中规模集成译码器的逻辑功能和使用方法 2、熟悉数码管的使用 二、实验原理 译码器是一个多输入、多输出的组合逻辑电路。它的作用是把给定的代码进行“翻译”,变成相应的状态,使输出通道中相应的一路有信号输出。译码器在数字系统中有广泛的用途,不仅用于代码的转换、终端的数字显示,还用于数据分配,存贮器寻址和组合控制信号等。不同的功能可选用不同种类的译码器。 译码器可分为通用译码器和显示译码器两大类。前者又分为变量译码器和代码变换译码器。 1、变量译码器(又称二进制译码器),用以表示输入变量的状态,如2线-4线、3线-8线和4线-16线译码器。若有n个输入变量,则有2n个不同的组合状态,就有2n 个输出端供其使用。而每一个输出所代表的函数对应于n个输入变量的最小项。以3线-8线译码器74LS138为例进行分析,图5-6-1(a)、(b)分别为其 逻辑图及引脚排列,其中A2 、A1 、A0 为地址输入端,0Y~7Y为译码输出端,S1、2S、 S为使能端。其工作原理为: 3 Yi=S1 S2 S3 mi (1)当S2=S3=0,S1=data时 若m0=1,A2=A1=A0=0时则Y0 =S1= data 改变A2、A1、A0使得data出现在不同的输出端 (2)当S1=1, S2=0,S3=data时 若m0=1,则Y0=data; 改变A2A1A0使得data出现在不同的输出端 对照表5-6-1就可判断其功能是否正常。

(a) (b) 图5-6-1 3-8线译码器74LS138逻辑图及引脚排列 二进制译码器实际上也是负脉冲输出的脉冲分配器。若利用使能端中的一个输入端输入数据信息,器件就成为一个数据分配器(又称多路分配器),如图5-6-2所示。若在S1输入端输入数据信息,2S=3S=0,地址码所对应的输出是S1数据信息的反码;若从2S端输入数据信息,令S1=1、3S=0,地址码所对应的输出就是2S端数据信息的原码。若数据信息是时钟脉冲,则数据分配器便成为时钟脉冲分配器。 根据输入地址的不同组合译出唯一地址,故可用作地址译码器。接成多路分配器,可将一个信号源的数据信息传输到不同的地点。 二进制译码器还能方便地实现逻辑函数,如图5-6-3所示,实现的逻辑函数是

数字电子线路实验报告_译码器及其应用

数电实验报告 实验三译码器及其应用 一、实验目的 1、掌握译码器的测试方法。 2、了解中规模集成译码器的功能,管脚分布,掌握其逻辑功能。 3、掌握用译码器构成组合电路的方法。 4、学习译码器的扩展。 二、实验仪器 1、数字逻辑电路实验板 1块 2、74HC138 3-8线译码器 2片 3、74HC20 双4输入与非门 1片 三、实验原理 1、中规模集成译码器74HC138 74HC138是集成3线-8线译码器,在数字系统中应用比较广泛。图3-1是其引脚排列。 其中 A2 、A1 、A0 为地址输入端, 0Y~ 7Y为译码输出端,S1、2S、3S为使能端。74HC138真值表如下: 74HC138引脚图为:

74HC138工作原理为:当S1=1,S2+S3=0时,电路完成译码功能,输出低电平有效。其中: 2、译码器应用 因为74HC138 三-八线译码器的输出包括了三变量数字信号的全部八种组合,每一个输 出端表示一个最小项,因此可以利用八条输出线组合构成三变量的任意组合电路。 四、实验内容 1、译码器74HC138 逻辑功能测试 (1)控制端功能测试 测试电路如图:

按上表所示条件输入开关状态。观察并记录译码器输出状态。 LED指示灯亮为0,灯不亮为1。 (2)逻辑功能测试 将译码器使能端S1、2S、3S及地址端A2、A1、A0 分别接至逻辑电平开关输出口,八个 输出端Y7 Y0依次连接在逻辑电平显示器的八个输入口上,拨动逻辑电平开关,按下表逐项测试74HC138的逻辑功能。 2、用74HC138实现逻辑函数 Y=AB+BC+CA 如果设A2=A,A1=B,A0=C,则函数Y的逻辑图如上所示。用74HC138和74HC20各一块在实验箱上连接下图线路。并将测试结果下面的记录表中。

相关文档
最新文档