8、组合逻辑电路设计描述及优化

组合逻辑电路设计描述及优化

目录

组合逻辑电路设计描述及优化

    8.1、组合逻辑电路的描述方法

    8.2、组合逻辑电路描述的常见问题

(1)敏感表不全

(2)组合逻辑描述中引入锁存器

(3)产生组合电路反馈

(4)无意识产生的线或逻辑

    8.3、常见的组合逻辑电路描述

(1)Multiplexers

(2)Encoder / priority encoder / Decoder

(3)Comparator

(4)ALU / Logic / arithmetic operations

    8.4、组合逻辑电路的优化

(1)模块复用和资源共享

(2)逻辑复制

(3)香农扩展运算

(4)流水线时序优化技术


    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是一种由电平触发的存储单元,是时序逻辑电路,主要用来保持或存储一段时间不改变的数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值