差别
这里会显示出您选择的修订版和当前版本之间的差别。
| 两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
|
one_led [2021/09/15 11:51] gongyu |
— (当前版本) | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| - | ## 点亮LED | ||
| - | |||
| - | 就像软件编程里的“Hello World”,点灯是FPGA学习的第一步,不要小瞧这么一颗小小的灯,点灯的方式可以有多种。在本节,我们通过几个点灯的程序达到以下的目标: | ||
| - | - 体验LED的工作原理; | ||
| - | - 了解Verilog代码的结构 | ||
| - | - 体验FPGA设计从创建工程 --》 输入代码 --》 逻辑综合 --》 分配管脚 --》 生成可下载的JED文件 --》 配置FPGA整个过程(理论知识参见[[fpga_design_tool|FPGA设计流程]]) | ||
| - | |||
| - | 在本实例中,我们以Web IDE为例,同样的示例也可以通过Lattice的官方FPGA设计工具[[Diamond]]或Intel的官方设计工具[[Quartus]]来实现。 | ||
| - | |||
| - | ### 1. 硬件说明 | ||
| - | STEP-MXO2 V2开发板虽然很小巧,上面也集成了不少外设,在本实验里我们就看看如何用FPGA控制简单外设,如何用按键或者开关控制LED的亮和灭。 | ||
| - | \\ | ||
| - | {{ :led.png?600 |}} | ||
| - | \\ | ||
| - | 这是开发板上的8个红色LED,LED1~8信号连接到FPGA的引脚,作为FPGA输出信号控制。当FPGA输出低电平时LED变亮,当FPGA输出高电平时LED熄灭。 | ||
| - | \\ | ||
| - | {{ ::button.png?600 |}} | ||
| - | \\ | ||
| - | 这是开发板上4个按键和4个开关,Key1~4是按键控制信号,SW1~4是开关控制信号,都连接到FPGA的引脚,作为FPGA的输入信号。当按键断开时,FPGA输入为高电平,当按键按下时,FPGA输入为低电平;当开关断开(OFF)时,FPGA输入为低电平,当开关合上(ON)时,FPGA输入为高电平。 | ||
| - | \\ | ||
| - | 所以我们可以用开关或者按键来控制LED的亮灭。 | ||
| - | \\ | ||
| - | |||
| - | ### 2. 最简单的Verilog代码,点亮一颗LED | ||
| - | <code verilog> | ||
| - | module led_onoff(led); | ||
| - | output led; | ||
| - | |||
| - | assign led = 1'b0; | ||
| - | |||
| - | endmodule | ||
| - | |||
| - | </code> | ||
| - | |||
| - | {{ :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的使用]]。 | ||
| - | |||