`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