`timescale 1ns/1ns
module function_mod(
	input [3:0]a,
	input [3:0]b,
	
	output [3:0]c,
	output [3:0]d
);

function  [3:0] mod;
input [3:0] a;
begin
		mod={a[0],a[1],a[2],a[3]};
end
endfunction

assign c=mod(a);
assign d=mod(b);

endmodule

对于一个子程序来说, 下面的条件全部成立,则可以使用函数来完成;

  • 在子程序内不含延迟,时序或者控制结构。
  • 子程序只有一个返回值。
  • 只有有一个输入变量。
  • 没有输出或者双向变量。
  • 不含有非阻塞赋值语句。

需要注意的是,函数是可以综合的,展开电路为组合逻辑电路。

该题目比较简单只有4位,所以可以用拼接的方法写,如果位数多了需要用for循环。函数的for循环用initeger来声明变量i