quartus时序逻辑的开始(二)

一、分频器

两种方法可以实现:
①PLL(后面再说)
②verilog代码实现,这里演示
用代码编写时又分两种情况:
①仅仅实现分频功能;
②更加实用的降频方法(将输出以脉冲标志信号表示)
由于分频器一般是FPGA内部使用,所以应尽量时钟信号还是使用其内部的sys_clk信号。
在这里插入图片描述
当将脉冲标志信号作为输出信号时,
在这里插入图片描述
这里两种方法都会展示。

一、六分频(偶分频)
这里实现六分频功能。
学会画波形图分析时序逻辑电路!!!将自己的逻辑波形图可以与仿真结果相比较。
1、用方法1实现(verilog代码和仿真文件不作展示)
仿真结果为:
在这里插入图片描述
clk_out输出信号能够很好的实现六分频。
2、用方法2实现
脉冲标志信号在RTL视图中表示为一个寄存器,时序逻辑电路中会延迟一拍,6分频即0-5计数,需要在计数到4时上升沿。
在这里插入图片描述
仿真结果为:
在这里插入图片描述
二、五分频(奇分频)
同样是两种方法:
①仅实现分频功能;
②利用脉冲标志信号clk_flag实现。
方法一:
要实现五分频,这种奇数次分频与偶数次分频有所区别,需要将上升沿和下降沿结合起来考虑,通过波形图分析可知,将clk上升沿和clk下降沿相与可以实现占空比50%的五分频功能。
编码中提示这种错误,就是忘记加分号了!
在这里插入图片描述
仿真结果:
在这里插入图片描述
输出信号一个周期显示频率为10MHz,为20ns,50MHz的五分之一,实现了五分频。
其中波形图中频率显示的设置如图:
在这里插入图片描述
方法二:
利用脉冲标志信号实现五分频和实现六分频是类似的, 只需要将脉冲信号上升沿的计数个数改变即可。
在这里插入图片描述
由于寄存器延迟一拍,所以需要在3‘d3处就触发上升沿。
一个是数值判断(按实际),一个是电平沿(延迟一拍)。
在这里插入图片描述
仿真结果:
在这里插入图片描述
10MHz,同样实现了FPGA内部电路时钟分频的效果。

二、按键消抖

主要是为了消除机械按键在被按下和被释放过程中产生的抖动问题。
方法:对按键抖动的部分进行延时,当信号稳定在低电平后输出,否则按键自身的抖动可能会被系统误判为按键多次按下。
需要计算过滤掉按键抖动的时间,用到计数器,时序电路实现,因此sys_clk和sys_rst_n信号必不可少,输入为含抖动的key_in按键信号,输出为稳定的key_flag信号。
在这里插入图片描述
解决几个问题:
①什么时候开始计数?
按键抖动时间一般为5ms-10ms
在这里插入图片描述
当检测到第一个低电平时开始计数,直接设置延时30ms是一定能找到稳定状态的,但是这样直接延时含有不确定性,会多出很多考虑时间;我们设置为低电平开始计数,高电平则将计数器清零。
②计数器计数个数是多少?最大值是多少?
这里我们设置20ms的延时
在这里插入图片描述
故20ms计数1,000,000,由于计数器从0开始计数,故计数的最大值为999,999。
③计数器计满后如何处理?以及滤除抖动信号后的脉冲输出信号何时拉高?
问题1、当计数器计满后清零,计数到最大数999,999时拉高,不保持最大数999,999,则保持状态的低电平内会有多次脉冲信号出现,不可;
问题2、当计数器计满后不清零,计数到最大数999,999时拉高,保持最大数999,999,脉冲信号为高电平,能够保证脉冲高电平只有一个,但是这一高电平就会拖很久(因为最大数一直保持),不是我们要的脉冲信号,不可;
解决方案:当计数器计满后不清零,计数到 最大数-1 = 999,998时拉高,保持最大数,而且不选择最大数为脉冲信号高电平触发,选择最接近最大数的 最大数-1 的那一瞬间触发高电平,刚好得到我们需要的脉冲信号。
在这里插入图片描述
仿真结果:
在这里插入图片描述
在这里插入图片描述
这个仿真文件的编写还不是很熟练
包括前后扰动的随机实现和按键输入的随机情况。
在这里插入图片描述

三、触摸按键点亮LED灯

未记录,有需要再上传

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值