随着FPGA的广泛应用,所含的资源也越来越丰富,从基本的逻辑单元、DSP资源和RAM块,甚至CPU硬核都能集成在一块芯片中。在做FPGA设计时,如果针对FPGA中资源进行HDL代码编写,对设计的资源利用和时序都有益。下面主要讲解一下如何巧用FPGA中资源:
1.移位寄存器
FPGA中的移位寄存器使用在前面的博文中有所论述,Xilinx FPGA中的LUT可以作为SRL使用,主要可参考此博文《Xilinx 7系列FPGA使用之CLB探索》,在此想补充论述一下SRL的延时,首先看一下如下代码,实现了一个19级的移位寄存器。
1 modulesrl_test(2 inputclk,3 inputrst,4 inputdin,5 outputdout6 );7 regdin_d;8 always@(posedge clk) begin
9 if(rst)10 din_d<=1'b0;
11 else
12 din_d<=din;13 end
14 reg [18:0] d_sh;15 always@(posedge clk) begin
16 d_sh<={d_sh[17:0],din_d};17 end
18 assign dout=d_sh[18];19 endmodule
综合得到结构如图1所示,其中输入din由FF(din_d)寄存,随后的移位操作由一个SRL32E和FF组成,SRL中A=“10001”,实现了18级移位,因此SRL32E和