1014
全编译通过了。
直接编程,直接start。
现在看见什么?
是0。
现在我们知道了,seg有不同的编码值,段编码是在seg上加载。
然后sel呢,这是地址。
当为0的时候,是十万位被点亮,选中5到时候是个位被点亮。
我们led的driver就是这样,就是每一拍一盏灯被点亮,点亮这盏灯的时候把它的七段码送上去,就是这样。
1015
那么一盏灯被点亮的周期是多少呢?
10k周,100us。
100us,人的眼睛有视觉暂留,看起来是所有的灯都被点亮。
实际上是一盏灯一盏灯被点亮。
下面呢,我们就来试一下这个过程。
我们先把分频器拿过来,把写好的分频器的代码放在工程文件夹的根目录下面。
1016
这个文件是一个状态机的文件,回头我们来介绍,但是今天不着急,今天我们把基础打扎实,解决我们同学的疑惑。
回到Quartus,将该文件添加到工程中。
本帖最后由 lcytms 于 2017-3-12 23:42 编辑
1017
我用分频器来点一盏LED的灯,用分频器让它闪起来。
50MHz我们看不到,太快了,看不到。
我们把它做成10Hz。
1018
我首先把分频器创建为符号,选择yes。创建成功选OK。
在桌面双击,在工程下选中frequency_divider_mealy_fsm1s,点OK。
1019
放在合适的位置。
这个分频器呢,就是已经定制的一个IP了。
HW是高电平的宽度,LW是低电平的宽度。
它可以指定高电平多少拍,低电平多少拍。
1020
计算输出频率。
1021
输出10Hz时钟信号的情况计算如下。
1022
修改HW、LW参数为2500000。
1023
修改bdf文件。
修改LED为LED。
修改key为key,做复位。
分别接在分频器的对应信号上。
生成引脚。
1024
观察开发板资源名为clk。
修改资源名为clk。
再做全编译。
检查一下分配出来的管脚。
所有的管脚都已经分配了。
1025
然后呢我们就准备下板。
在编程器里点start。
我们把它的速度再放慢一点。
10Hz还是有点快。
1026
分频器的复位应该是负逻辑,这地方加个!符号,修改一下。
要不然它一直在复位。
然后再一次全编译。
1027
全编译通过了以后,直接编程。
现在闪了,是不是?
所以说有时候是失之毫厘谬以千里。
这是用10Hz,现在我们把它改成10k周。
把参数改成2500。
有兴趣可以逐个试,一个数量级一个数量级地试一下。
