ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## 一个可综合的例子 ` `repeat是重复多少次,当次数固定时,是可以综合的。 如下: ``` module tf( input clk, input rst_n, input [7:0]din, output reg[7:0]o ); reg [7:0]dat; //在模块中调用函数 always begin o <= mu(din); end //函数,使用repeat实现in=in+2 function [7:0] mu(input [7:0]in); reg [7:0]d; d=in; repeat(2)begin d=d+1; end mu=d; endfunction endmodule ``` ` `综合之后的RTL如下所示: ![](https://img.kancloud.cn/ec/e0/ece06f35ad5d8a072a4e3f5f53d4d1c7_1042x229.png) ` `仿真结果 ![](https://img.kancloud.cn/68/fa/68fa139432d6d9f3aab466b6e25516ff_1049x330.png) ` `上面我们实在函数中使用,我们在task中使用可以达到一样的效果。 ``` module tf( input clk, input rst_n, input [7:0]din, output reg[7:0]o ); reg [7:0]dat; always begin mt; //调用任务 end task mt; reg [7:0]d; d=din; repeat(2)begin d=d+1; end o=d; endtask endmodule ``` ` `这个和for一样,需要次数确定,注意在task和function中不能有时序语句。