码迷,mamicode.com
首页 > 其他好文 > 详细

代码综合后的电路对比(不定时更新)

时间:2017-07-16 09:52:26      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:介绍   code   内容   closed   复位   alt   onclick   str   技术分享   

  这里来记录一下相似代码之间的不同差异,比如同步复位与异步复位触发器的对比,上升沿复位和下降沿复位的对比等等。这里主要使用ISE的综合引擎。直接附上代码和综合后电路图,有些会有部分讲解。

 

一、异步复位与同步复位

  我在复位电路里面讲解了同步复位和异步复位的区别,这里就不详细介绍了,链接如下:http://www.cnblogs.com/IClearner/p/6683100.html  

(1)异步复位

异步复位的代码如下所示:

module DFF1(
  input clk,
  input rst_n,
  input d,
  output reg q
);

always@(posedge clk or negedge rst_n)
  if(!rst_n)
    q <= 0; //异步清 0,低电平有效
  else
    q <= d;

endmodule

 

 综合得到的电路图如下所示:

技术分享

 

 可以看到使用了一个反相器单元和一个触发器单元;从代码中我们可以推断出,这是一个高电平有效的、异步复位触发器

 

(2)同步复位

同步复位触发器代码如下所示,注意黑体部分

 

module DFF2(
  input clk,
  input rst_n,
  input d,
  output reg q
);

always@(posedge clk )//注意这里有所不同
  if(!rst_n)
    q <= 0; //同步清 0,低电平有效
  else
    q <= d;

endmodule

 

 综合得到的电路如下所示:

 技术分享

我们可以看到,也是由一个反向器单元和一个触发器单元构成,注意,这里的触发器跟上面的触发器显然不是同一个类型的触发器,管脚名称改变了;结合代码我们可以知道,这个触发器是高电平触发、同步复位的触发器。

 

 

二、不同电平之间的复位差异

(1)高电平触发的异步复位VS低电平触发的异步复位

①高电平触发的异步复位(异步置位)

代码如下所示:

 

技术分享
 1 module DFF3(
 2   input clk,
 3   input rst_r,
 4   input d,
 5   output reg q
 6 );
 7 
 8 always@(posedge clk or posedge rst_r)
 9   if(rst_r)
10     q <= 0; 
11   else
12     q <= d;
13 
14 endmodule
DFF3

 

综合得到的电路如下所示:

技术分享

根据代码,容易推断得出这是一个高电平、异步复位的触发器(或者叫异步置位),这也与前面的内容相符合。

 

 

②低电平触发的异步复位

代码和电路跟  一(1)的代码和电路相同,这里不进行重述。

 

(2)高电平触发的同步复位VS低电平触发的同步复位

①高电平触发的同步复位

代码如下所示:

 

 1 module DFF4(
 2   input clk,
 3   input rst_r,
 4   input d,
 5   output reg q
 6 );
 7 
 8 always@(posedge clk )
 9   if(rst_r)
10     q <= 0; 
11   else
12     q <= d;
13 
14 endmodule

 

综合得到的电路如下所示:

技术分享

可以知道,这是一个高电平有效、同步复位的触发器单元。

 

②低电平触发的同步复位

代码和电路同一(2),这里不进行重述

 

代码综合后的电路对比(不定时更新)

标签:介绍   code   内容   closed   复位   alt   onclick   str   技术分享   

原文地址:http://www.cnblogs.com/IClearner/p/7188875.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!