门电路VHDL语言

合集下载

第基本逻辑电路的VHDL设计PPT学习教案

第基本逻辑电路的VHDL设计PPT学习教案
第11页/共99页
5.1 组合逻辑电路设计
5.1.2 编码器设计 1. 8线-3线编码器的VHDL描述
本例中,运 用了case语 句完成了编 码器内部逻 辑结构设计, 其RTL电路 图如图5.4所 示。
图5.4 8线-3线编码器的RTL电路图
第12页/共99页
5.1 组合逻辑电路设计
5.1.2 编码器设计
(1)2线-4线译码器的VHDL设计 library ieee; ---【例5.5】 2线-4线译码器的VHDL代码 use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity decode_24 is port (a: in std_logic_vector(1 downto 0);
y1<=a and b; --构成与门
y2<=a or b;
--构成或门
y3<= not a ; --构成非门
y4<=a nand b; --构成与非门
y5<=a nor b; --构成异或门
y6<=not(a xor b); --构成异或非门
END;
第7页/共99页
5.1 组合逻辑电路设计
5.1.2 编码器设计 在数字系统中,常常需要将某信息变换为某一 特定的代码。把二进制码按一定的规律进行编 排,使每组代码具有特定的含义,称为编码。 具有编码功能的逻辑电路称为编码器。 编码器是将 2N 个分立的信息代码以N个二进 制码来表示。
WHEN "1101" => LED <= "1011110" ; --显示“D”
WHEN "1110" => LED <= "1111001" ; --显示“E” WHEN "1111" => LED <= "1110001" ; --显示“F”

8.VHDL语言基础(六)

8.VHDL语言基础(六)
VHDL语言基础 (六)
双向和三态电路设计
1
双向和三态电路信号赋值
1、三态门设计
三态门,简称TSL(Three-state Logic)门,是在普 通门电路的基础上,附加使能控制端和控制电路构成 的。三态门除了通常的高电平和低电平两种输出状态 外,还有第三种输出状态-高阻态。处于高阻态时,电 路与负载之间相当于开路。
双向和三态电路信号赋值
2、双向端口设计 用INOUT模式设计双向端口也必须考虑三 态的使用,因为双向端口的设计与三态端口的 设计十分相似,都必须考虑端口的三态控制。 这是由于双向端口在完成输入功能时,必须使 原来呈输出模式的端口呈高阻态,否则,待输 入的外部数据势必会与端口处原有电平发生 “线与”,导致无法将外部数据正确地读入, 从而实现“双向”的功能。
24
双向和三态电路信号赋值
课堂练习:
修改8位4通道三态总线驱动器的第一 个设计,使其能综合出正确的电路。
25
2
双向和三态电路信号赋值
1、三态门设计
3
双向和三态电路信号赋值
1、三态门设计 三态门用途之一是实现总线传输。总线 传输的方式有两种,单向总线和双向总线。 单向总线方式下,要求只有需要传输信息的 那个三态门的控制端处于使能状态,其余各 门皆处于禁止状态。
4
双向和三态电路信号赋值
三态门实现总线传输的原理:
11
双向和三态电路信号赋值
2、双向端口设计
双向端口设计实例
12
双向和三态电路信号赋值
2、双向端口设计
双向端口设计实例
13
双向和三态电路信号赋值
14
双向和三态电路信号赋值
2、双向端口设计
分析:
q定义为双向端口,而x定义为三态控制输出口。 在q履行输入功能时,前者没有将其设定为高 阻态输出,即执行语句:q<=“ZZZZZZZZ”,从 而没有使q成为真正的双向端口,导致了错误 的逻辑电路; 执行语句:q<=“ZZZZZZZZ”,使q 在IF 语句 中有了完整的条件描述,从而克服了时序元件 的引入。

VHDL语言基础

VHDL语言基础

3.1 概 述
3.1.5 VHDL与其他硬件描述语言的比较
VHDL: 具有较强的系统级抽象描述能力,适合行为级和RTL
级的描述,设计者可不必了解电路细节,所以工作比较 少,效率高。但对综合器的要求高,不易控制底层电路 的生成。IEEEE标准,支持广泛。
RTL: Register Translate Level (寄存器传输级)
with input select drive<=B”1111110” when 0, drive<=B”0110000” when 1, drive<=B”1101101” when 2, drive<=B”1111001” when 3, drive<=B”1111110” when 4, drive<=B”0110000” when 5, drive<=B”1101101” when 6, drive<=B”1111001” when 7,, drive<=B”0110000” when 8, drive<=B”1101101” when 9,
1、程序包说明(包首): 语法: package 程序包名 is { 包说明项 } end 程序包名;
包声明项可由以下语句组成: use 语句(用来包括其他程序包); 类型说明;子类型说明;常量说明;信号说明;
子程序说明;元件说明。
例:程序包说明:
2、程序包包体 程序包的内容:子程序的实现算法 包体的语法: package body 程序包名 is { 包体说明项 } end 程序包名;
如:一个可置数的16位计数器的电路原理图
3.1 概 述
用VHDL语言描述的可置数的16位计数器
3.1 概 述

门电路VHDL语言

门电路VHDL语言

“非”门library ieee;use ieee.std_logic_1164.all; entity not1 isport(a:in std_logic;b:out std_logic); end entity not1; architecture behav of not1 is beginb<=not a;end architecture behav;“与”门library ieee;use ieee.std_logic_1164.all; entity and2 isport(a,b:in std_logic;c:out std_logic); end entity and2; architecture behav of and2 is beginc<=a and b;end architecture behav;“与非”门library ieee;use ieee.std_logic_1164.all; entity nand2 isport(a,b:in std_logic;c:out std_logic); end entity nand2; architecture behav of nand2 is beginc<=not(a and b);end architecture behav; “或非”门library ieee;use ieee.std_logic_1164.all;entity nor2 isport(a,b:in std_logic;c:out std_logic);end entity nor2;architecture one of nor2 isbeginc<=not(a or b);end architecture one;“异或非”门library ieee;use ieee.std_logic_1164.all;entity xor2 isport(a,b:in std_logic;c:out std_logic);end entity xor2;architecture one of xor2 isBeginc<=not( ( (not a)and b)or(aand(not b) ) );end architecture one;D触发器library ieee;use ieee.std_logic_1164.all;entity dffa isport(D,clk,clr:in std_logic;Q:out std_logic);end entity dffa;architecture behave of dffa isbeginprocess(clk,D,clr)beginif clr='1' then Q<='0';Elsif clk'event and clk='1'then Q<=D;end if;end process;end architecture behave;T触发器library ieee;use ieee.std_logic_1164.all;entity tffa isport(T,clk,clr: in std_logic;Q: buffer std_logic);end entity tffa;architecture behave of tffa isbeginprocess(clk,T,clr)beginif clk'event and clk='1'thenif clr='1' then Q<='0';Elsif t='1'then Q<=not Q;else Q<=Q;End if;end if;end process;end architecture behave;JK触发器library ieee;use ieee.std_logic_1164.all;entity jk isport(J,K,clk, in std_logic;Q: buffer std_logic);end entity tffa;architecture behave of jk isbeginprocess(clk,J,K)beginif clk'event and clk='1'thenQ<=( (J and(not Q) )or( (notK)and Q) );end if;end process;end architecture behave;移位寄存器library ieee;use ieee.std_logic_1164.all; useieee.std_logic_unsigned.all; entity reg isport(clk,din, dir: in std_logic;op: out std_logic);end entity reg;architecture a of reg issignal q:std_logic_vector(7 downto 0);beginprocess(clk)beginif clk'event and clk='1'thenif dir='0' then q(0)<=din;for i in 1 to 7 loopq(i)<=q(i-1);end loop;else q(7)<=din;for i in 1 to 7 loopq(i-1)<=q(i);end loop;end if;end if;end process;op<=q(7)when dir='0'elseq(0);end architecture a; 分频电路library ieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entity divf isport(clk: in std_logic;q: out std_logic);end entity divf;architecture a of divf issignal rst:std_logic;signal qn:std_logic_vector(2downto 0);beginprocess(clk,rst)beginif rst='1'then qn<="000";elsifclk'event and clk='1'thenqn<=qn+1;end if;end process;rst<='1'when qn=6 else'0';q<= qn(2);end architecture a;74LS160计数器library ieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entity ls74160 isport(clk,rst,ena,pe:instd_logic;d:in std_logic_vector(3 downto0);count:out std_logic_vector(3downto 0);co:out std_logic);end;architecture behave of ls74160issignal temp:std_logic_vector(3 downto 0);beginprocess(clk,rst,ena,pe)beginif (rst='1')thentemp<="0000";elsif(clk'eventandclk='1')thenif ena='1'thenif pe='1'then temp<=d;elsif temp="1001"thentemp<="0000";co<='1';else temp<=temp+1;co<='0';end if;end if;end if;end process;count<=temp;end behave;10进制计数器library ieee;use ieee.std_logic_1164.all; useieee.std_logic_unsigned.all; entity count10 isport(clk,rst,ena:in std_logi c; count:out std_logic_vector(3 downto 0);co:out std_logic);end count10;architecture behave of count10 issignal temp:std_logic_vector (3 downto 0);beginprocess(clk,rst,ena)beginif (rst='1')thentemp<="0000";elsif(clk'event and clk='1')then if ena='1'thenif(temp="1001")thentemp<="0000";co<='1';else temp<=temp+1;co<='0';end if;end if;end if;end process;count<=temp;end behave;输出逻辑宏单元(OLMC):输出引脚为12~19共8个。

vhdl课程设计三态门

vhdl课程设计三态门

vhdl课程设计三态门一、教学目标通过本节课的学习,学生应掌握三态门的基本原理和VHDL语言的编程方法,能够独立完成三态门电路的设计和验证。

具体目标如下:1.了解三态门的基本原理和功能;2.掌握VHDL语言的基本语法和编程方法;3.熟悉三态门电路的设计流程和验证方法。

4.能够运用VHDL语言编写三态门电路的代码;5.能够使用相关工具对三态门电路进行仿真和验证;6.能够分析并解决三态门电路设计中遇到的问题。

情感态度价值观目标:1.培养学生的创新意识和团队协作精神;2.增强学生对电子工程领域的兴趣和热情;3.培养学生严谨的科学态度和良好的沟通能力。

二、教学内容本节课的教学内容主要包括以下几个部分:1.三态门的基本原理和功能;2.VHDL语言的基本语法和编程方法;3.三态门电路的设计流程和验证方法;4.实际案例分析和相关练习。

具体的教学大纲如下:1.引言:介绍三态门的概念和应用场景;2.三态门的基本原理:讲解三态门的工作原理和电路结构;3.VHDL语言基础:介绍VHDL语言的基本语法和编程方法;4.三态门电路设计:讲解三态门电路的设计流程和注意事项;5.电路验证与仿真:介绍如何使用相关工具对三态门电路进行仿真和验证;6.案例分析与练习:分析实际案例,并进行相关练习。

三、教学方法为了提高学生的学习兴趣和主动性,本节课将采用以下教学方法:1.讲授法:讲解三态门的基本原理和VHDL语言的基本语法;2.讨论法:引导学生进行小组讨论,共同解决问题;3.案例分析法:分析实际案例,让学生更好地理解三态门电路的设计和验证;4.实验法:引导学生动手实践,完成三态门电路的设计和验证。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:提供相关教材,为学生提供理论知识的学习参考;2.参考书:提供相关参考书,帮助学生深入了解三态门电路的设计和验证;3.多媒体资料:制作课件和教学视频,为学生提供直观的学习资源;4.实验设备:准备实验设备,让学生能够动手实践,提高实际操作能力。

第2章 VHDL语言基础

第2章 VHDL语言基础

End 实体名;
端口名
端口模式
数据类型
(2)ENTITY
端口模式(MODE)有以下几种类型: IN ;OUT;INOUT ;BUFFER 端口模式可用下图说明:(黑框代表一个设计或模块)
IN
OUT
BUFFER
INOUT
二输入与门电路设计范例
Library std; Use std.standard.all;
(4)CONFIGURATION定义区
定义格式: Configuration 配置名 of 实体名 is for 选用的结构体名 end for; end configuration 配置名 ;
二输入与门电路设计范例
a c
b电Leabharlann 真值表abc
0
0
0
1
0
0
0
1
0
1
1
1
二输入与门电路设计范例
Architecture Na of and2 is
‘1’; 符号<=为信号直接赋值符。
End Na;
--结构体Na
Architecture Nb of and2 is
Begin
c <= a and b;
--and 为逻辑与操作
End Nb; --结构体Nb
Library ieee; Use ieee.std_logic_1164.all;
Entity half_adder is Port( x,y : in std_logic;sum,carry : out hlf_adder); End half_adder;
(4)CONFIGURATION定义区
一个完整VHDL电路设计必须有一个实体 和对应的结构体,即实体和结构体对构成一个 完整的VHDL设计。

数字逻辑第7章 VHDL语言基础

数字逻辑第7章 VHDL语言基础
ENTITY my_design IS IN (d:IN 输入 PORT(d: std_logic_vector(15 PORT(d:IN std_logic_vector(15 DOWNTO 0); 值 ; OUT 不 能 作 为 clk,reset,oe:IN std_logic; OUT clk,reset,oe:IN std_logic; 输出 q:OUT std_logic_vector(15 q:OUT std_logic_vector(15 DOWNTO赋 值 内 容 ; INOUT 0); INOUT INOUT std_logic_vector(15 DOWNTO 0); 不受限制 双向std_logic_vector(15 和BUFFER不受限制 ad:INOUT ad: BUFFERBUFFER std_logic; int:BUFFER std_logic; int: 输出缓冲 as:OUT std_logic); as:OUT std_logic); my_design; END my_design;
主要用于描述数字逻辑电路的结构、行为、功
能和接口
前言
举例二路选择器 VHDL描述 库的调用 传统描述方式 VHDL描述
LIBRARY IEEE;
用与门、非门、 ENTITY MUX2 底 层 或 门 等 具 体 IS 器件来组成
结构体描述
ARCHITECTURE behav OF MUX2 IS
程序包调用 BEGIN
ARCHITECTURE 结构体名 OF 实体号名 IS 定义语句] 信号(signal); [定义语句] 信号(signal); 常数(constant); 常数(constant); 并行处理是 并行处理是 数据类型(type); 数据类型(type VHDL的特点 ); 的特点 函数(function); 函数(function); 元件(component) 元件(component)等; BEGIN 并行处理语句] [并行处理语句]; 结构体名; END 结构体名;

vhdl语言

vhdl语言

VHDL语言简介VHDL(VHSIC Hardware Description Language)即可高速集成电路硬件描述语言,是一种用于描述数字系统和电路的硬件描述语言。

它在1981年由美国国防部的高速集成电路联合委员会(VHSIC)开发,用于设计大规模集成电路。

VHDL是一种面向对象的语言,可以用于描述各种数字系统,从简单的逻辑门到复杂的处理器。

它提供了丰富的语法和语义,使得设计人员可以准确地描述他们的电路和系统。

VHDL的优势VHDL作为一种硬件描述语言,在数字系统设计中具有许多优势。

1.可重用性:VHDL允许设计人员创建可重用的模块和子系统,这些模块和子系统可以在不同的项目中重复使用,提高了设计效率和可维护性。

2.仿真和验证:VHDL具有强大的仿真和验证能力,可以在设计之前对系统进行全面的仿真和验证。

这有助于检测和纠正潜在的问题,并确保系统在硬件实现之前达到预期的功能。

3.抽象级别:VHDL允许设计人员在不同的抽象级别上描述系统,从高级的行为级别到底层的结构级别。

这使得设计人员可以根据需要在不同的级别上工作,并且可以更容易地进行系统级别的优化。

4.灵活性和可扩展性:VHDL支持灵活的设计方法和工作流程,并允许设计人员在设计过程中进行迭代和修改。

它还可以与其他常用的设计工具和方法集成,以满足特定的需求。

VHDL语言的基本结构VHDL语言由模块、实体、架构以及信号和过程等基本元素组成。

模块(Module)模块是VHDL中描述数字系统的最基本单位。

一个模块可以包含多个实体和架构,并通过连接信号进行通信。

每个模块都有一个顶层实体和一个或多个架构。

实体(Entity)实体是描述模块的接口和行为的抽象。

它定义了输入输出端口,以及模块对外部环境的接口。

一个实体可以有一个或多个架构。

架构(Architecture)架构描述模块的具体行为和内部结构。

它定义了模块的内部信号和过程,以及对外部信号和过程的接口。

VHDL语言教程

VHDL语言教程
SIGNAL a:Bit_Vector(0 TO 7); SI精G选N版课A件Lppta:Bit_Vector ( 7 DOWNTO 0) 10
字符:(Character)
TYPE CHARACTER IS (NUL, SOH,STX, …, ‘ ’, ‘!’,…); --通常用‘’引起
字符串:(String)
精选版课件ppt
14
3.1.3 数据类型转换
VHDL为强定义类型语言,不同类型的数据不能进行运算和直接赋值。 类型标记法
Variable A: integer; Variable B: real; A= integer (B); B=real (A);
函数法
Conv_interger (A);--由std_logic转换为integer型,在std_logic_unsigned包。
上升沿:Clock’ EVENT AND Clock=‘1’
’range:生成一个限制性数组对象的范围
’range: “0 to n” ;
’reverse_range:“n downto 0”
’left:生成数据类型或数据子类型的左边界值; ’right , ’high, ’low, ’length
常用的HDL语言:VHDL 、Verilog HDL
精选版课件ppt
2
VHDL 概述:
VHDL VHSIC
VHSIC Hardwarter Description Language Very High speed integrated circuit
➢ VHDL是美国国防部在20世纪80年代初为实现其高速集成电路 硬件VHSIC计划提出的描述语言;
常数转换法 / 常量转换法
Type conv_table is array(std_logic) of bit;

第四章 用VHDL程序实现常用逻辑电路

第四章 用VHDL程序实现常用逻辑电路

4.2


时序逻辑电路设计
1、 触发器
触发器是构成时序逻辑电路的基本元件,常用的触发 器包括RS触发器、D触发器、JK触发器、T触发器等类型。 下面仅介绍同步复位D触发器。 源程序如下:



library ieee; use ieee.std_logic_1164.all; entity syndff is port(d,clk,reset:in std_logic; q,qb:out std_logic); end syndff;

其源程序如下: library ieee; use ieee.std_logic_1164.all; entity jbm is port(a,b: in bit; f1,f2,f3,f4,f5,f: out bit); end jbm; architecture a of jbm is begin f1<=a and b; --构成与门 f2<=a or b; --构成或门 f<=not a; --构成非门 f3<=a nand b; --构成与非门 f4<=a nor b; --构成异或门 f5<=not(a xor b); --构成异或非门即同门 end;
end cnt4; 改变std_logic_vector矢量的位宽,可以很方便 地改变二进制计数器的模。






--结构体描述: architecture behave of cnt4 is signal q1: std_logic_vector(3 downto 0); begin process(clk) begin if (clk'event and clk = '1') then q1<=q1+1; end if; end process; q<=q1; end behave;

第5章基本逻辑门电路设计(VHDL)

第5章基本逻辑门电路设计(VHDL)

2021/6/25
第10页
EDA技术及CPLD/FPGA应用简明教程 方法3:使用CASE_WHEN 语句
清华大学出版社
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY DECODER IS
PORT(SEL:IN STD_LOGIC_VECTOR(2 DOWNTO 0);
ENTITY ADDER4_OP IS
2021/6/25
第20页
EDA技术及CPLD/FPGA应用简明教程
清华大学出版社
PORT (A,B:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
CIN:IN STD_LOGIC; SUM:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); COUNT:OUT STD_LOGIC); END ADDER4_OP;
WHEN "101"=> Y(5)<= ‘0’;
WHEN "110"=> Y(6)<= ‘0’;
WHEN "111"=> Y(7)<= ‘0’;
WHEN OTHERS=>NULL;
END CASE;
END PROCESS;
END ART3;
2021/6/25
第12页
EDA技术及CPLD/FPGA应用简明教程
OUT1:OUT STD_LOGIC_VECTOR(2 DOWNTO 0)); END ENCODER; ARCHITECTURE ART2 OF ENCODER IS BEGIN PROCESS(IN1)
2021/6/25
第16页

第6章 基本逻辑电路的VHDL 语言描述

第6章 基本逻辑电路的VHDL 语言描述
X 1 X X X X
D6
X 1 X X X X
D5
X 1 X X X X
D4
X 1 X X X X
D3
X 1 X X X 0
D2
X 1 X X 0 1
D1
X 1 X 0 1 1
D0
X 1 0 1 1 1
Q2 Q1 Q0 E0
1 1 0 0 0 0 1 1 0 0 1 1 1 1 0 1 0 1 1 0 1 1 1 1
端口名 data_in even_odd parity_out 类型 输入 输入 输出 说明 输入的8位数据 控制信号,确定采用奇校验还 是偶校验 产生的奇偶校验位
奇偶校验器的VHDL 程序:
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity parity_check is port(data_in :in std_logic_vector (7 downto 0); even_odd :in std_logic; parity_out:out std_logic); end entity parity_check;
architecture behav of parity_check is begin process(data_in,even_odd)
variable tmp:std_logic; begin tmp:='0'; for i in data_in'range loop tmp:=tmp xor data_in(i); end loop; if even_odd='1' then --偶校验 parity_out<=tmp; else --奇校验 parity_out<=not tmp; end if; end process; end architecture behav;

VHDL描述逻辑门电路

VHDL描述逻辑门电路

计实体的功能,规定了设计实体的数据流程,制定
了实体内部元件的连接关系。 结构体对其基本设计单元的输入和输出关系可 用以下三种方式进行描述,即行为描述(基本设计 单元的数学模型描述)、寄存器传输描述(数据流 描述)和结构描述(逻辑元件连接描述)。
(三)结构体
结构体格式:
ARCHITECTURE <结构体名> OF <实体名> IS [结构体说明部分]; BEGIN <功能描述语句>; END结构体名;
IN
OUT
INOUT
BUFFER
Out与Buffer的区别
缓冲(Buffer)与Output类似,但允许 该管脚名作为一些逻辑的输入信号 BUFFER
OUT
d
q
&
d
q
clk 图三
clk OUT和BUFFER的区 别
(三)结构体
结构体描述了基本设计单元(实体)的结构、
行为、元件及内部连接关系,也就是说它定义了设
上述5类库中,除了STD库和WORK库之外的其它库均 为资源库。资源库是存放常规元件和标准模块的库,使用时 需预先说明。
LIBRARY IEEE; (二)库和程序包 USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH. ALL; USE IEEE.STD_LOGIC_UNSIGNED. ALL;
注意
•端口名称: 对端口的命名,是端口的标识符。 •端口模式: 说明端口信号的流动方向。
其中端口名是设计者为实体的每一个对外 通道所取的名字,通常为英文字母加数字 ,名字的定义有一定的惯例,如Clk 表示 时钟,D开头的端口名表示数据,A开头的 端口名表示地址。 Clk Data Address 端口类别是指这些通道上的数据流动的方 式,如输入或输出等。端口模式有以下几 种类型:

VHDL

VHDL

4.3 基本门电路的VHDL设计VHDL语句用来描述系统内部硬件结构、动作行为及信号间的基本逻辑关系,这些语句不仅是程序设计的基础,也是最终构成硬件的基础。

赋值就是将一个值或者一个表达式的结果传递给某一个数据对象,是语言中最基本的语句。

数据在实体内部的传递以及对端口外的传递都必须通过赋值语句来实现。

我们可以将需要赋值的数据对象分为变量和信号(含端口)两大类,这两类对象的赋值语句具有不同的形式。

本节先学习信号赋值语句。

4.3.1 信号说明语句信号是电子电路内部硬件连接的抽象。

它除了没有数据流动的方向说明以外,其它的性质和“端口”概念一致。

信号通常在构造体、程序包和实体中说明。

信号赋值语句具有全局特征,不但可以使数据在设计实体内传递,还可以通过信号的赋值操作与其他实体进行数据交流。

信号说明语句格式如下:signal 信号名:数据类型[约束条件] [:=初值表达式];例如:signal sys_clk:bit;4.3.2 信号赋值语句1、简单信号赋值语句简单信号赋值语句的格式为:目的信号名< = 信号表达式(赋值源);例如:sys_clk<=…0‟;简单信号赋值语句既可以作为顺序语句在进程中使用,也可作为并行语句使用。

2、条件信号赋值语句条件信号赋值语句可以根据不同的条件将不同的表达式值赋给目标端口或信号。

其格式如下:输出端口(或信号)<= 表达式1 WHEN 赋值条件1 ELSE表达式2 WHEN 赋值条件2 ELSE……表达式n;使用条件信号赋值语句时,应该注意以下几点:1)只有最后一个表达式有分号,其它的表达式后面没有标点符号;2)只有当条件满足时,才能将该条件前面的表达式的值赋给目标信号。

3)条件信号赋值语句可以只列出部分条件,最后一个表达式后面也可以含有WHEN子句加“;”结束,但不能有ELSE。

4)条件信号赋值语句是并行语句,不能在进程中使用。

3、选择信号赋值语句选择信号赋值语句是一种条件分支的并行语句,格式如下:WITH 选择表达式SELECT目标信号< = 表达式1 WHEN 选择条件1,表达式2 WHEN 选择条件2,……,表达式n WHEN 选择条件n ; 使用选择信号赋值语句时,应该注意以下几点:1)只有最后一个表达式有分号,其它的表达式后面标点符号为逗号。

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

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

第5章 组合逻辑电路的VHDL描述
仿真波形
第5章 组合逻辑电路的VHDL描述
5.1.2 2输入或非门
LIBRARY IEEE ; USE IEEE.STD_LOGIC_1164.ALL ;
NOR2
ENTITY cynor2 IS
PORT ( datain1, datain2 : IN STD_LOGIC ; dataout : OUT STD_LOGIC ) ; END ENTITY cynor2 ; ARCHITECTURE behavioral OF cynor2 IS BEGIN dataout <= datain1 NOR datain2 ; END ARCHITECTURE behavioral ;
第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
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

VHDL程序设计基础

VHDL程序设计基础
上一页 下一页 返回
6.1 常用组合逻辑电路设计



END nor2; architecture nor_behave of nor2 is BEGIN y<=a nor b; END nor_behave; 3.2输入异或门电路 library ieee; use ieee.std_logic_1164.ALL; entity xor2 is PORT(a,b:IN std_logic; y:out std_logic);
上一页 下一页 返回
6.1 常用组合逻辑电路设计

END XOR2; ARCHITECTURE XOR_BEHAVE OF XOR2 IS BEGIN y<=a xor b; END XOR_BEHAVE;
上一页 下一页 返回
6.1 常用组合逻辑电路设计


6.1.2编码器/译码器
上一页 下一页 返回
6.1 常用组合逻辑电路设计




PORT (A,B:IN std_logic_VECTOR(3 DOWNTO 0); Q1:OUT std_logic_VECTOR(4 DOWNTO 0); Q2:OUT std_logic_VECTOR(3 DOWNTO 0); Q3:OUT std_logic_VECTOR(7 DOWNTO 0)); END ARITHMETIC; ARCHITECTURE ART OF ARITHMETIC IS BEGIN PROCESS(A,B) BEGIN Q1<=('0'&A)+('0'&B); ----加法 Q2<=A-B; ----减法 Q3<=A*B; -----乘法 END PROCESS; END ART;

第2-5讲 VHDL语言结合逻辑电路设计

第2-5讲 VHDL语言结合逻辑电路设计
Y:OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END ymq83;
请注意 数据类型 的声明
译 码 器 设 计
ARCHITECTURE behavior OF ymq83 IS SIGNAL INDATA:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN 该描述 INDATA<=C&B&A; PROCESS(INDATA) 不具有 BEGIN 优先级 CASE INDATA IS WHEN “000” => Y<=“11111110”; WHEN “001” => Y<=“11111101”; WHEN “010” => Y<=“11111011”; WHEN “011” => Y<=“11110111”; WHEN “100” => Y<=“11101111”; WHEN “101” => Y<=“11011111”; WHEN “110” => Y<=“10111111”; WHEN “111” => Y<=“01111111”; WHEN OTHERS => Y<=“XXXXXXXX”; END CASE; END PROCESS; END behavior;
PROCESS (i) BEGIN CASE i IS WHEN "00000001" => y <="000"; WHEN "00000010" => y <="001"; WHEN "00000100" => y <="010"; WHEN "00001000" => y <="011"; WHEN "00010000" => y <="100"; WHEN "00100000" => y <="101"; WHEN "01000000" => y <="110"; WHEN "10000000" => y <="111"; WHEN OTHERS => y <= "ZZZ"; END CASE; END PROCESS; END ARCHITECTURE ONE ;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

“非”门library ieee;use ieee.std_logic_1164.all; entity not1 isport(a:in std_logic;b:out std_logic); end entity not1; architecture behav of not1 is beginb<=not a;end architecture behav;“与”门library ieee;use ieee.std_logic_1164.all; entity and2 isport(a,b:in std_logic;c:out std_logic); end entity and2; architecture behav of and2 is beginc<=a and b;end architecture behav;“与非”门library ieee;use ieee.std_logic_1164.all; entity nand2 isport(a,b:in std_logic;c:out std_logic); end entity nand2; architecture behav of nand2 is beginc<=not(a and b);end architecture behav; “或非”门library ieee;use ieee.std_logic_1164.all;entity nor2 isport(a,b:in std_logic;c:out std_logic);end entity nor2;architecture one of nor2 isbeginc<=not(a or b);end architecture one;“异或非”门library ieee;use ieee.std_logic_1164.all;entity xor2 isport(a,b:in std_logic;c:out std_logic);end entity xor2;architecture one of xor2 isBeginc<=not( ( (not a)and b)or(aand(not b) ) );end architecture one;D触发器library ieee;use ieee.std_logic_1164.all;entity dffa isport(D,clk,clr:in std_logic;Q:out std_logic);end entity dffa;architecture behave of dffa isbeginprocess(clk,D,clr)beginif clr='1' then Q<='0';Elsif clk'event and clk='1'then Q<=D;end if;end process;end architecture behave;T触发器library ieee;use ieee.std_logic_1164.all;entity tffa isport(T,clk,clr: in std_logic;Q: buffer std_logic);end entity tffa;architecture behave of tffa isbeginprocess(clk,T,clr)beginif clk'event and clk='1'thenif clr='1' then Q<='0';Elsif t='1'then Q<=not Q;else Q<=Q;End if;end if;end process;end architecture behave;JK触发器library ieee;use ieee.std_logic_1164.all;entity jk isport(J,K,clk, in std_logic;Q: buffer std_logic);end entity tffa;architecture behave of jk isbeginprocess(clk,J,K)beginif clk'event and clk='1'thenQ<=( (J and(not Q) )or( (notK)and Q) );end if;end process;end architecture behave;移位寄存器library ieee;use ieee.std_logic_1164.all; useieee.std_logic_unsigned.all; entity reg isport(clk,din, dir: in std_logic;op: out std_logic);end entity reg;architecture a of reg issignal q:std_logic_vector(7 downto 0);beginprocess(clk)beginif clk'event and clk='1'thenif dir='0' then q(0)<=din;for i in 1 to 7 loopq(i)<=q(i-1);end loop;else q(7)<=din;for i in 1 to 7 loopq(i-1)<=q(i);end loop;end if;end if;end process;op<=q(7)when dir='0'elseq(0);end architecture a; 分频电路library ieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entity divf isport(clk: in std_logic;q: out std_logic);end entity divf;architecture a of divf issignal rst:std_logic;signal qn:std_logic_vector(2downto 0);beginprocess(clk,rst)beginif rst='1'then qn<="000";elsifclk'event and clk='1'thenqn<=qn+1;end if;end process;rst<='1'when qn=6 else'0';q<= qn(2);end architecture a;74LS160计数器library ieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entity ls74160 isport(clk,rst,ena,pe:instd_logic;d:in std_logic_vector(3 downto0);count:out std_logic_vector(3downto 0);co:out std_logic);end;architecture behave of ls74160issignal temp:std_logic_vector(3 downto 0);beginprocess(clk,rst,ena,pe)beginif (rst='1')thentemp<="0000";elsif(clk'eventandclk='1')thenif ena='1'thenif pe='1'then temp<=d;elsif temp="1001"thentemp<="0000";co<='1';else temp<=temp+1;co<='0';end if;end if;end if;end process;count<=temp;end behave;10进制计数器library ieee;use ieee.std_logic_1164.all; useieee.std_logic_unsigned.all; entity count10 isport(clk,rst,ena:in std_logi c; count:out std_logic_vector(3 downto 0);co:out std_logic);end count10;architecture behave of count10 issignal temp:std_logic_vector (3 downto 0);beginprocess(clk,rst,ena)beginif (rst='1')thentemp<="0000";elsif(clk'event and clk='1')then if ena='1'thenif(temp="1001")thentemp<="0000";co<='1';else temp<=temp+1;co<='0';end if;end if;end if;end process;count<=temp;end behave;输出逻辑宏单元(OLMC):输出引脚为12~19共8个。

输出逻辑宏单元包括或门、异或门、D触发器、4个4选1多路选择器、输出缓冲器等。

BCD—7段译码library ieee;use ieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entity decord7 isport(a:in std_logic_vector(3downto 0);q:out std_logic_vector(6downto 0);en:out std_logic);end decord7;architecture behave of decord7isbeginprocess(a)begincase a(3 downto 0) iswhen"0000"=>q<="0111111";when"0001"=>q<="0000110";when"0010"=>q<="1011011";when"0011"=>q<="1001111";when"0100"=>q<="1100110";when"0101"=>q<="1101101";when"0110"=>q<="1111101";when"0111"=>q<="0000111";when"1000"=>q<="1111111";when"1001"=>q<="1101111";when others=>q<="0000000";end case;end process;en<='0';end behave;输入缓冲器:输入端为引脚2~9,共有8个输入。

相关文档
最新文档