原创 时序Case和组合Case资源比较

2007-10-15 22:51 5379 8 10 分类: FPGA/CPLD

同学问我一道O2的笔试题,


module   C_case1(clk,out1);
input  clk;
output out1;


reg  state1;
reg  out1;



always @(posedge clk)
  case(state1)
   0: state1<=1;
 1: state1<=0;
  endcase
always @(state1)
  case(state1)
   0: out1<=1;
 1: out1<=0;
 endcase
endmodule


 


 module   C_case2(clk,out2);
input  clk;
output out2;


reg  state2;
reg  out2;
 
 always @(posedge clk)


  case(state2)
   0:begin
 state2<=1;
   out2<=1;
   end
 1:begin
 state2<=0;
   out2<=0;
   end
   endcase
 
 
 endmodule


 


两者资源比较。


在Quartus综合结果如下:


第一种:


点击看大图


组合Case


第二种:


点击看大图


时序Case


 


明显第一种比第二种省个触发器


工程文件打包如下:


rar

文章评论2条评论)

登录后参与讨论

ash_riple_768180695 2007-10-16 09:10

还有一点,增加寄存器,有利于时序约束的表达。否则,out1直接驱动引脚的话,很难控制out1节点到引脚的输出时序。

ash_riple_768180695 2007-10-16 09:07

资源和性能从来就是一对矛盾,需要设计者权衡。第二种方式可以切断第一种方式潜在的关键路径,在资源允许的情况下,作为一种好的设计习惯,可以提高系统的整体运行频率。

这里,第一种方式潜在的关键路径在于从state1寄存器,经过out1,经过可能的组合逻辑,到达下一个寄存器的路径。如果从out1到下一个寄存器之间的组合逻辑很复杂的话,再加上out1之前的decoder0的组合逻辑,该路径就会更长;在decoder0之后添加寄存器,就能切断该路径。

增加寄存器的另一个好处是,在out1输出不会看到毛刺。这一点是综合工具按照out1寄存器的建立保持时间优化后决定的。

相关推荐阅读
用户478270 2007-11-26 15:03
Visual C++中使用gotoxy() / clrscr()等函数
#include < windows.h >void clrscr(void);void clreol(void);void clreoscr(void);void gotoxy(int ...
用户478270 2007-11-15 11:38
putchar()、getch()、getche()和getchar()函数
getch()、getche()和getchar()函数     (1) getch()和getche()函数     这两个函数都是从键盘上读入一个字符。其调用格式为:      getch(); ...
用户478270 2007-11-06 21:10
VM TOOLS安装
以ROOT身份进入Redhat linux9.0以后,会发现我们并没有真正的安装上了VMWARE TOOLS软件包,这个时候需要点击“虚拟”--》“安装虚拟工具”, mount /dev/cdrom ...
用户478270 2007-11-03 16:49
用全加器实现逻辑函数
瑞芯微电子的一道笔试题f(x1,x2,x3) = E(0,2,3,5,6,7) 试用全加器实现。 在网上搜到一篇论文讲的挺全,上传共享。但还是有点没看明白,感觉技巧性太强。...
用户478270 2007-10-18 23:01
Latchup现象和预防措施
Latch up 最易产生在易受外部干扰的I/O电路处, 也偶尔发生在内部电路Latch up 是指cmos晶片中, 在电源power VDD和地线GND(VSS)之间由于寄生的PNP和NPN双极性B...
用户478270 2007-10-18 16:42
N沟道增强型MOS管的工作原理
N沟道增强型MOS管的工作原理1.vGS对iD及沟道的控制作用<?XML:NAMESPACE PREFIX = V /><?XML:NAMESPACE PREFIX = O />...
我要评论
2
8
关闭 站长推荐上一条 /2 下一条