差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
6._led流水灯 [2018/01/03 22:10] group002 |
6._led流水灯 [2021/08/16 13:51] (当前版本) gongyu [引脚分配] |
||
---|---|---|---|
行 1: | 行 1: | ||
- | =====LED流水灯===== | + | ## LED流水灯 |
在[[5. 时钟分频|时钟分频]]实验中我们练习了如何处理时钟,接下来我们要学习如何利用时钟来完成时序逻辑。 | 在[[5. 时钟分频|时钟分频]]实验中我们练习了如何处理时钟,接下来我们要学习如何利用时钟来完成时序逻辑。 | ||
\\ | \\ | ||
- | ====硬件说明==== | + | |
- | ------- | + | ### 硬件说明 |
流水灯实现是很常见的一个实验,虽然逻辑比较简单,但是里面也包含了实现时序逻辑的基本思想。要用FPGA实现流水灯有很多种方法,在这里我们会用两种不同的方法实现。 | 流水灯实现是很常见的一个实验,虽然逻辑比较简单,但是里面也包含了实现时序逻辑的基本思想。要用FPGA实现流水灯有很多种方法,在这里我们会用两种不同的方法实现。 | ||
\\ | \\ | ||
行 14: | 行 14: | ||
\\ | \\ | ||
- | ====Verilog代码==== | + | ### Verilog代码 |
- | ------ | + | |
模块化设计是用硬件描述语言进行数字电路设计的精髓,代码可重复利用。而且模块化的设计使得程序的结构也很清晰。这里我们首先看看流水灯的模块化设计。利用了之前的3-8译码器和分频器,你需要把这两个程序也拷贝到一个工程。 | 模块化设计是用硬件描述语言进行数字电路设计的精髓,代码可重复利用。而且模块化的设计使得程序的结构也很清晰。这里我们首先看看流水灯的模块化设计。利用了之前的3-8译码器和分频器,你需要把这两个程序也拷贝到一个工程。 | ||
<code verilog> | <code verilog> | ||
行 116: | 行 115: | ||
led <= {led[0],led[7:1]}; //当时钟上升沿来一次,执行一次赋值,赋值内容是led[0]与led[7:1]重新拼接成8位赋给led,相当于循环右移 | led <= {led[0],led[7:1]}; //当时钟上升沿来一次,执行一次赋值,赋值内容是led[0]与led[7:1]重新拼接成8位赋给led,相当于循环右移 | ||
end | end | ||
+ | endmodule | ||
| | ||
</code> | </code> | ||
\\ | \\ | ||
- | ====引脚分配==== | + | |
- | ------ | + | ### 引脚分配 |
按照下面表格定义输入输出信号 | 按照下面表格定义输入输出信号 | ||
\\ | \\ | ||
行 129: | 行 130: | ||
|led[1] |M12 |led[6] |N9 ^ | |led[1] |M12 |led[6] |N9 ^ | ||
|led[2] |P12 |led[7] |p9 ^ | |led[2] |P12 |led[7] |p9 ^ | ||
- | \\ | + | |
- | \\ | + | |
配置好以后编译下载程序。可以调整例化分频器时传递的参数来调整流水灯的速度。 | 配置好以后编译下载程序。可以调整例化分频器时传递的参数来调整流水灯的速度。 | ||
\\ | \\ | ||
- | ====小结==== | + | ### 小结 |
- | ------ | + | |
掌握了verilog里面例化module的用法,采用模块化设计程序。模块化设计是非常重要的FPGA设计思想。在下一节我们会学习按键的另外用法[[7. 按键消抖|按键消抖]]。 | 掌握了verilog里面例化module的用法,采用模块化设计程序。模块化设计是非常重要的FPGA设计思想。在下一节我们会学习按键的另外用法[[7. 按键消抖|按键消抖]]。 | ||