VHDL的基础概念

EDA/VHDL基本概念 EDA 中英文名词解释: ASIC 专用集成电路   EDA 电子设计自动化 CPLD 复杂可编程逻辑器件 PLD 可编程逻辑器件 FPGA 现场可编程逻辑门阵列 SOC 单片电子系统 SOPC 可编程单片系统 HDL 硬件描述语言 LPM 参数可设置模块库 IP 自主知识产权 GAL 通用阵列逻辑器件 ISP 系统可编程 SRAM 静态随机存储器  BST 边界扫描测 阅读详情
下载
第5章VHDL的基础概念
硬件描述语言( H D L )为数字逻辑网络的计算机辅助设计( C A D )提供了一个有效的方法。
H D L是一种可用于描述任意复杂度的逻辑网络所有重要特性的高级计算机语言。它的内容包
括单个函数、信号的属性和模块如何连接构成一个完整系统的细节等。一旦系统采用了合适
的格式和语法来描述,它就可以用H D L的程序进行编译。这样就会产生了一系列输出,这些
输出可用于模拟和验证逻辑网络的行为。
本章我们将学习如何应用称为V H D L的硬件描述语言来描述简单的数字电路。你将发现
V H D L是一个学习和使用起来都非常自然的语言。
5.1 引言
在层次设计中,每个系统都可看出由较小的模块组成。每个模块都提供了确定的函数,
而且每个模块的本身都由更小的模块组成。如果我们从最简单的函数入手,然后构造较为复
杂的模块,那么我们采用的是称为自底向上的系统设计方法。相反地,我们可以也从最高的
(系统)层次级别着手,然后将系统分解成越来越小的逻辑模块;这就是称为自顶向下的设计方
法。
硬件设计语言为我们提供了在希望的层次级别中描述数字系统的方法,它有助于我们掌
握不同层次级别的复杂性。一旦我们产生了逻辑网络的H D L文件清单,它们就可以用于验证
设计的运算和性能,识别和改正故障点,并且我们可以相当地确信,如果根据H D L来构成硬
件,系统将可以良好地工作。
本书将选择称为V H D L的这种特别硬件描述语音作为表达主要概念的工具。“V”代表
V H S I C,它是美国国防部( D o D )用于称之为Very High-speed Integrated Circuits1这一工作领域
的另一个首字母缩写。虽然存在其他非常好的H D L,但V H D L已建立起一整套、有良好文档
的标准。V H D L编译器作为单独的程序是现成的,可在多个商业C A D工具集中找到。最重要
的是,V H D L代表了其他硬件描述语言的特征。
5.1.1 基本概念
考虑图5 - 1所示的通用逻辑功能模块。此单元的特征是,
它的输入口接受变量A , B , C并在输出口得到函数f (A , B , C)。
我们可以在不考虑模块内部的复杂度的情况下使用该模型。
不管模块对应的逻辑函数是简单的一对逻辑门,还是具有
许多输入、输出,并且逻辑运算十分复杂的逻辑函数,这
些都没有关系。
现在假设你想在电话中向另一个你正在交谈的人描述图5-1 通常的逻辑模块
逻辑模块
输入输出
V H D L的发音方法是只读出它的字母,另外, V H S I C读作v i s - h i c .
该模块的运算。逻辑图的方法要求你转送一幅图形图像,或试图用文字描述一个图形。虽然
用口头描述逻辑电路对于小的单元而言已经足够,但用它来描述复杂网络是不实际的。另外,
出现错误的概率也会很高。
即便有了现成的逻辑图,还存在另一个问题:我们如何验证我们的设计以确保它按预期
的方式工作?优秀的设计者总是在设计的每个层次级别进行测试以避免设计周期的后期发现
错误而导致代价昂贵的更改。虽然我们可以通过追踪逻辑图中每一种可能的时序来进行逻辑
验证,但这种方法十分单调乏味并且可能引入大量错误。
硬件描述语言为这两个问题的解决提供了答案。它允许我们用精确定义的语句描述数字
网络的运算。该语句类似于通用的高级计算机语言,如C + +。反过来,我们可直接从H D L描
述构造出逻辑图。但是, H D L语言具有更为重要的应用,即具有用计算机来模拟逻辑网络的
能力。设计测试和重新设计都可以在H D L级进行,并且设计的修改或更正可转换回初始设计。
正如它的名字所隐含的含义一样, H D L允许我们将硬件特征包含在模拟中。物理的问题,比
如经过逻辑门的延迟等,可以包含在H D L中以确保电路将按设计者预定的方式工作。还有,
H D L允许我们对复杂逻辑网络的细节进行模拟,找出故障点并对设计进行改进。
V H D L另一个有用的方面是它可用于描述任何数字网络。而且,它是标准化的,可以使用
在各种平台上,包括标准P C和工作站环境。
5.1.2 硬件描述语言的使用
为了使用硬件描述语言,我们用语言本身定义的特定语法和结构来产生一个网络描述。
我们将这些描述输入到一个文本文件并加以保存。一旦完成网络的描述,网络描述文件就可
以作为H D L编译器的输入。此过程如图5 - 2所示。编译器接受网络描述文件并产生一个包含所
有网络信息的输出文件。然后在编译器环境中该输出文件与另一个允许用户确定输入和查看
相应结果的程序一起被使用。它通常是描述随时间改变的信号的图形接口。
本章的重点是学习如何写出可在编译器上运行的V H D L输入文件。重点将放在语言语句的
细节和解释。如果你使用过V H D L编译器,你应参考操作手册学习在实际模拟环境中如何使
用其特征。有许多现成的优秀软件包可用于桌面P C机,它使得精通这种语言变得十分容易。
5.2 VHDL中模块的定义
类似于图5 - 1所示的逻辑单元称为模块或单元。为了用V H D L描述一个给定的模块,我们
必须做两件事情。首先,我们通过给模块命名及确定输入和输出信号线(称为端口,p o r t )对该
模块进行定义。这就是称为实体( e n t i t y )的描述。一旦引进了实体,我们就必须确定模块的实
际操作,输入和输出的关系,等等。这称为模块的结构( a r c h i t e c t u r e )描述。模块的结构可用不
同的方式来描述,描述的方式可以通过所希望的建模层次级别来确定。
图5-2 VHDL编译器的使用
106 数字系统设计基础教程
V H D L
清单
E n t i t y. . .
A r c h i t e c t u r e . . .
VHDL
编译器程序信号模拟
输出文件
操作手册通常是软件包所带的信息小册子,但常常被忽略。
下载
与其他任何计算机语言一样, V H D L要求我们遵守已定义关键字( k e y w o r d )和语法( s y n t a x )
的一整套规则。“关键字” (也称为保留字)是在语言中具有特别含义的单词,它不可用于其他
目的。在我们的讨论中关键字将用“黑体”字型来标识以帮助我们识别和学习;例如e n t i t y表
示“e n t i t y”是V H D L的关键字。当然,在输入V H D L清单时不需要改变字体;重要的仅仅是
单词的本身,而不是它们在屏幕上的显示。V H D L保留字按字母顺序排列的清单如图5 - 3所示。
这是暂时作为对保留字的引用,而不是用于命名参数的字的参考来使用。这些关键字的含义
将在本章及后面的章节中讨论。
图5-3 VHDL的保留字
“语法”指的是用于书写语句的关键字的用法和顺序,以及语句中定义特殊点的标点符
号要求,比如命令的结束。图5 - 4给出了特殊V H D L标识符和语法的清单。图中的部分符号
将在本章中加以介绍和讨论,但是此清单主要作将来参考之用。这两者都将在我们的讨论中
加以分析。但是不能否认语言本身是很重要的。在V H D L中关键字和语法讲究格式的细节,
并且也是V H D L完整和必要的组成部分。然而V H D L为数字逻辑网络的模拟和验证提供了超
越书写的代码细节本身的功能强大的方法,与任何计算机语言一样,对V H D L的精通来源于
第5章V H D L的基础概念107
下载
这是一个定义语句结束的定界符的例子
多使用。因此我们迫切希望读者多加练习,并且鼓励读者在尽可能多的网络设计中使用这里
讲述的方法。
符号含义
+ 加,或正数
- 减,或负数
/ 除
= 等于
< 小于
> 大于
& 连接符
| 垂直条
; 结束符
# 文字说明
( 左括号
) 右括号
. 点标识
: 数据对象与类型隔离
″ 双引号
′ 单引号或刻度多
* * 取幂
= > 箭头的含义为“t h e n”
= > 箭头的含义为“g e t s”
: = 变量赋值
/ = 不等于
> = 大于或等于
< = 小于或等于
< = 信号赋值
< > 方框
- - 注释
图5-4 VHDL中定义的符号
现在我们来重新讨论模块的V H D L描述。第一个步骤是写出实体的描述。它使得该模块与
其他模块区别开来,并定义了模块的输入和输出端口。考虑图5 - 5所画出的模块。图中该模块
的输入位为a、b和c;我们将此模块命名为S i m p l e _ g a t e;其输出用f 来标识,它也是一个二进
制数。此模块最简单的描述为
108 数字系统设计基础教程
下载
我们对此描述进行研究以理解其含义。第一行将这一块
语句标识为模块S i m p l e _ g a t e的实体描述。p o r t清单列出了模
块的输入和输出。它将参数a、b和c用关键字i n标识为二进
制输入;实体描述中加入附加的类型标识符b i t来对参数的性
质进行分类。标识符b i t将参数预定义为只有“ 0”和“1”这
两个值;引号用于将b i t值与字面上的值“ 0”和“1”区别开来。结果f用out b i t确定为二进制
输出。注意在p o r t清单中冒号“:”的使用形式
i d e n t i f i e r :i n
使得标识符( i d e n t i f i e r )与端口类型( i n或o u t)联系起来。最后一行通过指派e n d n a m e来结束
实体的描述。
一旦我们定义了实体,我们必须用结构(a rc h i t e c t u re)说明来精确描述模块的功能。在
S i m p l e _ g a t e例子中,其结构说明含义就是是我们需要定义f (a , b , c)是什么。V H D L提供了多种
不同方法来完成这项任务;每种方法都以写出信息的方式为特征。结构说明的主要分类为
• 行为描述通过行为描述提供输入和输出之间明确的关系。
• 结构列表它通过原语元件,比如逻辑门,来构造逻辑函数。
• 数据图模型它通过定义数据信号的“流程”来描述模块。它可看成行为模块中的一种。
通常,V H D L结构说明采用的形式为
在此清单中t y p e _ o f _ d e s c r i p t i o n是用户为模块结构定义的名称。其典型选择值是三种方法
(行为,结构或数据图)中的一种,或是其他易于记忆和理解的标识符。用D e c l a r a t i o n _ 1等标识
的各行用于定义所需的任何参数或描述中需要用到的“模块结构”。真正的描述是从关键字
b e g i n开始,其细节由标识为s t a t e m e n t _ 1等语句来提供。这些语句给出了逻辑函数或运算的细
节。E n d行表明描述结束。一旦我们用e n t i t y和a rc h i t e c t u re语句完成了模块的定义,该模块就
可与使用其他结构的模块相连接。
考虑图5 - 6所示的网络G a t e _ 1,我们将其作为书写V H D L描述的第一个例子。模仿前面的
e n t i t y清单,此实体语句可构成为
第5章V H D L的基础概念109
下载
图5-5 通用的VHDL模块
f (a,b,c)
与前面的例子相比,除了修改了名称和参数外,唯一不同之处为注释行
注释行用两条虚线“ - -”来标识,这样它
右边的所有项都将被V H D L编译器忽略。我们
将经常在文件清单中使用黑体字来强调注释
行以引起注意,因为它们对于理解文件清单
的结构很有用。一个尽职的V H D L作者将在
V H D L清单中加入许多注释来解释代码的细
节;这对于接下来且不可回避的调试工作特
别有用。记住,现在显而易见的事物在两个
星期后可能成为完全神秘的!
接下来,我们引人两个直接书写a r c h i t e c t u r e说明的方法。快速查看函数表说明G a t e _ 1仅
仅是一个O R函数
f = a + b ( 5 - 1 )
V H D L提供了几个可用于我们描述中的预定义的逻辑操作;这些预定义的逻辑操作列于图5 - 7
中,图中还有用法的例子和它们的标准解释。为了将此函数在a r c h i t e c t u r e说明中以描述,我
们构造出
其中该描述被命名为L o g i c,而实际运算使用语句
f <= a or b
来定义。标识的语法
Left <= Right
读作“ Left 以R i g h t的值赋值”。将它与结构说明结合在一起可为该模块提供一个完整的描
述。
图5-7 VHDL中并发运算
为了更多地实践,我们来构造图5 - 8所示两个模块对应的相类似的V H D L描述。在图5 - 8 a
中,模块的输出为N A N D运算
( 5 - 2 )
110 数字系统设计基础教程
下载
图5-6 逻辑门描述的例子
关键字例子含义
它是一个V H D L定义的运算。这样, G a t e _ 2可用V H D L清单描述为
类似地,我们可从真值表中看出图5 - 8 b中的G a t e _ 3等效于X N O R函数,即
( 5 - 3 )
这样,我们可将它描述为
图5-8 VHDL模块的另一个例子
这些简单的例子讲解了e n t i t y和a rc h i t e c t u re说明的基本思想,并为更为复杂的系统描述
打下了基础。
现在你应该会同意这一观点,上述的V H D L描述简单明了并易于阅读和理解。学习书写
第5章V H D L的基础概念111
下载
a) Gate_2模块b) Gate_3模块
V H D L代码只是一个学习关键字和语法,以及熟悉如何将语句组合在一起来描述网络的简单
问题。所需注意的是, V H D L最重要的方面就是用语法以独特的方式来定义模块。牢记这些
常识,我们现在可以通过讨论更为高级的概念来提高V H D L语句的功能。
5.2.1 并发运算
关键字运算符n o t , a n d , o r, x o r, n a n d , n o r和x n o r用于描述被称为并发运算的操作。并发运算的
含义是:运算可在不考虑任何其他时间限制的情况下进行。例如,若我们在一个a rc h i t e c t u re
说明中采用A N D 3语句
f <= x and y and z;
那么无论何时,只要输入x , y, z的状态改变,f 的值也会随之变化。
并发运算对于用V H D L描述模块是很有吸引力的,因为它们和标准布尔运算具有一一对应
的关系。但是,当它们在用V H D L构造更为复杂的逻辑函数时,应该注意它们的优先规则会
稍有不同。n o t运算的优先级最高;它首先被计算。剩下的函数与n o t相比具有较低的优先级,
但它们的优先级相同。特别地, o r和a n d具有相同的优先级。当在V H D L中遇到优先级相同的
运算符时,它们按从左到右的顺序进行运算。括号可用于增加运算组的优先级别。
为了理解上述结果,假设我们有如下的布尔运算
( 5 - 4 )
布尔表达式的书写规则表示, A N D运算具有比O R运算更高的优先级。这样,表达式暗示
的运算顺序将是先计算(b.c),然后再进行a+b . c运算。但是,在V H D L中等效的语句将要写成
其中,我们加入了括号以确保A N D函数首先进行运算。如果我们改用下面的运算表达式
那么,此函数将错误地计算为
( 5 - 5 )
一旦我们理解了优先级,在V H D L描述中用构造和使用并发语句都将变得十分简单。
例5 - 1
我们来写出下面布尔表达式的V H D L语句
( 5 . 6 )
因为A N D函数隐含的优先级高于O R函数,我们将所要求的赋值写作
注意
-C
对应的n o t c项不需要括号,因为n o t总是在a n d运算之前进行计算的。
例5 - 2
从上面的讨论中,我们可通过简单的翻译将V H D L语句
翻译成逻辑表达式
112 数字系统设计基础教程
下载
( 5 - 7 )
我们采用并发语句写出图5 - 8 b中G a t e _ 3的另一个可选的描述。读取真值表可以直接给出其S O P
形式
( 5 - 8 )
所以如果需要,我们可构造出如下等效的可选文件清单
此文件清单等价于前面的形式,并且使得我们不需要与X N O R运算相关联。
例5 - 3
考虑图5 - 9所示的逻辑级联。逻辑上,通过跟踪输入经过的逻辑门,我们可将输出构造为
( 5 - 9 )
我们可用并发语句构造出其V H D L清单
此程序可容易地扩展到任意逻辑门配置的情形。
图5-9 逻辑级联的例子
例5 - 4
我们再来讨论一个用此方法写出V H D L描述的简明扼要的例子。考虑图5 - 1 0所示的逻辑图。
它可用并发函数描述成如下代码
第5章V H D L的基础概念113
下载
需要牢记的重要思想是,逻辑流的结构是以直接的方式给出并发语句的。
图5-10 逻辑级联
5.2.2 标识符
在前面的例子中,我们已经介绍了几个标识符,比如G a t e _ 1和L o g i c。选择容易记忆或在
逻辑网络中具有直接含义的标识符是很有用的。
产生标识符时,我们必须遵守V H D L规定的一些规则。所有可用于V H D L标准版本的基本
规则可用下面的语句来总结。
• 标识符可由大写和小写字母( a到z和A到Z ),数字0到9,和下划线符号“_”组成。
• 每个标识符是一个字符串,并且可具有任意长度。
• 标识符的大小写不敏感。其含义是,大写和小写字母将解释成相同的。例如,标识符
O r _ g a t e _ 3和O R _ G AT E _ 3是相同的,它与O R _ G a t e _ 3等也是相同的。我们必须多加小心,
确保不会用相同的标识符表示不同的参数。
• 下划线“_”不可用于标识符的第一个和最后一个字符。同样,字母和数字必须用于下
划线的两边,等等。在一行中不允许使用两个或更多的下划线。
允许使用字符(比如短划线“ -”和重音符)的扩展集可在最新的版本中使用。上述规则对
于我们的应用来说已经足够了。
例5 - 5
下面是合法标识符的例子:
不合法标识符的一个例子为
114 数字系统设计基础教程
下载
因为它是以下划线开始的。相似地,
不可以被使用,因为它是以下划线结束的。
5.2.3 传播延迟
到现在为止,我们例子讨论的仅仅是对逻辑门的描述。我们可用多种方式来建立这些构
造和硬件(记住V H D L中的H )之间的联系。最容易理解的一种方式是包含了传播延迟tp的概念。
我们已经介绍过传播延迟tp。
考虑图5 - 11所示的N O T逻辑门。传播延迟tp是由构成此逻辑函数物理实现的器件和电路引
起的。通过在并发语句中使用关键字a f t e r后面跟着延迟值的方法,传播延迟可包含在V H D L
结构语句中。我们假设tp的值为2 n s,那么该模块可描述为
语句行
Result <=not x after 2ns;
的作用是首先计算补码c,然后,在经过2纳秒( 2 n s )后将补码的值赋值给R e s u l t。
图5-11 带有传播延迟的反相器
这一类延时语句可用于描述多输入的模块,比如,图5 - 1 2所示的A N D 3逻辑门。假设tp的
值为5 n s。我们可将传播延迟包含在下面所示的清单中
第5章V H D L的基础概念115
下载
图5-12 AND3的传播延迟
与N O T门一样,输出O u t _ a n d值的改变都是输入改变被延迟了5 n s的结果。需要牢记的是
传播延迟的实际值是由工艺(比如I C的种类,如C M O S或T T L )及前面讨论过的其他因素决定
的。
例5 - 6
我们来做做练习,解释几个V H D L语句。考虑下面的描述
1 n s;
这是一个简单的带有1 n s延迟的X O R门。类似地,
2 . 7 5 n s;
是一个带有2 . 7 5 n s输出延迟的“复合”逻辑门,它实现的函数为
这是出现在一些电路中一种特殊的逻辑门;它只有一个“门”,但它能够完成多于一个原
语的运算。这些逻辑门和其他逻辑门将在第6章中出现。
上面介绍的延迟在V H D L中称为惯性延迟模型。该名称来源于电子逻辑门需要一小段时间
来对电路中的能量移动进行反应。惯性延迟在V H D L中非常普遍,它是逻辑门延迟时间的缺
省模型。
V H D L是一门内容非常丰富、功能强大的语言。它具有来自于许多基本情形的多个变种,
允许数字设计者构造更为精确的计算机模拟。在数字电子学中,存在着影响网络整体性能的
其他类型的信号延迟。V H D L可以识别这些情形并提供其他类型的延迟模型。
传输延迟与沿着互连导线的延迟有关。延迟的具体值随着导线的长度以非线性的方式增
大。硬件设计者都努力减少导线的传输延迟,使得传输延迟与逻辑门的传播时间相比可以
忽略不计。但是随着一代一代电子系统的体积的逐渐缩小,在现代电子系统中传输延迟变得
越来越重要。传输延迟的V H D L语句采用的形式为
output <= t r a n s p o rt(X)a f t e r 1 0 p s ;
此式描述的是信号X经过1 0皮秒的延迟后移到输出端,其中, 1 p s = 1 0- 1 2s。
5.3 结构建模
复合逻辑网络是通过将逻辑门与其他基本单元组合起来构成的。逻辑模块的V H D L结构描
述是以相同的概念为基础的。较大的逻辑是通过将较简单的模块连接在一起产生的。这种方
法很有吸引力,因为它符合我们学习数字逻辑的基本原理。
116 数字系统设计基础教程
下载
互连延迟在第7章奖用物理观点加以讨论。
我们来讨论结构模型如何应用于图5 - 1 3所示的A O I电路。该原理图通过其本质展示了其结
构:A O I是通过将两个A N D门( G 1和G 2 )级联到O R门( G 3 )构成的。由于我们习惯于追踪经过这
种原理图的逻辑信号流,通过观察,我们将输出写出为
( 5 . 1 0 )
当然,它是通过注意到A N D门产生下面的输出得到的
( 5 . 11 )
将上式作为O R门的输入,得到
( 5 . 1 2 )
X1 ,X2 ,和f 这三个等式提供了逻辑网络的基本结构,因为它们提供了按其最初呈现的形式
来准确地重构逻辑图所需的信息。结构模型采用相同的概念来书写。
V H D L结构模型通过首先引进称为器件(c o m p o n e n t)的构造模块来产生。它是一个已经在
通常的e n t i t y和a rc h i t e c t u re清单中定义过的逻辑模块,它可用于产生其他的逻辑网络。我们
总是将c o m p o n e n t看成一个简单的构造模块而不考虑它内部
的复杂度。为了产生一个结构模型,我们首先选择好器件,
然后描述器件如何连接在一起。连线关系可通过映射模块端
口的正规清单来确定。
我们应用这些概念来写出图5 - 1 3所示A O I _ N e t w o r k模块的
结构描述。这要求在我们的V H D L 词汇中引人关键字
component, signal和p o rt map等。由于这些概念相对简单明
了,我们首先给出说明的清单,然后再来研究新项目的细节。
黑体字注释行用于隔离主体部分。
第5章V H D L的基础概念117
下载
AOI_Network
图5-13 结构建模的例子
现在,我们来讲解上面语句清单中引进的新概念。新概念中的第一个是c o m p o n e n t说明,
例如
在此网络中为了将模块作为一个器件来使用,模块必须在前面事先使用e n t i t y和
a rc h i t e c t u re语句进行定义。其含义是我们需在网络完整的V H D L清单中包含类似于下面的说明
c o m p o n e n t的概念可以通过设计库(design library)的概念来理解。设计库是一个不同模块
的集合,其中每个模块都通过e n t i t y和a rc h i t e c t u re语句进行定义。单元一旦在库中进行定义,
我们就可以在设计中通过c o m p o n e n t命令使用该单元的“副本”。此过程称为“示例” 该单
元,而器件本身称为原始的实例。
图5 - 1 4画出了库和示例的概念。注意实例从库中“取出”单元是不相同的。相反,实例
可看成是当前存储在库中的单元的字面上的副本。其含义为如果我们改变库中的单元,那么
118 数字系统设计基础教程
下载
以及
所有的示例将相应地改变。单元可按我们所希望的在网络中引用许多次。在构造复合的网络
时,示例的引用节约了时间并减少了工作量。这很容易理解,因为库的项目仅需要定义一次。
图5-14 从单元库中引用示例
接下来我们讨论关键字s i g n a l在的下面语句行中的用法。
s i g n a l X1 ,X2 : b i t ;
此式用于定义内部的标识符X1和X2,在原始逻辑图中X1和X2用于定义A N D 2门G 1和G 2的
输出。S i g n a l定义不同于p o rt语句中使用的标识符之处在于它们存在于模块中。内部的标识符
被用于将逻辑门连接在一起形成p o rt连接。
器件一旦被说明,网络就可通过使用p o rt map语句来描述。这样通过确定器件信号接口
情况就可以提供“布线图”的信息。我们来讨论下面各项的细节
--The port maps specify the internal wiring
b e g i n
G1:AND2 p o rt map (a, b, X1) ;
G2:AND2 p o rt map (c, d, X2) ;
G3:OR2 p o rt map (X1, X2, f ) ;
第一个映射
G1:AND2 port map (a, b, X1) ;
告诉我们逻辑门G 1是一个A N D 2器件,它被连接到端口标识符a,b及内部信号X1上。在
A N D 2器件的语句中,信号的顺序给出为(u,v,q),它对应于输入1输入2和输出的用法。端口映
射(a,b,X1 )保持这个隐含的顺序。类似地,
G2:AND2 p o rt map (c,d,X2) ;
是另一个A N D 2实例,它将A O I模块的输入c和d映射到A N D 2门的输入并产生一个输出X2,最
后
G3:OR2 p o rt map (X1, X2, f ) ;
表示G 3使用内部信号X1和X2作为O R 2实例的输入并提供模块A O I _ N e t w o r k的输出。这样
就结束了结构清单讨论。
通过写出图5 - 1 5所示的N e t w o r k _ e x的V H D L清单,我们来讨论结构建模的另一个例子。该
模块有5个输入a , b , c , d和e及两个输出f1和g2。它的结构描述可写成
第5章V H D L的基础概念119
下载
库中的主单元
实例
网络= 已连接的实例
图5-15 端口映射的例子
120 数字系统设计基础教程
下载
注意常规的器件Gen_1 和G e n _ 2必须用e n t i t y结构在其他地方进行定义,使得它们的输
入-输出关系是已知的。
这些例子说明了如何用一个个器件来构造出网络,使结构描述与标准的数字逻辑直接联
系起来。对于给定的网络,写出它的V H D L描述是一个十分简单的事情。类似地,逻辑图也
可以从V H D L描述中直接提取出来。这就为V H D L和前面讨论中所学的概念之间提供了至关重
要的联系。注意通过修改器件的定义来引进传播(惯性的)延迟是一个非常简单的事情。
5.4 条件建模
只要熟悉高级编程语言,比如P a s c a l语言或C语言,任何人都应已经了解条件转移结构的
用处。V H D L允许使用多种条件语句来构造仅仅基于模块本身行为的结构说明。
考虑图5 - 1 6所示的是称为E q u a l s的模块。根据功能表的定义,当输入a和b相等时输出s a m e
等于1,但是如果它们不相等,那么s a m e = 0。V H D L中的条件语句允许我们在某些条件满足时
将某个值赋值给一个信号。对于这种情形,我们可将E q u a l s的说明写成
图5-16 相等检测器模块
在书写结构描述的时候,我们采用了下面的通用结构来引进一个判断行
上式中,如果C o n d i t i o n为真,那么i d e n t i f i e r的值为1;如果条件不满足, i d e n t i f i e r = 0。在
当前的例子中
如果输入相等,那么赋值s a m e = 1,否则s a m e等于0。这与功能表中所确定的结果完全一样。
这类结构使得我们可以在不知道模块内部细节的情况下写出V H D L描述。例如,假设我们
有一个如图5 - 1 7所示的单独定义的功能表。虽然我们可以用标准的开关代数来确定函数
第5章V H D L的基础概念121
下载
g(x , y, z),但是我们也可以用w h e n - e l s e结构来产生如下所示的V H D L描述:
图5-17 使用功能表的模块定义
这种方法是“强制的”,因为我们刚才列出了所有给出输出g= 1情况下的输入条件。由于
它没有闭式布尔方程的简洁性,故易于构造和使用。它通常是验证网络操作最简捷的方式。
例5 - 7
考虑下面所示的函数。这个单元称为A d d,因为(我们将在第八章看到)它进行的是加法
运算。现在我们根据功能表的描述将它看成3-输入(a , b和c i),2-输出(s和c o)的模块。
其数据图描述可构造如下。
122 数字系统设计基础教程
下载
输入输出
end Dataflow;
我们将在第7章中学到,有更多可用来描述函数的精确方法。但是其中数据图方法十分有
用,因为用此方法我们不需要了解函数本身更多的细节。即使我们手头上没有逻辑表达式,
它也可以被采用。
细心的读者可能已经注意到上述语句中c o n d i t i o n的用法与前面定义的b i t标识符类型是不
同的。b i t是一个二进制数,它只有‘ 0’和‘1’这两个值。然而c o n d i t i o n严格分类为B o o l e a n
类型的的数,它只有“ Tr u e”和“ F a l s e”这两个值。V H D L通过t y p e说明来定义标识符可能
具有的值。
我们已经使用了b i t作为预定义的数据类型。如果我们希望正式地定义b i t,那么我们使用
如下形式的列表
t y pe bit i s (‘0’,‘1’);
它将b i t定义为只有‘ 0’和‘ 1’这两个值的数。上述的逻辑语句归类为具有不同特征值
的B o o l e a n类型的数。布尔参数定义为
t y p e boolean i s ( FA L S E , T R U E )
在更为复杂的情形下其他的t y p e参数也十分有用。
布尔条件采用关系运算符进行计算,比如运算符“ =”。V H D L定义的关系运算符由图5 - 1 8
给出;这些运算符具有常见的含义,使得它们易于记忆。当关系运算与逻辑运算同时(比如
n o t和o r)用于表达式时, n o t总具有最高优先级,其后紧跟着关系运算。其余的逻辑运算符
a n d , o r, n a n d , n o r, x o r和x n o r的优先级别最低。当然,我们可以使用括号来确保V H D L语句准确
地反映正确的逻辑。
图5-18 VHDL关系运算符
第5章V H D L的基础概念123
下载
运算符含义
不等于
大于
小于
大于或等于
少于或等于
等于
end Dataflow;
5.5 二进制字
基本逻辑运算是用单独的二进制位来进行的。但是,由于单个二进制位只能表示两个值
( 0或1 ),而n - b i t二进制字具有2n种不同的值,所以它在实际的应用中更为有用。后面我们将看
到,二进制字通常作为单个对象来看待,而不把它看成一组单个的二进制位。V H D L允许我
们用二进制位的阵列来处理二进制字,极大地简化了V H D L代码。
考虑作为图5 - 1 9所示模块输入的4 b i t二进制字
I n_a=a3 a2 a1 a0
该模块的输出为单个二进制位x,为描述这种结构,我们引进b i t _ v e c t o r概念,其中I n _a用
它们的下标数来确定,与p o rt清单所示的一样。
上式将I n _a定义为具有4个分量,这些分量用索引d o w n t o命令以下降的顺序标记为
I n _a( 3 ) =a3
I n _a( 2 ) =a2
I n _a( 1 ) =a1
I n _a( 0 ) =a0
一旦用此命令定义了顺序,单个二进制位的顺序就不能被改变。
图5-19 bit_vector输入的例子
现在我们用b i t _ v e c t o r的概念来描述图5 - 2 0所示的模块。其输入为4 b i t二进制字I n _a和I n _b,
而输出为4 b i t二进制字。
O u t = I n _a O R I n _b
其中O R运算隐含着索引功能。其含义是O u t为4 bit 二进制字,各个二进制位的值为
O u t ( 3 ) = I n _a(3) O R I n _b( 3 )
O u t ( 2 ) = I n _a(2) O R I n _b( 2 )
O u t ( 1 ) = I n _a(1) O R I n _b( 1 )
O u t ( 0 ) = I n _a(0) O R I n _b( 0 )
图5-20 向量模块
V H D L模块Wo r d _ O R可用下面的V H D L清单来描述。
124 数字系统设计基础教程
下载
图5 - 2 1清楚地表示了具有所有位的等效的网络。
图5-21 Word_OR模块的细节
b i t _ v e c t o r的单个元素可在单独的运算中使用。图5 - 2 2所示的逻辑网络B i t _ o p s两个函数f1
和f2是由两个输入中不同的位产生的。此模块的V H D L清单可写为
用b i t _ v e c t o r描述构造阵列的方法为V H D L提供了一个十分有力的工具。
图5-22 另一个bit_vector模块的例子
第5章V H D L的基础概念125
下载
bit_vector (3 downto 0);
in bit_vector (3 downto 0);
bit
f1
f2
5.6 库
库的概念十分有效。所有V H D L模拟程序包都包含有不同的库以减少设计者的负担。库是
预定义的参数和过程的集合。V H D L编译器使用这些参数和过程来解释其代码。库在V H D L清
单中所采用语句形式为
L i b r a ry L i b r a r y _ n a m e ;
例如,一个特别有用的标准库称为I E E E;它的含义是电气和电子工程师协会(Institute of
Electrical & Electronics Engineers(I E E E) ),它是电气和电子工程师的专业协会。I E E E库通过
下面的形式来引用。
L i b r a ry i e e e ;
一旦库被引用,库中的任何定义均可用于书写数字系统的V H D L描述。
库中实际包含了什么呢?从类型的基本定义和基本的物理单元到预设计的大逻辑模块,
所有的一切都可直接示例到你的设计中。举个例子, i e e e库中包含了这样的项
• 类型标识符,比如b i t和b o o l e a n
• 时间单位n s,p s的定义,以及其他有用的比例值。
这些信息都包含在称为程序包的小组中;上述的这些项可在i e e e库中的s t a n d a r d程序包中
看到。一个特别有用的程序包称为IEEE 11 6 4,它是以V H D L语言定义为基础的。它定义了便
于书写V H D L代码的类型和函数,并且通常包含在i e e e库中。其中定义的项有
• 信号类型,比如‘0’和‘1’
• 对a n d , o r, n o r和所有其他基本逻辑的基本函数运算。
• b i t , v e c t o r s和b i t _ v e c t o r s
它集成化地提供了功能强大的定义的集合。
为了引用i e e e库和IEEE 11 6 4程序包,我们将V H D L描述初始化为
l i b r a ry i e e e ;
u s e i e e e . s t d _ l o g i c _ 11 6 4 . a l l ;
使用IEEE 11 6 4程序包时会发生一个变化,就是我们对信号类型用不同的符号来表示。特
别地,
• b i t用s t d _ u l o g i c来代替
它允许我们从b i t改变到更为有用的s t d _ u l o g i c,b i t只有两个值(‘0’和‘ 1’) ,而s t d _
u l o g i c有九个可能的值
‘0’=强制0
‘1’=强制1
‘X’=强制未知
‘Z’=高阻(开路)
‘W’=弱未知
‘L’=弱0
‘H’=弱1
‘U’=未初始化未知
‘-’=无关
126 数字系统设计基础教程
下载
读者将会找到基本逻辑设计中出现的无关条件。出于对硬件方面的考虑,剩下的6个值都
是变量。举个例子,假设电子学中将理想的逻辑1定义为值为5 V的电压。“弱1”将为一个高
电压,但不是理想值;例如,从电子学的角度来讲,值为3 . 8 V的电压值可合格地表示“弱1”。
与此相类似,我们注意到对于IEEE 11 6 4程序包,
• b i t _ v e c t o r可以用s t d _ u l o g i c _ v e c t o r来代替
上式中向量的每个分量具有相同的变量范围。
一旦引用了库,V H D L描述就可使用其中定义的任何参数。到目前为止我们讨论的规则和
例子仍然有效。但是使用程序包可使建模更为通用。
考虑下面的例子。
此V H D L 清单的主体与前面的例子具有相同的形式,只是现在使用了库信号类型
s t d _ u l o g i c。
如果你正在实验室使用V H D L编译器程序包,那么你应查看其相应的文档以学习更多的库
和库中所包含的内容。你将会发现各种各样的结构以及商业设计已被预定义,应用它们是现
成的。另外,你应认识到你正在开发定义模块技巧,而这些模块可用于构造你自己的库。
5.7 VHDL的学习
与任何语言一样,学习V H D L需要实践。你实践得越多,它就会变得越熟悉和自然。我们
鼓励你尽可能地多写简单网络的代码,将编译后的系统保存起来以备将来使用。随着对数字
系统设计的学习的深入,我们将学到其他V H D L结构。
在计算机实验室中尽可能地去使用V H D L编译器;随程序一块提供的文档可提供操作编译
器需要了解的细节。没有比动手练习更好的方法来学习V H D L,所以尽管利用好的学习机
会!如果你想把数字逻辑设计作为你的专业,那么我们强烈推荐你学习完整的V H D L课程来
加强在此科目的背景知识。
5.8 问题
1. 写出由下面的图P 5 - 1真值表定义的模块G a t e _ X所对应的VHDL entity和a r c h i t e c t u r e描
述。
第5章V H D L的基础概念127
下载
图P5-1
2. 写出由下面的图P 5 - 2真值表定义的模块E x c l _ 2所对应的VHDL entity和a r c h i t e c t u r e描述。
图P5-2
3. 用并发运算写出下面布尔函数的V H D L语句。
4. 用并发运算语句写出下面布尔函数的V H D L语句。
5. 用并发运算语句写出下面布尔函数的V H D L语句。
6. 求出下面V H D L语句对应的最简布尔方程。
7. 将下面的V H D L语句翻译成布尔表达式。
8. 用并发语句构造出描述图P 5 - 3所示逻辑图的V H D L清单。
图P5-3
9. 用并发语句构造出描述图P 5 - 4所示逻辑图的V H D L清单。
图P5-4
10. 用并发语句构造出描述图P 5 - 5所示逻辑图的V H D L清单。
图P5-5
128 数字系统设计基础教程
下载
11. 考虑下面图P 5 - 6所示的逻辑级联。图中“ X s”是内部结点的标签,而“ G s”用于对逻
辑门进行编号。用端口映射写出此网络的V H D L描述。
图P5-6
12. 用V H D L向量语句构造描述图P 5 - 7所示网络的V H D L清单。
图P5-7
13. 用向量语句构造描述图P 5 - 8所示网络的V H D L清单。
图P5-8
14. 用数据图方法构造描述图P 5 - 9所示网络的V H D L清单,并尽你所能产生最简单的清单。
图P5-9
第5章V H D L的基础概念129
下载
15. 用数据图方法构造描述图P 5 - 1 0所示网络的V H D L清单,并尽你所能产生最简单的清
单。单元的名称提供了简单步骤的暗示。
图P5-10
16. 用数据图方法构造描述图P 5 - 11所示网络Z e r o的V H D L清单,并尽你所能产生最简单的
清单。单元的名称提供了简单步骤的暗示。
图P5-11
17. 考虑用作数字网络输入的两个向量
A=a3a2a1a0
B=b3b2b1b0
我们希望定义一个电路,它的输出c o m p a re由下面的语句来定义:
c o m p a re =1 i f a3 = b3
a2 = —b2
a1 = b1
a0 = —b0
e l s e c o m p a r e = 0 .
写出此数字单元的V H D L描述。
130 数字系统设计基础教程
下载 
VHDL硬件描述语言核心概念与FPGA设计实践 硬件描述语言(HDL)是数字电路设计的核心工具,通过文本化描述实现从行为级到门级的电路建模。VHDL作为IEEE标准化的HDL语言,以其严格的类型系统和并行执行模型著称,特别适合航空航天、医疗设备等高可靠性场景。其程序结构包含实体(Entity)声明和架构(Architecture)实现,支持行为描述、数据流描述和结构描述三种风格。在FPGA开发中,VHDL的进程(Process)模型精确映射硬件并行特性,而测试平台(Testbench)构建能力则大幅提升验证效率。现代VHDL开发已形成包含版本控制、持续集 阅读详情

相关推荐

VHDL语言核心概念:并发语句与顺序语句辨析

深入探讨VHDL语言中的并发语句和顺序语句在执行机制与应用场景上的本质区别,帮助理解vhdl语言在硬件描述中的行为建模方式,掌握两类语句的正确使用时机。

weixin_42527589的博客 273

VHDL中元件(模块)的例化

**记录学习,记录成长 1.VHDL中元件的例化可分为两部分 第一部分:元件声明,声明要例化的元件。 第二部分:元件例化,声明结束之后就可以对元件进行例化或者说是调用了。 其中声明部分在结构体的说明语句部分(即architecture和begin之间)。而调用部分同一个结构体的电路描述部分(即begin之后)。 2.元件声明格式: Component 元件名称 is Port(元件端口信息); E...

qq_36143127的博客 3万+

FPGA模块互相调用:VHDL中如何调用VHDL?

在moduleB的Architecture中,通过component关键字声明了一个名为moduleA的组件,然后实例化了该组件(moduleA_inst)。在实例化过程中,将moduleA的输入(input1和input2)绑定到了moduleB的输入(input3和input4),将moduleA的输出(output1和output2)绑定到了moduleB的输出(output3和output4)。同时也可以发现,VHDL中的模块调用非常灵活,可以方便的实现模块之间的复用和组合。

TechSavant的博客 1117

VHDL11:VHDL两个独立的vhdl文件在同一个工程中使用,加载到顶层文件中,实现模块化的功能

VHDL两个独立的vhdl文件在同一个工程中使用,加载到顶层文件中,实现模块化的功能

wendyWJGU的博客 5189

17、VHDL电路建模关键概念与数据类型解析

本文深入解析了VHDL在数字电路建模中的关键概念与核心数据类型。内容涵盖过程语句对组合与时序电路的建模方法、三种主要硬件建模风格(行为、数据流、结构)的对比分析,以及bit、std_ulogic、std_logic等信号类型的电气特性与应用场景。重点介绍了多比特向量、算术运算支持的unsigned/signed类型、IEEE 1076.3与1164标准包的区别,并详细说明了二进制向量方向、定点数(ufixed/sfixed)和浮点数(float)的数据表示与建模方式。最后通过决策流程图帮助设计者根据是否需要

backprop5master的博客 39

20、硬件描述语言中的电路建模:VHDL与SystemVerilog关键概念解析

本文深入解析了VHDL与SystemVerilog在硬件电路建模中的关键概念与构造。从数据对象、类型系统、子程序、包、设计库到模块封装、端口映射和总线建模,全面对比了两种语言的核心特性。文章还分析了各自的技术优势与应用场景,并提供了详细的设计操作步骤与实践建议。通过流程图和表格直观展示了设计流程与语言差异,最后展望了硬件描述语言的未来发展趋势,为硬件工程师选择合适工具提供了有力参考。

backprop5master的博客 45

VHDL硬件描述语言(三)VHDL语言要素

简要介绍了VHDL的文字规则、数据对象、数据类型和运算符

m0_56451176的博客 4628

基于VHDL的概念验证(POC)设计项目实战

VHDL因其强类型语言特性和对并发行为的天然建模能力,成为数字系统原型验证的首选工具。相较于软件仿真(如C/C++),VHDL能精确描述时序逻辑、信号竞争与多时钟域交互,显著提升硬件行为的真实性。在现代数字系统设计中,尤其是在基于VHDL的原型验证(POC)开发流程中,需求分析与系统性能指标的明确定义是确保项目成功推进的核心前提。这一阶段不仅是连接应用场景与硬件实现之间的桥梁,更是决定后续架构设计、模块划分、资源分配以及可测试性策略的关键依据。

weixin_35811662的博客 974

用Verilog语句测试VHDL模块

如果你想在Verilog中对VHDL编写的Dis_filter模块进行测试,并且其中包含了generic参数,你可以使用VHDL的配置(Configuration)来实例化具有特定generic值的模块。如果你想在Verilog中对VHDL编写的Dis_filter模块进行测试,并且其中包含了generic参数,你可以使用VHDL的配置(Configuration)来实例化具有特定generic值的模块。在Verilog中,不能直接传递复杂数据类型(如std_logic)作为generic参数。

qq_45490227的博客 815

掌握VHDL的十个基础实例

实体是VHDL设计的起点,它定义了模块的接口信号和行为。结构体则用于详细描述实体内部的逻辑结构,使得设计者能够将复杂的功能分解成更小、更容易管理的组件。在本章节中,我们将深入探讨实体和结构体的概念、定义和它们在VHDL设计中的应用。接口信号是实体与外部环境交互的途径。端口声明中的模式(inoutinoutbufferlinkage)指明了信号的流向和性质。例如,in表示输入信号,out表示输出信号。在定义端口时,还需要指定端口的数据类型。在VHDL中,最常用的数据类型是。

weixin_42596246的博客 1768

2d游戏地图编辑器_[U3D]基于MarchingCubes实现的War3Editor 地表/悬崖编辑器

花了几天时间研究清楚Marching cubes后,发现这个方法是一个非常适用于地图编辑,网格编辑,procedural 生成的工具。最大的优点有着较好的边缘,表面处理。然后我用U3D写了一个悬崖/地表的编辑器。其中使用到了Marching Cubes的2.5D,2D两种降维的方法。talk is cheap,让我看效果!DemoEditor展示https://www.zhihu.com/vide...

weixin_42504649的博客 1178

理解VHDL基本概念

An Introduction To VHDL Abstract FPGA(现场可编程逻辑阵列),是一种领先的硬件设计方式,简单地说,用户可以根据需要为开发板设计功能,并且可以随着需求的改变随时改变功能,而对开发板功能的编程,就是由VHDL(高速集成电路硬件描述语言)完成。 由于方便易用的特性,FPGA和VHDL语言在现代嵌入式系统中占据着统治地位,并且在机器学习设计中扮演着越来越重要的作用,FP...

SoniciSika 2361

PyMOL下载安装教程(附安装包)2025最新版(PyMOL 3.0.3)

本文详细介绍了Windows系统下PyMOL分子建模软件的安装教程。主要内容包括:提供安装包下载链接,强调需关闭杀毒软件;分步骤讲解管理员身份运行安装程序、接受协议、选择安装路径等安装流程;重点说明如何配置隐藏文件夹ProgramData中的许可证文件;最后提供基础使用技巧和常见问题解决方案。该教程适用于需要制作高质量分子结构图的科研人员和新手用户,帮助完成软件部署并顺利开展工作。

progalchemist的博客 3801

ARM、FPGA、VHDL、Verilog概念一览

它提供了全面的设计流程,包括设计输入、仿真、综合、实现、验证和调试等功能,支持多种编程语言和硬件描述语言,如Verilog、VHDL、SystemVerilog等。Debussy VHDL:一种基于VHDL语言的硬件设计验证工具,它可以帮助设计人员在设计过程中进行仿真和验证,以确保设计的正确性和可靠性。需要注意的是,在进行ARM和FPGA的电路仿真设计时,需要对ARM和FPGA的交互进行模拟,可以通过使用仿真器或者开发板来实现。同时,还需要注意电路的时序和时钟同步等问题,确保电路的稳定性和可靠性。

weixin_44050362的博客 3417

kaggle-NeurIPS - Open Polymer Prediction 2025-0.069

本文摘要: 本研究基于多任务学习框架,开发了聚合物物理化学性质预测模型,能够根据SMILES字符串同步预测玻璃化转变温度(Tg)、分数游离体积(FFV)等5种关键性质。针对数据缺失率高、样本不均衡等挑战,采用"先补充后扩充"策略整合多源数据,并融合RDKit分子描述符、ChemBERTa语义特征和自编码器特征构建多维度表征。模型采用硬参数共享架构,结合动态加权损失函数和早停机制,在验证集上表现出色,其中密度预测R²达0.92。研究为聚合物性能的高通量预测提供了有效解决方案,对材料智能设计具有重要参考价值。

2302_78976920的博客 783

自举电容的工作原理-3句话总结

1、一道面试题 照例,先抛出来一道面试题:“Buck电路的SW引脚通常会放置一颗小电容,这颗电容有什么用?”。这个问题问得比较细,非常考验被面试者的硬件基本功。 2、似懂非懂的答案 有小伙伴可能不太清楚这颗电容的作用,回答不上来。也有小伙伴脱口而出:自举电容,用来做升压的。但后面好像说不出来具体逻辑。 没具体了解过,答不上来,也没啥可惜的。但是了解过一点,但又似懂非懂的这种,给出的答案只是轻轻点水或者千篇一律,那无疑是错过了一个加分项。 3、异步Buck的自举环路组成 既然是针对Buck电路讲自举电容,前面

ltqdxl的博客 3万+

VHDL语句&基本概念

VHDL的并行语句 ①模块例化(component) 先声明在例化 ②赋值语句 ③进程语句(process) ④条件选择语句 when/else对应if/else with/select/when 对应case语句 ⑤generate语句

m0_46560857的博客 5583

农业杂草检测——棉花杂草数据集

然后将本层13×13的特征图谱经过×2上采样扩充到26×26,并与上层中26×26的特征图谱拼接,得到新的26×26的特征图谱,在该特征尺度上进行第二次预测,此时得到的特征图谱是相对输入图像16倍下采样,具有中尺度感受野,适合检测中等尺度对象;通过目标检测,能够及时清除杂草,减少病虫害的滋生和传播,保障棉花的健康生长,并有助于降低生产成本。对于地膜覆盖的棉田,由于膜内耕作层土温高、底墒好,杂草出苗早而集中,一般覆膜后5 - 7天杂草陆续出土,在墒情好的情况下,15天左右即形成出土高峰。

qq_38220914的博客 1247

VHDL 入门最容易卡住的四个概念:放进一段代码里一起看

从一个可编译的小模块出发,串联 entity、architecture、process 与波形反馈,用运行结果理解 VHDL 代码结构和硬件行为。入门 在线编译 波形分析 HDL学习

diaojiangxue的博客 165

SOMEIP协议--第三节[SOMEIP/SD](SD格式)

Entry和Option是SD报文中最重要的内容,是服务发现功能的承载。7.Minor Version是指当前服务的小版本号,可以配置,用于给用户区分当前服务的版本用的。注意:stop offer,stop subscribe,Subscribe Nack 这三条的TTL一定设为0,唯一和offer,subscribe,Subscribe的区别。Option用来辅助Entry实现其功能,是Entry携带的附加信息,作用上一般是用来告诉对端自己业务的ip和port信息,方便对端通过ip和port发送报文。

qq_41816308的博客 1339

Cadence OrCAD Capture 软件自带元件原理图符号库目录与介绍图文视频教程

硬件工程师在开始原理图设计时,应该首先拥有自己的元件原理图符号库。基于Capture进行原理图设计的一个很大的优点就是,软件自带的元件库比较全。本文简单介绍Capture软件自带元件库。

fydar的博客 5579

vhdl 一概念

elsif (rising_edge(SPI_CLK_GBUF)) then    vShiftCounter vShiftCounter + 1;    case vShiftCounter is      when 1  =>     sReadWrite      when 2  =>     ...vShiftCounter is changed after rising_edge(SPI

willforce的专栏 1245

ASPICE标准快速掌握「总目录」

欢迎大家来到雪云飞星的《ASPICE标准快速掌握》,开始前博主先列出本专栏学习的大纲,同时这也可以作为大家学习ASPICE协议知识点的参考。本专栏可以帮助大家快速掌握如何在项目中使用ASPICE,ASPICE的学习通常仅需要半天时间左右,掌握方法后完全就可以结合快查表来指导具体项目的质量提升了。

雪云飞星的博客 3010

VHDL入门:从软件思维到硬件设计的核心概念与实践指南

硬件描述语言(HDL)是连接软件算法与物理硬件的桥梁,它通过代码形式描述数字电路的结构与行为,而非传统意义上的编程指令。其核心原理在于并发执行与时序控制,这模拟了真实硬件中所有逻辑门同时工作的特性,与顺序执行的软件有本质区别。这种描述方式的技术价值在于能够直接定义和创造数字系统本身,如处理器、通信接口等,是实现FPGA和ASIC开发的基础。在应用场景上,它广泛应用于数字信号处理、嵌入式系统、通信协议实现等领域。本文以VHDL为例,深入解析其设计哲学,并通过计数器、有限状态机等实例,结合GHDL仿真工具,帮助

weixin_30443747的博客 459

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

VHDL硬件描述语言(一)基本概念

电子设计自动化(EDA)技术是新一代电子设计工程师及从事电子技术开发和研究人员的必备技能,也是电子技术类专业学生学习的重要内容。

m0_56451176的博客 2134

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

VHDL基础

目录 一、运算符 1.算数运算符 2.关系运算符 3.逻辑运算符 4.赋值运算符 5.关联运算符 6.其他运算符 7.运算符优先级 二、VHDL的基本结构 一、运算符 1.算数运算符 +,-,*,/ MOD: 取模,取模运算(a MOD b)的符号与b相同,其绝对值小于b的绝对值。如:-5 MOD 2 = 1,5 MOD -2 = -1。 REM: 取余,取余运算...

weixin_43864459的博客 1万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上一篇: 数字硬件
下一篇: CMOS逻辑电路
menuconfig
博客等级 码龄19年 713粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值