超大规模集成电路CAD 第三章 硬件描述语言_第1页
超大规模集成电路CAD 第三章 硬件描述语言_第2页
超大规模集成电路CAD 第三章 硬件描述语言_第3页
超大规模集成电路CAD 第三章 硬件描述语言_第4页
超大规模集成电路CAD 第三章 硬件描述语言_第5页
已阅读5页,还剩149页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-101Design EntryDesign Entry 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-102p3.1 3.1 硬件描述语言概述硬件描述语言概述 p3.2 VHDL3.2 VHDL语言基本结构语言基本结构 p3.3 VHDL3.3 VHDL语言主要描述语句语言主要描述语句 p3.4 VHDL3.4 VHDL语言组合逻辑设计语言组合逻辑设计p3.5 VHDL3.5 VHDL语言时序逻辑设计

2、语言时序逻辑设计p3.6 VHDL3.6 VHDL语言的状态机设计语言的状态机设计p3.7 VHDL3.7 VHDL描述方法对电路结构的影响描述方法对电路结构的影响p3.8 VHDL3.8 VHDL的的TestbenchTestbench的编写方法的编写方法 p3.9 3.9 ModelsimModelsim仿真软件介绍仿真软件介绍 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1031.1.硬件描述语言(硬件描述语言(HDLHDL):):是一种形式化方法描述数字电路和系统的语言。利用这种语言,数字电路系统的设计可以从上

3、层到下层(从抽象到具体)逐层描述自己的设计思想,用分层次的模块来表示极其复杂的数字系统。然后利用EDA工具,逐层仿真验证,再利用综合工具把HDL转换为门级网表,最后用ASIC或FPGA自动布局布线工具,把网表转换成具体的电路。目前,美国硅谷约有90以上的ASIC和FPGA采用HDL进行设计。HDL发展至今已有20多年的历史,并成功的应用于EDA设计的各个阶段:建模、仿真、验证和综合等。 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-104 VHDLVHDL VHDL是美国国防部在20世纪70年代末80年代初提出的VHSI

4、C(Very High Speed Integrated Circuit)计划的产物,1981年提出了一种新的硬件描述语言,称为VHSIC Hardware Description Language 也就是我们熟知的VHDL。 VerilogVerilog HDL HDL Verilog HDL是在C语言基础上发展起来的一种硬件描述语言,它是由GDA(Gateway Design Automation)公司的Phil Moorby于1983年创建的,最初只设计了一个仿真与验证工具,之后又陆续开发了相关的故障模拟与时序分析工具。 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾

5、将上下而求索吾将上下而求索吾将上下而求索2022-5-105 SuperlogSuperlog 集合了Verilog的简洁、C语言的强大、功能验证和系统级结构设计等特征,是一种高速的硬件描述语言。由 Phil Moorby与Peter Flake和一家叫做CoDesign Automation的EDA公司合作,在Verilog语言的基础上,结合高级语言C、C甚至Java等语言的特点,进行扩展,于1999年发布了Superlogtm系统设计语言,同时开发了两个工具:SystemSimtm(用于系统开发)和SystemExtm(用于高级验证)。 SystemCSystemC 由Synopsys和C

6、oware合作为满足SOC要求开发的(在系统芯片各个设计中,像系统定义、软硬件的划分、设计实现等)一种能同时实现较高层次的软件和硬件描述的系统级设计语言。著名公司Cadence也于2001年加入了SystemC联盟。 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-106(1)VHDL具有更强的行为描述能力行为描述能力,从而决定了他成为系统设计领域最佳的硬件描述语言。强大的行为描述能力是避开具体的器件结构,从逻辑行为上描述和设计大规模电子系统的重要保证。(2)VHDL丰富的仿真语句和库函数丰富的仿真语句和库函数,使得在任何

7、大系统的设计早期就能查验设计系统的功能可行性,随时可对设计进行仿真模拟。(3)VHDL语句的行为描述能力和程序结构决定了他具有支支持大规模设计持大规模设计的分解和已有设计的再利用功能。符合市场需求的大规模系统高效,高速的完成必须有多人甚至多个代发组共同并行工作才能实现。(4)对于用VHDL完成的一个确定的设计,可以利用EDA工具进行逻辑综合和优化逻辑综合和优化,并自动的把VHDL描述设计转变成门级网表。(5)VHDL对设计的描述具有相对独立性相对独立性,设计者可以不懂硬件的结构,也不必管理最终设计实现的目标器件是什么,而进行独立的设计。 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其

8、修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-107 BehavioralBehavioral(行为级描述):(行为级描述):就是对整个系统的数学模型进行描述。只表示输入/出之间的转换行为,不包含任何结构信息,无需关注设计功能的门级实现。其抽象程度比RTL描述方式和结构描述方式更高。 在程序中大量采用算术运算、 关系运算、 惯性延时、 传输延时等难以进行逻辑综合和不能进行逻辑综合的VHDL语句。 Input1NOutput1NIF input1 THENFOR j IN high DOWNTO low LOOPshift(j) := shift(j);END LOOP;out

9、put1 = shift AFTER 5ns 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-108 RTLRTL(Register transfer LevelRegister transfer Level):即寄存器传输级即寄存器传输级描述,也称为数据流描述。描述,也称为数据流描述。既显示地表示了设计单元的行为,又隐含该设计单元的结构。Input 1Input nOutput 1底层元件底层元件底层元件底层元件p描述电路的功能和结构p调用特殊的硬件p用于综合 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远

10、兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-109 Structural LevelStructural Level(结构级描述)(结构级描述):描述该设计单元的硬件结构、把已有的设计单元方便地用到新的设计中,使用元件例化语句及配置语句来描述元件的类型及元件的互联关系。结构描述方式的基本框架为用COMPONENT语句指明电路中所用的已生成的模块,用PORTMAP()语句将模块连接起来。 元件描述元件描述用于声明端口类型和数据类型用于声明端口类型和数据类型 COMPONENT ISPORT ( : ;. : ; END COMPONENT; 元件配置用于映射端口 : PORT M

11、AP( = ; ; = ;) 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1010一一.VHDL .VHDL 语言的基本结构:语言的基本结构: 库库(library)(library):用来存放已经编译的实体、构造体、包集合和配置,库一般可由用户产生或者由ASIC芯片制造商提供。包集合包集合(package)(package):存放各设计模块都能共享的数据类型、常数和子程序。实体(实体(EntityEntity):系统的外部接口关系。构造体(构造体(ArchitectureArchitecture):描述系统内部的结构

12、和行为。配置(配置(configurationconfiguration):用于从库中选取所需的单元,来组成系统设计的不同版本。 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1011 一个完整的设计单元一个完整的设计单元 LIBRARY IEEE; 库库 USE IEEE.STD_LOGIC_1164.ALL; 包集合包集合 ENTITY 实体名字 IS 实体实体 PORT (端口名,); END 实体名; ARCHITCTURE 构造体名 OF 实体名 IS 结构体结构体 定义语句:信号常数,数据类型等 BEGIN

13、并发语句 END 构造体名; 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1012实体构造体基本单元实体构造体基本单元1 1:VHDLVHDL语言描述方法语言描述方法电原理图的描述方式,其中a,b是输入,c是输出,C=AB。如果用VHDL 语言来描述此电路:实体描述输入、输出,构造体描述功能。 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-10132 2:实体说明:实体说明 ENTITY ENTITY 实体名字 IS IS PORT PORT (

14、端口名,); END END 实体名;说明:说明: 1:实体名可用英文字母、数字、下划线表示 ,名 字开头只能为英文字母,结尾不能用下划线。 2:PORTPORT(端口名:方向 数据类型); 端口名与实体名命名规则相同。 方向: IN IN 表示输入表示输入 OUT OUT 表示输出(构造体内部不能再使用)表示输出(构造体内部不能再使用) INOUT INOUT 表示输入输出表示输入输出 BUFFER BUFFER 表示输出端带有反馈类型。(构造体内表示输出端带有反馈类型。(构造体内 部可再使用)部可再使用) 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上

15、下而求索吾将上下而求索2022-5-1014 数据类型数据类型: VHDL有10种数据类型,在逻辑电路设计中只使用两种。 BIT BIT :位:位 ( “0”( “0”,“1”)1”) BIT_VECTOR :BIT_VECTOR :位矢量位矢量 (“10101101”)(“10101101”) 表示数据总线 D0-D7的数据类型: BIT_VECTOR(7 DOWNTO 0);BIT_VECTOR(7 DOWNTO 0); library library ieeeieee; ; use ieee.std_logic_1164.all use ieee.std_logic_1164.all;

16、EntityEntity Mux isis portport(d0,d1,sel:in std_logic;std_logic; q:out std_logic;std_logic; bus:out std_logic_vector(7 std_logic_vector(7 downtodownto 0) 0); endend Mux; 例中BIT数据用std_logic说明,bus的BIT_VECTOR用std_logic_vector说明是完全等效的。 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-10153 3:构

17、造体:构造体 构造体用来描述实体的功能构造体用来描述实体的功能 ARCHITCTUREARCHITCTURE 构造体名 OF OF 实体名 IS IS 定义语句:内部信号,常数,数据类型,函数等的定义 BEGINBEGIN 并发语句 END END 构造体名; 构造体的名称可由设计者命名。通常根据描述的对象把构造体命名为behav(behavioral)行为描述,rtl寄存器传输描述,struct(structural)结构描述。 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1016VHDL 语言中,可以赋予一个值的对

18、象就称为客体或对象。信号信号(SIGNAL)(SIGNAL): 对应物理意义上是实际电路连接线。变量变量(VARIABLE)(VARIABLE): 相当于暂存寄存器,变量值不是最终结果。常数(常数(CONSTANTCONSTANT):): 如电源、地等,用来描述固定的值。信号量和变量的区别:信号量和变量的区别: 信号量是全局量(只能在进程、函数中使用和定义)变量是局部量(只能在构造体、子程序中定义,而不能在进程、过程、函数中定义) 信号赋值用“=”,而变量用“:”。 信号和变量可以相互代入。 如:a 是变量,b是信号,则a:=b;b=a; 变量是立即赋值的,而信号量是在进程结束时赋值的。 第3

19、章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1017相同点:相同点:值可变,可综合为逻辑或线不同点:不同点:变量赋值有立即性,且只用于process,subprogram中(VHDL-1076-87),而信号除此之外,还可用于并行语句中 应用:应用: 简单计算 signal 复杂计算 variable 中间结果 variable 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1018signal a, b, c, x, y : integerproc

20、ess(a, b, c)begin c = a; x = c + 2; c = b; y = c + 4;end process;signal a, b, x, y : integerprocess(a, b, c) variable c : integer;begin c := a; x = c + 2; c := b; y = c + 4;end process;+2b4xy+2b4xya 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1019描述时钟边沿的属性描述时钟边沿的属性EVENTEVENTEVENT属性属于

21、信号类属性。描述信号边沿出现的时刻时钟上升沿表示:时钟上升沿表示:IF(clkEVENT AND clk=1)THEN q=d;IF CLKEVENT AND (CLK=1) AND (CLKLAST_VALUE=0) THEN q=d; -确保CLK的变化是一 次上升沿的跳变IF CLK=1 AND CLKLAST_VALUE=0THEN q=d; 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1020库的功能类似于目录库:存放编译后的数据集合,单元,构造体,实体 等,使得设计者可以共享已经编译过的设计结 果。库的说明

22、总是放在设计单元的最前面。 LibraryLibrary 库名;库的好处在于使设计者可以共享已经编译过的设计结果,在VHDL中可以存在多个不同的库,但库之间是相互独立的,不可嵌套。 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1021p STDSTD库库:任何包集合都可不作任何说明便可以使用。 如:VHDL标准库中定义BIT、BIT_VECTOR等。p IEEEIEEE库库:美国电子电器工程师协会定义的库,在使用其中的包集合之前应先说明。 如:LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.

23、ALL;p 面向用户的面向用户的ASICASIC库库:为了进行门级仿真,各个公司提供面向ASIC的逻辑门库,例设计单片机、乘法器、接口等电路时,并不需要用用户设计这些器件,直接可调用。p 工作库工作库WorkWork:现行工作库,用户设计好电路经过编译后放入工作库中。p 用户定义库用户定义库:为了方便工作,用户自己设计的单元可以作为用户自定义库。 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1022ModelsimModelsim仿真库仿真库 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求

24、索吾将上下而求索吾将上下而求索2022-5-1023包集合相当于高级语言中的INCLUDE语句。包集合包含信信号的定义、常数定义、数据类型定义、元器件定义、函号的定义、常数定义、数据类型定义、元器件定义、函数定义、过程定义等数定义、过程定义等。包集合是一个可编译的设计单元,也是库结构中的一个层次。要使用包集合时可以用USE语句说明。 如:Use ieee.std_logic_1164.all;该语句表示在VHDL程序中要使用名为Std_logic_1164.all的包集合中所有定义或说明项。 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而

25、求索2022-5-1024 PACKAGE 包集合名 IS 说明语句 END 包集合名; PACKAGE BODY 包集合名 IS 语句 END 包集合名; 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1025p 配置(Configuration)语句描述层与层之间的连接关系及实体结构之间的连接关系。设计者可以利用配利用配置语句来选择不同的构造体置语句来选择不同的构造体,使其与要设计的实体相对应。在仿真某个实体时,可以利用配置来选择不同的构造体,进行性能对比试验以获得性能最佳的构造体。 Configuration 配置

26、名 Of 实体名 语句说明 End 配置名; 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1026两类描述语句:两类描述语句: 一:顺序语句(:顺序语句(SequentialSequential) 二:并发语句(:并发语句(ConcurrentConcurrent) 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1027顺序语句是按出现的次序加以执行。只能出现在进程或子程序中,由它定义进程所操作的算法。 涉及到的系统行为:系统行为:有时序控制流、

27、控制、条件和迭代等; 语句的功能操作:语句的功能操作:有算术、逻辑运算;信号和变量的赋值,子程序调用等。 WAIT WAIT 语句语句 断言语句断言语句 信号代入语句信号代入语句 变量赋值语句变量赋值语句 IF IF语句语句 CASECASE语句语句 LOOP LOOP语句语句 NEXTNEXT语句语句 EXIT EXIT语句语句 过程调用语句过程调用语句 NULL NULL语句语句 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-10281:1:书写格式书写格式 WAIT :无限等待 WAIT ON 信号 :信号变化前处

28、于等待,变化后进程执 行,结束挂起等待状态 WAIT UNTIL *条件:条件满足后,结束等待状态。 WAIT FOR 时间: 时间到后,结束等待。2:2:说明说明l可以将上述可以将上述WAIT WAIT 语句语句“或或”起来起来l带带* *号的号的WAIT WAIT 语句可以进行逻辑综合功能,其余只语句可以进行逻辑综合功能,其余只能进行行为描述。能进行行为描述。l无敏感量进程是无限等待循环的进程。无敏感量进程是无限等待循环的进程。 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1029 If 语句是根据所制指定的条件来

29、确定执行那些语句。用于选择器、比较器、译码器和条件控制的逻辑设计。三种类型:三种类型: 1:开关控制(门闩控制) IF 条件 THEN 2: 2选1控制 IF 条件 顺序语句 ELSE 顺序语句 END IF; 3: 多选择控制 IF 条件1 THEN . ELSIF 条件2 THEN End IF; 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1030 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1031Library ieee;use ie

30、ee.std_logic_1164.all;entity Mux41 isPort(input :in std_logic_vector(3 downto 0);Sel(in std_logic _vector(1 downto 0);Y:out std_logic);End mux41; ARCHITECTURE rtl OF mux41 IS BEGINPROCESS(input,sel)BEGINIF(sel=00)THEN Y=input(0);ELSIF (sel=01)THEN Y=input(1);ELSIF(sel=10)THEN Y=input(2); ELSE Y顺序语句;

31、 END CASE; 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1033ARCHITECTURE rtl OF max41 IS BEGIN PROCESS(sel,input) BEGIN CASE sel IS WHEN “00”=YYYYY=Z; END CASE; END PROCESS; END rtl; 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1034 IF语句按条件顺序处理(可设计优先级编码器),而CASE语句按条件是无顺序

32、处理(并行),从而CASE语句不能用来设计优先编码器。 CASE语句必须列出所有条件,IF语句不一定,一般来说,列出所有条件是不大可能的,故在CASE语句中,常常在最后有WHEN OTHERS 语句。 描述总线或编码、译码的行为Case语句的可读性比If语句强。 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1035LOOP语句用于描述迭代电路,即将相同功能的电路串连起来,通常有两种描述方式。1:FOR循环变量 标号:FOR 循环变量 IN 离散范围 LOOP 顺序语句 END LOOP 标号;如:累加计算ASUM:fo

33、r I in 1 to 9 loop sum:=sum+i;-sum初始值为0 end loop ASUM; 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-10362.WHILE LOOP语句。 标号: WHILE 条件 LOOP 顺序处理语句 END LOOP 标号; 没有给出循环次数的范围,而是给出了循环执行顺序语句的条件;没有自动递增循环变量的功能,所以必须在顺序处理语句中增加一条循环次数计算语句,用于循环控制。循环控制条件为布尔表达式,当条件为“真”时,则进行循环;如果条件为“假”,则结束循环。 WHILE( i

34、10) LOOP sum:= sum+i; i:=i+1; END LOOP; 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1037p Process 进程语句p Concurrent Signal Assignment 并发信号代入语句p Conditional Signal Assignment 条件信号代入语句p Selective Signal Assignment 选择信号代入语句p Concurrent Procedure Call 并发过程调用语句p Block 块语句 第3章 硬件描述语言路漫漫其修远兮

35、路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1038进程语句是最主要的并发语句进程语句是最主要的并发语句,也是最能体现硬件描述语言特点的一条语句。在一个构造体中,多个进程语句可同时并发运行。 进程语句主要有以下几个特点: 它可以与其它进程并发运行,并可存取实体或构造体中定义的信号。 进程语句是并发语句,而进程结构中的语句是顺序语句,是按顺序一条一条执行的。 进程的启动可用敏感量或在进程中包含WAIT语句。 进程之间的同步和通信是通过信号量传递来实现的。 进程只能定义常数、变量,不能定义信号量。 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修

36、远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1039 信号代入语句用在并发执行场合就是并发信号代入语句。 一个并发语句可以写成一个进程。 如:Process(a,b) Begin c=a AND b; End Process; c=a AND b是一个并发语句,这里a,b都是信号量;代入符号 “=”右边可以用算术运算表达式、逻辑表达式或关系操作表达式来表示。 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1040条件代入语句可根据不同条件将不同的表达式代入信号量 书写格式为书写格式为: 目的信号量 =

37、表达式1 when 条件1 else 表达式2 when条件2 else 表达式3 when 条件3 else ELSE 表达式n; 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1041例:用条件信号代入语句描述四选一Entity mux41 isPort(i0,i1,i2,i3,a,b:in std_logic; q:out std_logic);End mux41;Architecture rtl of mux41 isSignal:sel std_logic_vector(1 downto 0);Begin se

38、l=b& a; q=i0 when sel=“00” else i1 when sel=“01” else i2 when sel=“10” else i3 when sel=“11” else X;End rtl; 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1042 选择信号代入语句类似于CASE语句,它对表达式进行测试,当表达式取值不同时,将使不同的值代入目的信号量 书写格式为:书写格式为: WITH 表达式 SELECT 目的信号量 = 表达式1 WHEN 条件1, 表达式2 WHEN 条件2, 表达式

39、n WHEN 条件n, 表达式n+1 WHEN others; 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1043例: 2选1电路LIBRARY IEEE;USE IEEE.std_logic_1164.all;ENTITY mux 21 ISPORT (a, b, sel : in std-logic ; q : out std-logic); END mux21;ARCHITECTURE with-select-when OF mux21 ISBEGIN with sel select q = a when 1,

40、 b when 0, X when others;END with-select-when; 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1044组合逻辑电路:组合逻辑电路:用各种门电路组成的,用于实现某种功 能的复杂逻辑电路。特点:特点:某一时刻的输出状态仅由该时刻电路的输入信号 决定,而与该电路在此输入信号之前所具有的状 态无关。主要包括: 简单门电路简单门电路 编、译码器编、译码器 三态门电路、总线缓冲器三态门电路、总线缓冲器 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下

41、而求索吾将上下而求索2022-5-1045 2 2输入输入 “与非与非”门电路门电路library ieee;use ieee.std_logic_1164.all;entity nand2 isport(a,b:in std_logic; y:out std_logic);End nand2;Architecture beh of nand2 isBegin y=a Nand b;End nand2;&aby 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-10463-8译码器电路(case语句)ARCHITEC

42、TURE rtl OF decode ISBEGINPROCESS (Din) BEGIN IF ( en=0) THEN Dout 0); ELSE CASE Din IS when 000 = Dout Dout Dout Dout Dout Dout Dout Dout Dout = 00000000;END CASE;END IF;END PROCESS;End decode 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1048优先级编码器entity priority is port(Input : in s

43、td_logic_vector(7 downto 0); output : out std_logic_vector(2 downto 0); architecture a of priority is begin process (input) begin if Input(7) = 1 then output = 111; elsif Input(6) = 1 then output = 110; elsif Input(5) = 1 then output = 101; elsif Input(4) = 1 then output = 100; elsif Input(3) = 1 th

44、en output = 011; elsif Input(2) = 1 then output = 010; elsif Input(1) = 1 then output = 001; elsif Input(0) = 1 then output = 000; end if; end process; end a; 优优先先级级编编码码器器Input7 .0Output2.0 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1049三态门电路Entity tri_gate is port(din,en:in std_log

45、ic; dout:out std_logic);End tri_gate;Architecture a of tri_gate is beginProcess(din,en) begin If(en=1)then dout=din;-0,1态 else dout=Z;-高阻态End if;End process;End a;数据输入控制输入数据输出dinendoutX0Z010111三态门dinendout 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1050双向总线缓冲器功能:双向总线缓冲器有两个输入输出端a和b,一

46、个方向控制端dr和一个选通端en。当en=1时双向总线缓冲器未被选通 a和b都呈高阻态;当en=0时双向总线缓冲器选通 如果dr=0,a=b; 如果dr=1,b=a;endr功能00a=b01b=a1XZ双向总线缓冲器bdrEna 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1051Library ieee;Use ieee.std_logic_1164.all;Entity tri_bigate isPort(a,b:inout std_logic_vector(7 downto 0); en:in std_logi

47、c; dr:in std_logic);End tri_bigate;Architecture rtl of tri_bigate isSignal aout,bout:std_logic_vector(7 downto 0); Begin Process (a, dr, en) beginIf(en=0)and (dr=1)then 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1052 bout=a;else bout=“ZZZZZZZZ”;End if; b=bout;End process;process (b,

48、 dr, en) beginIf(en=0)and (dr=0)then aout=b;else aout=“ZZZZZZZZ”;End if; a=aout;End process;End rtl 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1053p 时序逻辑电路?时序逻辑电路? 是具有记忆(或内部状态)的电路,即时序逻辑电路的输出不但与当前的输入状态有关,而且与以前的输入状态有关。时序电路的内部状态元件可以由边沿敏感的触发器或由电平敏感的锁存器实现,但大多数时序电路采用触发器来实现。 时序电路又可分为同步时序电路

49、和异步时序电路两种,大部分时序电路为同步时序电路。主要包括: 触发器 寄存器 计数器 分频器 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1054 1:时钟信号描述 上升沿:IF(clkEVENT AND clk=1)THEN 下降沿:IF(clkEVENT AND clk=0)THEN 2: 复位信号描述 (1)异步复位描述 PROCESS( clk,reset) BEGIN IF(reset=0)THEN q=0; ELSIF (clkEVENT AND clk=1)THEN q=d; END IF; END PR

50、OCESS;(2):同步复位描述PROCESS(clk)BEGINIF(clkEVENT AND clk=1)THEN IF(reset=0)THEN q=0; ELSE q=d; END IF;End if;End process; 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1055D D触发器触发器Entity dff1 ISPORT (clk ,d ,reset : in STD_LOGIC; q : out STD_LOGIC);END dff1;ARCHITECTURE rtl OF dff1 IS BEG

51、INPROCESS (clk, reset) BEGINIF(reset=0) THE q=0;ELSIF (clkEVENT AND clk=1)THE q= d; END IF;END PROCESS;END rtl;D触发器dclkresetq 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1056移位寄存器(多级延迟)ENTITY reg1 IS PORT ( d : in BIT; clk : in BIT; q : out BIT);END reg1;ARCHITECTURE reg1 OF reg1 ISS

52、IGNAL a, b : BIT;BEGINPROCESS (clk)BEGINIF rising_edge(clk) THENa = d;b = a;q = b;END IF;END PROCESS;END reg1; 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1057 串转并移位寄存器library ieee;use ieee.std_logic_1164.all;entity parltostr isport(clr,clk,din:in std_logic; q:out std_logic_vector(7

53、downto 0);end parltostr;Architecture rtl of parltostr issignal temp :std_logic_vector(7 downto 0);begin process(clk,clr)begin if clr=1 then 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1058 temp=00000000;elsif clkevent and clk=1 then temp(0)=din; temp(1)= temp(0); temp(2)= temp(1); te

54、mp(3)= temp(2); temp(4)= temp(3); temp(5)= temp(4); temp(6)= temp(5); temp(7)= temp(6); q=temp; end if;end process;end rtl; 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-10591000110101start10 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1060clkD QdD QD QD QD QD QD QD Qq7

55、.0clkD QD7.0D QD QD QD QD QD QD Qq07.0q17.0q27.0q37.0q47.0q57.0q67.0q77.088888888位串转并移位寄存器总线数据串转并移位寄存器 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1061 1010进制计数器进制计数器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;ENTITY count10 I

56、SPORT(reset,clk:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END count10;architecture rtl OF count10 ISBEGINPROCESS(clk) VARIABLE q10:INTEGER range 0 to 9; BEGIN10进制计数器clkresetq3.0 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1062IF(clkevent and clk=1)THEN IF(reset=1)THEN q10:=0;

57、ELSIF(q10=9)THEN q10:=0; ELSE q10:=q10+1; END IF;END IF; q=conv_std_logic_vector(q10,4);-数据类型转换END PROCESS;end rtl; 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1063课堂练习课堂练习:设计一个有清零端的25进制减法计数器 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1064 在具体的电路设计中,可能需要很多种不同频率的时钟,但时

58、钟源往往只有一个,这时候就需要分频得到我们需要的时钟频率,同时也能满足时钟同步设计。最常用的分频器设计采用计数器对时钟进行分频,采用调整范围计数或采用组合逻辑实现需要的频率时钟的占空比。 1010分频器的设计分频器的设计 Library ieee; USE IEEE.STD_LOGIC_1164.ALL; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; ENTITY count10 IS PORT(reset,clk:IN STD_LOGIC; clk1:out std_logic; q:OUT STD_LOGIC_

59、VECTOR(3 DOWNTO 0); END count10; 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1065architecture rtl OF count10 ISsignal q10:INTEGER range 0 to 9;BEGINP1:PROCESS(clk) BEGIN IF(clkevent and clk=1)THEN IF(reset=1)THEN q10=0; ELSIF(q10=9)THEN q10=0; ELSE q10=q10+1; END IF; END IF; q=conv_s

60、td_logic_vector(q10,4);END PROCESS; 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1066P2:process(clk,q10)begin if clkevent and clk=1 then if q105 then 可设置不同的占空比 clk1=0; else clk1=1; end if;end if;end process;end rtl; 第3章 硬件描述语言路漫漫其修远兮路漫漫其修远兮路漫漫其修远兮 吾将上下而求索吾将上下而求索吾将上下而求索2022-5-1067课堂练习:课堂练习:对40

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论