第四章 VHDL编程基础.

Slides:



Advertisements
Similar presentations
EDA技术与VHDL设计 第6章 VHDL结构与要素.
Advertisements

做实验过程中发现的问题: 新建时工程文件夹建立了,但所建实体文件并没存放在其中 文件名不能用汉字
Tool Command Language --11级ACM班 金天行.
实验四 利用中规模芯片设计时序电路(二).
《 E D A 技 术》 课 程 教 学 讲授:伍宗富 湖南文理学院电气与信息工程学院 2017年3月19日星期日.
VHDL 编 程 基 础.
第4章 VHDL设计初步.
《 E D A 技 术》 课 程 教 学 讲授:伍宗富 湖南文理学院电气与信息工程学院 2017年4月5日星期三.
第7章 VHDL结构与要素 主要内容 EDA技术实用教程 ■ 子程序 ■ VHDL库、程序包和配制 ■ VHDL文字规则 ■ 数据类型
Greatest Common Divisor ---最大公约数
EPF10K10TI144-4晶片燒錄.
第三章 组合逻辑电路 第一节 组合电路的分析和设计 第二节 组合逻辑电路中的竞争与冒险 第三节 超高速集成电路硬件描述语言VHDL
第1章 FPGA概述 1.1 FPGA的发展历程 1.2 FPGA的基本原理 1.3 FPGA的设计方法 1.4 FPGA的设计流程
VHDL數位電路實習與專題設計 文魁資訊-UE301
VHDL數位電路實習與專題設計 文魁資訊-UE301
8.9二进制振幅键控(ASK) 调制器与解调器设计
VHDL 硬體描述語言 數位電路設計實務 第四章 VHDL 的語言結構.
VHDL 硬體描述語言 數位電路設計實務 第六章 函數副程序以及套件程式庫.
第10章 VHDL入门 2018/11/27 逻辑设计基础.
EDA原理及应用 何宾
使用VHDL設計—4位元減法器 通訊一甲 B 楊穎穆.
EDA原理及应用 何宾
欢迎参加VHDL培训 VHDL培训教程 浙江大学电子信息技术研究所 电子设计自动化(EDA)培训中心
第13章 数字电路基础 13.1 数字电路概述 13.2 数字电路中的数值与码制 13.3 逻辑代数 13.4 逻辑门电路
使用VHDL設計—向上&向下計數器 通訊一甲 B 楊穎穆.
使用VHDL設計-XOR_GATE 通訊一甲 B 楊穎穆.
管理信息结构SMI.
CH8 VHDL结构与要素 CH8.8 & CH8.9.
走进编程 程序的顺序结构(二).
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
使用VHDL設計--Moore Machine
实验四 组合逻辑电路的设计与测试 一.实验目的 1.掌握组合逻辑电路的设计 方法 2.学会对组合逻辑电路的测 试方法.
第12章 图像边缘检测器的设计与分析 12.1 系统设计要求 12.2 系统设计方案 12.3 主要LPM原理图和VHDL源程序
第二章 Java语言基础.
第五章 VHDL设计基础 本章重点: 本章难点: VHDL程序结构 VHDL的基本数据类型 VHDL的基本描述语句 基本组合逻辑电路设计
義守大學電機工程學系 陳慶瀚 第3章 VHDL Concurrent語法 義守大學電機工程學系 陳慶瀚
第六章 VHDL设计共享.
第五章 VHDL主要描述语句.
移相正弦信号发生器设计 采用直接数字综合器DDS发生器的设计 原理:图1是此电路模型图
使用VHDL設計—4位元ALU電路 通訊一甲 B 楊穎穆.
第一次上机安排 第六周 第七周 周一晚(提高1、2,通信001~012) 周二上(通信014~085) 周四上(通信086~154)
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
抢答器 设计一个2人抢答器。要求如下: 设计任务 1.两人抢答,先抢为有效,用发光二极 管显示是否抢到优先答题权。
$9 泛型基础.
2011 邀请中国姐妹学校韩国语研修团项目 申请时间: ~5月 27日 / 项目地点: 汉阳大学 安山校区 / 项目时间: (星期日) ~ 7.22(星期五) 费用: 100万元(韩币/人 (包含项目 - 学费, 教材费, 宿舍费, 接机费用及所有文化体验活动项目费用)
计算机学院 数字逻辑实验的要求.
或閘的特性與符號 所有的輸入均為0,輸出才為0 ▲ 圖 3-1 或閘的邏輯概念 ▲ 圖 3-2 或閘的電路符號.
C语言程序设计 第一章 数据类型, 运算符与表达式 第二章 顺序程序设计 第三章 选择结构程序设计 第四章 循环控制 第五章 数组.
數位邏輯設計 VHDL.
第4章 Excel电子表格制作软件 4.4 函数(一).
使用VHDL設計-XOR_GATE 通訊一甲 B 楊穎穆.
C++语言程序设计 C++语言程序设计 第四章 数组及自定义数据类型 C++语言程序设计.
第九节 赋值运算符和赋值表达式.
3.16 枚举算法及其程序实现 ——数组的作用.
使用VHDL設計-8x1多工器 通訊一甲 B 楊穎穆.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
ASP.NET实用教程 清华大学出版社 第4章 C#编程语言 教学目标 教学重点 教学过程 2019年5月5日.
第7章 VHDL设计应用实例 7.1 8位加法器的设计 7.2 分频电路 7.3 数字秒表的设计.
第二章 Java基本语法 讲师:复凡.
使用VHDL設計-七段顯示 通訊一甲 B 楊穎穆.
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2009年10月22日
基本知识 数据类型、变量、常量、运算符.
Programmable Logic System Design
陳慶瀚 機器智慧與自動化技術(MIAT)實驗室 國立中央大學資工系 2013年5月28日
电工电子技术实验 电工电子教学部.
第七章 基本逻辑电路设计.
工业机器人入门使用教程 ESTUN机器人 主讲人:李老师
编译原理实践 6.程序设计语言PL/0.
Programmable Logic System Design
Presentation transcript:

第四章 VHDL编程基础

主要内容 硬件描述语言及其特点 VHDL程序基本结构 VHDL语言要素 VHDL结构体描述方式

4.1 硬件描述语言及其特点 4.1.1 硬件描述语言的基本概念 4.1.2 常用硬件描述语言简介 4.1 硬件描述语言及其特点 4.1.1 硬件描述语言的基本概念 硬件描述语言很好地解决了文本语言描述和逻辑图描述存在的不足。它是一种类似于C、C++的计算机高级语言,允许设计者通过精确定义的语句描述逻辑网络的任何操作,更重要的可以通过计算机仿真设计好的逻辑网络,而且仿真中包含了硬件特性。 4.1.2 常用硬件描述语言简介 目前常用的硬件描述语言有 VHDL、Verilog、AHDL和 ABEL 语言。 VHDL 的英文全名是VHSIC(Very High Speed Integrated Circuit)Hardware Description Language, 1982年发源于美国国防部,1987年底被和美国国防部确认为标准硬件描述语言。1993年,IEEE 对 VHDL 进行了修订,公布了新版本的 VHDL,即 IEEE 标准的1076-1993版本。

4.1 硬件描述语言及其特点(续) 4.1.3 VHDL特点 VHDL具有更强的行为描述能力 支持团队设计模式 系统设计与硬件结构无关 4.1 硬件描述语言及其特点(续) 4.1.3 VHDL特点 VHDL具有更强的行为描述能力 支持团队设计模式 系统设计与硬件结构无关 具有较强的预测能力 自动化程度高 具有极强的移植能力

4.2 VHDL程序基本结构 4.2.1 实体描述 ENTITY simple gate IS PORT( A, B, C: IN BIT; 4.2.1 实体描述 实体是一个模块的表层设计单元,其功能是该模块与外部电路进行接口的描述,它定义了模块的输入输出接口信号或引脚,是模块经封装后对外的一个通信界面。 ENTITY simple gate IS PORT( A, B, C: IN BIT; F : OUT BIT ); END simple gate;

4.2.1 实体描述(续) 端口声明的语句格式是: 标识符:端口模式 数据类型; VHDL可综合的端口模式有以下四种: 4.2.1 实体描述(续) 端口声明的语句格式是: 标识符:端口模式 数据类型; VHDL可综合的端口模式有以下四种: “IN”通道为单向只读模式,规定数据只能通过此端口被读 入实体中。 “OUT”通道为单向输出模式,规定数据只能通过此端口从 实体向外流出,或者说可以将实体中的数据向此端口赋值。 “INOUT” 定义的通道确定为输入输出双向端口,即从端 口的内部看,可以对此端口进行赋值,也可以通过此端口读 入外部的数据;而从端口的外部看,信号既可以从此端口流 出,也可以向此端口输入信号,如RAM的数据端口。 “BUFFER” 功能与INOUT类似,区别在于当需要输入数据 时,只允许内部回读输出的信号,即允许反馈。

4.2.2 结构体描述 定义好模块的实体以后,就可以用结构体声明描述模块 具体做什么,实现怎样的逻辑功能。最典型的结构体描述方 式有以下三种: 行为描述:不考虑硬件实现的途径,直接建立输入与输出 之间的关系。 结构描述:通过组合如基本逻辑门电路等更初级的部件构 造实现逻辑功能。 数据流描述:通过定义模块中信号的流动方向描述模块功 能,也可以看作一种特殊的行为描述模式。

4.2.2 结构体描述(续) VHDL语言中,结构体描述的一般形式如下: ARCHITECTURE 结构体名 OF 实体名 IS 4.2.2 结构体描述(续) VHDL语言中,结构体描述的一般形式如下: ARCHITECTURE 结构体名 OF 实体名 IS 说明语句1; 说明语句2; … BEGIN 功能描述语句1; 功能描述语句2; END 结构体名;

4.2.3 模块设计实例 例4.1 双输入与非门的VHDL设计 --双输入与非门实体描述 ENTITY nand2 IS PORT 4.2.3 模块设计实例 例4.1 双输入与非门的VHDL设计 --双输入与非门实体描述 ENTITY nand2 IS PORT (A, B: IN BIT; F: OUT BIT ); END nand2; --以下是双输入与非门的结构体描述 ARCHITECTURE behavioral OF nand2 IS BEGIN F<=A NAND B; END behavioral;

4.2.3 模块设计实例(续) 例4.2 2选1多路选择器的VHDL设计 --2选1多路选择器的实体描述 ENTITY mux21 IS 4.2.3 模块设计实例(续) 例4.2 2选1多路选择器的VHDL设计 --2选1多路选择器的实体描述 ENTITY mux21 IS PORT(A,B: IN BIT; S: IN BIT; Y: OUT BIT); END mux21; --以下是2选1多路选择器的结构体描述ARCHITECTURE structural OF mux21 IS SIGNAL D, E: BIT; BEGIN D<=A AND S; E<=B AND (NOT S); Y<=D OR E; END structural;

4.3 VHDL语言要素 4.3.1 VHDL文字规则 1.数字 整数:所有的整数都是十进制的数,如 : 0,5,12,256,123E2(=12300) 实数:所有的实数都是十进制的数,但必须带小数点如: 0.125,34 567 890.012 345(=34567890.012345) 以数制基数表示的数,如: 10#234# --(表示十进制数234) 物理量文字(VHDL 综合器不接受此类文字 ),如: 60s(60秒),100m(100米),1KΩ(1000欧姆)等。

4.3.1 VHDL文字规则(续) 2. 字符和字符串 3. 标识符 4. 下标名和下标段名 字符:用单引号引起来的ASCII字符,可以是数字,也可以是符号或字母,如: ‘A’,‘a’,‘0’,‘1’,‘10’,‘-’,‘*’等。 字符串:是一个一维的字符数组,必须放在双引号中。VHDL 中有两种类型的字符串,一种是文字字符串,另一种是数位字符串。如: “RESULT”,“ERROR”, B“1 1100 0011”, X“FA0” 。 3. 标识符 用来定义常数、变量、信号、端口、子程序或参数名字。 4. 下标名和下标段名 下标名语句格式为: 数组类型信号名或变量名(表达式) 下标段名语句格式为: 数组类型信号名或变量名(表达式1 TO/DOWNTO 表达式2)

4.3.2 VHDL数据对象(Data Objects) 1. 常量(CONSTANT) 常量是一个被赋予固定值的量。其定义格式如下: CONSTANT 常量名:数据类型:=表达式;例如: CONSTANT VCC: REAL:= 3.3;--定义芯片的电源供电电压为3.3V 2. 变量(VARIABLE) 可以被赋予不同数值的数据对象被称为变量。语法格式如下: VARIABLE 变量名:数据类型及其约束:= 初始值或表达式;例如: VARIABLE num: INTEGER;--定义变量 num 为整型数 3. 信号 (SIGNAL) 它类似于硬件电路中的连接线,是硬件电路连接线在VHDL中的抽象表示。信号的定义格式如下: SIGNAL 信号名:数据类型及其约束:=初始值或表达式;例如: SIGNAL rst: BIT:= '0';--定义复位信号rst,并赋初值为0

4.3.3 VHDL数据类型(Data Type) 1. 预定义数据类型 整数(INTEGER):32位有符号的二进制数。 自然数(NATURAL):整数类型的一个子类型,即0和正整数。 实数(REAL):与数学上的实数定义相同,也称为浮点数,仅能在VHDL仿真器中使用。 位(BIT)和位矢量(BIT_VECTOR):位数据类型属于枚举类型,取值只能是1或0;位矢量是基于BIT数据类型的数组。 字符(CHARACTER)和字符串(STRING):字符数据类型使用单引号,字符串使用双引号标明。如:‘A’、“abcd”。 布尔量 (BOOLEAN):二值枚举型数据类型。 时间(TIME):VHDL中惟一的预定义物理类型是时间。 错误等级(SEVERITY_LEVEL):指示VHDL在编译、综合、仿真过程中的工作状态,共有四种可能的状态:NOTE(注意)、WARNING(警告)、ERROR(出错)、FAILURE(失败)。

4.3.3 VHDL数据类型(Data Type)(续1) 2. IEEE预定义的标准逻辑位与矢量 STD_LOGIC在IEEE库的程序包STD_LOGIC_1164中的定义格式如下: TYPE STD_LOGIC IS (‘U’,‘X’, ‘0’, ‘1’, ‘Z’, ‘W’, ‘L’, ‘H’, ‘-’ ); STD_LOGIC _VECTOR数据类型在IEEE库的程序包STD_LOGIC_1164中的定义格式如下: TYPE STD_LOGIC_VECTOR IS ARRAY (NATURAL RANGE<>) OF STD_LOGIC; 使用时须加入下面的库语句: LIBRARY IEEE; USE IEEE STD_LOGIC_1164.ALL;

4.3.3 VHDL数据类型(Data Type)(续2) 3. 自定义数据类型 枚举类型(ENUMERATED) 是用文字符号代替一组实际的二进制数的特殊数据类型,如,将一个星期WEEK定义为7状态的枚举数据类型: TYPE WEEK IS (sun, mon, tue, wed, thu, fri, sat); 整数类型(INTEGER)和实数类型(REAL) 对己作过预定义的数据类型,做取值范围约束。如: --定义数nat的取值范围为0~255 TYPE nat IS INTEGER RANGE 0 TO 255; 数组类型(ARRAY) 可以定义约束型数组和未约束型数组。约束型数组定义格式如下: TYPE 数组名 IS ARRAY (数组下标范围) OF 数据类型; 记录类型(RECORD)

4.3.3 VHDL数据类型(Data Type)(续3) 4. 数据类型转换 使用类型标记符实现数据类型转换 例如:VARIABLE A:INTEGER; VARIABLE B:REAL; A:=integer(B); --变量B取整后赋值给变量A B:=real(A); --变量A加上小数点变成实数后赋值给变量B 使用类型转换函数实现类型转换 函数名 功能 备注 TO_BIT() 由STD_LOGIC转换为BIT STD_LOGIC_1164程序包 TO_BIT_VECTOR() 由STD_LOGIC_VECTOR 转换为BIT_VECTOR TO_STD_LOGIC() 由BIT转换为STD_LOGIC TO_STD_LOGIC_VECTOR() 由BIT_VECTOR 转换为STD_LOGIC_VECTOR CON_STD_LOGIC_VECTOR() 由INTEGER转换为 STD_LOGIC_VECTOR STD_LOGIC_ARITH程序包 CON_INTEGER() 转换为INTEGER STD_LOGIC_UNSIGNED程序包

4.3.4 VHDL操作符 1. 算术操作符 求和操作符:包括加法操作符、减法操作符和并置操作符。 符号操作符:包括“+”(正)和“-”(负)两种操作符。 求积操作符:包括*(乘)、/(除)、MOD(取模)和RED(取余)四种。 混合操作符:包括乘方“**”和取绝对值“ABS”两种。 移位操作符:包括SLL(逻辑左移)、SRL(逻辑右移)、SLA(算术左移)、SRA(算术右移)、ROL(逻辑循环左移)和ROR(逻辑循环右移)六种操作符。 例4.3 利用移位操作实现的3-8译码器设计。 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.NUMERIC_STD.ALL; ENTITY decoder3_8 IS PORT( cod: IN NATURAL RANGE 0 TO 7; Sult: OUT UNSIGNED( 7 DOWNTO 0)); END decoder3_8; ARCHITECTURE behave OF decoder3_8 IS CONSTANT num: UNSIGNED(7 DOWNTO 0):= "00000001"; BEGIN Sult <= num sll cod; --输出高电平有效 END behave;

4.3.4 VHDL操作符(续) 2. 关系操作符 3. 逻辑操作符 4. 重载操作符 VHDL提供了7种基本逻辑操作符,它们是AND、OR、 NOT、NAND、NOR、XOR和XNOR。 4. 重载操作符 VHDL中的重载操作符是为了使不同数据类型的数据 对象之间能够进行运算,对原有的基本操作符重新作了定 义,构成的新的操作符。

4.4 VHDL结构体描述方式 4.4.1 行为描述方式 LIBRARY IEEE; 4.4.1 行为描述方式 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;  ENTITY fulladder IS PORT (a, b, ci: IN STD_LOGIC; s, co: OUT STD_LOGIC); END fulladder; ARCHITECTURE behavioral OF fulladder IS BEGIN s <= '1' WHEN (a= '0' AND b= '1' AND ci= '0') ELSE '1' WHEN (a= '1' AND b= '0' AND ci= '0') ELSE '1' WHEN (a= '0' AND b= '0' AND ci= '1') ELSE '1' WHEN (a= '1' AND b= '1' AND ci= '1') ELSE '0'; co <= '1' WHEN (a= '1' AND b= '1' AND ci= '0') ELSE '1' WHEN (a= '0' AND b= '1' AND ci= '1') ELSE '1' WHEN (a= '1' AND b= '0' AND ci= '1') ELSE END behavioral; 一位全加器真值表 a b ci s co 1

4.4.2 数据流描述方式 例4.5 一位全加器的数据流描述方式。 由一位全加器的真值表不难得到其逻辑表达式: LIBRARY IEEE; 4.4.2 数据流描述方式 例4.5 一位全加器的数据流描述方式。 由一位全加器的真值表不难得到其逻辑表达式: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;   ENTITY fulladder IS PORT (a, b, ci : IN STD_LOGIC; S, co : OUT STD_LOGIC); END fulladder; --以下是一位全加器结构体数据流描述 ARCHITECTURE Dataflow OF fulladder IS BEGIN S <= a XOR b XOR ci; co <= (a AND b) OR (b AND ci) OR (a AND ci); END Dataflow;

4.4.3 结构描述方式 例4.6 一位全加器的结构描述方式。 --以下是半加器的描述 LIBRARY IEEE; 4.4.3 结构描述方式 例4.6 一位全加器的结构描述方式。 --以下是半加器的描述 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; --以下是半加器的实体描述 ENTITY H_adder IS PORT (in_a, in_b : IN STD_LOGIC; out_s, out_co: OUT STD_LOGIC); END H_adder ; --以下是半加器结构体的数据流描述 ARCHITECTURE Dataflow OF H_adder IS BEGIN out_s<= in_a XOR in_b; out_co<= in_a AND in_b; END Dataflow;

4.4.3 结构描述方式(续) 例4.6 一位全加器的结构描述方式。 --以下是或门描述 LIBRARY IEEE; 4.4.3 结构描述方式(续) --以下是一位全加器结构描述的顶层设计 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; --以下是一位全加器实体描述 ENTITY fulladder IS PORT (a, b, ci: IN STD_LOGIC; s, co: OUT STD_LOGIC); END fulladder; --以下是一位全加器结构体描述 ARCHITECTURE Structural OF fulladder IS COMPONENT H_adder --半加器部件声明 PORT (in_a, in_b : IN STD_LOGIC; out_s, out_co : OUT STD_LOGIC); END COMPONENT; COMPONENT Or_2 --或门部件声明 PORT (x, y: IN STD_LOGIC; z: OUT STD_LOGIC); SIGNAL u, v, w: STD_LOGIC; --定义内部三条连线 BEGIN U1: H_adder PORT MAP (in_a=>a, in_b =>b, out_s=>v, out_co=>u); --端口映射 U2: H_adder PORT MAP (in_a=>v, in_b=>ci, out_s=>s, out_co=>w); U3: Or_2 PORT MAP (x => u, y => w, z=>co); END Structural; 例4.6 一位全加器的结构描述方式。 --以下是或门描述 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; --以下是或门实体描述 ENTITY Or_2 IS PORT (x, y: IN STD_LOGIC; z: OUT STD_LOGIC); END Or_2; --以下是或门结构体行为描述 ARCHITECTURE behavioral OF Or_2 IS BEGIN Z<= '1' WHEN (x= '0' AND y= '1') ELSE '1' WHEN (x= '1' AND y= '0') ELSE '1' WHEN (x= '1' AND y= '1') ELSE '0'; END behavioral;

本章小结 本章作为VHDL语言的编程基础主要介绍了VHDL语言的特 点,VHDL程序基本结构,VHDL语言要素和构造体的几种 描述方式。 硬件描述语言的种类很多,但只有VHDL和Verilog已经成 为IEEE标准。 不同于其他高级语言,为了更准确地描述硬件电路的特征, VHDL语言的程序结构采用将实体和结构体分别进行描述。 VHDL是一种强类型语言,对各种数据对象、数据类型, 各种操作符、运算符以及文字书写都有严格的规定。