编辑: 于世美 2013-03-19

1、S

3、S5 控制的三个组合逻辑都是运算逻辑,例如乘法器或加法器 等,而寄存器组 A,B,C 是用来寄存运算的输入、中间和输出数据的.开关 S

2、S

4、S6 是 三态门,能控制寄存器组 A,B,C 的输出到总线上还是与总线隔离. 如果能与时钟配合来 精确地控制 S1 到S6 开关的闭合和断开,在寄存器中暂存的中间或输出数据都会是上一步 运算的稳定结果,而不会出现冒险和竞争的现象.运算的过程可以在这几个寄存器组内反 复地执行,直到通过开关的控制使其停止.下面让我们通过简单的描述来说明一个极其重 要的概念:生成与时钟精确配合的开关时序是计算逻辑的核心. 图6.4 带输出控制开关的运算组合逻辑和数据流波形

第六章 运算和数据流动控制逻辑

111 我们在 数字电子技术基础 中已经知道当时钟正跳变沿到来时,在D触发器数据端口的 数据才能存入触发器中.我们也知道当组合逻辑的输入变化时,输出必须经过一段时间后 才能稳定,这是由于门级电路和布线的延迟造成的.只有稳定的输出对运算才是有意义 的.如果我们想把寄存器组 C 中的数据经过组合逻辑的运算存入寄存器组 A 中,我们应该 如何来控制这几个开关呢?从上面的描述我们知道开关 S

1、S

3、S5 分别控制着三个组合运 算逻辑的输出.如果 S

1、S

3、S5 切断数据通道,则组合运算逻辑的输出总是为零(即每一 个输出线总为低电平).当时钟正跳变沿到来时这三个寄存器组将全部清零.为了要把寄 存器组 C 中的数据送出,必须在时钟正跳变沿到来前接通 S6,待运算组合逻辑输出稳定后 接通 S1,在时钟正跳变到来时便可把稳定的结果存入寄存器组 A 中.此时寄存器组 C 中的 数据已被清零,因为这时开关 S

3、S

5、S

2、S4 必须把数据通道断开,寄存器组 C 端口的零 电平被存入寄存器组 C.但由原来寄存在寄存器组 C 中的数据所生成的结果已稳定地存入 寄存器组 A 中.同理断开所有的通道,只按时序先后接通 S

2、S3,在下一运算时钟前沿到 来时就能稳定地把由 S3 控制的运算结果存入寄存器组 B.这个简单的例子说明:如果我们 能设计出一个状态机,在这个状态机的控制下生成一系列的开关信号,严格按时钟的节拍 来开启或关闭数据通道,我们就能用硬件来构成复杂的计算逻辑,如果硬件的规模可以达 到几十到几千万门,我们就可以设计出并行度很高的高速计算逻辑.在下一章里我们将详 细地介绍怎样用 VerilogHDL 来编写可综合的复杂同步状态机. 6.4 为什么在 Verilog HDL 设计中一定要用同步而不能用异步时序逻辑 同步时序逻辑是指表示状态的寄存器组的值只可能在唯一确定的触发条件发生时刻改变.只能 由时钟的正跳沿或负跳沿触发的状态机就是一例.always @(posedge clock) 就是一个同步时 序逻辑的触发条件, 表示由该 always 控制的 begin end 块中寄存器变量重新赋值的情形只有可 能在 clock 正跳沿发生.而异步时序逻辑是指触发条件由多个控制因素组成,任何一个因素的 跳变都可以引起触发.记录状态的寄存器组其时钟输入端不是都连结在同一个时钟信号上.例 如用一个触发器的输出连结到另一个触发器的时钟端去触发的就是异步时序逻辑. 用Verilog HDL 设计的可综合模块,必须避免使用异步时序逻辑,这不但是因为许多综合器不支 持异步时序逻辑的综合,而且也因为用异步时序逻辑确实很难来控制由组合逻辑和延迟所产生 图6.6 由开关逻辑控制的数据流动和计算逻辑结构示意图

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题