判决树:
在FPGA设计中,把一系列用来决定逻辑应该采取什么动作的条件称作一个判决树。通常,用if/else或者case实现。举一个写寄存器的例子:
module wr_reg(
output reg rout,
input clk,
input [3:0] in,
input [3:0] ctrl
);
always @ (posedge clk)
begin
if ( ctrl[0] ) rout<= in[0];
else if (ctrl[1]) rout<= in[1];
else if (ctrl[2]) rout<= in[2];
else if (ctrl[3]) rout<= in[3];
end
endmodule
综合后的原理图如下:
这里可以明显看出特权的布局。这类判决结构可以按照许多不同方式实现,取决于速度/面积的权衡以及特权方面的要求。
后面将会谈到如何设计和约束才能实现所需的综合结构。