首先说明一下为什么要使用代码模板,主要因为这些代码模板的设计,在对应厂商的器件上综合出来的电路功能和效率是最好的,而且可以降低我们整个工程的综合时间。
1.怎样调用
以quartus 16.1版本为例。
- 打开quartus 16.1软件,点击File > New ,新建一个Verilog代码文件
- 点击Insert Temolate对话框
3.找到Verilog部分的模板,打开Full Designs,可以看到很多设计模板。
4. 找一个乘法器加法器设计代码例程,点击Insert,将模板粘贴到我们的代码中。
代码如下:
module sum_of_eight_multipliers_chainout
#(parameter WIDTH=18)
(
input clk, ena,
input [WIDTH-1:0] a0, a1, a2, a3, a4, a5, a6, a7,
input [WIDTH-1:0] b0, b1, b2, b3, b4, b5, b6, b7,
output reg [2*WIDTH+1:0] dataout
);
// Declare wires
wire [2*WIDTH+1:0] sum1, sum2;
// Store the results of the first two sums
assign sum1 = (a0 * b0 + a1 * b1) + (a2 * b2 + a3 * b3);
assign sum2 = (a4 * b4 + a5 * b5) + (a6 * b6 + a7 * b7);
always @ (posedge clk)
begin
if (ena == 1)
begin
dataout <= sum1 + sum2;
end
end
endmodule
其综合后的代码如图,逻辑非常合理,竞争冒险的概率很小。
如果把加法器不用括号括起来,其综合后的电路是这样的。
看着很乱,而且加法器的使用很不合理,非常容易产生竞争冒险的情况。
所以还是要多去看看官方软件提供的设计模板,来提高自己的电路设计的合理性。