• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于FPGA的角谷猜想的实现设计Verilog代码VIVADO仿真

08/05 08:53
135
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240614210321601.doc

共1个文件

名称:基于FPGA的角谷猜想的实现设计Verilog代码VIVADO仿真

软件:VIVADO

语言:Verilog

代码功能:

角谷猜想的实现:

如果n为奇数,则3n+1;

如果n的偶数,则n/2;

最后n=1。

要求:

1.输入一个16位二进制数(用状态机来控制,用计数器记循环次数)

2.写出来的代码要为可综合电路

结果要包括:

1.输入二进制数判断奇偶后是否为3n+1或n/2

2.最后是否回到1

3.循环次数m的具体值

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

 

演示视频:

设计文档:

1. 工程文件

2. 程序代码

3. 程序编译

4. Testbench代码

5. 仿真图

部分代码展示:

module jiaogu_test(
input clk,//时钟
input enable,//使能信号
input [15:0] data_in,//输入16bit数据
output reg [15:0] result,//输出最终结果
output reg flag,//完成信号
output reg [15:0] cycle//循环次数
);
reg [2:0] state=3'd0;//状态寄存器
reg [17:0] temp=18'd0;//数据存储器
always@(posedge clk)
case(state)
3'd0://起始状态
if(enable==1)//启动
state<=3'd1;
else
state<=3'd0;
3'd1://启动状态
begin
state<=3'd2;
flag<=0;
temp<=data_in;//加载原数据
result<=0;
end
3'd2://循环状态
if(temp==1)//结果为1
state<=3'd5;//结束
else 
if(temp[0]==0)
state<=3'd4;//奇数
else
state<=3'd3;//偶数
3'd3://奇数状态
begin
state<=3'd2;
temp<=temp*3+1;//奇数时
end
3'd4://偶数状态
begin
state<=3'd2;
temp<=temp/2;//偶数时
end
3'd5://完成状态
begin
state<=3'd0;
flag<=1;//输出循环完成信号
result<=temp;//生输出结果
end
default:;
endcase
always@(posedge clk)
if(state==3'd1)
cycle<=0;//清零
else if(state==3'd2)
cycle<=cycle+1;//循环次数
endmodule

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=875

  • 2-240614210321601.doc
    下载

相关推荐