FPGA——zhixin培训 Day_02——分频+流水灯

A分频:

  • 设计背景:

本开发板的时钟是50MHz晶振的时钟;但一般运行所需程序需要其他时钟实现;因此需要分频。分频可以用计数器实现,也可以用调用IP核的方式。

二、设计需求:

利用开发板上的50MHz时钟通过计数器的形式进行分频。

三、代码:

B、流水灯

一、设计需求:

利用开发板上的4个灯,实现流水灯,流水间隔1s一次(支持从左往右或从右往左)【涉及到分频】

二、设计原理图

开发板原理图:低电平点亮。

三、思路与方案

方案一:利用状态机(FSM)思想

1、定义:状态机(FSM)——Always块的个数即是几段式状态机;在特定的状态,完成特定的动作;

2、架构图:

3、状态转移图:

4、代码:

注意:下板时候用/*#(cnt_num(4))*/,当仿真时候,由于间隔一秒时间较长,因此,在例化中间加#(cnt_num(4))减少时间。

5、仿真验证:

6、下板验证与需求一致。流水灯40ms左右可看清楚流水。30ms以下看不清楚。

方案二:操作符(位拼接{})

  1. 定义:

(1)拼接功能:{}

A=2’b10,b=3’b101;{a,b}=5’b10101;

(2)移位功能{}

4’b0111;

4’b1011;

4’b1101;

4’b1110;

右移位:最低位在最高位{led[0],led[3:1]}

4’b0111;

4’b1110;

4’b1101;

4’b1011;

左移位:最高位在最低位{led[2:0],led[3]}

注意:>>右移(<<左移),是将某位移出去,不循环;

2.代码:

3.仿真验证:

4.下板验证,与需求一致。

C、练习:

一、设计需求:

利用按键实现流水灯,按键1按下使灯右流水;按键2按下使灯左流水。流水灯亮灯间隔1s。

  • 代码:
  • 福利:仿真时候分组操作:全选,然后右击选择分组,起名字,然后确定。

 

 

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值