Introduction to VHDL
2.1 CAD(计算机辅助设计)
2.2 HDL(硬件描述语言)
硬件描述语言(HDL)描述电子电路或系统的行为(或结构),从而可以实现物理电路或系统。
VHDL是一种通用硬件描述语言,可用于描述和模拟多种数字系统的行为。系统的复杂性可以从几个门到复杂的集成电路的互连都可以。然而,虽然VHDL是完全可仿真的,但并非所有构造都可综合(转化为实际硬件)。
Verilog是另外一种HDL,流行度和VHDL五五开。下表对比:
VHDL | Verilog |
---|---|
Government developed | Commercially developed |
Ada based | C based |
Strongly Type Cast | mildly Type Cast |
Case(大小写) insensitive | Case sensitive |
Difficult to learn | Easy to learn |
More powerful | less powerful |
2.3 VHDL 描述组合逻辑电路
并发语句:随时准备执行。例如:
<=
表示赋值,右值变化后5ns左边的值才会变。这两天语句当中A
或B
,C
或D
一变化就会立即执行对应语句。
如果延时没有写,会安排一个极小的delay,来确保语句执行的时间顺序。
- VHDL 信号必须以字母开头,不能是保留字
- 语句以
;
结尾 - 两个
--
中间视为注释
2.4 VHDL 模块
Entity 和 Architecture
entity:描述模块的接口,包括输入、输出端口。 architecture:描述模块的实现,包括信号的声明、逻辑表达式、过程。
Entity
标准接口模块表示如下:
Architecture
标准接口模块表示如下:
类型和模式
A和B为输入,都被赋值2,C和D为输出,缺省初始值,默认赋值为0。只在仿真中有效,综合时被忽略。
模式总共只有 in、out、inout、buffer 四种。其中 buffer 模式表示这个信号输出到外部,但允许在内部作为其他表达式的输入。
四位全加器的例子
port map
实现端口的映射。
2.5 时序声明和 VHDL 进程
Process 会先按顺序执行一次下面的代码,此后敏感列表中的信号一发生变化,再按顺序执行下方的代码。
实现(A and B) or D
的例子:
只有Processes,functions,procedures是顺序语句,其他都是并发语句。
2.6 用 VHDL 进程建模(modeling)触发器
时钟D触发器
时钟D触发器的实现:
透明锁存器
特别注意,D信号需要在敏感列表里,不然当G=1
,D变化了,输出也不会变化。
if 表达式(statement)
if 是顺序语句,只允许在能用顺序语句的模块当中使用,比如processes
。
else if
要有对应的endif
,elseif
不需要。
J-K触发器
SN :active-low asynchronous preset RN : active-low asynchronous clear
2.7 在进程中使用 wait 语句
wait 语句有三种:
- wait on sensitivity-list:等待某个信号变化
- wait for time-expression:等待一段时间
- wait until Boolean-expression:等待直到某个条件满足
一个 process 至少有一个 sensitivity-list 或者 wait 语句。
2.8 两种类型的 VHDL 延时
Inertial delays(惯性延时):当输入信号变化比输出信号的变化快时会过滤掉。例如:
afer
默认是惯性延时,完整表达式为:
C 不会发生任何变化,把 A 过滤了,拒绝脉冲宽度小于输出信号延时的输入( 1ns < 5ns)。
Transport delays(传输延时):仅作延时。表达式为:
2.9 VHDL 的编译、仿真和综合
Compiler:
- checks to see that references to libraries are correct
- checks source code to see that it conforms to the syntax and semantic rules
Elaborator:
- Ports are created for each instance of a component
- Memory storageis allocated for the required signals
- The interconnections among the port signals are specified
- A mechanism is established for executing VHDL statements in the proper sequence
- The resulting data structurere presents the digital system being simulated
关于 delta 计数器进一步说明:当加上有限长的 delay 时,delta 计数器会清零。
2.10 数据类型
Real 和 time 类型是无法被综合的。类型定义方法如下: