最近的seo网站优化排名,学建模去什么学校,阿里企业邮箱收费标准一年多少钱,厦门网站建设模拟function函数的使用
规则:
函数必须至少含有一个输入变量#xff0c;不能有任何输出或输入/输出双向变量。函数不能包含时钟控制语句#xff08;如延迟#、事件控制或者等待wait#xff09;。函数是通过对函数名赋值的途径返回其值的#xff0c;就好比是一个寄存器。函数不…function函数的使用
规则:
函数必须至少含有一个输入变量不能有任何输出或输入/输出双向变量。函数不能包含时钟控制语句如延迟#、事件控制或者等待wait。函数是通过对函数名赋值的途径返回其值的就好比是一个寄存器。函数不能启动任务。函数不能被禁用。
注意
函数的输入变量不能像模块的端口那样列在函数名后的括弧里在声明输入时把这些输入端列出即可。如果函数包含一条以上的语句这些语句必须包含在begin-end或fork-join块中。
可综合性问题
函数每一次调用都被综合为一个独立的组合逻辑电路块。
module tryfunct(clk,n,result,reset);output [31 : 0] result;input [3 : 0] n;input reset,clk;reg [31 : 0] result;always(posedge clk)
beginif(!reset)result 0;elsebeginresult n*factorial(n)/((n*2)1);end //verilog在整数除法运算结果中不考虑余数
endfunction [31 : 0] factorial;//函数定义返回的是一个32位的数input [3:0] operand;//输入只有一个4位的操作数reg [3:0] index;//函数内部计数用中间变量beginfactorial operand ? 1 : 0;//先定义操作数为零时函数的输出为零不为零时为1for(index 2;index operand ; index index 1)factorial index * factorial; //表示阶乘的算术迭代运算end
endfunctionendmodule
欢迎关注我关于FPGA的问题欢迎留言讨论