本文节选自《从算法设计到硬件逻辑的实现》,仅供学习交流使用。
加法器
用 Verilog HDL 来描述加法器是相当容易的,只需要把运算表达式写出就可以了,见下例。
module add_4( X, Y, sum, C);
input [3 : 0] X, Y;
output [3: 0] sum;
output C;
assign {C, Sum } = X + Y;
endmodule
而 16 位加法器只需要扩大位数即可,见下例:
module add_16( X, Y, sum, C);
input [15 : 0] X, Y;
output [15 : 0] sum;
output C;
assign {C, Sum } = X + Y;
endmodule
这样设计的加法器在行为仿真时是没有延时的。借助综合器,可以根据以上 Verilog HDL源代码自动将其综合成典型的加法器电路结构。综合器有许多选项可供设计者选择,以便用来控制自动生成电路的性能。设计者可以考虑提高电路的速度,也可以考虑节省电路元件以减少电路占用硅片的面积。综合器会自动根据选项为你挑选一种基本加法器的结构。
有的高性能综合器还可以根据用户对运算速度的要求插入流水线结构,来提高运算器的性能。可见在综合工具的资源库中存有许多种基本的电路结构,通过编译系统的分析,自动为设计者选择一种电路结构,随着综合器的日益成熟它的功能将越来越强。然后设计者还需通过布局布线工具生成具有布线延迟的电路,再进行后仿真,便可知道该加法器的实际延时。根据实际的延迟便可以确定使用该运算逻辑的最高频率。若需要重复使用该运算器,则需要在控制数据流动的状态机中为其安排必要的时序。