VHDL语言-整套-课件-合一

上传人:大米 文档编号:568589161 上传时间:2024-07-25 格式:PPT 页数:98 大小:8.59MB
返回 下载 相关 举报
VHDL语言-整套-课件-合一_第1页
第1页 / 共98页
VHDL语言-整套-课件-合一_第2页
第2页 / 共98页
VHDL语言-整套-课件-合一_第3页
第3页 / 共98页
VHDL语言-整套-课件-合一_第4页
第4页 / 共98页
VHDL语言-整套-课件-合一_第5页
第5页 / 共98页
点击查看更多>>
资源描述

《VHDL语言-整套-课件-合一》由会员分享,可在线阅读,更多相关《VHDL语言-整套-课件-合一(98页珍藏版)》请在金锄头文库上搜索。

1、2024/7/25电子教案 Page 1 of 97VHDL AND ITS APPLICATIONS付永庆哈尔滨工程大学信息与通信工程学院信号与信息处理专业通信与信息系统专业VHDL语言及其应用语言及其应用2024/7/25电子教案 Page 2 of 97哈尔滨工程大学 付永庆VHDL语言及其应用语言及其应用课程说明课程说明(1) 36 学时学时 开课专业开课专业 课程性质课程性质 指选课指选课/选修课选修课 教材与参考书教材与参考书 VHDL语言及其应用语言及其应用 , 付永庆付永庆, 高等教育出版社,高等教育出版社,2005 The Designers Guide to VHDL, P

2、eter J. Arshenden, Morgan Kaufmann Publishers,2001 实验实验设备设备 PLD-1型可编程器件教学实验箱型可编程器件教学实验箱/Altera UP-1实验板实验板2024/7/25电子教案 Page 3 of 97哈尔滨工程大学 付永庆VHDL语言及其应用语言及其应用课程说明课程说明(2) 教学目的教学目的 教授学生掌握教授学生掌握VHDL语言工具和软硬件联合设计方法语言工具和软硬件联合设计方法 培养学生独立组织基于培养学生独立组织基于PLD器件的硬件实验的能力器件的硬件实验的能力 教学内容教学内容 第一部分第一部分 VHDL综述综述 (2学时)

3、学时) 第二部分第二部分 VHDL语言的学习基础语言的学习基础 (4学时)学时) 第三部分第三部分 VHDL顺序语句顺序语句 (2学时)学时) 第四部分第四部分 VHDL的模型结构的模型结构 (2学时)学时) 第五部分第五部分 深入理解深入理解VHDL (2学时)学时) 第六部分第六部分 VHDL设计举例设计举例 (2学时)学时) 第七部分第七部分 第八部分第八部分 上机练习和课程设计上机练习和课程设计 (20学时,含学时,含2学时的考核)学时的考核) 以以VHDL93为主,当遇到为主,当遇到VHDL语句、语义与研发工具语句、语义与研发工具 冲突时,以器件商的工具所支持的范围为准冲突时,以器件

4、商的工具所支持的范围为准 2024/7/25电子教案 Page 4 of 97哈尔滨工程大学 付永庆VHDL语言及其应用语言及其应用课程说明课程说明(3) 考核与评分方法考核与评分方法 提交书面设计报告及设计程序提交书面设计报告及设计程序 演示硬件设计结果演示硬件设计结果 评分起点评分起点50分分+理论推导、建模、原理说明(理论推导、建模、原理说明(10分)分)+演示演示 正确性(正确性(15分)分)+创新性(创新性(15分)分)+设计合理性与人机界面设计合理性与人机界面 (10分),总分分),总分难度系数难度系数 指定设计题目指定设计题目 汉字滚动显示汉字滚动显示 4个以上汉字,个以上汉字,

5、 具有上、下、左、右滚动控制的能力,难度系数具有上、下、左、右滚动控制的能力,难度系数0.8 直流数字电流表直流数字电流表 测量范围测量范围 0100 mA, 误差误差1%,难度系数,难度系数 0.85 2024/7/25电子教案 Page 5 of 97哈尔滨工程大学 付永庆VHDL语言及其应用语言及其应用课程说明课程说明(4) 指定设计题目指定设计题目 自动量程频率计自动量程频率计 测量范围测量范围 1Hz1MHz, 相对误差相对误差1,难度系数,难度系数0.95 任意波形发生器任意波形发生器 至少三种波形至少三种波形, 频率范围频率范围101000Hz,步进量步进量10Hz,难度系数难度

6、系数 0.9 FIR带通滤波器带通滤波器 中心频率中心频率200Hz,3dB带宽带宽20Hz,带外衰减带外衰减10dB,难度系数难度系数1.1 FIR低通滤波器低通滤波器 截至频率截至频率200Hz,带外衰减带外衰减20dB,难度系数难度系数0.9 基带基带FSK电路电路 f1=1250Hz, f2=2500Hz, 波特率波特率=625bps, 难度系数难度系数1.0 基带基带BPSK电路电路 fC=1250Hz, 波特率波特率=625bps, 难度系数难度系数1.12024/7/25电子教案 Page 6 of 97哈尔滨工程大学 付永庆VHDL语言及其应用语言及其应用课程说明课程说明(5)

7、 指定设计题目指定设计题目 黑白字符显示控制芯片黑白字符显示控制芯片 VGA模式,模式, 字符点阵字符点阵3232, 字模字模32个,全屏个,全屏10 行每行行每行10个字符,个字符, 连续显示输入字符至少连续显示输入字符至少8个,难度系数个,难度系数1.0 PS/2键盘控制器键盘控制器 接收键盘扫描码,用接收键盘扫描码,用LED显示显示, 难度系数难度系数 0.75 多谱信号源多谱信号源 产生含产生含50、100、200、300、400、500、600、700、800Hz等高谱线的等高谱线的 的信号源,输出电压的信号源,输出电压2.5V、可调整,难度系数可调整,难度系数1.0 计算器计算器

8、能对能对0100范围内的整数完成加、减、乘、除运算,难度系数范围内的整数完成加、减、乘、除运算,难度系数1.0 逻辑分析仪逻辑分析仪 用示波器用示波器X-Y输入设计一个输入设计一个8线逻辑信号分析仪,输入频率线逻辑信号分析仪,输入频率1KHz,每每 屏显示至少含屏显示至少含4个周波,难度系数个周波,难度系数1.22024/7/25电子教案 Page 7 of 97哈尔滨工程大学 付永庆VHDL语言及其应用语言及其应用课程说明课程说明(6) 指定设计题目指定设计题目 相位测量仪表相位测量仪表 可测双路同频信号可测双路同频信号50Hz1KHz,相位差相位差 -45+ 45,测量误差,测量误差1,难

9、,难 度系数度系数1.1 图形显示终端图形显示终端 用示波器屏幕显示用示波器屏幕显示10个汉字个汉字, 难度系数难度系数 1.2 多用途信号源多用途信号源 为为AD9854配置智能控制单元,产生配置智能控制单元,产生ASK、FSK、PSK、FM、AM调制调制 信号源,频率范围信号源,频率范围110MHz,增量增量0.1MHz,难度系数难度系数1.1 设计设计USB接口接口 具有读写优盘的能力,可显示读出数据,难度系数具有读写优盘的能力,可显示读出数据,难度系数1.1 测温仪表测温仪表 测温范围测温范围2040,误差,误差1 ,难度系数,难度系数1.02024/7/25电子教案 Page 8 o

10、f 97哈尔滨工程大学 付永庆VHDL语言及其应用语言及其应用课程说明课程说明(7) 指定设计题目指定设计题目 超声波测距超声波测距 范围范围15米米,测量误差测量误差 0.01米,难度系数米,难度系数1.0 交流电压表交流电压表 测量范围测量范围 5伏,精度伏,精度1%,难度系数难度系数 1.1 选题与要求选题与要求 每题不超过每题不超过10人人,原则上仅允许同一导师的原则上仅允许同一导师的1名学生进入名学生进入 报告必须有详尽的原理分析和硬核实现结构介绍,否则不给分报告必须有详尽的原理分析和硬核实现结构介绍,否则不给分 实验涉及的少量外部元件由学生负责,否则请选无花费的题目实验涉及的少量外

11、部元件由学生负责,否则请选无花费的题目 允许自选题目,但须获得批准允许自选题目,但须获得批准 接受提前考核接受提前考核2024/7/25电子教案 Page 9 of 97哈尔滨工程大学 付永庆VHDL语言及其应用语言及其应用课程说明课程说明(8) 设计报告格式设计报告格式 2024/7/25电子教案 Page 10 of 97哈尔滨工程大学 付永庆VHDL语言及其应用语言及其应用课程说明课程说明(9) 设计报告格式设计报告格式 2024/7/25电子教案 Page 11 of 97哈尔滨工程大学 付永庆第一部分第一部分 VHDL综述综述(1) 什么是什么是VHDL语言?语言? HDL语言是一种

12、支持用形式化方法来描述数字逻辑电路和系统的语言语言是一种支持用形式化方法来描述数字逻辑电路和系统的语言 VHDL语言源于美国国防部发起的语言源于美国国防部发起的VHSIC(Very High Speed Integrated Circuits)计划计划 1987年年12月月IEEE批准批准VHDL为标准为标准HDL语言语言(IEEE-1076), 称为称为VHDL87 1993年修订为年修订为VHDL93 ,2001年修订为年修订为VHDL 2001 IEEE-1076.1 VHDL-AMS, IEEE-1076.2 Mathematical Packages, IEEE-1076.3 Syn

13、thesis Packages, IEEE-1076.4 VITAL, IEEE Standard 1164 Multi-value Logic System VHDL语言的优点?语言的优点? 人机可读性好人机可读性好 比图形和布尔方程更简洁比图形和布尔方程更简洁 方便设计重用方便设计重用 容易实现设计仿真与验证容易实现设计仿真与验证 便于映射为便于映射为IC芯片的制造工艺芯片的制造工艺 2024/7/25电子教案 Page 12 of 97哈尔滨工程大学 付永庆第一部分第一部分 VHDL综述综述(2) 自顶向下设计自顶向下设计 VHDL语言支持自顶向下的系统划分,直至划分后的最底层单元能用图

14、元语言支持自顶向下的系统划分,直至划分后的最底层单元能用图元 (primitive element)来实现为止来实现为止 图元就是基本逻辑单元、宏模型或图元就是基本逻辑单元、宏模型或IP_core VHDL的基本模型的基本模型 行为模型:用于描述数字器件或系统的功能,统指数学方程表示的模型行为模型:用于描述数字器件或系统的功能,统指数学方程表示的模型 时序模型:用于描述数字器件或系统的激励与响应间的关系,统指布尔方程时序模型:用于描述数字器件或系统的激励与响应间的关系,统指布尔方程 表示的模型表示的模型 结构模型:用于描述自顶向下划分系统形成的各个基本单元间的互连关系,结构模型:用于描述自顶向

15、下划分系统形成的各个基本单元间的互连关系, 统指用元件互连生成的电路模型统指用元件互连生成的电路模型 2024/7/25电子教案 Page 13 of 97哈尔滨工程大学 付永庆第一部分第一部分 VHDL综述综述(3) VHDL的基本设计流程的基本设计流程 2024/7/25电子教案 Page 14 of 97哈尔滨工程大学 付永庆第一部分第一部分 VHDL综述综述(4) VHDL的主要应用领域的主要应用领域 智能模块智能模块(IP)的研发的研发 IP: 用用VHDL语言编写,经逻辑优化和功能验证的可生成语言编写,经逻辑优化和功能验证的可生成VLSI中各种中各种 功能单元的软件群,例如,无线通

16、信产品、网上设备、中央处理功能单元的软件群,例如,无线通信产品、网上设备、中央处理 器器(通用通用CPU)、DSP、PCI、USB、嵌入式嵌入式CPU 单芯片全功能集成系统设计:单芯片全功能集成系统设计:SoPC系统、嵌入式计算、系统、嵌入式计算、ASIC验证验证 功能可重置系统的设计:远程系统升级、可重配置设计功能可重置系统的设计:远程系统升级、可重配置设计 FPGA的发展方向的发展方向 多用途:多用途:CAM,RAM、PLL 高密度、低功耗、低成本:高密度、低功耗、低成本:MAX II系列、系列、Cyclone II系列系列 嵌入硬核、超高速:嵌入硬核、超高速:Stratix系列系列、St

17、ratix II系列系列、Stratix GX系列系列 超低成本:结构化的超低成本:结构化的ASICs, 例如,例如,HardCopy系列系列 嵌入嵌入CPU软核软核:Nios、Nios II2024/7/25电子教案 Page 15 of 97哈尔滨工程大学 付永庆第一部分第一部分 VHDL综述综述(5)Altera公司的最新公司的最新FPGA芯片芯片2024/7/25电子教案 Page 16 of 97哈尔滨工程大学 付永庆第一部分第一部分 VHDL综述综述(6)Altera公司的公司的SoC研发板研发板2024/7/25电子教案 Page 17 of 97哈尔滨工程大学 付永庆第二部分第

18、二部分 VHDL语言的学习基础语言的学习基础 (1)书写规定与基本句法单元书写规定与基本句法单元 书写规定书写规定保留字保留字 用黑体小写字母表示用黑体小写字母表示类型字类型字 用小写字母表示用小写字母表示库库 用大写字母表示用大写字母表示标识符标识符 用小写字母表示用小写字母表示简化书写简化书写 用用 表示表示任选项任选项 用用 表示表示重复项重复项 用用 表示,有时也用之界定一段语句表示,有时也用之界定一段语句二选一二选一 用用 表示表示定义为定义为 用用 := := 表示表示语句分隔语句分隔 用分号用分号 “;” 表示表示特殊要强调的内容特殊要强调的内容用黑体表示用黑体表示注释注释 用用

19、 “-” 前缀前缀2024/7/25电子教案 Page 18 of 97哈尔滨工程大学 付永庆第二部分第二部分 VHDL语言的学习基础语言的学习基础 (2)书写规定与基本句法单元书写规定与基本句法单元 标识符标识符基本标识符基本标识符 由由VHDLVHDL8787支持支持, , 长度不能超过长度不能超过32 32 个有效字符序列,个有效字符序列, 字符集字符集:0:09,az, AZ和下划线和下划线“_” 扩展标识符扩展标识符 由由VHDLVHDL9393,VHDL2001VHDL2001支持,首尾用反斜杠支持,首尾用反斜杠“ ”定界,定界, 区分大小写,总与基本标识符不同,字符集:区分大小写

20、,总与基本标识符不同,字符集:ASCIIASCII码,码, 反斜杠字符要双写,允许任意字符,包括保留字、类型字反斜杠字符要双写,允许任意字符,包括保留字、类型字 保留字保留字 类型字类型字 专用字专用字保保留留字字 预预留留用用于于专专门门用用途途的的标标识识符符,VHDLVHDL87,VHDL87,VHDL9393和和VHDL2001VHDL2001有有差差别别类型字类型字 用于表示数据类型的标识符用于表示数据类型的标识符专用字专用字 用于表示特别信息和常量的标识符用于表示特别信息和常量的标识符2024/7/25电子教案 Page 19 of 97第二部分第二部分 VHDL语言的学习基础语言

21、的学习基础 (3)书写规定与基本句法单元书写规定与基本句法单元 数及表示法数及表示法数制:数制: 二进制、十进制、十六进制二进制、十进制、十六进制 书书写写格格式式:被被表表示示的的数数 := # 为为216之间的十进制正整数之间的十进制正整数, #号为定界符,号为定界符,为为10时可省略时可省略 定界符和基。定界符和基。 := E+ | E ; := 下划线下划线; := | 用字符用字符AF表示表示1015的数字,不分大小写。的数字,不分大小写。 举例举例:2#0001_0111_0010# 8#562# 16#172# 370 3.7E+2 -整数整数370的表示的表示2#0.100#

22、8#0.4# 16#0.8# -实数实数0.5的表示的表示注意:在相邻数字之间插入下划线只为增加可读性,对数值无影响。注意:在相邻数字之间插入下划线只为增加可读性,对数值无影响。2024/7/25电子教案 Page 20 of 97哈尔滨工程大学 付永庆第二部分第二部分 VHDL语言的学习基础语言的学习基础 (4)书写规定与基本句法单元书写规定与基本句法单元 字符、串、位串字符、串、位串字符:字符: 用单引号括起来,例如,用单引号括起来,例如,A、a、%串:串:用双引号括起来用双引号括起来。串内包含双引号字符时,用双写双引号来表示。串长串内包含双引号字符时,用双写双引号来表示。串长 度超过一行

23、度超过一行, 用运算符用运算符“&”把两个子串连接起来把两个子串连接起来, 例如,例如, “A string” “This string contains anembedded stringin it” “00001111zzzz” “” 位串:位串:仅由仅由0和和1字符组成的串字符组成的串, 用双引号括起来,前缀符号用双引号括起来,前缀符号 B 代表二进制代表二进制 O 代表八进制代表八进制 X 代表十六进制代表十六进制 例如例如, B“10” B“1111_0010_0001” - -二进制位串二进制位串 O“072072” O“1313” o“372372” - -八进制位串八进制位串

24、X“FA” X“0d” x“FFE0” - -十六进制位串十六进制位串2024/7/25电子教案 Page 21 of 97哈尔滨工程大学 付永庆第二部分第二部分 VHDL语言的学习基础语言的学习基础 (5)目标与分类目标与分类信号、变量、常量和文件信号、变量、常量和文件 从从硬硬件件的的角角度度看看,信信号号代代表表着着实实际际电电路路中中的的某某一一连连接接线线,而而常常量量代代表表着着实实际际电电路路中中的的电电源源或或地地。变变量量和和文文件件没没有有与与硬硬件件直直接接的的对对应应关关系,通常它们只作为暂存和交换信息的载体使用系,通常它们只作为暂存和交换信息的载体使用 信号信号 抽抽

25、象象描描述述电电路路的的导导线线,起起保保持持改改变变的的数数值值和和连连接接子子元元件件的的作作用用。信号总是在元件的端口连接元件,元件间交换的信息仅通过信号传送信号总是在元件的端口连接元件,元件间交换的信息仅通过信号传送 信信号号赋赋值值不不意意味味着着立立即即更更新新其其保保持持的的原原有有内内容容,因因为为任任何何对对信信号号的的赋赋值值操操作作只只能能作作为为预预定定数数值值存存储储在在信信号号的的驱驱动动器器中中,仅仅当当模模拟拟时时间间经过起同步作用的语句或再一次启动了进程时才会发生更新动作。经过起同步作用的语句或再一次启动了进程时才会发生更新动作。 允许利用属性存取过去和当前的

26、数值,可以接受来自变量的赋值允许利用属性存取过去和当前的数值,可以接受来自变量的赋值2024/7/25电子教案 Page 22 of 97哈尔滨工程大学 付永庆第二部分第二部分 VHDL语言的学习基础语言的学习基础 (6)目标与分类目标与分类 信号、变量、常量和文件信号、变量、常量和文件 信号信号信号说明语句的书写格式为:信号说明语句的书写格式为:signal ,: 约束范围约束范围 := ;例如:例如: signal temp_sum:std_logic_vector (3 downto 0) := “0011”; signal a, b:std_logic;信号信号a和和b取系统默认值,即

27、:该类型的最左值或最小值取系统默认值,即:该类型的最左值或最小值 0。信号代入符为信号代入符为“=”,例如:例如: output = a xor b after 3 ns;2024/7/25电子教案 Page 23 of 97哈尔滨工程大学 付永庆第二部分第二部分 VHDL语言的学习基础语言的学习基础 (7)目标与分类目标与分类 信号、变量、常量和文件信号、变量、常量和文件 变量变量 用用于描述硬件的高层次特性,在综合过程中可能推断为存储器件。于描述硬件的高层次特性,在综合过程中可能推断为存储器件。 存在两种变量:规则变量和共享变量。存在两种变量:规则变量和共享变量。 规规则变量只能在子程序和

28、进程语句中被说明和使用,是一个局部量。则变量只能在子程序和进程语句中被说明和使用,是一个局部量。 共享变量的作用范围是全局的,即:跨越同级和向下的设计层次可见。共享变量的作用范围是全局的,即:跨越同级和向下的设计层次可见。 VHDL87标准只支持规则变量,标准只支持规则变量,VHDL93和和VHDL2001标准既支持规则标准既支持规则 变量也支持共享变量。变量也支持共享变量。 不不允许在进程和子程序中说明共享变量。允许在进程和子程序中说明共享变量。 变变量说明语句的书写格式如下:量说明语句的书写格式如下: variable ,:约束范围约束范围:=; 全全局变量说明需加入保留字局变量说明需加入

29、保留字shared2024/7/25电子教案 Page 24 of 97哈尔滨工程大学 付永庆第二部分第二部分 VHDL语言的学习基础语言的学习基础 (8) 目标与分类目标与分类 信号、变量、常量和文件信号、变量、常量和文件 变量变量变变量量只只在在进进程程首首次次执执行行时时初初始始化化,并并在在进进程程被被挂挂起起和和重重新新激激活活时时保保持持原原有有数数值不变。共享变量除赋值机制与信号不同外,其他类同于信号。值不变。共享变量除赋值机制与信号不同外,其他类同于信号。变量赋值语句的书写格式为:变量赋值语句的书写格式为: 语句标号语句标号: : := := ;例子:例子: m := 1; c

30、ounter := counter+1;VHDLVHDL中对变量赋值是立即生效的。变量在赋值时不能用中对变量赋值是立即生效的。变量在赋值时不能用after引入附加延时引入附加延时 例如,下列赋值语句是错误的。例如,下列赋值语句是错误的。 op1: counter := counter+1 after 2 ns; VHDLVHDL8787标准不支持语句标号的使用标准不支持语句标号的使用 2024/7/25电子教案 Page 25 of 97哈尔滨工程大学 付永庆第二部分第二部分 VHDL语言的学习基础语言的学习基础 (9)目标与分类目标与分类 信号、变量、常量和文件信号、变量、常量和文件 常量常

31、量 代代表表具具有有语语义义的的常常数数值值。说说明明时时赋赋值值,一一旦旦被被赋赋值值,就就在在整整个个程程序序执执行行中中保保持不变。持不变。书写格式:书写格式: constant constant , : := := ;例子:例子: constant number_of_bytes : integer := 8; constant number_of_bits : integer := 8*number_of_bytes; constant m : integer := user_function(a,b); - user_function为函数为函数 constant n : inte

32、ger := a+b; 子子程程序序中中说说明明的的常常量量,仅仅在在子子程程序序调调用用时时有有效效,调调用用结结束束后后它它的的值值将将被被释释放放, ,常量说明语句中缺少赋值时称之为缓定常量。常量说明语句中缺少赋值时称之为缓定常量。 2024/7/25电子教案 Page 26 of 97哈尔滨工程大学 付永庆第二部分第二部分 VHDL语言的学习基础语言的学习基础 (10)目标与分类目标与分类 信号、变量、常量和文件信号、变量、常量和文件 文件文件 仅仅支支持持读读写写操操作作,不不支支持持综综合合。不不可可以以通通过过赋赋值值来来更更新新内内容容,只只能能通通过过子子程程序对文件进行读写

33、操作。序对文件进行读写操作。STD库库textio包提供对文件的全部支持内容。包提供对文件的全部支持内容。 特殊目标特殊目标 端口、类属端口、类属(generic)、参量参量(parameter)及循环语句和生成语句的标号等。及循环语句和生成语句的标号等。 端口所包含的目标为信号,作用是为实体内部数据与外部数据交换创建通道端口所包含的目标为信号,作用是为实体内部数据与外部数据交换创建通道 类类属属的的作作用用是是为为外外部部信信息息送送入入实实体体内内部部提提供供通通道道,类类属属传传送送的的信信息息均均为为静静态态信信息,即:常量。息,即:常量。 参参量量的的作作用用类类似似于于C语语言言中

34、中的的形形式式参参数数,参参量量在在子子程程序序中中可可以以被被说说明明为为信信号号、变量或常量,而在函数中只能被说明为常量。变量或常量,而在函数中只能被说明为常量。2024/7/25电子教案 Page 27 of 97哈尔滨工程大学 付永庆第二部分第二部分 VHDL语言的学习基础语言的学习基础 (11)数据类型数据类型 标量类型、复合类型、寻址类型、文件类型标量类型、复合类型、寻址类型、文件类型 标量类型标量类型 目标的数据值由单个元素构成目标的数据值由单个元素构成 复合类型复合类型 目标的数据值由多个元素结组构成目标的数据值由多个元素结组构成 寻址类型寻址类型 指针类型,值指向存储空间,用

35、于建立目标间的联系或控制存储空间指针类型,值指向存储空间,用于建立目标间的联系或控制存储空间 文件类型文件类型 外部文件存放的数据值序列的镜像,用于数据读入和写出外部文件存放的数据值序列的镜像,用于数据读入和写出 预定义类型、用户自定义类型预定义类型、用户自定义类型2024/7/25电子教案 Page 28 of 97哈尔滨工程大学 付永庆第二部分第二部分 VHDL语言的学习基础语言的学习基础 (12)数据类型数据类型 整数类型整数类型(integer) 位宽位宽32位:值范围位:值范围- 231+1231-1,有符号数、无符号数、不能按,有符号数、无符号数、不能按bit操作操作 子类型:自然

36、数子类型:自然数natural, 正整数正整数positive 浮点类型浮点类型(real) : 值范围值范围1.0e+38、用于行为仿真用于行为仿真 布尔类型布尔类型(boolean) : 值范围值范围 true、false 字符类型字符类型(character) ASCII码码: 0、1、A、 字符串类型字符串类型(string): “0101”、“ABCDabcd” 位值类型位值类型 bit类型:类型:1、0 std_logic类型类型: U、X 、0、1 、Z、W、 L、H 、- 位组类型位组类型 bit_vector类型:类型:“1000_1010”/std_logic_vector

37、类型:类型:“zzzz_1001” 预定义类型预定义类型: STD库提供、可直接引用2024/7/25电子教案 Page 29 of 97哈尔滨工程大学 付永庆第二部分第二部分 VHDL语言的学习基础语言的学习基础 (13)数据类型数据类型 预定义类型预定义类型 时间类型时间类型(time) 单位:单位:fs、ps、ns、s、ms、sec、min、hr 错误等级类型错误等级类型(severity) 值状态:值状态:note(注意注意) 、warning(警告警告) 、error(出错出错) 、failure(失败失败) 寻址类型寻址类型(line): 指针类型,值指向存储空间指针类型,值指向存

38、储空间 文件类型文件类型(text): 用于定义代表外部文件的目标用于定义代表外部文件的目标 用户自定义类型:非隐含定义用户自定义类型:非隐含定义, 需要需要type语句语句 整数类型整数类型(integer)、实数类型实数类型(real)、物理类型物理类型 枚举类型枚举类型(enumerated):离散值由左至右分配数值离散值由左至右分配数值 组类型组类型(array): 限定性组限定性组、非限定性组非限定性组(元素规模暂不定元素规模暂不定) 记录类型记录类型(record): 不同类型数据集合,不能直接产生硬件对应不同类型数据集合,不能直接产生硬件对应 寻址类型寻址类型(access)和文

39、件类型和文件类型(file)2024/7/25电子教案 Page 30 of 97哈尔滨工程大学 付永庆第二部分第二部分 VHDL语言的学习基础语言的学习基础 (14)数据类型数据类型 自定义语句格式自定义语句格式 标量类型定义标量类型定义 type , is 约束范围约束范围; 枚举类型定义枚举类型定义 type , is (, ) ; 限定性限定性组类型定义组类型定义 type , is array ( , ) of ; := todownto 或者或者 range todownto 非限定性组类型定义非限定性组类型定义 type , is array ( range , ) of ; 2

40、024/7/25电子教案 Page 31 of 97哈尔滨工程大学 付永庆第二部分第二部分 VHDL语言的学习基础语言的学习基础 (15)数据类型数据类型 自定义语句格式自定义语句格式 物理类型定义物理类型定义 type , is units ; = ; end units ; 记录类型定义记录类型定义 type , is record , :; end record ; 子子类型定义类型定义 subtype , is 约束范围约束范围; 组集合体组集合体 (= , ) 命名结合、位置结命名结合、位置结合合2024/7/25电子教案 Page 32 of 97哈尔滨工程大学 付永庆第二部分第二

41、部分 VHDL语言的学习基础语言的学习基础 (16)数据类型数据类型 VHDLVHDL数据类型汇总数据类型汇总 2024/7/25电子教案 Page 33 of 97哈尔滨工程大学 付永庆第二部分第二部分 VHDL语言的学习基础语言的学习基础 (17)数据类型数据类型 标量类型属性标量类型属性 数值类、函数类、信号类、数据类型类、数据范围类,用于简化数值类、函数类、信号类、数据类型类、数据范围类,用于简化 书写和获取标量类型的信息书写和获取标量类型的信息 数值类属性数值类属性 Tleft - 能给出能给出T的取值范围的左端值;的取值范围的左端值; Tright - 能给出能给出T的取值范围的右

42、端值;的取值范围的右端值; Tlow - 能给出能给出T的取值范围的低端值;的取值范围的低端值; Thigh - 能给出能给出T的取值范围的高端值;的取值范围的高端值; Tascending - 如果如果T的取值范围按升序排列则为真,否则为假;的取值范围按升序排列则为真,否则为假; Timage(x) - 能给出一个表达能给出一个表达x的值的串;的值的串; Tvalue(s) - 能给出由串能给出由串s表达的表达的T的值。的值。2024/7/25电子教案 Page 34 of 97哈尔滨工程大学 付永庆第二部分第二部分 VHDL语言的学习基础语言的学习基础 (18)数据类型数据类型 标量类型属

43、性标量类型属性 函数类属性函数类属性 Tpos(x) - 能给出能给出x在在T中的位置号;中的位置号; Tval(n) - 能给出在位置能给出在位置n处处T的取值;的取值; Tsucc(x) - 能给出能给出x值所在位置的下一个位置处的值;值所在位置的下一个位置处的值; Tpred(x) -能给出能给出x值所在位置的前一个位置处的值;值所在位置的前一个位置处的值; Tleftof(x) -能给出能给出x值所在位置的左边位置处的值;值所在位置的左边位置处的值; Trightof(x) -能给出能给出x值所在位置的右边位置处的值;值所在位置的右边位置处的值; 例如,例如,type day is (

44、sun,mon,tue,wed,thu,fri,sat); Daypos(sun) = 0 Dayval(3) = wed Daysucc(thu) = fri Daypred(thu) = wed Dayleftof(mon) = sun Dayright(mon) = tue2024/7/25电子教案 Page 35 of 97哈尔滨工程大学 付永庆第二部分第二部分 VHDL语言的学习基础语言的学习基础 (19)数据类型数据类型 组类型属性组类型属性 A Aleft(N) left(N) 能给出能给出A A的第的第N N维下标界的左边界值;维下标界的左边界值; A Aright(N) ri

45、ght(N) 能给出能给出A A的第的第N N维下标界的右边界值;维下标界的右边界值; A Alow(N) low(N) 能给出能给出A A的第的第N N维下标界的下边界值;维下标界的下边界值; A Ahigh(N) high(N) 能给出能给出A A的第的第N N维下标界的上边界值;维下标界的上边界值; A Arange(N) range(N) 能给出能给出A A的第的第N N维下标的取值范围;维下标的取值范围; A Areverse_range(N) reverse_range(N) 能给出能给出A A的第的第N N维下标取值范围的相反值;维下标取值范围的相反值; A Alength(N)

46、 length(N) 能给出能给出A A的第的第N N维下标界的长度;维下标界的长度; A Aascending(N) ascending(N) 如果如果A A的第的第N N维下标取值按升序排列则为真,维下标取值按升序排列则为真, 否则为假;否则为假;2024/7/25电子教案 Page 36 of 97哈尔滨工程大学 付永庆第二部分第二部分 VHDL语言的学习基础语言的学习基础 (20)表达式与运算符表达式与运算符 表达式表达式 由运算符和操作数组成由运算符和操作数组成 运算符运算符 特殊运算符特殊运算符: *、abs、not 乘法运算符乘法运算符: *、/、mod、rem 正、负运算符正、

47、负运算符: 、 加减运算符加减运算符: 、& 移位移位运算符运算符: sll、srl、sla、sra、rol、ror 关系运算符关系运算符: =、/=、= 逻辑运算符逻辑运算符: and、or、nand、nor、xor、xnor 类型限定与类型转换类型限定与类型转换 类型限定:显性表示数据的类型类型限定:显性表示数据的类型 语句格式:语句格式: (数据数据) 2024/7/25电子教案 Page 37 of 97哈尔滨工程大学 付永庆第二部分第二部分 VHDL语言的学习基础语言的学习基础 (21)表达式与运算符表达式与运算符 类型转换类型转换2024/7/25电子教案 Page 38 of 9

48、7哈尔滨工程大学 付永庆第三部分第三部分 VHDL顺序语句顺序语句(1)顺序语句顺序语句 建模进程、过程和函数功能的基本语句单元,仅用于进程、过程和函数中建模进程、过程和函数功能的基本语句单元,仅用于进程、过程和函数中 变量赋值语句变量赋值语句 : := ; 注:注:可以包含信号、变量和常量可以包含信号、变量和常量 赋值即刻生效赋值即刻生效 例:例:signal sig:std_logic; -进程外部的信号进程外部的信号sigsig event_on_sig: process is variable flag:boolean := false; -说明变量说明变量flagflag并赋初值并赋

49、初值 begin flag := not flag; -变量赋值语句变量赋值语句 wait on sig; end process event_on_sig; 2024/7/25电子教案 Page 39 of 97哈尔滨工程大学 付永庆第三部分第三部分 VHDL顺序语句顺序语句(2)顺序语句顺序语句 简单信号赋值语句简单信号赋值语句 : = transportinertial; 注:注: := after , 在并行语句区只为信号和常量,在顺序语句区也可为变量在并行语句区只为信号和常量,在顺序语句区也可为变量 transport表示传输延时,起平移信号波形的作用,表示传输延时,起平移信号波形的

50、作用,inertial表示惯性延时,延表示惯性延时,延 时由第一个时由第一个after后的参数值决定后的参数值决定 赋值不能立刻生效,暂存在信号驱动器中,待同步事件发生时赋值到信号赋值不能立刻生效,暂存在信号驱动器中,待同步事件发生时赋值到信号 例:例:mux : process (a,b,sel) is -a、b和和sel为敏感信号为敏感信号 begin case sel is when 0 = y y null; end case; end process mux;2024/7/25电子教案 Page 40 of 97哈尔滨工程大学 付永庆第三部分第三部分 VHDL顺序语句顺序语句(3)顺

51、序语句顺序语句 等待语句等待语句 用于取代进程语句的敏感信号列表为进程提供同步,有四种形式:用于取代进程语句的敏感信号列表为进程提供同步,有四种形式: : wait -无限等待无限等待 : wait on , ; -直到信号活动或变化时结束等待直到信号活动或变化时结束等待 :wait until ; -直到条件为真时结束等待直到条件为真时结束等待 : wait for ; -直到延时时间到时结束等待直到延时时间到时结束等待 注:注:至少要含有一个信号量,因进程一旦挂起,变量将不再改变,至少要含有一个信号量,因进程一旦挂起,变量将不再改变, 若要退出等待状态,只能靠信号的活动或变化引起布尔表达式

52、的值为真若要退出等待状态,只能靠信号的活动或变化引起布尔表达式的值为真 允许混合使用允许混合使用 例:例: : wait on , until for ; 等待语句与敏感信号列表不能同时使用等待语句与敏感信号列表不能同时使用2024/7/25电子教案 Page 41 of 97哈尔滨工程大学 付永庆第三部分第三部分 VHDL顺序语句顺序语句(4)顺序语句顺序语句 if 语句:语句: 按条件执行操作按条件执行操作,用于表示用于表示VHDL模型的行为模型的行为 : if then ; elsif then ; else ; end if; 注:注:只能由关系运算符或逻辑运算符组成,给出布尔量只能由

53、关系运算符或逻辑运算符组成,给出布尔量 if语句不允许对信号边沿做二选一语句不允许对信号边沿做二选一 处理处理 举例说明举例说明 例例3-2中支持负整数运算的语句:中支持负整数运算的语句: use IEEE.std_logic_signed.all;use IEEE.std_logic_arith.all; 例例3-3中中clkevent 用于返回信号事件属性用于返回信号事件属性 if clr = 1 then q = 0; elsif clkevent and clk = 1 then q = d; end if;2024/7/25电子教案 Page 42 of 97哈尔滨工程大学 付永庆第

54、三部分第三部分 VHDL顺序语句顺序语句(5)顺序语句顺序语句 case语句:语句: 执行多选一操作执行多选一操作,用于表示用于表示VHDL模型的行为模型的行为 : case is when = ; end case ;注注: := | | | |others := downto| |to 要覆盖所有可能的取值,不允许重复使用它们要覆盖所有可能的取值,不允许重复使用它们 每次只执行一个分枝,每次只执行一个分枝,when 子句的位置不影响执行结果子句的位置不影响执行结果2024/7/25电子教案 Page 43 of 97哈尔滨工程大学 付永庆第三部分第三部分 VHDL顺序语句顺序语句(6)顺序

55、语句顺序语句 循环语句:循环语句:用于描述具有重复结构或迭代运算的部分以简化程序代码,有三种形式:用于描述具有重复结构或迭代运算的部分以简化程序代码,有三种形式: loop语句语句 : loop ; end loop ; for loop语句语句 : for in loop ; end loop ; 注注: := to| |downto 为隐含定义、是整数、不允许修改为隐含定义、是整数、不允许修改2024/7/25电子教案 Page 44 of 97哈尔滨工程大学 付永庆第三部分第三部分 VHDL顺序语句顺序语句(7)顺序语句顺序语句 循环语句:循环语句:用于描述具有重复结构或迭代运算的部分以

56、简化程序代码,有三种形式:用于描述具有重复结构或迭代运算的部分以简化程序代码,有三种形式: while loop语句语句 :while loop ; end loop ; 注注:为真执行,否则结束为真执行,否则结束 循环变量非隐含定义循环变量非隐含定义2024/7/25电子教案 Page 45 of 97哈尔滨工程大学 付永庆第三部分第三部分 VHDL顺序语句顺序语句(8)顺序语句顺序语句 exit语句:语句:循环控制语句,可强迫循环从正常执行中跳到由语句标号所指定的新位置循环控制语句,可强迫循环从正常执行中跳到由语句标号所指定的新位置 exitwhen ; 注注: :缺省缺省 或或when子

57、句则子句则跳到循环语句跳到循环语句end loop后面执行后面执行 next语句:语句:循环控制语句,可结束循环控制语句,可结束next语句后面的操作跳到由语句标号指定的环内语句后面的操作跳到由语句标号指定的环内 新位置,只能实现新位置,只能实现内部循环控制内部循环控制 nextwhen ; 例:例:process (x, y) is variable eqi:std_ulogic; begin eqi := 1; for i in xrange loop next when eqi = 0; eqi := eqi and (x(i) xnor y(i) end loop ; eq = eqi

58、; end process;2024/7/25电子教案 Page 46 of 97哈尔滨工程大学 付永庆第三部分第三部分 VHDL顺序语句顺序语句(9)顺序语句顺序语句 return语句:语句:起结束当前最内层过程体或函数体执行的作用,有两种形式:起结束当前最内层过程体或函数体执行的作用,有两种形式: 当用于过程时,当用于过程时, : return; 当用于函数时,当用于函数时, : return ; 注注: :保证函数体不执行到结尾的保证函数体不执行到结尾的end并带回函数的返回值,返回值数据类型必须满足要求并带回函数的返回值,返回值数据类型必须满足要求 null语句:语句:空操作,执行该语

59、句无任何动作,只是把运行操作指向下一条语句。空操作,执行该语句无任何动作,只是把运行操作指向下一条语句。 : : null; assert语句:语句:断言语句来产生警告信息断言语句来产生警告信息 assert report severity ; 注注:为真,执行下一条语句;否则输出为真,执行下一条语句;否则输出和报告和报告 为文本说明信息。缺省为文本说明信息。缺省report子句,默认消息为子句,默认消息为“assertion violation” 为为failure、error、warning和和note。缺省缺省severity子句默认为子句默认为error2024/7/25电子教案 Pa

60、ge 47 of 97哈尔滨工程大学 付永庆第三部分第三部分 VHDL顺序语句顺序语句(10)顺序语句顺序语句 report语句:语句:类似于断言语句的功能,类似于断言语句的功能,用于给出信息报告用于给出信息报告 : report severity ; 注注:仅有仅有VHDLVHDL9393标准和标准和VHDLVHDL20012001标准支持标准支持reportreport语句。语句。 缺省缺省severity子句时,子句时,report语句相当于语句相当于VHDL87标准中的一个条件为标准中的一个条件为false、 错误级别为错误级别为note的的assert语句语句 过程调用语句:过程调用

61、语句:相当于一条顺序语句或并行语句,在进程中使用为顺序语句。相当于一条顺序语句或并行语句,在进程中使用为顺序语句。 过程调用将启动对应过程体(子过程或函数)的执行过程调用将启动对应过程体(子过程或函数)的执行 : (实参数列表实参数列表) ; 注注: :(实参数列表实参数列表)是向过程体内部传递信息的接口。实参数可为信号、变量或常量是向过程体内部传递信息的接口。实参数可为信号、变量或常量 例例:proc_miltiplier (a,b,y); -调调用用计计算算y=a*b的的过过程程 2024/7/25电子教案 Page 48 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结

62、构的模型结构(1)设计实体:设计实体:VHDL的基本设计单元,由实体说明和构造体两部分组成的基本设计单元,由实体说明和构造体两部分组成 实体说明:实体说明:用于描述一个设计的外部视图用于描述一个设计的外部视图, 即即:定义实体名、界面接口、引入外部参数定义实体名、界面接口、引入外部参数 entity is generic (); port (); end entity ; 注注: 类属子句:提供用于规定端口大小、元件数目、定时的参数类属子句:提供用于规定端口大小、元件数目、定时的参数 constant, : in:= ; 端口子句:用于定义端口引脚名、数据流向、数据类型端口子句:用于定义端口引

63、脚名、数据流向、数据类型 signal, : bus:= ; bus 用于表示具有三态特性的端口用于表示具有三态特性的端口 用于表示端口信号的输入用于表示端口信号的输入/输出方向:输出方向:in、out、inout、buffer、linkage 用于规定端口信号的缺省值,用于规定端口信号的缺省值,即:在非使用状态时为端口信号提供上即:在非使用状态时为端口信号提供上 拉电平。一旦端口信号被使用,则缺省值便自动被忽略拉电平。一旦端口信号被使用,则缺省值便自动被忽略 2024/7/25电子教案 Page 49 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(2)设计实

64、体:设计实体:VHDL的基本设计单元,由实体说明和构造体两部分组成的基本设计单元,由实体说明和构造体两部分组成 实体说明:实体说明: 允许使用子程序和体、类型和子类型、常量或信号说明语句的区域允许使用子程序和体、类型和子类型、常量或信号说明语句的区域 例:例: library IEEE; use IEEE.std_logic_1164.all; entity ram is port(addr:in std_logic_vector(15 downto 0); data:out std_logic_vector(31 downto 0);enable :in std_logic); -类型说明和

65、过程说明部分类型说明和过程说明部分 type instruction is array (1 to 8) of natural; type program is array (natural range ) of instruction; procedure initialization (signal content:std_logic_vector(31 downto 0) is begin content 0) after 5 ns; end procedure initialization; end entity ram;2024/7/25电子教案 Page 50 of 97哈尔滨工程

66、大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(3)设计实体:设计实体:VHDL的基本设计单元,由实体说明和构造体两部分组成的基本设计单元,由实体说明和构造体两部分组成 构造体:构造体:用于描述一个设计的内部视图用于描述一个设计的内部视图, 即:一个设计要实现的具体功能,实体说明与即:一个设计要实现的具体功能,实体说明与 构造体必须结对使用,构造体必须结对使用,VHDL规定实体说明要放在构造体的前面,规定实体说明要放在构造体的前面,并并总是先编总是先编 译实体说明之后才能编译构造体,并把编译结果存放在当前设计库译实体说明之后才能编译构造体,并把编译结果存放在当前设计库( (WORK

67、) )中中 architecture of is begin end architecture ; 注:注: 用于说明和定义内部信号、常量、数据类型、子过程、元件等用于说明和定义内部信号、常量、数据类型、子过程、元件等 内部说明信号不必规定信号方向内部说明信号不必规定信号方向 允许信号赋值、块、进程、子程序调用、生成、元件例示等语句允许信号赋值、块、进程、子程序调用、生成、元件例示等语句 例:例: library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigne

68、d.all; 2024/7/25电子教案 Page 51 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(4)设计实体:设计实体:VHDL的基本设计单元,由实体说明和构造体两部分组成的基本设计单元,由实体说明和构造体两部分组成 例:例:entity multiplier is generic(n: positive := 8); port(x, y: in std_logic_vector(n-1 downto 0); product: out integer range 0 to 65535 ); end entity multiplier; architec

69、ture behav of multiplier is begin process is variable rs:std_logic_vector(15 downto 0) := X0000; variable rx:std_logic_vector(15 downto 0); begin rx( 15 downto 0):= X00&x; rs:=X0000; for i in ylow to yhigh loop if y(i) = 1 then rs := rs + rx;end if; rx(15 downto 0) := rx(14 downto 0)&0; end loop; pr

70、oduct = conv_integer(rs); end process; end architecture behav;2024/7/25电子教案 Page 52 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(5)构造体功能的行为描述:构造体功能的行为描述:并行信号赋值语句、进程语句是行为描述的基本单元并行信号赋值语句、进程语句是行为描述的基本单元 并行信号赋值语句:由并行信号赋值语句:由简单信号赋值、条件信号赋值、选择信号赋值语句组成简单信号赋值、条件信号赋值、选择信号赋值语句组成 简单信号赋值语句简单信号赋值语句 条件信号赋值语句条件信号赋值语句 :

71、= when else when ; 注注: := after , 和和对信号敏感,一旦激活会按序检查由对信号敏感,一旦激活会按序检查由when所指定的条件所指定的条件, 如果为真,则对应如果为真,则对应就代入信号,重复上述过程直至代入最后一个就代入信号,重复上述过程直至代入最后一个 最后一个最后一个可以缺省条件,不允许把信号代入自身的描述可以缺省条件,不允许把信号代入自身的描述 例:例:architecture behav of multiplexer is begin zmux:z = d0 when sel = “00” else d1 when sel = “01” else d2 w

72、hen sel = “10” else d3 when sel = “11” ; end architecture behav;2024/7/25电子教案 Page 53 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(6)构造体功能的行为描述:构造体功能的行为描述:并行信号赋值语句、进程语句是行为描述的基本单元并行信号赋值语句、进程语句是行为描述的基本单元 并行信号赋值语句:由并行信号赋值语句:由简单信号赋值、条件信号赋值、选择信号赋值语句组成简单信号赋值、条件信号赋值、选择信号赋值语句组成 选择信号赋值语句选择信号赋值语句 : with select = w

73、hen , when ; 注注: 同条件信号赋值语句同条件信号赋值语句 := | | | others := downto | to 对信号敏感,一旦激活会对所有的对信号敏感,一旦激活会对所有的 进行检测不允许嵌套使用进行检测不允许嵌套使用 和和casecase语句一样,既不允许语句一样,既不允许 的取值被遗漏也不允许重复使用它们的取值被遗漏也不允许重复使用它们 不允许把信号代入自身的描述不允许把信号代入自身的描述2024/7/25电子教案 Page 54 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(7)构造体功能的行为描述:构造体功能的行为描述:并行信号赋

74、值语句、进程语句是行为描述的基本单元并行信号赋值语句、进程语句是行为描述的基本单元 并行信号赋值语句:由并行信号赋值语句:由简单信号赋值、条件信号赋值、选择信号赋值语句组成简单信号赋值、条件信号赋值、选择信号赋值语句组成 选择信号赋值语句选择信号赋值语句 例:例:entity full_adder is port(a,b,c_in:in bit;sum,c_out:out bit); end entity full_adder; architecture truth_table of full_adder is begin with bit_vector(a,b,c_in) select -选

75、择信号赋值语句选择信号赋值语句 (c_out,sum) = bit_vector(“00”) when “000”, bit_vector(“01”) when “001”, bit_vector(“01”) when “010”, bit_vector(“10”) when “011”, bit_vector(“01”) when “100”, bit_vector(“10”) when “101”, bit_vector(“10”) when “110”, bit_vector(“11”) when “111”; end architecture behav;2024/7/25电子教案 P

76、age 55 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(8)构造体功能的行为描述构造体功能的行为描述 信号属性信号属性:用于得到有关信号事件和事项处理的历史信息用于得到有关信号事件和事项处理的历史信息 信号类属性信号类属性 Sdelayed(t) 给出一个值与给出一个值与S相同,但被延迟相同,但被延迟t时间的信号时间的信号 Sstable(t) 给出一个给出一个boolean型信号,若至今型信号,若至今S在在t时间内没有事件发时间内没有事件发 生,则值为真,否则为假生,则值为真,否则为假 Squiet(t) 给出一个给出一个boolean型信号,若至今型信

77、号,若至今S在在t时间内没有事项处时间内没有事项处 理发生,即:静待理发生,即:静待t时间,则值为真,否则为假时间,则值为真,否则为假 Stransaction 给出一个给出一个bit型信号,每当关于型信号,每当关于S的事项处理发生时,其值的事项处理发生时,其值 便发生相对前值的翻转便发生相对前值的翻转 注注: 省缺省缺t t时,取默认值时,取默认值0 0,并且生成的信号比,并且生成的信号比S S要延迟一个要延迟一个模拟时间模拟时间 不允许在过程和函数中应用不允许在过程和函数中应用 信号属性函数信号属性函数 Sevent 若在当前模拟周期内信号若在当前模拟周期内信号S有一个事件发生,则值为真,

78、有一个事件发生,则值为真, 否则为假否则为假 Sactive 若在当前模拟周期内信号若在当前模拟周期内信号S有一个事项处理发生,则值为有一个事项处理发生,则值为 真,否则为假真,否则为假2024/7/25电子教案 Page 56 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(9)构造体功能的行为描述构造体功能的行为描述 信号属性信号属性:用于得到有关信号事件和事项处理的历史信息用于得到有关信号事件和事项处理的历史信息 信号属性函数信号属性函数 Slast_event 给出从信号给出从信号S前一个事件发生至今所花费的时间前一个事件发生至今所花费的时间 Slast

79、_active 给出从信号给出从信号S前一个事项处理发生至今所花费的时间前一个事项处理发生至今所花费的时间 Slast_value 给出信号给出信号S在最近一个事件发生前那个时刻的值在最近一个事件发生前那个时刻的值 注注: 缺省缺省t t时,取默认值时,取默认值0 0,并且生成的信号比,并且生成的信号比S S要延迟一个要延迟一个模拟时间模拟时间 不允许在过程和函数中应用不允许在过程和函数中应用 信号属性关系图例信号属性关系图例 2024/7/25电子教案 Page 57 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(10)构造体功能的行为描述构造体功能的行为描

80、述 进程语句进程语句:由顺序语句组成,通过信号或端口实现信息传递由顺序语句组成,通过信号或端口实现信息传递 : process () is begin ; end process ; 注注:= , 若缺省,则进程内必须包含若缺省,则进程内必须包含wait语句,但不允许同时使用语句,但不允许同时使用wait语句和敏感信号表语句和敏感信号表 允许说明常量、变量、类型及子程序,不允许说明非共享变量允许说明常量、变量、类型及子程序,不允许说明非共享变量 变量只允许在进程内使用,进程外不可见。进程仅在首次执行时对变量初始化,之变量只允许在进程内使用,进程外不可见。进程仅在首次执行时对变量初始化,之 后不

81、管进程挂起与否,变量总保持运算的中间结果而不会丢失。后不管进程挂起与否,变量总保持运算的中间结果而不会丢失。 在模拟期间激活进程时,进程总是从第在模拟期间激活进程时,进程总是从第1条顺序语句条顺序语句(或或wait语句后的顺序语句语句后的顺序语句)开始开始 执行,然后连续运行直至它上一次被挂起的地方为止执行,然后连续运行直至它上一次被挂起的地方为止 例例411说明说明2024/7/25电子教案 Page 58 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(11)构造体功能的行为描述构造体功能的行为描述 无源无源进程进程:由无源并行断言语句、无源并行过程调用语句

82、、无源进程语句组成,用于由无源并行断言语句、无源并行过程调用语句、无源进程语句组成,用于 监视实体的运行监视实体的运行 entity is generic (); port (); begin | | end entity ; 注注:并行断言语句、并行过程调用并行断言语句、并行过程调用语句、语句、进程语句进程语句中无信号赋值操作就是无源的中无信号赋值操作就是无源的 实体说明中包含的并行语句全局可见,不能以任何方式影响实体运行实体说明中包含的并行语句全局可见,不能以任何方式影响实体运行 并行并行assert语句语句:用于检测行为建模中的错误,与串行用于检测行为建模中的错误,与串行assert语句

83、格式相同语句格式相同 2024/7/25电子教案 Page 59 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(12)构造体功能的子结构描述:构造体功能的子结构描述:块、子程序、元件是结构描述的基本单元块、子程序、元件是结构描述的基本单元 块语句块语句:能能把多条并行语句聚合在一起的并行语句,用于描述功能相对比较独立的子结构把多条并行语句聚合在一起的并行语句,用于描述功能相对比较独立的子结构 : block () is generic (); generic map(); port (); port map(); begin guarded ; end blo

84、ck ; 注注:guarded代表由代表由隐含说明的一个布尔型信号。隐含说明的一个布尔型信号。 用于控制以用于控制以 guarded做前缀的并行信号赋值语句的运行。若值为真,做前缀的并行信号赋值语句的运行。若值为真,guarded就接通被它保护的并就接通被它保护的并 行信号赋值语句的驱动器允许赋值操作;否则就切断驱动器禁止赋值操作。没有行信号赋值语句的驱动器允许赋值操作;否则就切断驱动器禁止赋值操作。没有 guarded前缀的并行信号赋值语句将不受影响前缀的并行信号赋值语句将不受影响 类属和端口子句用于为块语句定义界面,作用与实体说明中的情况相类似。类属和端口子句用于为块语句定义界面,作用与实

85、体说明中的情况相类似。2024/7/25电子教案 Page 60 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(13)构造体功能的子结构描述:构造体功能的子结构描述:块、子程序、元件是结构描述的基本单元块、子程序、元件是结构描述的基本单元 块语句块语句 允许使用常量、类型、子类型、信号和子程序等说明语句。说明项目只允许使用常量、类型、子类型、信号和子程序等说明语句。说明项目只 在块内有效,块外不可见。块外说明的信号、类属参数和端口信号,在块内可用,当在块内有效,块外不可见。块外说明的信号、类属参数和端口信号,在块内可用,当 块内有同名说明项目时,块内说明项目占

86、优块内有同名说明项目时,块内说明项目占优 允许在块语句内部使用块语句,即:允许对一个系统进行块嵌套描述。但块嵌套不允许在块语句内部使用块语句,即:允许对一个系统进行块嵌套描述。但块嵌套不 一定使设计结构变得清晰。实际上,块嵌套主要用于配置语句,注意构造体本身也一定使设计结构变得清晰。实际上,块嵌套主要用于配置语句,注意构造体本身也 等价于一个块结构。等价于一个块结构。 例:例: library IEEE;use IEEE.std_logic_1164.all; entity mux_2 is generic (sig_width: positive :=16); port (x0,x1:in

87、std_logic_vector(0 to sig_width-1);sel:in std_logic; y:out std_logic_vector(0 to sig_width-1); end entity mux_2; architecture behav of mux_2 is begin 2024/7/25电子教案 Page 61 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(14)构造体功能的子结构描述:构造体功能的子结构描述:块、子程序、元件是结构描述的基本单元块、子程序、元件是结构描述的基本单元 块语句块语句 b1: block is gene

88、ric(width:positive); generic map(width = sig_width); port(d0,d1:in std_logic_vector(0 to width-1); sel:in std_logic; result:out std_logic_vector(0 to width-1); port map(d0 = x0,d1 = x1,result = y,sel = sel); signal temp0,temp1:std_logic_vector(0 to width-1); begin temp0 0); temp1 0); b2: block is be

89、gin result = temp0 or temp1; end block b2; end block b1; end architecture behav;2024/7/25电子教案 Page 62 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(15)构造体功能的子结构描述构造体功能的子结构描述:块、子程序、元件是结构描述的基本单元块、子程序、元件是结构描述的基本单元 子程序子程序: 由过程和函数组成,用于实现重复结构的功能和行为。过程由过程和函数组成,用于实现重复结构的功能和行为。过程通过接口参数表与通过接口参数表与 外部直接交换信息,函数通过接口参数表

90、接受外部信息、用函数调用的返回值外部直接交换信息,函数通过接口参数表接受外部信息、用函数调用的返回值 回馈信息给外部。主要差别:过程调用相当于一条语句,函数调用只返回一个回馈信息给外部。主要差别:过程调用相当于一条语句,函数调用只返回一个 值值 过程过程 procedure () is begin ; end procedure ; 注注: := constant|variable|signal, : := ; 仅有仅有in、out和和inout三种。若缺省三种。若缺省,则,则in方向的参数默认为方向的参数默认为 常量,常量,inout或或out方向的参数默认为变量。缺省方向的参数默认为变量。

91、缺省时,默认方向为时,默认方向为in 允许类型、子类型、变量、常量和子程序说明,但不允许说明信号允许类型、子类型、变量、常量和子程序说明,但不允许说明信号 每次调用过程都进行初始化,调用结束后便释放内部变量,调用时,若缺省实参每次调用过程都进行初始化,调用结束后便释放内部变量,调用时,若缺省实参 或不连接或不连接(用用open取代实参的位置取代实参的位置),则以,则以作为缺省初始值作为缺省初始值2024/7/25电子教案 Page 63 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(16)构造体功能的子结构描述构造体功能的子结构描述:块、子程序、元件是结构描述

92、的基本单元块、子程序、元件是结构描述的基本单元 过程过程 注注:信号在过程内总是可见的,可省缺信号在过程内总是可见的,可省缺在过程内直接寻访外部信号。但在过程内直接寻访外部信号。但 若要在调用过程的进程内驱动这些信号,还必须在进程内说明该过程才能做到。若要在调用过程的进程内驱动这些信号,还必须在进程内说明该过程才能做到。 为避免错误地修改全局信号,不推荐用非为避免错误地修改全局信号,不推荐用非内的参数来传递信息内的参数来传递信息 在含有敏感信号表的进程中调用过程时,过程内部禁用在含有敏感信号表的进程中调用过程时,过程内部禁用wait语句语句 函数函数: 可以被看作是一个能和运算符一起参加运算的

93、广义表达式,其可以被看作是一个能和运算符一起参加运算的广义表达式,其功能可以通过功能可以通过 一组顺序语句来实现一组顺序语句来实现 pure|impure function () return is begin ; end function ; 注注:函数只允许形式参数为常量和信号,不允许为变量,缺省函数只允许形式参数为常量和信号,不允许为变量,缺省默认为常量;默认为常量; 每个形式参数的方向模式都必须为每个形式参数的方向模式都必须为in,缺省方向模式字默认为缺省方向模式字默认为in方向方向 信号在函数内总是可见的,在函数内部可直接寻访外部信号。但不允许在其内部使信号在函数内总是可见的,在函数

94、内部可直接寻访外部信号。但不允许在其内部使 用信号赋值语句用信号赋值语句2024/7/25电子教案 Page 64 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(17)构造体功能的子结构描述构造体功能的子结构描述:块、子程序、元件是结构描述的基本单元块、子程序、元件是结构描述的基本单元 函数函数: 注注:函数不能作为一条语句使用,只能返回一个用于表达式计算的值,其数据类型由函数不能作为一条语句使用,只能返回一个用于表达式计算的值,其数据类型由 保留字保留字return后面的后面的来规定,因函数总使用来规定,因函数总使用return语句返回计算值给语句返回计算值

95、给 调用者,实际上最后一条语句就是调用者,实际上最后一条语句就是return语句语句 函数允许进行类型、子类型、变量、常量和子程序说明,但不允许说明信号函数允许进行类型、子类型、变量、常量和子程序说明,但不允许说明信号 pure或或impure用于指定纯函数或非纯函数,用相同形参调用函数总能返回一个相用于指定纯函数或非纯函数,用相同形参调用函数总能返回一个相 同值为纯函数;可能会返回不同值为非纯函数。缺省保留字同值为纯函数;可能会返回不同值为非纯函数。缺省保留字pure或或impure时,函时,函 数被默认为纯函数数被默认为纯函数 过程与过程与函数的调用函数的调用: 既允许在顺序语句区,也允许

96、在并行语句区调用既允许在顺序语句区,也允许在并行语句区调用 : (); 注注:= =|open, 参数互连形式:命名结合,用符号参数互连形式:命名结合,用符号“=”显性地指明互连关系,书写顺序不重要;显性地指明互连关系,书写顺序不重要; 位置结合,用实参占形参位置来相连,书写顺序非常重要。允许两种方法混合位置结合,用实参占形参位置来相连,书写顺序非常重要。允许两种方法混合 使用。互连参数有输入、输出方向之分使用。互连参数有输入、输出方向之分2024/7/25电子教案 Page 65 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(18)构造体功能的子结构描述构造

97、体功能的子结构描述:块、子程序、元件是结构描述的基本单元块、子程序、元件是结构描述的基本单元 子程序子程序: 子程序重载子程序重载: 指多个子程序使用相同名字的情况,指多个子程序使用相同名字的情况,VHDL编译工具通过检查子程序编译工具通过检查子程序 参数是否具有相同数据类型来区分重名的子程序,例如:参数是否具有相同数据类型来区分重名的子程序,例如: 子程序调用中出现的参数数目子程序调用中出现的参数数目 子程序调用中出现的参数类型子程序调用中出现的参数类型 子程序调用为实现参数结合所用的参数名字子程序调用为实现参数结合所用的参数名字 在函数调用下返回值的数据类型在函数调用下返回值的数据类型 注

98、注:如果使用的重载子程序使如果使用的重载子程序使VHDL无法区分上述因素,那么就会产生错误。无法区分上述因素,那么就会产生错误。 在在VHDL中,运算符作为一种预定义的函数也可以重载中,运算符作为一种预定义的函数也可以重载 2024/7/25电子教案 Page 66 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(19)构造体功能的子结构描述构造体功能的子结构描述:块、子程序、元件是结构描述的基本单元块、子程序、元件是结构描述的基本单元 元件语句元件语句: 用于描述设计的层次结构,由元件说明和元件例示两部分组成。元件说明仅用于描述设计的层次结构,由元件说明和元件

99、例示两部分组成。元件说明仅 指定元件的外部界面;元件例示用于完成指定元件的外部界面;元件例示用于完成元件与外部信号间的互连,不受设元件与外部信号间的互连,不受设 计层次限制。计层次限制。元件只与相关的实体接口连接,不依赖于任何库单元,元件语元件只与相关的实体接口连接,不依赖于任何库单元,元件语 句本身不能赋予元件功能,为使元件获得指定的功能需借助配置语句来完成句本身不能赋予元件功能,为使元件获得指定的功能需借助配置语句来完成 元件说明语句元件说明语句: 只能在包集合、构造体、块中的说明区使用只能在包集合、构造体、块中的说明区使用 component is generic(); port ();

100、 end component ; 注注:generic子句用于定义引入元件内部的常量参数,子句用于定义引入元件内部的常量参数,port子句用于规定元件的输入和输子句用于规定元件的输入和输 出端口信号。出端口信号。和和的书写格式与实体说明语句相同的书写格式与实体说明语句相同 元件说明与实体说明表达的概念不同:一个实体说明最终可能代表一个实际的集成元件说明与实体说明表达的概念不同:一个实体说明最终可能代表一个实际的集成 电路器件电路器件/一个放在硅芯片上的标准设计模块,是一个分离的设计单元,可以独立地一个放在硅芯片上的标准设计模块,是一个分离的设计单元,可以独立地 进行分析,结果要放入设计库中。而

101、一个元件说明只是定义了一个包含在构造体内进行分析,结果要放入设计库中。而一个元件说明只是定义了一个包含在构造体内 的虚拟模块的虚拟模块2024/7/25电子教案 Page 67 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(20)构造体功能的子结构描述构造体功能的子结构描述:块、子程序、元件是结构描述的基本单元块、子程序、元件是结构描述的基本单元 元件语句元件语句: 元件例示语句元件例示语句: :component generic map() port map(); 注注:必须是唯一的。必须是唯一的。 实际参数与类属参数、实际信号与端口信号之间的互连可采用位置

102、结合或命名结合实际参数与类属参数、实际信号与端口信号之间的互连可采用位置结合或命名结合 方法来完成。方法来完成。 VHDL87标准不支持使用保留字标准不支持使用保留字component。VHDL93和和VHDL2001标准使用该标准使用该 保留字主要用于区分一个例示是元件例示还是直接实体例示保留字主要用于区分一个例示是元件例示还是直接实体例示 例:例:library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_arith.all; use IEEE.std_logic_unsigned.all; use WORK.divide_u

103、nit;2024/7/25电子教案 Page 68 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(21)构造体功能的子结构描述构造体功能的子结构描述:块、子程序、元件是结构描述的基本单元块、子程序、元件是结构描述的基本单元 元件语句元件语句: entity divider is generic(m: integer := 12); port (clk:in std_logic;x,y:in std_logic_vector(m-1 downto 0); z:out std_logic_vector(m-1 downto 0); end entity divid

104、er; architecture behav of divider is component divide_unit is -元件说明元件说明 generic(m:integer); port(clk:in std_logic;rd:out std_logic; operand_left,operand_right: in std_logic_vector(m-1 downto 0); result:out std_logic_vector(m-1 downto 0); end component divide_unit; signal rd:std_logic; begin div: com

105、ponent divide_unit -元件例示元件例示 generic map(m) port map(clk,rd,x,y,z); end architecture behav;2024/7/25电子教案 Page 69 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(22)配置配置:分默认连接分默认连接、配置指定配置指定、配置说明和直接例示配置说明和直接例示4种形式,可用于为例示元件赋予功能种形式,可用于为例示元件赋予功能 或为实体说明选配构造体。是初级设计单元,可单独地编译,编译后并入设计库中或为实体说明选配构造体。是初级设计单元,可单独地编译,编译后并

106、入设计库中 默认连接默认连接: 指将一个元件与当前工作库中的同名实体相连接的情况。默认连接的元件不能指将一个元件与当前工作库中的同名实体相连接的情况。默认连接的元件不能 被连接的实体包含。默认连接只在被连接的实体可见时才发生。使被连接的实被连接的实体包含。默认连接只在被连接的实体可见时才发生。使被连接的实 体透明需使用体透明需使用use子句子句 例例4-20中用中用 use WORK.divide_unit; 使被连接的实体可见使被连接的实体可见 注:默认连接总把连接直接指向当前工作库中最新编译的与同名实体说明对应的构造体注:默认连接总把连接直接指向当前工作库中最新编译的与同名实体说明对应的构

107、造体 配置指定配置指定: 用于建立元件例示与其他实体之间的关系,同时完成把实体功能赋予元件的任用于建立元件例示与其他实体之间的关系,同时完成把实体功能赋予元件的任 务。只能在构造体、块或生成语句的说明区内使用务。只能在构造体、块或生成语句的说明区内使用 for use entity . (构造体名构造体名) generic map() port map(); 注注: := , | others | all: 若取若取others或或all保留字时,则分别代表所有剩余例示元件或全部例示元件。保留字时,则分别代表所有剩余例示元件或全部例示元件。 缺省构造体名时,连接指向最新编译的构造体缺省构造体名

108、时,连接指向最新编译的构造体 2024/7/25电子教案 Page 70 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(23)配置配置: 配置指定配置指定: 注注:和和与元件例示语句书写相同。与元件例示语句书写相同。 构造体中的配置指定对构造体中的配置指定对block语句和语句和generate语句中的元件例示无效。要为块或生成语句中的元件例示无效。要为块或生成 语句内的例示元件赋予功能,必须把配置指定放在语句内的例示元件赋予功能,必须把配置指定放在block语句或语句或generate语句的说明语句的说明 区内,区内,VHDL87标准没有为标准没有为gene

109、rate语句提供说明区,故须采取在生成语句中加入语句提供说明区,故须采取在生成语句中加入 块语句的方法来解决。块语句的方法来解决。 例:例:architecture behav of divider is component divide_unit is -元件说明元件说明 generic(m:integer); port(clk:in std_logic;rd:out std_logic; operand_left,operand_right: in std_logic_vector(m-1 downto 0); result:out std_logic_vector(m-1 downto

110、0); end component divide_unit; signal rd:std_logic; for div: divider_unit use entity WORK.divide_unit(behavior); -配置指定配置指定 begin div: component divide_unit generic map(m) port map(clk,rd,x,y,z); end architecture behav; 2024/7/25电子教案 Page 71 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(24)配置配置: 配置说明配置说明:

111、实现从元件例示到设计实体连接或完成实体与构造体选配的最基本的语句实现从元件例示到设计实体连接或完成实体与构造体选配的最基本的语句 configuration of is end configuration ; 注注: := for for ,|others|all: generic map() port map(); end for; end for; := use entity . (构造体名构造体名) |configuration . 允许递归使用允许递归使用,允许指定元件与实体的端口、类属参数间的显性连接。,允许指定元件与实体的端口、类属参数间的显性连接。 中无配置信息时,把设计实体与构

112、造体进行捆绑中无配置信息时,把设计实体与构造体进行捆绑2024/7/25电子教案 Page 72 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(25)配置配置: 直接例示直接例示: 是一种隐含配置的元件例示语句。不需要元件说明直接指向实体对端口例示。是一种隐含配置的元件例示语句。不需要元件说明直接指向实体对端口例示。 直接例示中隐含的配置不是直接指向实体就是直接指向实体的配置直接例示中隐含的配置不是直接指向实体就是直接指向实体的配置 :use entity .(构造体名构造体名) | configuration. generic map() port map(

113、); 例:例: entity logic_block is generic(n: time := 5 ns); port(x,y:in bit;z:out bit); end entity logic_block; architecture behav of logic_block is begin gate1:use entity WORK.or3(behavior) -直接例示直接例示 generic map(ipd = n,opd = n) port map(a = x,b = y,c = 0,z = z); end architecture behav;2024/7/25电子教案 Pa

114、ge 73 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(26)配置配置: 直接例示直接例示: 当前工作库当前工作库(WORK)中的三输入或门为中的三输入或门为: entity or3 is generic(ipd,opd:time); port(a,b,c:in bit;z:out bit); end entity or3; architecture behavior of or3 is begin z = a or b or c; end architecture behavior;2024/7/25电子教案 Page 74 of 97哈尔滨工程大学 付永

115、庆第四部分第四部分 VHDL的模型结构的模型结构(27)包集合与设计库包集合与设计库 包集合包集合: 用于集中组织服务于公共用途的有关说明和定义,使用于集中组织服务于公共用途的有关说明和定义,使数据类型、常量、信号、数据类型、常量、信号、 元件及子程序元件及子程序全局可见,以便在所有设计单元中可以不加说明的引用它们,实全局可见,以便在所有设计单元中可以不加说明的引用它们,实 现简化源代码、增强设计可重用性和程序可读性的目的。由包集合说明和包集现简化源代码、增强设计可重用性和程序可读性的目的。由包集合说明和包集 合体合体(package body)两部分组成。两部分组成。 包集合说明包集合说明:

116、 主要用于定义包集合的界面,即:定义被说明项目对外可见的部分。不允主要用于定义包集合的界面,即:定义被说明项目对外可见的部分。不允 许定义实体许定义实体/构造体对,因此,包集合本身不能直接表达任何一个电路。构造体对,因此,包集合本身不能直接表达任何一个电路。 package is end package ; 注注:由类型、子类型、常量、信号、元件和子程序说明语句所组成由类型、子类型、常量、信号、元件和子程序说明语句所组成 有两类包集合,一类是有两类包集合,一类是VHDL预定义的标准包集合,主要用于定义预定义的标准包集合,主要用于定义VHDL的类型、的类型、 运算符和转换函数等;而另一类是用户定

117、义的包集合,主要用于定义描述一个实际运算符和转换函数等;而另一类是用户定义的包集合,主要用于定义描述一个实际 设计所需要的一系列说明、元件或子程序。设计所需要的一系列说明、元件或子程序。 包集合实际上是一个库单元,若干个由用户编写的包集合汇合在一起可以组成一个包集合实际上是一个库单元,若干个由用户编写的包集合汇合在一起可以组成一个 设计库设计库2024/7/25电子教案 Page 75 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(28)包集合与设计库包集合与设计库 包集合说明包集合说明: 注注:包集合说明是一个主设计单元,可以独立地编译并插入到当前工作库包集

118、合说明是一个主设计单元,可以独立地编译并插入到当前工作库(WORK)中中 引用包集合内部的说明项目,需要使用引用包集合内部的说明项目,需要使用use子句并通过选择项目名来使对应的子句并通过选择项目名来使对应的 说明项目透明可见,例如说明项目透明可见,例如 use .,; := | all 引用保留字引用保留字all会使包集合说明中的全部说明项目均对外透明可见。会使包集合说明中的全部说明项目均对外透明可见。 把用户编写的通用包集合放入非当前工作库,需参考把用户编写的通用包集合放入非当前工作库,需参考VHDL工具商提供的用户手册工具商提供的用户手册 例:例:package display_cons

119、tants is constant addr_width : positive :=9; constant num_words : string :=296; constant data_width : positive :=8; constant roll_speed : string :=85; end package display_constants; library IEEE; use IEEE.std_logic_1164.all; use WORK.display_constants.all;2024/7/25电子教案 Page 76 of 97哈尔滨工程大学 付永庆第四部分第四

120、部分 VHDL的模型结构的模型结构(29)包集合与设计库包集合与设计库 包集合体包集合体: 是一个可选项,当包集合说明含有缓定常量或子程序说明时,就需要有一个对是一个可选项,当包集合说明含有缓定常量或子程序说明时,就需要有一个对 应的包集合体来为缓定常量赋值或给出子程序所缺少的具体细节应的包集合体来为缓定常量赋值或给出子程序所缺少的具体细节( (功能功能) ) package body is end package body ; 注注:必须与包集合说明中的相同必须与包集合说明中的相同 中,允许使用额外的类型、子类型、常量和子程序说明,但除了缓中,允许使用额外的类型、子类型、常量和子程序说明,但

121、除了缓 定常量或子程序说明外,其它说明不允许与包集合说明中的项目重复,并且在包集定常量或子程序说明外,其它说明不允许与包集合说明中的项目重复,并且在包集 合体内不允许使用信号说明语句。此外,除非是缓定常量或子程序,否则包集合体合体内不允许使用信号说明语句。此外,除非是缓定常量或子程序,否则包集合体 内的说明项目对外都是不可见的内的说明项目对外都是不可见的 包集合体是一个次级设计单元,在其对应的主设计单元被编译和插入包集合体是一个次级设计单元,在其对应的主设计单元被编译和插入WORK库后独库后独 立地被编译和插入到同一立地被编译和插入到同一WORK库中库中 见例见例4-352024/7/25电子

122、教案 Page 77 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(30)包集合与设计库包集合与设计库 设计库设计库: 由被编译的包集合、实体由被编译的包集合、实体/构造体对和配置的数据集合所组成。设计库中存放的构造体对和配置的数据集合所组成。设计库中存放的 设计数据可作为其他设计数据可作为其他VHDL设计单元的共享资源。设计库对设计单元并不都是透设计单元的共享资源。设计库对设计单元并不都是透 明的,一个设计单元要访问某个设计库,那么就要把有关该库的说明语句放在明的,一个设计单元要访问某个设计库,那么就要把有关该库的说明语句放在 这个设计单元的最前面这个设计单

123、元的最前面 库语句库语句: library ,; 注注:库说明语句相当于一个路径指针,总指向存放库数据的与库同名的文件夹库说明语句相当于一个路径指针,总指向存放库数据的与库同名的文件夹 VHDL语言支持多个设计库同时并存,但库与库之间是独立的,不能相互嵌套语言支持多个设计库同时并存,但库与库之间是独立的,不能相互嵌套 设计库可划分为设计库可划分为STD库、库、WORK库、库、IEEE库、库、VITAL 库、资源库和用户库库、资源库和用户库 2024/7/25电子教案 Page 78 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(31)包集合与设计库包集合与设计

124、库 STD库:含有库:含有standard和和textio两个包集合。两个包集合。standard包集合主要支持标准包集合主要支持标准VHDL的预定义的预定义 类型和基本运算符的使用,例如,类型和基本运算符的使用,例如,bit和和bit_vector类型等。类型等。VHDL中隐含存在中隐含存在 library STD; use STD.standard.all; 因此,使用因此,使用standard包集合无须再进行说明。包集合无须再进行说明。 textio包集合主要支持对文件类型数据的读写操作,但不支持对其进行赋值操作包集合主要支持对文件类型数据的读写操作,但不支持对其进行赋值操作 和逻辑综合

125、。它实际上是专为和逻辑综合。它实际上是专为VHDL模拟工具提供的与外部计算机文件管理系统模拟工具提供的与外部计算机文件管理系统 交换数据的一个界面,使用前需要用交换数据的一个界面,使用前需要用use子句。子句。 WORK库:是库:是VHDL指定的当前工作库,指定的当前工作库,VHDL把所有的当前设计都存放在该库之中,把所有的当前设计都存放在该库之中, 它总是透明的,这相当于它总是透明的,这相当于VHDL中隐含存在着下列形式的语句中隐含存在着下列形式的语句 library WORK; 因因VHDL工具供应商的不同,工具供应商的不同,WORK库实际指向的物理路径可能不与库实际指向的物理路径可能不与

126、WORK 库同名。例如,库同名。例如,Altera公司提供的公司提供的MAX+PLUS II VHDL工具就以工具就以max2work作作 为当前工作库映射的实际物理路径。为当前工作库映射的实际物理路径。2024/7/25电子教案 Page 79 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(32)包集合与设计库包集合与设计库IEEE库:主要由标准包集合库:主要由标准包集合std_logic_1164、numeric_bit和和numeric_std、math_real和和 math_complex组成。组成。 std_logic_1164标准包集合支持建立在

127、标准包集合支持建立在std_logic和和std_logic_vector类型基础上类型基础上 的标量类型、复合类型和基本运算符的使用的标量类型、复合类型和基本运算符的使用、numeric_bit和和numeric_std包包 集合支持有符号数和无符号数的运算,均可逻辑综合;而集合支持有符号数和无符号数的运算,均可逻辑综合;而math_real和和 math_complex包集合仅支持实数和复数运算,不能综合成为硬件。包集合仅支持实数和复数运算,不能综合成为硬件。 Synopsys公司的公司的std_logic_arith、std_logic_unsigned和和std_logic_signe

128、d三个包三个包 集合也包括在集合也包括在IEEE库中,作用与库中,作用与IEEE标准包集合标准包集合numeric_bit和和numeric_std 基本相同基本相同 IEEE库非隐含可见,使用前必须要用库说明语句和库非隐含可见,使用前必须要用库说明语句和use子句使其透明子句使其透明VITAL库:是符合库:是符合IEEE Standard 1076.4标准的标准的IEEE库。由含有精确的库。由含有精确的ASIC时序模型时序模型 的时序包集合的时序包集合vital_timing和基本元件包集合和基本元件包集合vital_primitives所组成,支持所组成,支持 以以ASIC单元的真实时序数

129、据对一个单元的真实时序数据对一个VHDL设计进行精细地模拟验证,可以设计进行精细地模拟验证,可以 大大地提高大大地提高VHDL门级时序模拟的精度门级时序模拟的精度2024/7/25电子教案 Page 80 of 97哈尔滨工程大学 付永庆第四部分第四部分 VHDL的模型结构的模型结构(33)包集合与设计库包集合与设计库资源库:厂商库,例如,资源库:厂商库,例如,Synopsys公司的公司的synopsys库和库和Altera公司的公司的lpm库。库。 库中存放库中存放 着的与逻辑门一一对应的实体,使用前必须要用库说明语句对其进行说明着的与逻辑门一一对应的实体,使用前必须要用库说明语句对其进行说

130、明用户库:指由用户提供的公用包集合和实体用户库:指由用户提供的公用包集合和实体/构造体对等设计数据汇集在一起所组成的构造体对等设计数据汇集在一起所组成的 库,主要用于提高设计效率和实现设计重用。用户库不是隐含可见的,使用库,主要用于提高设计效率和实现设计重用。用户库不是隐含可见的,使用 前需要用库说明语句对其进行说明前需要用库说明语句对其进行说明例:例: Altera公司的资源库:公司的资源库:altera 、altera_mf和和lpm资源库资源库2024/7/25电子教案 Page 81 of 97哈尔滨工程大学 付永庆第五部分第五部分 深入理解深入理解VHDL (1)决断信号:决断信号:

131、指用判决函数对连接至一个多源驱动信号的多个驱动器的输出值判决所获得指用判决函数对连接至一个多源驱动信号的多个驱动器的输出值判决所获得 的一个起支配性作用的输出值的信号的一个起支配性作用的输出值的信号多源驱动问题多源驱动问题 单源驱动器单源驱动器 x = a after 5 ns; 多源驱动器多源驱动器 y = a after 5 ns; y = b after 5 ns; 注注:信号同时受到多个驱动器输出值的驱动信号同时受到多个驱动器输出值的驱动 必须确定多源驱动信号最终由哪个驱动器的值所驱动必须确定多源驱动信号最终由哪个驱动器的值所驱动 决断信号:由多个驱动源和一个判决函数组成,决断信号:由

132、多个驱动源和一个判决函数组成, signal , : 范围范围 := ; 注注:与常规信号说明语句差别仅在于要求在类型字前加一个判决函数名作前缀与常规信号说明语句差别仅在于要求在类型字前加一个判决函数名作前缀 提供驱动器的初始化值,缺省取默认值,信号初始值由判决函数裁定提供驱动器的初始化值,缺省取默认值,信号初始值由判决函数裁定 可先定义决断子类型,再定义所需要的决断信号可先定义决断子类型,再定义所需要的决断信号 subtype , is 范围范围; 例:例: subtype resovled_wired_and is wired_and std_ulogic; signal result:

133、resovled_wired_and; 一旦待决断信号活跃,判决函数就会被隐含地调用,用户不能控制该函数调用一旦待决断信号活跃,判决函数就会被隐含地调用,用户不能控制该函数调用2024/7/25电子教案 Page 82 of 97哈尔滨工程大学 付永庆第五部分第五部分 深入理解深入理解VHDL (2)决断信号:决断信号:用判决函数对连接至一个多源驱动信号的多个驱动器的输出值判决所获得的用判决函数对连接至一个多源驱动信号的多个驱动器的输出值判决所获得的 一个起支配性作用的输出值的信号一个起支配性作用的输出值的信号判决函数:判决函数:用于定义决断类型、决断信号和确定多源驱动发生时哪一个驱动源的输出

134、可作用于定义决断类型、决断信号和确定多源驱动发生时哪一个驱动源的输出可作 为待决断信号的最终值为待决断信号的最终值 注注:输入必须是与决断信号类型相同的一维非限制性组,返回值必须与决断信号类型相输入必须是与决断信号类型相同的一维非限制性组,返回值必须与决断信号类型相 同,判决函数不能对多源驱动信号到达的顺序提出限制性要求同,判决函数不能对多源驱动信号到达的顺序提出限制性要求 判决函数被隐含调用时,一个由多源驱动信号输出值按顺序组成的一维组就会以判决函数被隐含调用时,一个由多源驱动信号输出值按顺序组成的一维组就会以 实参数的形式传递到判决函数的内部,判决函数总是基于这些数据做出仲裁以确实参数的形

135、式传递到判决函数的内部,判决函数总是基于这些数据做出仲裁以确 定定决断信号的最终输出值决断信号的最终输出值 判决函数必须是一个纯函数,以保证对每一组给定的多源驱动值总能返回一个可判决函数必须是一个纯函数,以保证对每一组给定的多源驱动值总能返回一个可 预测的决断信号的更新值预测的决断信号的更新值 包集合包集合std_logic_1164定义了一个判决函数定义了一个判决函数resolved,主要用于定义标准位值决断类主要用于定义标准位值决断类 型型std_logic和对多源驱动信号进行仲裁和对多源驱动信号进行仲裁 见例见例6-3、 6-4、 6-5决断端口:指具有决断子类型的端口,被多个进程驱动或

136、有多个元件例示与之连接时需要决断端口:指具有决断子类型的端口,被多个进程驱动或有多个元件例示与之连接时需要驱动值属性:一种能读取前缀信号值的属性,驱动值属性:一种能读取前缀信号值的属性,属性字为属性字为driving_value s sdriving_valuedriving_value2024/7/25电子教案 Page 83 of 97哈尔滨工程大学 付永庆第五部分第五部分 深入理解深入理解VHDL (3)生成语句:生成语句:是一个内部包含有多个待生成的并行结构或行为的并行语句。有两种生成结是一个内部包含有多个待生成的并行结构或行为的并行语句。有两种生成结 构,即:迭代结构和条件结构构,即

137、:迭代结构和条件结构 迭代生成语句:迭代生成语句: 可根据需要生成多条描述可根据需要生成多条描述规则结构或重复性行为的规则结构或重复性行为的并行语句并行语句 :for in generate begin end generate ; 注注:用于区分生成的结构,用于区分生成的结构,与与for loop语句中的含义相同,对每语句中的含义相同,对每 一个离散值,一个离散值,和和都要被执行一次都要被执行一次 由由给出的每一个值均被称为生成参数给出的每一个值均被称为生成参数,生成参数与具有离散范围父类生成参数与具有离散范围父类 型的常量相类似型的常量相类似 当生成语句不包括当生成语句不包括时,保留字时,

138、保留字begin可以省略可以省略2024/7/25电子教案 Page 84 of 97哈尔滨工程大学 付永庆第五部分第五部分 深入理解深入理解VHDL (4)生成语句生成语句 条件生成语句:条件生成语句:可生成描述可生成描述边界不规则而内部具有规则结构或重复行为的边界不规则而内部具有规则结构或重复行为的并行语句并行语句 :if generate begin end generate ; 注注:用于控制并行语句的复制与否,若条件为真,则生成语句的用于控制并行语句的复制与否,若条件为真,则生成语句的和和就被包含在设计中,反之,就被在设计中删除。就被包含在设计中,反之,就被在设计中删除。 用于区分条

139、件为真时生成的结构用于区分条件为真时生成的结构 生成语句的配置生成语句的配置:对对生成语句内的元件例示可使用默认配置和扩展配置说明。扩展配置生成语句内的元件例示可使用默认配置和扩展配置说明。扩展配置 格式见格式见P167P167页页 说明比常规配置说明在配置块中增加了说明比常规配置说明在配置块中增加了及附加生成参及附加生成参 数以便挑选迭代生成结构中特定的元件例示进行配置数以便挑选迭代生成结构中特定的元件例示进行配置 注注:对迭代生成语句时,对迭代生成语句时,后面的可选项仅用于从迭代生成结构中挑后面的可选项仅用于从迭代生成结构中挑 选特定的元件例示,或者选择一组元件例示选特定的元件例示,或者选

140、择一组元件例示 对条件生成语句,仅用不带可选项的对条件生成语句,仅用不带可选项的。 如生成语句创建元件例如生成语句创建元件例 示示,配置就捆绑实体至元件例示;若没有创建元件例示,配置就被忽略配置就捆绑实体至元件例示;若没有创建元件例示,配置就被忽略2024/7/25电子教案 Page 85 of 97哈尔滨工程大学 付永庆第五部分第五部分 深入理解深入理解VHDL (5)信号延迟的描述信号延迟的描述 延迟的概念延迟的概念:为保证模拟过程不因并行语句的执行顺序不同而影响模拟结果为保证模拟过程不因并行语句的执行顺序不同而影响模拟结果, VHDL 对所有对所有0延时信号赋值所引发的事项处理都插入了一

141、个无限小的时间延延时信号赋值所引发的事项处理都插入了一个无限小的时间延 迟量迟量,以消除模拟结果对进程或等效进程执行顺序的依赖,这被称为以消除模拟结果对进程或等效进程执行顺序的依赖,这被称为 延迟机制延迟机制。用用表示时间延迟量意味着任何有限多个表示时间延迟量意味着任何有限多个延迟的时间延迟的时间 累积值都将小于累积值都将小于VHDL系统中的一个最小时间单位,即:系统中的一个最小时间单位,即:1 fs 例:例:architecture delta_delay of RS_flipflop is begin q = s nand qb; qb = r nand q; end architectu

142、re delta_delay;2024/7/25电子教案 Page 86 of 97哈尔滨工程大学 付永庆第五部分第五部分 深入理解深入理解VHDL (6)信号延迟的描述信号延迟的描述 模拟周期模拟周期:VHDL的仿真由初始化及重复执行进程组成,每次对进程的重复执行组成一个的仿真由初始化及重复执行进程组成,每次对进程的重复执行组成一个 周期。在每一个周期中,所有的信号值均要被执行和计算。若计算结果有某个周期。在每一个周期中,所有的信号值均要被执行和计算。若计算结果有某个 事件发生,就将启动与之敏感的对应进程,并作为该模拟周期的一部分被执行事件发生,就将启动与之敏感的对应进程,并作为该模拟周期的

143、一部分被执行 模拟周期模拟周期的三个主要阶段:的三个主要阶段: 进程被激活进程被激活 更新信号值更新信号值 执行被激活的进程直至被挂起执行被激活的进程直至被挂起 注:在注:在VHDL模拟期间,每一个模拟时刻都可能被插入若干个模拟期间,每一个模拟时刻都可能被插入若干个延迟延迟 延缓进程延缓进程:在所有的一般在所有的一般( (非延缓非延缓) )进程都被执行并被悬挂之后才被激活的进程进程都被执行并被悬挂之后才被激活的进程 : postponed process (,) is begin end postponed process ;2024/7/25电子教案 Page 87 of 97哈尔滨工程大学

144、 付永庆第五部分第五部分 深入理解深入理解VHDL (7)硬件问题硬件问题 编程与配置编程与配置PLD器件器件 JTAG链电路链电路 ByteBlaster并行口下载电缆并行口下载电缆 脚号信号名功能1TCK钟信号2GND信号地3TDO数据输出4VCC+5V电源5TMSJTAG指令/数据6NC空引脚7NC空引脚8NC空引脚9TDI数据输入10GND信号地2024/7/25电子教案 Page 88 of 97哈尔滨工程大学 付永庆第五部分第五部分 深入理解深入理解VHDL (8)编程与配置编程与配置PLD器件器件 后置配置电路后置配置电路附表6-2:ByteBlaster 10芯插头(阴)引脚含

145、义表。2024/7/25电子教案 Page 89 of 97哈尔滨工程大学 付永庆第六部分第六部分 VHDL设计举例设计举例(1)滚动汉字滚动汉字LED显示器显示器 设计要求设计要求 在一个在一个88 LED发光二极管点阵上沿由右至左的方向滚动显示多个汉字信息发光二极管点阵上沿由右至左的方向滚动显示多个汉字信息 使用使用10K10LC84-4 FPGA芯片来实现硬件设计,并提供后置配置方案芯片来实现硬件设计,并提供后置配置方案 建立描述滚动显示多汉字信息原理的数学模型建立描述滚动显示多汉字信息原理的数学模型 电路设计电路设计 硬件电路硬件电路 JTAG接口接口 LED阵列阵列2024/7/25

146、电子教案 Page 90 of 97哈尔滨工程大学 付永庆第六部分第六部分 VHDL设计举例设计举例(2)滚动汉字滚动汉字LED显示器显示器 汉字信息编码汉字信息编码 信息信息数据:数据:data0data7为按列抽取依序排列的汉字像素信息,为按列抽取依序排列的汉字像素信息, 白点像素代表逻辑白点像素代表逻辑0,黑点像素代表逻辑,黑点像素代表逻辑1。数数 据队列为据队列为55H、FAH、53H、54H、FBH、50H、 7EH、05H 可读性处理:可读性处理:在数据队列首字节前补在数据队列首字节前补8个值为个值为00H的字节,在的字节,在 相邻两个汉字之间插入相邻两个汉字之间插入1个空字节个空

147、字节 ROM数据组织:多汉字抽取像素信息按序排队存放,便可得数据组织:多汉字抽取像素信息按序排队存放,便可得 到一个待显示数据序列到一个待显示数据序列 显示原理显示原理 单字显示:单字显示: 每列点显示每列点显示1mS,每字显示需每字显示需8mS,每秒显示每秒显示125幅幅(帧帧)2024/7/25电子教案 Page 91 of 97哈尔滨工程大学 付永庆第六部分第六部分 VHDL设计举例设计举例(3)滚动汉字滚动汉字LED显示器显示器 显示原理显示原理 多字滚动显示多字滚动显示 定位待显示数据的地址指针为:定位待显示数据的地址指针为: addr = n + m 注注: : n的取值范围应为的

148、取值范围应为0 0N N,由它控制汉字显示的滚动速度,取每秒移动由它控制汉字显示的滚动速度,取每秒移动1010次,即次,即: :每每 0.1 0.1秒前进一列,每秒可在秒前进一列,每秒可在8 88 8 LEDLED点阵上移过一个汉字。点阵上移过一个汉字。 m的取值范围应为的取值范围应为0 07 7,由它决定,由它决定LEDLED点阵的数位开关点阵的数位开关swsw的扫描速度,取每秒移动的扫描速度,取每秒移动 1000 1000次,即次,即: :每秒在每秒在8 88 LED8 LED点阵上重复显示信息点阵上重复显示信息125125次次( (帧帧) )。 为使信息循环显示,地址指针为使信息循环显示

149、,地址指针addr的模取为的模取为N N。 2024/7/25电子教案 Page 92 of 97哈尔滨工程大学 付永庆第六部分第六部分 VHDL设计举例设计举例(4)滚动汉字滚动汉字LED显示器显示器 FPGA内核硬件原理内核硬件原理 注注:显示数据显示数据ROM由由10K10LC84-4片内片内RAM实现实现 扫描译码器为低电平有效的扫描译码器为低电平有效的3-8译码器译码器 系统主时钟为系统主时钟为20MHz 软件编程:软件编程:地址线位宽地址线位宽addr_width9位,待显示数据长度位,待显示数据长度num_words296字节字节 位宽位宽data_width8位,滚动速度位,滚

150、动速度roll_speed100mS 通用计数器通用计数器lpm_counter、译码器译码器lpm_decode和只读存储器和只读存储器lpm_rom 为为Altera公司的参数化模型库中的元件公司的参数化模型库中的元件2024/7/25电子教案 Page 93 of 97哈尔滨工程大学 付永庆第六部分第六部分 VHDL设计举例设计举例(5)滚动汉字滚动汉字LED显示器显示器 VHDL程序程序: package display_constants is constant addr_width: positive := 9; -9位地址线位地址线 constant num_words: pos

151、itive := 296; -32个有效汉字个有效汉字 constant data_width: positive := 8; -8位数据线位数据线 constant roll_speed: positive := 100; -每秒滚动一个汉字每秒滚动一个汉字 end package display_constants; library IEEE; use IEEE.std_logic_1164.all; use IEEE.std_logic_unsigned.all; library LPM; use LPM.lpm_components.all; use WORK.display_cons

152、tants.all; entity display is port(clk : in std_logic; data, sw: out std_logic_vector(7 downto 0); end entity display; architecture mix of display is signal m, n, addr: std_logic_vector(addr_width-1 downto 0); signal switch: std_logic_vector(7 downto 0); signal ck_1kHz, ck_10Hz: std_logic; begin clk_

153、1KHz: component lpm_counter generic map(LPM_WIDTH =16, LPM_MODULUS = 20000, LPM_DIRECTION = UP) port map(clock = clk, cout = ck_1kHz); 2024/7/25电子教案 Page 94 of 97哈尔滨工程大学 付永庆第六部分第六部分 VHDL设计举例设计举例(6)VHDL程序程序: clk_10Hz: component lpm_counter generic map(LPM_WIDTH = 8, LPM_MODULUS = roll_speed, LPM_DIRE

154、CTION = UP) port map(clock = ck_1kHz, cout = ck_10Hz); data_point: component lpm_counter generic map(LPM_WIDTH = addr_width, LPM_MODULUS = num_words, LPM_DIRECTION = up) port map(clock = ck_10Hz, q = n); sw_point: component lpm_counter generic map(LPM_WIDTH=addr_width, LPM_MODULUS=8, LPM_DIRECTION =

155、up) port map(clock = ck_1kHz, q = m); addr 3, LPM_DECODES = 8) port map(data = m(2 downto 0), eq = switch); sw data_width, LPM_WIDTHAD = addr_width, LPM_NUMWORDS = num_words, LPM_ADDRESS_CONTROL= unregistered, LPM_FILE = c:data.mif, LPM_OUTDATA =unregistered) port map(address = addr, q = data ); end

156、 architecture mix;2024/7/25电子教案 Page 95 of 97哈尔滨工程大学 付永庆第六部分第六部分 VHDL设计举例设计举例(7)存储器映射文件:存储器映射文件: ROM的初始化文件,以的初始化文件,以mif 为扩展名。文件头为关键字为扩展名。文件头为关键字WIDTH、DEPTH、 ADDRESS_RADIX和和DATA_RADIX WIDTH = ; DEPTH = ; ADDRESS_RADIX = ; DATA_RADIX = ; CONTENT BEGIN :; END; 注注:WIDTH 和和DEPTH的信息用十进制给出的信息用十进制给出 有四种格式:有

157、四种格式:BIN、DEC、HEX、OCT 和和的值由基来确定的值由基来确定2024/7/25电子教案 Page 96 of 97哈尔滨工程大学 付永庆第六部分第六部分 VHDL设计举例设计举例(8)存储器映射文件存储器映射文件 本例中本例中data.mif文件为:文件为: WIDTH = 8; DEPTH = 296; ADDRESS_RADIX = DEC; DATA_RADIX = HEX; CONTENT BEGIN 00:00; 01:00; 02:00; 03:00; 04:00; 05:00; 06:00; 07:00; 08:55; 09:FA; 10:53; 11:54; 12

158、:FB; 13:50; 14:7E; 15:05; END; 模拟验证模拟验证 注:注:data和和sw给出的数据状态切换情况给出的数据状态切换情况 2024/7/25电子教案 Page 97 of 97哈尔滨工程大学 付永庆第六部分第六部分 VHDL设计举例设计举例(9)芯片的引脚分配图芯片的引脚分配图 2024/7/25电子教案 Page 98 of 97哈尔滨工程大学 付永庆第七部分第七部分 上机练习和课程设计上机练习和课程设计 20学时学时实验,实验,含含2-4学时的考核学时的考核 地点:地点:21号楼号楼EDA实验室实验室 时间:周一时间:周一 7-8节节(7-9周周),周二周二 5-6节,周四节,周四 7-8节节 软件软件:MAX+PLUS II 10.1版版 或或 Quartus II 4.5版版

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号