0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看威廉希尔官方网站 视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于FPGA点亮LED灯

CHANBAEK 来源:小小研究生 作者:xxyjs2020 2023-05-11 17:31 次阅读

设计流程:

设计规划--波形绘制--编写代码--代码编译--编写testbench--对比波形--绑定管脚--全编译--上板验证

设计规划

使用用户手册,了解硬件资源,这个示例中需要用到按键和LED灯:

1、按键

在没有按键按下时,输出高电平(红色); 当按键按下的时候,被按下的按键端会输出低电平(蓝色)。

图片

2、LED灯

FPGA 输出低电平时,LED 点亮,当 LED 输出高电平时,没有电位差,LED 灯熄灭。

图片

由上可知:需要实现的功能是,当按下按键时(key_in=0,PIN_M16管脚),LED灯要被点亮(led_out=0,PIN_A2管脚)。 此处波形非常简单,省略画波形的步骤,对于复杂电路还是需要画波形来理清思路。 这里波形应该是key与led波形一致。

打开quartus,新建工程。

图片

图片

编写代码

编写.v文件,代码如下:

module led
(
input wire key_in , //输入按键
output wire led_out //输出控制led灯
);
//led_out:led灯输出的结果为key_in按键的输入值
assign led_out = key_in;
endmodule

将.v文件添加到文件目录下,右键Files文件夹选择添加.v文件,添加完成后可以在Files下看到添加的.v文件:

图片

代码编译

点击如图所示的图标,可以检查语法是否有错,综合器将代码解释为电路的形式。 绿色表示通过。

图片

图片

点击RTL viewer可以查看设计的硬件电路结构,和我们设计所表达的意思相同

图片

编写testbench

Testbench是测试电路功能和性能的脚本。 在线逻辑分析虽然好用但是每次修改代码都需要综合一次,而使用testbench做仿真的速度就很快,所以一开始就应该编写testbench以便后面大型电路的验证。

testbench就是产生输入波形,加入到被测模块上并观测其输出,和我们之前画好的波形进行比对。

编写.v文件

`timescale 1ns/1ns    //时间尺度/时间精度,时间精度<=时间尺度
module tb_led();    


wire led_out ;
reg key_in ;
//初始化输入信号
initial key_in <= 1'b0;


//key_in:产生输入随机数,interwetten与威廉的赔率体系
按键的输入情况
always #10 key_in <= {$random} % 2; /*取模求余数,产生非负随机数0、1
每隔10ns产生一次随机数*/


//\\* Instantiate \\//
led led_inst
(
.key_in (key_in ), //input key_in


.led_out(led_out) //output led_out
);


endmodule

tb_led模块中,首先定义初始的输入信号为低电平(一般时序电路使用非阻塞赋值<=),延迟10个时间单位(ns)产生随机数0或1赋值给输入,就完成了输入信号的波形设计。 根据上一节中实例化的讲解,第2-5行和第14-19行完成的功能是将上一个led.v文件中led模块与tb_led模块相连。 这样随机生成的输入信号就被加到led模块上,并得到输出led_out,通过验证led_out与我们期望的输出是否一致,就知道我们的设计是否正确。

图片

和之前的操作一样,将这个tb_led.v文件添加到Files文件下。 然后在quartus的菜单栏中找到assignments-setting,如图所示。

图片

图片

对比波形

设置完成后,点击菜单栏的tools-run simulation tool-RTL simulation,能自动打开modelsim说明之前的关联操作是成功的,如果不成功,在上一节中看怎么关联。 得到波形如图,观察得知led_out波形与key_in波形一致。

图片

分配管脚

图片

在开发板用户手册中就有对应管脚,按键有三个,我们选择M16的S0作为key_in,LED有四个,我们选择A2的LED0作为led_out。

图片

全编译

全编译需要进行布局布线,管脚绑定后就可以对全局进行布局布线了。 没有错误就可以上板了,有错误的话根据提示改。

图片

上板验证

图片

上板是需要安装USB_blaster驱动的,在设备管理器中如果USB-blaster有黄色感叹号需要右键更新,文件在安装文件quartus-drivers-USBblaster或USBblaster ii中。 安装完成后感叹号消失。

图片

再点start,右上角的progress到100%,开发板就下载完成了。

图片

按着按键A0不放,LED0一直被点亮,松手就关闭。

图片

这样最简单的小设计就实现了,坚持到这里就成功了一半哦。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1629

    文章

    21750

    浏览量

    604057
  • led灯
    +关注

    关注

    22

    文章

    1592

    浏览量

    108089
  • usb
    usb
    +关注

    关注

    60

    文章

    7955

    浏览量

    264963
  • 按键
    +关注

    关注

    4

    文章

    223

    浏览量

    57613
  • 开发板
    +关注

    关注

    25

    文章

    5074

    浏览量

    97656
收藏 人收藏

    评论

    相关推荐

    点亮STM32、FPGA和Liunx板子的LED

    摘要:你点亮过多少板子的LED呢?有很多小伙伴要求讲一下STM32、FPGA、Liunx三者之间有什么不同。其实不同点很多,口说无凭,今天就来点亮
    的头像 发表于 04-18 11:16 9282次阅读

    汇编点亮LED——极简的魅力

    介绍4句汇编语言点亮LED
    的头像 发表于 04-27 08:58 78.8w次阅读
    汇编<b class='flag-5'>点亮</b><b class='flag-5'>LED</b><b class='flag-5'>灯</b>——极简的魅力

    FPGA点亮led

    从网上下载的一个例子,作为菜鸟的我,希望大家能够喜欢!
    发表于 05-02 10:52

    怎样通过FPGA点亮开发板上的LED

    怎样去设计V0开发板LED部分的电路?怎样通过FPGA点亮开发板上的LED
    发表于 07-26 06:46

    使用STM32点亮LED的方法

    摘要:不知道小伙伴们点亮过多少板子的LED,有很多小伙伴留言说讲一下stm32、fpga、liunx他们之间有什么不同,不同点很多,口说无凭,今天就来
    发表于 11-29 06:14

    FPGA开发板中点亮LED实现时序逻辑电路的设计

    时电路状态的影响。在本篇文章中,我们通过两个实例介绍如何点亮LED实现流水灯来讲解时序逻辑电路。如何点亮LED
    发表于 07-22 15:25

    LED点亮程序

    LED点亮程序,适合初学者使用,单片机c语言程序。
    发表于 03-15 10:42 6次下载

    如何使用单片机点亮LED

    我们学单片机,第一个程序就是点亮一盏LED,那么我单片机开启面向对象方式的第一步也是点亮一盏LED
    发表于 07-16 17:39 4次下载
    如何使用单片机<b class='flag-5'>点亮</b><b class='flag-5'>LED</b><b class='flag-5'>灯</b>

    如何使用寄存器点亮LED

    本文档的主要内容详细介绍的是如何使用寄存器点亮LED
    发表于 04-15 17:00 10次下载
    如何使用寄存器<b class='flag-5'>点亮</b><b class='flag-5'>LED</b><b class='flag-5'>灯</b>

    点亮LED的源代码免费下载

    本文档的主要内容详细介绍的是点亮LED的源代码免费下载。
    发表于 09-14 08:00 1次下载
    <b class='flag-5'>点亮</b><b class='flag-5'>LED</b><b class='flag-5'>灯</b>的源代码免费下载

    史上最全的LED点灯程序—使用STM32、FPGA、Linux点亮你的LED

    摘要:不知道小伙伴们点亮过多少板子的LED,有很多小伙伴留言说讲一下stm32、fpga、liunx他们之间有什么不同,不同点很多,口说无凭,今天就来
    发表于 11-19 13:36 20次下载
    史上最全的<b class='flag-5'>LED</b>点灯程序—使用STM32、<b class='flag-5'>FPGA</b>、Linux<b class='flag-5'>点亮</b>你的<b class='flag-5'>LED</b><b class='flag-5'>灯</b>

    51单片机——点亮一个LED

    51单片机——点亮一个LED文章目录51单片机——点亮一个LED一、原理图二、
    发表于 11-23 18:06 16次下载
    51单片机——<b class='flag-5'>点亮</b>一个<b class='flag-5'>LED</b><b class='flag-5'>灯</b>

    使用STM32、SFPGA和I.MX6ULL IO点亮LED

    摘要:你点亮过多少板子的LED呢?有很多小伙伴要求讲一下STM32、FPGA、Liunx他们之间有什么不同。不同点很多,口说无凭,今天就来点亮
    的头像 发表于 03-12 09:24 2937次阅读

    点亮LED条开源分享

    电子发烧友网站提供《点亮LED条开源分享.zip》资料免费下载
    发表于 11-18 09:17 4次下载
    <b class='flag-5'>点亮</b><b class='flag-5'>LED</b><b class='flag-5'>灯</b>条开源分享

    简单的LED电路并点亮

    电子发烧友网站提供《简单的LED电路并点亮.zip》资料免费下载
    发表于 02-03 09:23 1次下载
    简单的<b class='flag-5'>LED</b><b class='flag-5'>灯</b>电路并<b class='flag-5'>点亮</b>