差别

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

到此差别页面的链接

后一修订版
前一修订版
one_led_on [2021/09/15 22:37]
gongyu 创建
one_led_on [2021/10/02 11:57] (当前版本)
gongyu [3. 代码]
行 1: 行 1:
-### 2. 点亮一颗LED+### 点亮一颗LED 
 +在这个示例中,我们先以点亮FPGA核心板上的任意一个LED为例,看一下LED的工作原理以及小脚丫FPGA上的LED的配置,Verilog的基本语法。
  
-根据Web IDE的使用流程介绍,我们先创建一个叫one_led_onoff的工程,并在该工程里面创建一个叫one_led_on.v的代码(代码名字跟工程的名字不需要一致):+### 1. 知识点 
 +  * LED的工作原理 
 +  * Web IDE的使用 
 +  * FPGA管脚的配置和使用 
 +  * FPGA的设计流程 - 从创建项目到下载代码 
 +  * Verilog的基本语法结构 
 + 
 +### 2. 原理图 
 +{{drawio>​fpga_one_led.png}} 
 + 
 +从这个图中可以看出,如果连接该LED的FPGA的IO管脚是高电平(在Verilog代码中设置为1‘b1),LED两端都是高电平,无电流通过LED,将连接该LED的FPGA的IO管脚电平拉低(在Verilog代码中设置为1‘b0),LED两端的压差让电流流过,流过的电流取决于限流电阻的大小: 
 +I =(3.3V - Vfd)/ R 
 +其中Vfd为LED的前向电压,可见要点亮LED,供电电压必须超过Vfd才行,多数LED的Vfd在1.7V-1.8V左右,用1.2V的电压来直接驱动LED是不可能的。 
 +电流的大小会影响LED的亮度,对于同一颗LED,限流电阻变大,会让LED的亮度变暗,限流电阻变小,LED的亮度会变大,在本核心板上,LED的限流电阻都为1kΩ。 
 + 
 +LED的亮度也取决于其工艺和材料,这个需要查阅生产厂商提供的数据。 
 + 
 +总之,要让LED亮,就要把对应的IO管脚设置为低电平。 
 + 
 +### 3. Verilog代码 
 + 
 +根据[[https://​www.stepfpga.com/​doc/​online_ide|Web IDE的使用流程介绍]],我们先创建一个工程,并在该工程里面创建一个.v的代码(.v表示verilog的代码,代码名字跟工程的名字不需要一致):
  
 <code verilog> <code verilog>
行 21: 行 43:
   * 定义完端口,就开始逻辑的主体,在这里也很简单,只是让led这个管脚信号为低电平,使用连续赋值的assign语句 - assign led = 1'b0, 1’b0表示为一位的数字,而且值为“0”。从电路结构角度讲,每个连续赋值语句对应一个子模块,其左侧的变量表示为电路的输出,右侧的逻辑表达式为电路需要执行的逻辑操作。   * 定义完端口,就开始逻辑的主体,在这里也很简单,只是让led这个管脚信号为低电平,使用连续赋值的assign语句 - assign led = 1'b0, 1’b0表示为一位的数字,而且值为“0”。从电路结构角度讲,每个连续赋值语句对应一个子模块,其左侧的变量表示为电路的输出,右侧的逻辑表达式为电路需要执行的逻辑操作。
  
 +### 4. 管脚分配
 点击Web IDE的第二个功能键“逻辑综合”,系统会自动将你写好的Verilog代码进行综合,如果没有语法错误,则给你一个Success的信息,你就可以走到下一步 - “管脚分配”了。 我们的Web IDE会根据你写好的module自动提取输入输出管脚的名字,你只要使用鼠标,通过图形化的界面将这些module里的端口信号的名字映射到相应的管脚上即可,在这里我们将led映射到板子上的第三个led,鼠标指向led3,其右侧会弹出一个向下的箭头,点击该箭头,就可以看到led的名字了(如果多个端口还没有分配管脚,这些未分配的端口信号的名字会出现在列表中),选中led,完成映射 点击Web IDE的第二个功能键“逻辑综合”,系统会自动将你写好的Verilog代码进行综合,如果没有语法错误,则给你一个Success的信息,你就可以走到下一步 - “管脚分配”了。 我们的Web IDE会根据你写好的module自动提取输入输出管脚的名字,你只要使用鼠标,通过图形化的界面将这些module里的端口信号的名字映射到相应的管脚上即可,在这里我们将led映射到板子上的第三个led,鼠标指向led3,其右侧会弹出一个向下的箭头,点击该箭头,就可以看到led的名字了(如果多个端口还没有分配管脚,这些未分配的端口信号的名字会出现在列表中),选中led,完成映射
  
行 26: 行 49:
  
 点击“FPGA映射”,系统会自动根据你分配好的管脚执行,生成JED文件,如果没有错误,会列出一堆的信息后,告诉你生成了jed的文件,在这段信息中也会有详细的资源使用报告,这些资源报告的信息也是很重要的,为完成同样一个功能,不同的人写出来的逻辑占用的资源也是不同的。 点击“FPGA映射”,系统会自动根据你分配好的管脚执行,生成JED文件,如果没有错误,会列出一堆的信息后,告诉你生成了jed的文件,在这段信息中也会有详细的资源使用报告,这些资源报告的信息也是很重要的,为完成同样一个功能,不同的人写出来的逻辑占用的资源也是不同的。
 +
 +### 5. 功能验证
  
 这时候您可以点击“文件下载”,选择第二个按钮“下载JED文件”,鼠标右键 --》另存为。。。指向到StepFPGA的盘即可完成对FPGA的下载编程。 这时候您可以点击“文件下载”,选择第二个按钮“下载JED文件”,鼠标右键 --》另存为。。。指向到StepFPGA的盘即可完成对FPGA的下载编程。
  
 {{ :​one_led_on.jpg?​800 |}} <WRAP centeralign>​ 配置到FPGA以后的效果,第三颗LED灯亮 </​WRAP>​ {{ :​one_led_on.jpg?​800 |}} <WRAP centeralign>​ 配置到FPGA以后的效果,第三颗LED灯亮 </​WRAP>​