差别

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

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
one_led [2021/09/15 12:08]
gongyu [2. 最简单的Verilog代码,点亮一颗LED]
— (当前版本)
行 1: 行 1:
-## 点亮LED 
- 
-就像软件编程里的“Hello World”,点灯是FPGA学习的第一步,不要小瞧这么一颗小小的灯,点灯的方式可以有多种。在本节,我们通过几个点灯的程序达到以下的目标: 
-  - 体验LED的工作原理; 
-  - 了解Verilog代码的结构 
-  - 体验FPGA设计从创建工程 --》 输入代码 --》 逻辑综合 --》 分配管脚 --》 生成可下载的JED文件 --》 配置FPGA整个过程(理论知识参见[[fpga_design_tool|FPGA设计流程]]) 
- 
-在本实例中,我们以Web IDE为例,同样的示例也可以通过Lattice的官方FPGA设计工具[[Diamond]]或Intel的官方设计工具[[quartus_prime]]来实现。 
- 
-### 1. 硬件说明 
-在这个实验中,我们主要用到小脚丫FPGA开发板上的以下几个外设: 
-  * 板上有8个LED灯,可以选用其中的任何一个做单LED的实验 
-\\ 
-{{ :​led.png?​600 |}} <WRAP centeralign>​ 这是开发板上的8个红色LED,LED1~8信号连接到FPGA的引脚,作为FPGA输出信号控制。当FPGA输出低电平时LED变亮,当FPGA输出高电平时LED熄灭。</​WRAP>​ 
- 
-  * 板上有4个按键和4个开关,用做输入控制 
-\\ 
-{{ ::​button.png?​600 |}} <WRAP centeralign>​ 这是开发板上4个按键和4个开关,Key1~4是按键控制信号,SW1~4是开关控制信号,都连接到FPGA的引脚,作为FPGA的输入信号。当按键断开时,FPGA输入为高电平,当按键按下时,FPGA输入为低电平;当开关断开(OFF)时,FPGA输入为低电平,当开关合上(ON)时,FPGA输入为高电平。</​WRAP>​ 
- 
-所以我们可以用开关或者按键来控制LED的亮灭。 
-\\ 
- 
-### 2. 用最简单Verilog代码点亮一颗LED 
-<code verilog> 
- 
-module one_led_on(led);​ 
-output led; 
- 
-assign led = 1'b0; 
- 
-endmodule 
- 
-</​code>​ 
- 
-这段代码可以说是最简单的一段Verilog程序了,从这段程序中可以看出Verilog语言的基本结构 
-  * 以module(模块)开始,endmodule结束的一段程序为描述某一项功能的基本单元,类似软件里面的子程序;​ 
-  * 每个模块都有其名字,建议用贴切含义的英文来命名(比如本示例里面的one_led_on),可读性强,也不会出现莫名其妙的编译错误;​ 
-  * 每个模块都有用()包裹起来的端口 - 跟其它模块或FPGA的外围电路打交道的输入输出信号,在本示例只用了一个端口led,因此()中只有一个端口的名字; 
-  * 对每一个端口的属性进行定义 - 是输入还是输出,是导线wire类型,还是存储器reg类型,在这里只用了一个输出端口led,对其属性“output”进行了定义,指定其为输出信号; 
-  * 定义完端口,就开始逻辑的主体,在这里也很简单,只是让led这个管脚信号为低电平,使用assign语句 - assign led = 1'b0, 1’b0表示为一位的数字,而且值为“0” 
- 
-{{ :​oneled_on.jpg?​800 |}} <WRAP centeralign>​ 在“管脚分配”里将第三颗LED配置为亮 (ON)</​WRAP>​ 
- 
- 
- 
-### 2. Verilog代码 
- 
-<code verilog> 
- 
-// ******************************************************************** 
-// >>>>>>>>>>>>>>>>>>>>>>>>>​ COPYRIGHT NOTICE <<<<<<<<<<<<<<<<<<<<<<<<<​ 
-// ******************************************************************** 
-// File name    : LED.v 
-// Module name  : LED 
-// Author ​      : STEP 
-// Description ​ : control LED 
-// Web          : www.stepfpga.com 
-//  
-// -------------------------------------------------------------------- 
-// Code Revision History :  
-// -------------------------------------------------------------------- 
-// Version: |Mod. Date:   ​|Changes Made: 
-// V1.0     ​|2017/​03/​02 ​  ​|Initial ver 
-// -------------------------------------------------------------------- 
-// Module Function:​利用按键和开关的状态来控制LED灯的亮灭。 
- 
-module LED (key,​sw,​led);​ 
- 
- input [3:0] key;​ //​按键输入信号 
- input [3:0] sw;​ //​开关输入信号 
- output [7:0] led;​ //​输出信号到LED 
-  
- assign led = {key,​sw}; ​                                         //​assign连续赋值。大括号是拼接符,表示把key和sw拼接组成一个新的8位数赋值给led 
-  
-endmodule 
- 
-</​code>​ 
- 
-\\  ​ 
-\\  ​ 
- 
-### 3. 引脚分配 
- 
-综合(synthesize)完成之后一定要配置FPGA的引脚到相应的外设,这样下载FPGA程序后才能达到我们想要的效果。 
-\\ 
-{{led1.png?​300|}} ​ {{button1.png?​300|}} 
-\\ 
- 
-### 4. 小结 
- 
-下载完程序后就可以实现按键开关控制LED灯的亮灭。了解小脚丫STEP-MXO2 V2上的外设LED、按键和开关的使用。如果你对Diamond软件的使用不了解,请参考这里:[[lattice_diamond的使用|Diamond的使用]]。 
-