1028
全编译。
通过了以后编程。
这次我们看到这个灯就是暗了一点,看不到他闪了,实际上它仍然在闪,只不过它是太快了。
1029
现在我们让这个10k周来驱动一个LED,我们用一个带模的计数器来驱动sel信号。
这次,大家跟着我做。
我来写一个模6的计数器。
就是昨天的那个counter。
1030
(指导练习)
1031
(指导练习)
1032
(指导练习)
1033
我们刚刚做了一个10Hz的灯的闪烁实验。
我们现在准备做这样一个实验,就是用10k周的信号来驱动这个sel线。
怎么驱动呢?
让它一次跳一个地址,0-1-2-3-4-5,0-1-2-3-4-5。
我们把昨天的counter部分复制过来。
1034
写过来也可以,因为这段代码并不难。
新建verilog文件,另存为,在test_tcl的根目录下面,test_counter.v文件。
1035
test_counter.v文件编写代码。
准备用行为来写q,事先声明成reg。
写它的行为。
1036
test_counter.v文件编写代码。
写异步复位。
我们以后再来解释,这为什么是异步。
1037
test_counter.v文件编写代码。
模6的计数器。
1038
这个验证比较简单,同学们自己做。
Ctrl+S、Ctrl+K。
检查一下有没有错误。
通过了。
1039
(检查大家进度)。
1040
这个呢,我们同样把它创建为符号。
1041
弹出对话框点OK。回到顶层的图上,把LED这根线拿下来。
在空白处双击,在工程下选择test_counter,点击OK添加。
将符号连上去。
现在用10k周的信号来驱动counter。
1042
处理rst_n信号线。
把sel移到test_counter输出端,装配上去。
1043
全编译。
1044
通过了。
再检查一下框图文件。
该分配的都分配了。
Sel是被我们的counter驱动的。
1045
直接编程,编程器打开,点start。
所有的字都显示全0,是不是?
1046
其他的同学可以尝试一下,把你的10k周改成10Hz试一试。
1047
(指导练习)
1048
(指导练习)
1049
(指导练习)
1050
(指导练习)
1051
通过这个实验,我们基本上就知道,LED的驱动的原理了。
每一盏灯只亮一会,只不过亮得快了以后,我们感觉全部都是亮的。
现在呢,我们进一步地来做这个实验,这次我们把我们的LED的driver加上来。
LED的driver,就是我们写完的代码。
没有做完的同学,我发给你。
1052
我发给大家以后,大家跟着我一起来做。
把显式建模改成隐式建模,然后呢,加到我们现在的实验里面去。
1053
总共5个文件。
写完的同学尽量用你自己的代码。
1054
把这5个文件粘贴到test_tcl的根目录下面。
1055
还有一个验证文件也发给大家。
