首页 > 代码库 > 代码综合后的电路对比(不定时更新)
代码综合后的电路对比(不定时更新)
这里来记录一下相似代码之间的不同差异,比如同步复位与异步复位触发器的对比,上升沿复位和下降沿复位的对比等等。这里主要使用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 else12 q <= d;13 14 endmodule
综合得到的电路如下所示:
根据代码,容易推断得出这是一个高电平、异步复位的触发器(或者叫异步置位),这也与前面的内容相符合。
②低电平触发的异步复位
代码和电路跟 一(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 else12 q <= d;13 14 endmodule
综合得到的电路如下所示:
可以知道,这是一个高电平有效、同步复位的触发器单元。
②低电平触发的同步复位
代码和电路同一(2),这里不进行重述
代码综合后的电路对比(不定时更新)