组合逻辑电路设计描述及优化
目录
(2)Encoder / priority encoder / Decoder
(4)ALU / Logic / arithmetic operations
8.1、组合逻辑电路的描述方法
组合逻辑电路的特点:任何时刻的输出仅与该时刻电路的输入有关,电路中不含反馈、记忆单元,仅仅通过若干门电路按照不同方式连接起来实现所需的逻辑功能。
|
|
| 组合逻辑框图 |
在Verilog的RTL级描述中常使用下面几种方式进行组合逻辑描述:
- 数据流描述:使用连续赋值语句assign描述;
- 过程语句:使用always语句;
- 函数
在多数情况下,assign和always这两种组合逻辑描述方法可互换,但也有不同:
- Assign只能对线网型变量赋值,描述对应的综合逻辑便于观察,易于理解;
- Always只能对reg型变量赋值,描述对应的综合逻辑不是很直观,除了描述组合逻辑,还可以描述时序逻辑。
使用always描述组合逻辑时要遵守以下规则:
- always中采用基于电平敏感事件的时序控制,敏感列表中使用电平信号:always@(a or b or in)
- 敏感列表中信号必须完整,或使用*代表所有敏感 列表信号: always@*或always@(*);
- always语句内被赋值的变量必须定义为寄存器 (reg)型变量,过程赋值使用阻塞赋值(=)
因此,描述简单的组合逻辑选择assign。
8.2、组合逻辑电路描述的常见问题
(1)敏感表不全
描述组合逻辑的always块的信号敏感表不完整:可能会使综合前仿真时无法触发未列出的敏感信号相关的仿真过程,使得综合前后的仿真结果不一致。
e.g.:input a,b;
reg c;
always@(a)
c=a | | b;
避免办法:①always@(a or b)或者always@(*) ②观察综合工具警告、报错信息
(2)组合逻辑描述中引入锁存器
组合逻辑描述中使用了一个reg,则:如果reg值随相关语句块的任何一个输入的变化而变化,则在综合时不会产生硬件寄存器;如果reg值不总是随相关语句块的输入变化而变化,则综合时会产生一个锁存器latch。
Latch是一种由电平触发的存储单元,是时序逻辑电路,主要用来保持或存储一段时间不改变的数据。


最低0.47元/天 解锁文章
1410

被折叠的 条评论
为什么被折叠?



