差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
6._led流水灯 [2017/03/05 18:57]
zhijun [Verilog代码]
6._led流水灯 [2019/09/06 11:50] (当前版本)
gongyu
行 1: 行 1:
-=====LED流水灯=====+####LED流水灯 
 + 
 +--- 
 + 
 +在[[5. 时钟分频|时钟分频]]实验中我们练习了如何处理时钟,接下来我们要学习如何利用时钟来完成时序逻辑。
  
-在[[5. 时钟分频|时钟分频]]实验中我们联系了如何处理时钟,接下来我们要学习如何利用时钟来完成时序逻辑。 
 \\ \\
-====硬件说明==== + 
--------+####硬件说明 
 + 
 +--- 
 流水灯实现是很常见的一个实验,虽然逻辑比较简单,但是里面也包含了实现时序逻辑的基本思想。要用FPGA实现流水灯有很多种方法,在这里我们会用两种不同的方法实现。 流水灯实现是很常见的一个实验,虽然逻辑比较简单,但是里面也包含了实现时序逻辑的基本思想。要用FPGA实现流水灯有很多种方法,在这里我们会用两种不同的方法实现。
 \\  ​ \\  ​
行 12: 行 18:
 \\  ​ \\  ​
 2,循环赋值:这是一种很简洁的实现流水灯效果逻辑,就是定义一个8位的变量,在每个时钟上升沿将最低位赋值给最高位,其他位右移一位,这就实现了循环赋值。这8位输出到LED就能实现流水灯。 2,循环赋值:这是一种很简洁的实现流水灯效果逻辑,就是定义一个8位的变量,在每个时钟上升沿将最低位赋值给最高位,其他位右移一位,这就实现了循环赋值。这8位输出到LED就能实现流水灯。
 +
 \\    \\   
  
-====Verilog代码==== +####Verilog代码 
-------+ 
 +--- 
 模块化设计是用硬件描述语言进行数字电路设计的精髓,代码可重复利用。而且模块化的设计使得程序的结构也很清晰。这里我们首先看看流水灯的模块化设计。利用了之前的3-8译码器和分频器,你需要把这两个程序也拷贝到一个工程。 模块化设计是用硬件描述语言进行数字电路设计的精髓,代码可重复利用。而且模块化的设计使得程序的结构也很清晰。这里我们首先看看流水灯的模块化设计。利用了之前的3-8译码器和分频器,你需要把这两个程序也拷贝到一个工程。
 <code verilog> <code verilog>
行 107: 行 116:
  );                               );                             
   
-        //​1Hz时钟上升沿触发循环赋值 +        //​1Hz时钟上升沿触发循环赋值 
 +        reg [7:0] led;
         always@(posedge clk1h or negedge rst)         always@(posedge clk1h or negedge rst)
  begin  begin
行 115: 行 125:
  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>  ​
 +
 \\  ​ \\  ​
-====引脚分配==== + 
-------- +####引脚分配 
-小脚丫上正好有4路按键和4路开关,可以用来作为输入信号分别控制数码管的输出。按照下面表格定义输入输出信号+ 
 +--- 
 + 
 +按照下面表格定义输入输出信号
 \\ \\
 ^信号 ​           ^引脚 ​           ^信号 ​             ^引脚 ​   ^    ^信号 ​           ^引脚 ​           ^信号 ​             ^引脚 ​   ^   
行 132: 行 147:
  
 配置好以后编译下载程序。可以调整例化分频器时传递的参数来调整流水灯的速度。 配置好以后编译下载程序。可以调整例化分频器时传递的参数来调整流水灯的速度。
 +
 \\ \\
  
-====小结==== +####小结 
------- + 
-掌握了verilog里面例化module的用法,采用模块化设计程序。模块化设计非常重要的FPGA设计思想。在下一节我们会学习按键的另外用法[[7. 按键消抖|按键消抖]]。+--- 
 + 
 +掌握了verilog里面例化module的用法,采用模块化设计程序。模块化设计非常重要的FPGA设计思想。在下一节我们会学习按键的另外用法[[7. 按键消抖|按键消抖]]。