可编程逻辑器件
- 通用性强,但逻辑功能较简单、且固定不变 ;构成的系统功耗体积大、可靠性差;中、小规模数字集成电路都属于通用型
- 为某种专门用途而设计的集成电路;成本较高、周期较长
PLD器件的连接
可编程逻辑阵列(PLA)
可编程阵列逻辑(PAL)
- PLA又慢又贵又大;
- 或阵列固定,与阵列可编程;
- Programmable logic plane与Output logic两部分
- 速度快,费用低,易于编程;
- 使用硬体描述语言,例如Data I/O的ABEL,或MMI的 PALASM编程
现场可编辑门阵列
Field Programmable Gate Array,缩写为FPGA
- 半定制,既解决了全定制电路的不足,又克服了原有可编程逻辑器件门电路数有限的缺点
- 硬件描述语言(Verilog或VHDL)描述逻辑电路,可以利用综合和布局、布线工具软件,快速地烧录至FPGA上;
- 设计师可以根据需要,通过可编辑的连接,把FPGA内部的逻辑块连接起来
- 好像一个电路试验板被放在了一个芯片里
FPGA设计流程
设计输入
- 原理图
- 硬件描述语言
功能仿真和综合
- 验证设计是否满足设计功能要求
- 优化
布局布线和时序仿真
- 映射到具体的目标硬件上,也称布局、布线
- 实现之后,下载之前,考虑实际门的延迟,来防止时序错误。功能仿真可以不指定硬件,时序仿真必须指定
下载
写入到设备
硬件描述语言HDL
- 描述电子电路(特别是数字电路)功能、行为的语言
- 寄存器传输级、行为级、逻辑门级等对数字电路系统进行描述
- 硬件描述语言和传统的软件编程语言最大的区别是,前者能够对于硬件电路的时序特性进行描述
- 硬件描述语言是构成电子设计自动化(EDA)体系的重要部分
- 可以描述小到简单的触发器,大到复杂的超大规模集成电路
- 常见的硬件描述语言:Verilog、VHDL
Verilog
模型
模块是Verilog语言的基本组成单元,模块可以用下面任何一种建模方法(或一个组合)来描述
- 用实例化(instantiation)预定义基本逻辑门(primitive gates)或用户自定义的门电路进行门级建模(Gate level modeling)
- 用关键字为assign的连续赋值(continuous assignment)语句进行数据流建模(Dataflow modeling);描述布尔方程
- 用关键字为always的过程赋值(procedural assignment)语句进行行为建模(Behavioral modeling);
门级建模
- 两个或多个模块可以组合起来对一个设计分层描述:自顶向下和自底向上的设计方法
- 模块可以被嵌套(引入),但是模块的说明不可以嵌套(一个模块不能插入另一个模块的module和endmodule之间)
- 实现在一个模块中插入另一个模块的唯一方法是例化
数据流建模
- 门级建模:通过确定个逻辑门以及它们之间的相互连接来描述电路
- 数据流建模:使用大量运算符用于二进制操作数来产生所需的结果
- 采用连续赋值的方法,关键字是assign
- 连续赋值语句是对wire型数据赋值的说明
- wire型用来反映元件之间的物理连接
行为建模
- 行为建模:在功能和算法层次上描述数字电路
- 使用关键字always,主要用于描述时序电路,但也可以描述组合电路
- 采用过程赋值的方法,目标输出的数据类型必须声明为reg型
时序电路的Verilog模型
- initial 和 always 两种抽象行为语句
- initial只用于testbench中的激励信号
- lways模块使用过程赋值,赋值语句左边的变量一定要声明为reg型
阻塞赋值和非阻塞赋值
两种过程赋值语句:
阻塞赋值 B = A 和 非阻塞赋值 B<=A