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