组合电路的VHDL设计优先编码器编码器-Read

合集下载

第五章 组合逻辑电路的VHDL语言描述

第五章 组合逻辑电路的VHDL语言描述

BEGIN
PROCESS ( a, datain ) BEGIN IF ( datain = '1' ) THEN dataout <= '0' ; ELSE dataout <= '1' ; END IF ; END PROCESS ; END ARCHITECTURE behavioral_2 ; --RTL描述方式 ,MAX中需要加入时钟a
第5章
组合逻辑电路的VHDL描述
仿真波形
第5章
组合逻辑电路的VHDL描述
5.1.5 2输入同或门电路
LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ; ENTITY cynxor2 IS PORT ( datain1, datain2 : IN STD_LOGIC ; dataout : OUT STD_LOGIC ) ; END ENTITY cynxor2 ; ARCHITECTURE behavioral OF cynxor2 IS BEGIN
END ENTITY cyxor2 ;
ARCHITECTURE behavioral OF cyxor2 IS BEGIN dataout <= datain1 XOR datain2 ; END ARCHITECTURE behavioral ;
第5章
组合逻辑电路的VHDL描述
LIBRARY IEEE ;
第5章
组合逻辑电路的VHDL描述
LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ;
ENTITY cynot IS
PORT ( a, datain : IN STD_LOGIC ; END ENTITY cynot ; ARCHITECTURE behavioral_2 OF cynot IS dataout : OUT STD_LOGIC ) ;

实验4组合逻辑电路设计(编码器和译码器)

实验4组合逻辑电路设计(编码器和译码器)

实验四组合逻辑电路设计(编码器和译码器)一、【实验目的】1、验证编码器、译码器的逻辑功能。

2、熟悉常用编码器、译码器的逻辑功能。

二、【实验原理】1.编码器编码器是组合电路的一部分,就是实现编码操作的电路,编码实际上是和译码相反的过程。

按照被编码信号的不同特点和要求,编码也分成三类:(1)二进制编码器:如用门电路构成的4-2线,8-3线编码器等。

(2)二—十进制编码器:将十进制0~9编程BCD码,如10线十进制-4线BCD码编码器74LS147等。

(3)优先编码器:如8-3线优先编码器74LS148等。

2.译码器译码器是组合电路的一部分。

所谓译码,就是把代码的特定含义“翻译”出来的过程,而实现译码操作的电路称为译码器。

译码器分成三类:(1)二进制译码器:如中规模2-4线译码器74LS139,3-8线译码器74LS138等。

(2)二—十进制译码器:实现各种代码之间的转换,如BCD码——十进制译码器74LS145等。

(3)显示译码器:用来驱动各种数字显示器,如共阴数码管译码器驱动74LS48,共阳数码管译码驱动74LS47等。

三、【实验内容与步骤】1.编码器实验将10—4线(十进制—BCD码)编码器74LS147集成片插入IC空插座中,管脚排列如下图4-1所示。

按下图4-2接线,其中输入端1~9通过开关接高低电平(开关开为“1”、开关关为“0”),输出QD、QC、QB、QA接LED发光二极管。

接通电源,按表输入各逻辑电平,观察输出结果并填入表4-1中。

图4-1 74LS147集成芯片管脚分布图图4-1 10—4线(十进制—BCD码)编码器接线图表4-1十进制—BCD码编码器功能表输入输出1 2 3 4 5 6 7 8 9 QD QC QB QA 1 1 1 1 1 1 1 1 1 1 1 1 1 ××××××××0×××××××0 1××××××0 1 1×××××0 1 1 1××××0 1 1 1 1×××0 1 1 1 1 1××0 1 1 1 1 1 1×0 1 1 1 1 1 1 10 1 1 1 1 1 1 1 1注:表中×为状态随意。

第3章习题答案

第3章习题答案

思考题:题3.1.1 组合逻辑电路在结构上不存在输出到输入的 ,因此 状态不影响 状态。

答:反馈回路、输出、输入。

题3.1.2 组合逻辑电路分析是根据给定的逻辑电路图,而确定 。

组合逻辑电路设计是根据给定组合电路的文字描述,设计最简单或者最合理的 。

答:逻辑功能、逻辑电路。

题3.2.1 一组合电路输入信号的变化顺序有以下三种情况,当 时,将可能出现竞争冒险。

(A )00→01→11→10 (B )00→01→10→11 (C )00→10→11→01 答:B题3.2.2 清除竞争冒险的常用方法有(1)电路输出端加 ;(2)输入加 ;(3)增加 。

答:电容,选通脉冲,冗余项。

题3.2.3 门电路的延时时间是产生组合逻辑电路竞争与冒险的唯一原因。

( ) 答:×题3.2.4 根据毛刺产生的方向,组合逻辑的冒险可分为 冒险和 冒险。

答:1型、0型。

题3.2.5 传统的判别方法可采用 和 法来判断组合电路是否存在冒险。

答:代数法、卡诺图。

题3.3.1 进程行为之间执行顺序为 ,进程行为内部执行顺序为 。

答:同时、依次。

题3.3.2 行为描述的基本单元是 ,结构描述的基本单元是 。

答:进程、调用元件语句。

题3.3.3 结构体中的每条VHDL 语句的执行顺序与排列顺序 。

答:无关题3.4.1串行加法器进位信号采用 传递,而并行加法器的进位信号采用 传递。

(A )超前,逐位 (B )逐位,超前 (C )逐位,逐位 (D )超前,超前 答:B题3.4.2 一个有使能端的译码器作数据分配器时,将数据输入端信号连接在 。

答:使能端题 3.4.3 优先编码器输入为70I I -(0I 优先级别最高),输出为2F 、1F 、0F (2F 为高位)。

当使能输入00,651====I I I S 时,输出012F F F 应为 。

答:110题3.4.4 用4位二进制比较器7485实现20位二进制数并行比较,需要 片。

EDA实验三组合逻辑电路设计(一)--编译码器设计

EDA实验三组合逻辑电路设计(一)--编译码器设计

西安邮电学院实验中心实验报告院系电子工程学院班级学号姓名成绩教师签字实验日期实验名称组合逻辑电路设计(一)--编译码器设计_______________________________________________________一、实验目的二、实验所用仪表及主要器材三、实验原理简述四、实验测量记录:(如数据、表格、曲线、计算等)五、实验遇到的问题及解决办法:(余留问题,体会等)一、实验目的(1)熟悉组合逻辑电路的VHDL描述方法。

(2)掌握利用CPL器件实现组合逻辑数字电路的方法和过程。

(3)熟练掌握“case”语句与“if…else…”语句的用法。

二、实验所用仪表及主要器材PC,可编程逻辑实验电路板,下载线,USB电源线,双踪示波器,数字万用表,导线若干。

三、实验原理简述应用VHDL设计简单的逻辑电路四、实验内容在MAX+PULSII环境下,用VHDL语言按照输入—>编译—>仿真。

(1)8421BCD码转换为余3码转换表.在MAX+plusII 环境下,用VHDL 语言描述下列逻辑电路,并编译,仿真。

程序仿真结果:(2)设计一个优先编码器。

程序实现如下:仿真结果:五、实验结果见上述内容。

六、实验心得在本次实验中我学会了使用MAX+PLUSII软件的文本编程的方式设计电路。

在本次实验的文本编译环节中出现不少问题:(1)保存时文件名与实体名不一致,导致程序编译结果不正确。

(2)写程序时没有按照语法规则编写,使得文件编译频繁报错,标点的错误也会导致整个程序无法编译。

经过本次实验,加深了我对VHDL的文本编译设计的理解,今后我应该多练习MAX+PLUSII软件以减少错误。

vhdl 组合逻辑电路

vhdl 组合逻辑电路

vhdl 组合逻辑电路VHDL组合逻辑电路VHDL(VHSIC Hardware Description Language)是一种硬件描述语言,用于描述数字电路和系统级电路的行为和结构。

VHDL可以用于设计、仿真和验证电子系统。

在数字电路设计中,组合逻辑电路是一种重要的电路类型,本文将重点介绍VHDL中的组合逻辑电路。

一、组合逻辑电路简介组合逻辑电路是由输入端、输出端和逻辑门构成的电路。

它的输出仅取决于当前的输入,而与过去的输入无关。

组合逻辑电路的主要特点是没有存储元件,也就是说输出只与输入有关,不受时间的影响。

二、VHDL语言描述组合逻辑电路1. 实体声明在VHDL中,组合逻辑电路可以通过实体声明来描述。

实体声明包括实体头和实体体两部分。

实体头部分定义了实体名称、输入端口和输出端口,并且可以定义参数和模式等信息。

例如:实体名称:AND2输入端口:A, B输出端口:Y实体体部分定义了实体的行为,使用逻辑表达式来描述输出与输入之间的关系。

例如:实体体部分:Y <= A AND B;2. 架构声明架构声明用于描述实体的具体实现。

在架构声明中,可以使用信号、变量、常数、函数等来描述电路的行为。

例如:架构声明:架构 Behavioral of AND2 is开始信号 temp: bit;开始temp <= A AND B;Y <= temp;结束 Behavioral;三、VHDL组合逻辑电路的应用举例1. 与门(AND)与门是最基本的逻辑门之一,它的输出为输入信号的逻辑与运算结果。

在VHDL中,可以通过以下代码来实现一个2输入与门:实体声明:实体名称:AND2输入端口:A, B输出端口:Y实体体部分:Y <= A AND B;2. 或门(OR)或门是另一种基本的逻辑门,它的输出为输入信号的逻辑或运算结果。

在VHDL中,可以通过以下代码来实现一个2输入或门:实体声明:实体名称:OR2输入端口:A, B输出端口:Y实体体部分:Y <= A OR B;3. 非门(NOT)非门是最简单的逻辑门,它的输出为输入信号的逻辑非运算结果。

VHDL的编码器和译码器的设计 (2)

VHDL的编码器和译码器的设计 (2)

1引言随着社会的发展,科学技术也在不断的进步。

计算机从先前的采用半导体技术实现的计算器到现在广泛应用的采用高集成度芯片实现的多功能计算器。

计算机电路[1]是计算机的重要组成部分,了解计算机电路的知识是促进计算机的发展的先决条件。

而编码器和译码器是计算机电路中的基本器件,对它们的了解可以为以后的进一步深化研究打下一个良好的基础。

在硬件电子电路设计领域中,VHDL语言[2]则是EDA的关键技术之一。

VHDL语言具有强大的语言结构,可用明确的代码描述复杂的控制逻辑设计,并且具有多层次的设计描述功能,支持设计库和可重复使用的元件的生成。

近十几年来,EDA技术获得飞速发展。

它以计算机为平台,根据硬件描述语言VHDL,自动地完成逻辑编辑、化简分割、综合及优化,布局布线,仿真直至对特定目标芯片的适配编译,逻辑映射和编程下载等工作。

在本设计主要介绍的是一个基于超高速硬件描述语言VHDL对计算机电路中编码器和译码器进行编程实现。

本设计主要介绍的是一个基于超高速硬件描述语言VHDL对计算机电路中编码器和译码器进行编程实现。

1.1 课程设计的目的本次设计的目的就是通过实践掌握计算机组成原理的分析方法和设计方法,了解EDA技术并掌握VHDL硬件描述语言的设计方法和思想。

以计算机组成原理为指导,通过学习的VHDL语言结合电子电路的设计知识理论联系实际,掌握所学的课程知识和基本单元电路的综合设计应用。

通过对基于VHDL的编码器和译码器的设计,巩固和综合运用所学知识,提高IC设计能力,提高分析、解决计算机技术实际问题的独立工作能力。

1.2 课程设计的基本内容根据计算机组成原理[3]中组合逻辑电路设计的原理,利用VHDL设计计算机电路中编码器和译码器的各个模块,并使用EDA 工具对各模块进行仿真验证和分析。

(1)熟悉编码器、译码器的工作原理,合理利用各种软硬件资源。

本设计编码器由八-三优先编码器作为实例代表,而译码器则包含三-八译码器和二-四译码器两个实例模块组成。

《组合逻辑电路的设计实例》

《组合逻辑电路的设计实例》

组合逻辑电路设计实例1. 设计优先编码器设计要求:将Y 0 ~Y 9十个信号编成二进制代码。

其中Y 9的优先级别最高,Y 8次之,依次类推,Y 0优先级别最低。

当有多个信号同时出现在输入端时,要求只对优先级别最高的信号进行编码,且输入、输出都是低电平有效。

(1)分析要求。

Y 0 ~Y 9共十个信号,根据公式2n ≥N =10,取n =4,即取4位二进制码进行编码。

根据设计要求,Y 0 ~Y 9中优先级别高的排斥优先级别低的。

当输入端有多个信号同时存在时,优先级别低的信号无论电平高低,对输出均无影响。

(2)列真值表。

用1表示高电平,用0表示低电平。

由于规定低电平有效,且优先级别高的排斥优先级别低的,被排斥的量用“×”号表示。

输出4位二进制码用DCBA 表示,它们共有16种组合,用来对Y 0 ~Y 9进行编码的方案很多,我们采用其中一种方案。

优先编码器的真值表如表1所示。

表1 优先编码器真值表(3)化简。

因变量太多,用卡诺图化简不方便,可用公式法进行化简。

为便于用与或非门实现该电路,合并使函数值为0的最小项。

先求出反函数的最简与或式,然后再取反求出函数的最简与或非式。

根据真值表写表达式时,因为被排斥的变量对函数值没有影响,所以可以从相应的最小项中去掉,于是可得89899Y Y Y Y Y D +=+= 89Y Y D += 456789567896789789Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y C +++=489589689789Y Y Y Y Y Y Y Y Y Y Y Y +++= 489589689789Y Y Y Y Y Y Y Y Y Y Y Y C +++=2345678934567896789789Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y B +++=2458934589689789Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y +++= 2458934589689789Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y B +++=1234567893456789567897899Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y A ++++=124683468568789Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y A ++++=(4)画逻辑图。

VHDL语言组合逻辑电路设计

VHDL语言组合逻辑电路设计

元件定 义 元件在 何处?
元件设计应放在同一 目录下
已 知 逻 辑 电 路 设 计 方 法
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY GINV IS PORT(A:IN STD_LOGIC; C:OUT STD_LOGIC); END GINV; ARCHITECTURE dataflow OF GINV IS BEGIN C<=NOT A; END dataflow;
已知逻辑电路设计方法
添加中间信号
L1
L3
L2
L4
已 知 逻 辑 电 路 设 计 方 法
ARCHITECTURE dataflow OF ymq24 IS COMPONENT GINV PORT(A:IN STD_LOGIC; C:OUT STD_LOGIC); END COMPONENT; COMPONENT GNAND2 PORT(A,B:IN STD_LOGIC; C:OUT STD_LOGIC); END COMPONENT; SIGNAL L1,L2,L3,L4:STD_LOGIC; BEGIN U1:GINV PORT MAP(A0,L1); U2:GINV PORT MAP(A1,L2); U3:GINV PORT MAP(L1,L3); U4:GINV PORT MAP(L2,L4); U5:GNAND2 PORT MAP(L1,L2,Y0); U6:GNAND2 PORT MAP(L2,L3,Y1); U7:GNAND2 PORT MAP(L1,L4,Y2); U8:GNAND2 PORT MAP(L3,L4,Y3); END dataflow;
元件设计应放在同一 目录下
已 知 逻 辑 电 路 设 计 方 法

VHDL语言实验指导书

VHDL语言实验指导书
其中普通编码器对于某一给定时刻只能对一个输入信号进行编码而优先编码器的输入端允许同一时刻出现两个或两个以上的信号编码器根据事先规定的优先级对其中优先级最高的输入信号进行编码
浙江工商大学计算机与信息工程学院 开放实验项目实验指导书
基于 VHDL 的数字逻辑电路设计
指导教师:
傅均
开放地点: 信息楼 119 室
图 1. HST 实验板及包含硬件资源
《基于 VHDL 的数字逻辑电路设计》实验指导书 傅均 V3.0
第2页
图 2. EPM240T100C5 芯片引脚和对应板上资源连接
注意 1: CPLD 的第 9、13、31、45、59、63、80、94 引脚已经接 Vcc 3V;CPLD 的第 10、11、32、46、60、65、79、93 引脚已经接 GND 0V。CPLD 的第 22、 23、24、25 引脚已经用于 JTAG 下载器连接。第 64 引脚已经设置为时钟输入 GCLK3(11MHz)。
开放时间: 第 11-15 周三 10-12 节
电子邮箱: junfu@mail.
2012 年 4 月-6 月 版本 V3.0
目录
1、实验说明和注意事项………………………………………………...(1) 2、实验设备与资源介绍………………………………………………...(1) 3、实验内容与要求…………………………………………………...…(4)
实验一 常用组合逻辑电路设计
一、 实验目的
1 .初步掌握 VHDL 语言的基本单元及其构成。 2 .了解 VHDL 中的顺序语句和并行语句,掌握 process 语句、信号赋值语句等。 3 .学习 Quartus II 9.1 软件的基本操作,掌握文本输入法设计数字电路的过程。 4 .学会编写 3-8 译码器、数值比较器等简单的常用组合逻辑电路。

优先编码器课程设计

优先编码器课程设计

优先编码器课程设计 Last updated on the afternoon of January 3, 2021东北石油大学课程设计任务书课程硬件课程设计题目8-3优先级编码器设计专业计算机科学与技术姓名学号主要内容、基本要求等一、主要内容:利用EL教学实验箱、微机和QuartusⅡ软件系统,使用VHDL语言输入方法设计8-3优先编码器。

可以利用层次设计方法和VHDL语言,完成硬件设计设计和仿真。

最后在EL教学实验箱中实现。

二、基本要求:设计并实现一个8-3优先级编码器,要求I0优先级最高,I7优先级最低,编码输出为原码。

三、扩展要求:输入端加使能端,在使能端为有效的低电平时,进行编码;在使能端为无效的高电平时,输出高阻状态。

四、参考文献:[1]杨刚,龙海燕.现代电子技术-VHDL与数据系统设计.北京:电子工业出版社,2004[2] 黄仁欣.EDA技术实用教程.北京:清华大学出版社,2006[3]潘松.VHDL实用教程[M].成都:电子科技大学出版社,2000[4]李国丽,朱维勇.电子技术实验指导书.合肥:中国科技大学出版社,2000[5]宋振辉.EDA技术与VHDL.北京:北京大学出版社,2008完成期限18-19周指导教师张岩专业负责人富宇2011年 6月28日目录第1章概述1.1EDA的概念EDA技术是在电子CAD技术基础上发展起来的计算机软件系统,是指以计算机为工作平台,融合了应用电子技术、计算机技术、信息处理及智能化技术的最新成果,进行电子产品的自动设计。

利用EDA工具,电子设计师可以从概念、算法、协议等开始设计电子系统,大量工作可以通过计算机完成,并可以将电子产品从电路设计、性能分析到设计出IC版图或PCB版图的整个过程在计算机上自动处理完成。

现在对EDA的概念或范畴用得很宽。

包括在机械、电子、通信、航空航天、化工、矿产、生物、医学、军事等各个领域,都有EDA 的应用。

目前EDA技术已在各大公司、企事业单位和科研教学部门广泛使用。

VHDL实验报告——8-3优先编码器(免费哦~)

VHDL实验报告——8-3优先编码器(免费哦~)
vhdl实验报告83优先编码器免费哦编码器译码器实验报告vhdl实验报告优先编码器74148优先编码器83优先编码器74ls148优先编码器42线优先编码器325优先编码器8线3线优先编码器
上机实验报告
实验题目
班级
姓名
学号
指导教师
8-3优先编码器的
VHDL设计

实验目的与要求:
1、通过常见基本组合逻辑电路的设计,熟悉EDA设计流程。
(原理图及仿真的波形界面在备注)
遗留问题与说明:
编程不熟练,在定义上概念不清晰。
备注:
实验源程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ENCODER IS
PORT(
D:IN STD_LOGIC_VECTOR(0 TO 7);
ELSE A<="ZZZ";
END IF;
END PROCESS;
END;
实验仿真波形截图
2、熟悉文本输入及仿真步骤。
3、掌握VHDL设计实体的基本结构及文字规则。
4、掌握组合逻辑电路的静态测试方法。
5、理解硬件描述语言和具体电路的映射关系。
实验步骤与内容:(可加附页)
1、创建工程。
2、新建文件夹。
3、输入正确的源程序,保存,编译。
4、波形仿真,分配引脚,编译。
5、下载到试验箱,进行功能验证。
A:OUT STD_LOGIC_VECTOR(0 TO 2)
);
END ;
ARCHITECTURE XIANI OF ENCODER IS

编码器的设计VHDL

编码器的设计VHDL

实验二编码器实验目的1、设计并实现一个8线-3线优先编码器2、掌握实验箱的工作原理及基本操作方法实验器材1、SOPC实验箱2、计算机(装有Quartus II 7.0软件)实验预习1、预习优先编码器的原理与结构。

2、书写预习报告,必须有完整的VHDL设计程序及实验步骤。

实验原理常用的编码器有:4-2编码器、8-3编码器、16-4编码器,下面我们用一个8线-3线编码器的设计来介绍编码器的设计方法。

8-3编码器如图2.1所示,其真值表如表2-1所示。

图2.1 8-3编码器表2-1 8-3优先编码器真值表输入输出EIN 0N 1N 2N 3N 4N 5N 6N 7N A2N A1N A0N GSN EON1 X X X X X X X X 1 1 1 1 10 1 1 1 1 1 1 1 1 1 1 1 1 00 X X X X X X X 0 0 0 0 0 10 X X X X X X 0 1 0 0 1 0 10 X X X X X 0 1 1 0 1 0 0 10 X X X X 0 1 1 1 0 1 1 0 10 X X X 0 1 1 1 1 1 0 0 0 10 X X 0 1 1 1 1 1 1 0 1 0 10 X 0 1 1 1 1 1 1 1 1 0 0 10 0 1 1 1 1 1 1 1 1 1 1 0 1程序方法一Library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;Entity B_bcd isport(D:in std_logic_vector(3 downto 0);B:out std_logic_vector(4 downto 0)); END Entity B_bcd;Architecture one of B_bcd isBeginProcess(D)BeginIF(D<="1001" AND D>="0000")Then B<='0'&D;ELSIF (D>"1001" AND D<="1111")Then B<=D+"00110";Else B<=NULL;END IF;END Process;END architecture one;程序方法2Library IEEE;use IEEE.std_logic_1164.all;use IEEE.std_logic_unsigned.all;Entity B_bcd isPort(D3,D2,D1,D0:in std_logic;B4,B3,B2,B1,B0:out std_logic);END entity B_bcd;Architecture one of B_bcd isSignal D:std_logic_vector(3 downto 0); Signal B:std_logic_vector(4 downto 0); BeginD<=D3 & D2 & D1 & D0;Process(D)BeginIF(D<="1001" AND D>="0000")Then B<='0'&D;ELSIF(D>"1001" AND D<="1111")Then B<=D+"00110";ELSE B<=NULL;END IF;END PROCESS;B0<=B(0);B1<=B(1); B2<=B(2); B3<=B(3); B4<=B(4);END architecture one;VCCSW4INPUT VCC SW3INPUT VCC SW2INPUT VCC SW1INPUT LED5OUTPUT LED4OUTPUT LED3OUTPUT LED2OUTPUT LED1OUTPUT D[3..0]B[4..0]B_bcdinst NOTinst5NOTinst6NOTinst7NOTinst8NOTinst9D [3..0]B [4..0]B[4..0]D[3..0]。

实验三--8-3优先编码器和3-8线译码器讲解学习

实验三--8-3优先编码器和3-8线译码器讲解学习

实验三8-3优先编码器和3-8线译码器一、实验目的1、熟悉常用编码器,译码器的功能逻辑。

2、熟悉VHDL的代码编写方法。

3、掌握复杂译码器的设计方法。

二、实验原理2、逻辑表达式:Y2=X4&X5&X6&X7Y1=~(~(X2)&X4&X5|~(X3)&X4&X5|~(X6)|~(X7));Y0=~(~(X1)&x2&X4&X6|~(X3)&X4&X6|~(X5)&X6|~(X7));2、3-8线码器总体思路以EP2C5中的三个拨位开关,SW3,SW2,SW1为三个输入信号,可以代表8种不同的状态,该译码器对这8种状态译码,并把所译码的结果在七段LED数码管上显示出来。

三、实验连线1、将EP2C5适配板左下角的JTAG用十芯排线和万用下载区左下角的SOPC JTAG 口连接起来,万用下载区右下角的电源开关拨到SOPC下载的一边2、请将JPLED1短路帽右插,JPLED的短路帽全部上插。

3、请将JP103的短路帽全部插上。

四、实验步骤及波形按照步骤三正确连线,参考实验二步骤,完成项目的建立,文件的命名,文件的编辑,语法检查,引脚分配,编译,下载。

8-3优先编码器参考代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY encode ISPORT(XINA :IN STD_LOGIC_VECTOR(7 DOWNTO 0);Y0,Y1,Y2: OUT STD_LOGIC;OUTA : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);LEDW: OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END encode;ARCHITECTURE ADO OF encode ISSIGNAL LED: STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL XIN: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINXIN<=XINA;LEDW<="000";PROCESS (XIN)BEGINCASE XIN ISWHEN x"00" => OUTA<=x"3F";WHEN x"01" => OUTA<=x"06";WHEN x"02" => OUTA<=x"5B";WHEN x"04" => OUTA<=x"4F";WHEN x"08" => OUTA<=x"66";WHEN x"10" => OUTA<=x"6D";WHEN x"20" => OUTA<=x"7D";WHEN x"40" => OUTA<=x"07";WHEN x"80" => OUTA<=x"3F";WHEN OTHERS => OUTA<=x"3F";END CASE;END PROCESS;PROCESS (XIN)BEGINCASE XIN ISWHEN x"01" => LED<="001";WHEN x"02" => LED<="010";WHEN x"04" => LED<="011";WHEN x"08" => LED<="100";WHEN x"10" => LED<="101";WHEN x"20" => LED<="110";WHEN x"40" => LED<="111";WHEN x"80" => LED<="000";WHEN OTHERS => LED<="000";END CASE;END PROCESS;Y2<=LED(2);Y1<=LED(1);Y0<=LED(0);END ADO;3-8译码器参考代码:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY DECODE ISPORT(DATA_IN :IN STD_LOGIC_VECTOR(2 DOWNTO 0);LEDOUT,DATA_OUT :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);LEDW :OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END DECODE;ARCHITECTURE ADO OF DECODE ISSIGNAL OUTA,D_OUT : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGINLEDW<="000";PROCESS (DATA_IN)V ARIABLE DIN: STD_LOGIC_VECTOR(2 DOWNTO 0);BEGINDIN:=DA TA_IN;LEDOUT<=OUTA;DATA_OUT<=D_OUT;CASE DIN ISwhen "000" => OUTA<="00111111" ; --"0"when "001" => outa<="00000110" ; --"1"when "010" => outa<="01011011"; --"2"when "011" => outa<="01001111"; --"3"when "100" => outa<="01100110"; --"4"when "101" => outa<="01101101"; --"5"when "110" => outa<="01111101"; --"6"when "111" => outa<="00000111"; --"7"WHEN OTHERS => OUTA<="XXXXXXXX";END CASE;CASE DIN ISWHEN "000" => D_OUT<="00000000";WHEN "001" => D_OUT<="00000001";WHEN "010" => D_OUT<="00000010";WHEN "011" => D_OUT<="00000100";WHEN "100" => D_OUT<="00001000";WHEN "101" => D_OUT<="00010000";WHEN "110" => D_OUT<="00100000";WHEN "111" => D_OUT<="01000000";WHEN OTHERS=> D_OUT<="XXXXXXXX";END CASE;END PROCESS;END ADO;五、实验仿真8-3编码器引脚锁定如图:图5-1图5-2仿真波形如图:3-8译码器引脚锁定如图:图5-3波形如图:图5-4六、实验现象调试ok的EP2C5文件在文件夹decode中,可以直接调用。

优先编码器工作原理-课件

优先编码器工作原理-课件
█ 优先编码器工作原理分析 小结: ◆ ST 为使能输入端,低电平有效。
◆ YS 为使能输出端,通常接至高位芯片的ST 端,
和 ST 配合可以实现多级编码器之间的优先级别的 控制。 ◆ Y EX为扩展输出端,是控制标志。Y EX = 0 表示 是编码输出;Y EX = 1 表示不是编码输出。
《数字电子技术基础》
//8线-3 线优先编码器设计
or f or g or h) begin
module encode8_3pri
(none_on,outcode,a,b,c,d,e,f,g,h);
if(h)
outtemp=4'b0111;
esle if(g) outtemp=4'b0110;
esle if(f) outtemp=4'b0101;
output none_on; output[2:0] outcode; input a,b,c,d,e,f,g,h; reg[3:0] outtemp;
esle if(e) outtemp=4'b0100; esle if(d) outtemp=4'b0011; esle if(c) outtemp=4'b0010; esle if(b) outtemp=4'b0001; esle if(a) outtemp=4'b0000;
esle assign {none_on,outcode}=outtemp; end
outtemp=4'b1000;
endmodule
《数字电子技术基础》
1-高电平,0-低电平,×-任意,输入低电平有效。
选通输入端,低电平有效。
扩展端,低《电数平字有效电。子技术基础》

实验2-优先编码器

实验2-优先编码器

实验3:优先编码器的Verilog HDL描述及仿真一、实验目的及要求:1.掌握优先编码器的Verilog HDL描述方法2.理解逻辑综合的概念3.掌握RTL电路原理图分析的分析方法二、实验工具:Quartus_II 9.0三、实验原理:1. 优先编码器简介在数字系统中,常常需要将某一信息变换为某一特定的代码,把二进制代码按一定的规律编排,时每组代码具有一定的含义称为编码。

具有编码功能的逻辑电路称之为编码器。

常常会有几个部件同时发出服务请求的可能,而在同一时刻只能给其中一个部件发出允许操作信号。

因此,必须根据轻重缓急,规定好这些控制对象允许操作的先后次序,即优先级别。

8-3优先编码器有8个输入端,3个输出端。

还有一个输入使能,输出使能和优先编码器工作状态标志。

编码器以低为有效。

输入优先级别的次序为7,6,5,…,0。

当某一输入端有低电平输入,且比它优先级高的输入没有低电平输入时,输出端才输出相应输入端的代码。

优先编码器的真值表如下表1所示。

表1.2.Verilog程序设计与逻辑综合2.1 8-3线编码器示例always @ (din)begincase(din)8’b0000_0001: dout = 3’b000;8’b0000_0010: dout = 3’b001;8’b0000_0100: dout = 3’b010;8’b0000_1000: dout = 3’b011;…8’b1000_0000: dout = 3’b111;default : dout = 3’bx;endcaseend2.2 优先编码器设计优先编码器与上面描述的普通8-3线编码器不同,每次只需判断优先级高的输入端是否有效always @ (din)begincasex(din)8’b1xxx_xxxx: dout = 3’b111;8’b01xx_xxxx: dout = 3’b110;8’b001x_xxxx: dout = 3’b101;8’b0001_xxxx: dout = 3’b100;…8’b0000_0001: dout = 3’b000;default : dout = 3’bx;endcaseend2.3.逻辑综合逻辑综合是在标准单元库和特定的设计约束的基础上,把设计的高层次描述转换成优化的门级网表的过程。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

组合电路的VHDL设计优先编码器编码器(encoder)也属于码制转换器一类(BCD—1-out-of-10)( p.49 表2-9 )优先编码器属于多对1转换关系,没有一一对应关系,难以采用上述方式描述;74148 优先编码器真值表见p.278 表5-23,表中含有大量‘x’项,目前VHDL还不能直接对其进行运算处理;在p.384 表5-26中,显示了行为设计的一种形式:采用for-loop语句;也可以采用数据流设计中的条件代入语句实现:例:简化74148优先编码器的数据流设计数据输入 i[7..0] 低电平有效控制输入el 低电平有效数据输出a[2..0] 反函数输出library ieee;use ieee.std_logic_1164.all;entity kencoder isport (i: in std_logic_vector (7 downto 0);el: in std_logic;a: out std_logic_vector(2 downto 0));end kencoder;architecture rtl of kencoder issignal a1:std_logic_vector(2 downto 0);begina1 <="000" when i(7)= '0' else"001" when i(7 downto 6)="10" else"010" when i(7 downto 5)="110" else"011" when i(7 downto 4)="1110" else"100" when i(7 downto 3)="11110" else"101" when i(7 downto 2)="111110" else"110" when i(7 downto 1)="1111110" else"111";a<=a1 when el='0' else "111";end rtl;奇偶校验电路 parity checker奇偶校验电路是实现数据错误检验的一种基本电路,其方式是检测在9位输入数据中‘1’的个数是奇数还是偶数; 3输入端异或门可以看作3位奇偶校验电路:‘1’的个数为奇数时输出为‘1’,为偶数时输出为‘0’; 利用该电路可以构成9位奇偶校验电路;p.418 表5-47 9位奇偶校验电路的行为设计p.419 表5-48 9位奇偶校验电路的结构设计例 9位奇偶校验电路的数据流设计library ieee;use ieee.std_logic_1164.all;entity kparity9 isport (i: in std_logic_vector ( 1 to 9);even,odd : out std_logic);end kparity9 ;architecture rtl of kparity9 issignal y1,y2,y3,y: std_logic;beginy1<= i(1) xor i(2) xor i(3) ;y2<= i(4) xor i(5) xor i(6) ;y3<= i(7) xor i(8) xor i(9) ;y<= y1 xor y2 xor y3 ;odd<= y ; even<= not y;end rtl;运算电路运算电路主要包括比较器(comparator)、加法器(add)、乘法器(multipliers)和算术逻辑单元(ALU)等电路。

在运算电路中,运算量经常需要进行算术运算;在VHDL中,算术运算不能对bit、 std_logic、std_logic_vector等类型进行;此外,二进制的数值表达方式本身也存在符号表达方式问题,不同表达方式的运算规则不同;为了解决类型与运算的相容问题,统一符号运算问题,在包集合IEEE.std_logic_arith中,定义了signed和 unsinged 两种类型,以及与这两种类型相应的转换函数和对这些类型进行的运算,其规则如下(针对加/减运算):若运算量中存在signed类型,结果就为signed类型;否则为unsinged 类型;若结果被指定为std_logic、std_logic_vector等类型,则signed或unsigned 类型的结果自动转为指定类型;运算结果的长度为最长运算量的长度,但若unsigned 类型与signed类型运算,会自动变为后一类型,其长度会增加1以在最高位增加符号位'0';对于通常所用的sdt_logic_vector类型的数据d,需要进行算术运算时,可以采用函数signed(d)将其转换为signed类型,或采用函数unsigned(d)将其转换为unsigned类型,运算完毕后,通过代入语句将结果直接赋值给sdt_logic_vector类型的信号,即可恢复通用的类型;例 P.445 表5-55 各种运算结果的类型8位不同类型数据的加/减法器数据流设计library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity vadd isport (a,b: in unsigned( 7 downto 0 );c : in signed ( 7 downto 0 );d : in std_logic_vector( 7 downto 0 );s : out unsigned (8 downto 0);t : out signed (8 downto 0);u : out signed (7 downto 0);v : out std_logic_vector(8 downto 0));end vadd;architecture rtl of vadd isbegins <= ('0' & a)+('0' & b);t <= a+c;u <= c+signed(d);v <= c-unsigned(d);end rtl;例p.446 表5-56可选输入的加法器数据流设计,采用条件代入语句library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity vaddshr isport (a,b,c,d: in signed( 7 downto 0 );sel : in std_logic;s : out signed (7 downto 0));end vaddshr;architecture rtl of vaddshr isbegins <= a+b when sel='1' else c+d;end rtl;以上输入和输出均采用signed类型;在实际应用中,数据传递采用统一的std_logic类型比较方便,因此在端口信号中最好全都采用std_logic类型,由此会要求程序进行相应改变。

例采用std_logic类型端口的8位加法器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity vadd isport (a,b: in std_logic_vector( 7 downto 0 );c : in std_logic;s : out std_logic_vector(8 downto 0));end vadd;architecture rtl of vadd issignal d: std_logic_vector(0 to 0);begind(0)<= c;s <= ('0' & unsigned(a)) +unsigned(b)+unsigned(d);end rtl;注意:由于unsigned()函数只针对数组,因此不能将c直接变化,必须先将其写为数组信号;此外,为了使s的数据宽度能够与右端运算匹配,应先将a的宽度扩展到8位。

例 p.453 表5-60 8位乘法器的设计数据流设计library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;entity vmul8x8i isport (x,y: in std_logic_vector( 7 downto 0 );p : out std_logic_vector (15 downto 0));end vmul8x8i;architecture rtl of vmul8x8i isbeginp <= unsigned(x)*unsigned(y);end rtl;例 p.428 表5-508位无符号数比较器的行为设计library ieee;use ieee.std_logic_1164.all;entity vcompare isport (a,b: in std_logic_vector( 7 downto 0 );eq,ne,gt,ge,lt,le: out std_logic);end vcompare;architecture beh of vcompare isbeginprocess(a,b)begineq <= '0';ne <= '0';gt <= '0';ge <= '0';lt <= '0';le <= '0';if a=b then eq <= '1'; end if;if a/=b then ne <= '1'; end if;if a>b then gt <= '1'; end if;if a>=b then ge <= '1'; end if;if a<b then lt <= '1'; end if;if a<=b then le <= '1'; end if;end process;end beh;算术逻辑单元ALU通过控制变量的选择,可以对输入的两组数据进行不同的算术算或逻辑运算;设计思想:将每一种运算设计为一个小程序块,通过选择语句来选择实现;例带进位四位算术逻辑单元ALU设计具有3位选择输入,可以实现8种不同的运算;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity alu1 isport(a,b: in unsigned(3 downto 0);cin: in std_logic;sel: in std_logic_vector(2 downto 0);y: out std_logic_vector(3 downto 0);cout: out std_logic);end alu1;architecture beh of alu1 issignal c: std_logic_vector(3 downto 0);beginprocess(a,b,cin,sel)begincase sel iswhen "000" =>y(0)<= a(0) xor b(0) xor cin;--实现a+b+cin;c(0)<= (a(0) and b(0)) or (a(0) and cin) or (cin and b(0)); gen1:for i in 1 to 3 loopy(i)<= a(i) xor b(i) xor c(i-1);c(i)<= (a(i) and b(i)) or (a(i) and c(i-1)) or (c(i-1) and b(i)); end loop;cout<=c(3);when "001" =>y(0)<= a(0) xor b(0) xor cin; --实现a-b-cin;c(0)<= (not a(0) and b(0)) or (not a(0) and cin) or (cin and b(0)); gen2:for i in 1 to 3 loopy(i)<= a(i) xor b(i) xor c(i-1);c(i)<= (not a(i) and b(i)) or (not a(i) and c(i-1)) or (c(i-1) and b(i));end loop;cout<=c(3);when "010" =>if cin='0' then y<= a(3)&a(2)&a(1)&a(0); --实现a+cin;else y<=a+1;end if;cout<='0';when "011" =>if cin='0' then y<= a(3)&a(2)&a(1)&a(0); --实现a-cin;else y<=a-1;end if;cout<='0';when "100" =>y(3)<=a(3) and b(3);y(2)<=a(2) and b(2); --实现a and b;y(1)<=a(1) and b(1);y(0)<=a(0) and b(0);cout<='0';when "101" =>y(3)<=a(3) or b(3);y(2)<=a(2) or b(2); --实现a or b;y(1)<=a(1) or b(1);y(0)<=a(0) or b(0);cout<='0';when "110" =>y(3)<=a(3) xor b(3);y(2)<=a(2) xor b(2); --实现a xor b;y(1)<=a(1) xor b(1);y(0)<=a(0) xor b(0);cout<='0';when "111" =>y(3)<=not a(3);y(2)<=not a(2); --实现not a;y(1)<=not a(1);y(0)<=not a(0);cout<='0';when others =>y<= "0000";cout<='0';end case;end process;end beh;a和b是unsigned 的数组类型,进行算术运算后结果可以直接赋给std_logic_vector类型(默认类型转换),不经过运算或经过逻辑运算后不能直接赋值给std_logic_vector类型;但一位的unsigned类型进行逻辑运算后结果可以直接赋给std_logic类型(默认类型转换)。

相关文档
最新文档