【FPGA】全局复位是否有必要?

在FPGA设计中,用户逻辑功能最终在芯片的实体资源上实现,因此逻辑写法不一样最终影响两点:异步

1) 路径延迟; 2) 资源占用;优化

下面的例子对比很是明显,异步reset与同步reset。设计

(一) 同步复位blog

在always block中的全部输入信号都是同步的,A-E & RESET。由于优先级R>S>D,因此根据实际逻辑代码级层,充分利用了Reset、Set、Data同步输入引脚。ip

充分利用了资源管脚,同时只有LUT-FF两级延迟。资源

(二)异步复位同步

敏感列表中的RST是异步输入信号,使用的是Asynchronous Flip-Flop FDCE,RST链接到Clear异步脚。变量

那A-E五个同步信号就只能占用2xLUT4来实现,致使多一个LUT占用,同时延迟路径也多一级。im

在实际设计中,通常因为clk时钟都很高,建议都用同步复位,还能够避免异步竞争冒险。db

(三)没有复位

芯片中像 reg & sram 这样具备storage能力的触发器都具备初始值,彻底能够不用Reset信号。

reg [7:0] data = 8'b11111111;// reg变量或者fsm状态机初始化定义,bram上电复位后全是00

若是代码中没有Reset,那么R脚彻底能够接一个取非后的与逻辑输入信号。

 

优秀的代码结构彻底能够带来量级的优化结果。

 以上分析是针对Xilinx结构分析的,暂未分析Altera家,但两家都是基于sram型的FPGA,理应一致。

相关文章
相关标签/搜索