【Verilog数字系统设计——用任务和函数实现斐波纳契数列求值】

【Verilog数字系统设计——用任务和函数实现斐波纳契数列求值】

题目

1 分别用任务和函数实现斐波纳契数列求职;
2 斐波纳契数列递归的方法定义如下:F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2);
3 注意在实验中认真区分理解任务和函数异同;
4 实验提交Verilog设计文件(.v文件)、仿真波形截图文件打包,压缩包以自己的学号+姓名命名;

代码

module sequence_eval_task(out,in);
	input [3:0]in;
	output reg [7:0]out;
	integer i;
	always @(in)
	begin
		fibo(out,in);
	end
   	task fibo(output[7:0]result,input [3:0]n);
		reg[7:0]fibo1;
		reg[7:0]fibo0;
		if(n==0)
		result=0;
		else if (n==1)
		result=1;
		else
		begin
			fibo1=1;
			fibo0=0;
			for(i=n;i>1;i=i-1)
			begin
				result=fibo1+fibo0;
				fibo0=fibo1;
				fibo1=result;
			end
		end

	endtask
	
endmodule
//F(0)=0,F(1)=1,F(n)=F(n-1)+F(n-2)

module sequence_eval_test;

	reg [3:0] in_t;
  	wire[7:0] out_t; 
sequence_eval_func  sequence_eval_func(.out(out_t1),.in(in_t));
sequence_eval_task  sequence_eval_task(.out(out_t2),.in(in_t));
initial
 	 begin
		    in_t=0;
	 end
always #10 in_t=in_t+1;


Endmodule


module  sequence_eval_func(out,in);
	input [3:0]in;
	output reg [7:0]out;
	integer i;
	always @(in)
	begin
		out=fibofun(in);
	end
	function [7:0]fibofun;
		input [3:0]n;
		reg[7:0]fibo1;
		reg[7:0]fibo0;
		if(n==0)
		fibofun=0;
		else if (n==1)
		fibofun=1;
		else
		begin
			fibo1=1;
			fibo0=0;
			for(i=n;i>1;i=i-1)
			begin
				fibofun=fibo1+fibo0;
				fibo0=fibo1;
				fibo1=fibofun;
			end
		end

	endfunction

endmodule

运行截图

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值