前言
剑法往往有着固定的招式套路,而写代码似乎也存在类似的情况。不知从何时起,众多 FPGA 工程师们在编写代码时开启了一种关于 always 语句块的流行写法,那就是:
always @(posedge i_clk or negedge i_rstn)
就笔者所经历的诸多项目以及所接触到的不少工程师而言,大家在着手书写时序代码之前,几乎都会习惯性地先写上这样一个 “开头”,当然了,笔者自己在很长一段时间内也是如此行事的。这种写法在绝大多数的情形下确实不会引发什么问题,然而,存在并不一定就意味着完全合理。在实际工作过程中,笔者渐渐察觉到了这种复位方式所带来的一些弊端,并且在研读了 Xilinx 的一些官方资料,诸如 WP222、WP275 等文章之后,更是让笔者对全局复位逻辑的态度逐渐变得 “冷淡” 起来,不再像之前那般盲目地采用这种带有全局复位的写法了。