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

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

3天内不再提示

【教程分享】FPGA零基础学习:LED流水灯设计

电子发烧友论坛 来源:未知 2023-03-14 09:20 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本系列将带来FPGA的系统性学习,从最基本的数字电路基础开始,最详细操作步骤,最直白的言语描述,手把手的“傻瓜式”讲解,让电子、信息、通信类专业学生、初入职场小白及打算进阶提升的职业开发者都可以有系统性学习的机会。

系统性的掌握技术开发以及相关要求,对个人就业以及职业发展都有着潜在的帮助,希望对大家有所帮助。后续会陆续更新 Xilinx 的 Vivado、ISE 及相关操作软件的开发的相关内容,学习FPGA设计方法及设计思想的同时,实操结合各类操作软件,会让你在技术学习道路上无比的顺畅,告别技术学习小BUG卡破脑壳,告别目前忽悠性的培训诱导,真正的去学习去实战应用,这种快乐试试你就会懂的。话不多说,上货。

LED流水灯设计

在学习软件设计时,第一个例程总是“hello world!”,那么学习硬件时,也会有硬件的“hello world”------流水灯。本篇硬件基于叁芯智能科技的 SANXIN-B01开发板,如有想要入手,可查看以下链接,官方淘宝店已上架。

在FPGA开发板上有四个LED,我们要做的流水灯,顾名思义就是要LED像流水一样的点亮熄灭。直白点说就是,点亮第一个一段时间,然后熄灭第一个的同时,点亮第二个·····。在此,我们设置每一个LED点亮的时间为1秒钟。

硬件介绍

在我们的开发板上有四个LED,设计逻辑为:FPGA输出高电平时,LED点亮;FPGA输出低电平时,LED熄灭。

da425626-c205-11ed-bfe3-dac502259ad0.png

架构设计和信号说明

da5cd5fa-c205-11ed-bfe3-dac502259ad0.png

本设计的模块名称为ledrun。

da638f76-c205-11ed-bfe3-dac502259ad0.png


建立工程、新建文件等步骤在专辑前篇中已经明确罗列,以后将不再叙述。这里给出超链接,方便参考学习。

FPGA零基础学习:Intel FPGA 开发流程

设计代码

da7f116a-c205-11ed-bfe3-dac502259ad0.png

parameter可以定义一个参数(默认是32位)。在写代码时,对于某些数字,设计者经常利用定义参数的方式进行编写,方便修改,也方便阅读。

在硬件电路中,使用计数器当做计时器,每记录一个数字等于过去一个时钟周期。由于本设计中采用的clk为50MHz,所以经过50_000_000(在verilog中,如果是描述数字,中间的下划线只起到分隔的作用,不影响数值的大小)个周期正好为1秒钟。由于计数器是从0开始计数,所以计数器只需要记录到50_000_000-1即可。

为了能够记录到50_000_000-1这么大的数字,所以定义了一个26位的计数器cnt(参考附录1:设计中位宽的概念和计算位宽的小技巧)。

在verilog中,“{}”( 大括号)的第一个特殊作用为位拼接。{a,b}相当于将a和b拼接为一个整体,并且是高位为a,低位为b。

当led输出为4’b0001时,第一个led点亮;经过1秒钟,输出4’b0010时,第二个led点亮;经过1秒钟,输出4’b0100时,第三个led点亮;经过1秒钟,输出4’b1000时,第四个led点亮;经过1秒钟,输出4’b0001时,第一个led点亮······按照上述的过程周而复始,就形成了流水灯。

不难发现,led的输出,一直为3个0,1个1。并且1的位置每1秒钟移动一次,从头到尾,然后又到头。这种现象可以利用移位的思想进行实现。即:led[3]<=led[2]; led[2]<=led[1]; led[1]<=led[0]; led[0]<=led[3];如果将被赋值的组成一个整体,那就是led,赋值的组成一个整体就是{led[2:0], led[3]}。

仿真代码

da8e9bc6-c205-11ed-bfe3-dac502259ad0.png

$stop是一个系统任务,功能为将modelsim的仿真停止。

设置好testbench后,运行分析综合后,打开RTL仿真。

波形分析

在modelsim中,打开sim窗口,选择ledrun_tb下的ledrun_inst。

daa7a602-c205-11ed-bfe3-dac502259ad0.png

打开objects,将cnt选中。

dabaa478-c205-11ed-bfe3-dac502259ad0.png

objects窗口中显示在sim窗口中选中模块中所有的信号。

右击,将其添加入波形窗口。

dac2e110-c205-11ed-bfe3-dac502259ad0.png

返回到wave窗口中,cnt信号已经添加到wave窗口中。由于新添加进来,没有数据(no data)。

dacbdd88-c205-11ed-bfe3-dac502259ad0.png

点击restart。

daecd9a2-c205-11ed-bfe3-dac502259ad0.png

restart按钮为重新运行波形,点击后,软件会询问是否保持各种属性,点击ok即可。

db08dd8c-c205-11ed-bfe3-dac502259ad0.png

wave窗口中所有的波形都处于no data 状态。点击run –all按钮,开始运行波形。

db23072a-c205-11ed-bfe3-dac502259ad0.png

运行后,会自动停止。停止在tb文件中的$stop处。

返回wave窗口,各个信号都会有波形。

设置cnt的信号进制为无符号的十进制:右击cnt信号,选择radix中的unsigned。

db396dee-c205-11ed-bfe3-dac502259ad0.png

把光标放到复位结束时,选择放大波形。

放大按钮的左侧第一个按钮为全局缩放,功能为将所有运行波形,显示到目前的窗口里;左侧第二个为缩小。最左边和最右边的按钮暂时用不到,这里不再介绍。

db433f4a-c205-11ed-bfe3-dac502259ad0.png

可以看到,在复位结束后,cnt信号每一个时钟周期都会增加1。

由于我们设计的流水灯是每1秒钟流动一个,在上述的仿真中,led数值是不会变化的。如果仿真几秒钟的话,仿真的时间会比较长。在此不建议仿真几秒钟的时长,有可能会导致电脑卡住。

仿真时,可以将T_1s的值,改成一个较小值。例如:5。然后在此编译仿真。

quartus的编译器中,修改完后。进行综合分析,保证没有任何语法错误。在之前打开的modelsim中,打开library窗口,找到最上面的work,打开其前面的“+”。

db490ace-c205-11ed-bfe3-dac502259ad0.png

选中刚才修改过的文件,右击,选择recompile。此时,modelsim会重新编译此文件。

回到wave窗口中,点击restart,run-all。运行波形。

能够清楚的看到,led在进行移位,并且都是5个周期移动一次。

db635e4c-c205-11ed-bfe3-dac502259ad0.png

仿真通过后,关闭modelsim。回到quartus中,将参数修改成为50_000_000,综合分析后,分配管脚。布局布线,生成配置文件,进行下板测试。

开发板上的四个LED开始做流水状点亮。


本文由电子发烧友社区发布,转载请注明以上来源。如需社区合作及入群交流,请添加微信EEFans0806,或者发邮箱liuyong@huaqiu.com

db7f1e70-c205-11ed-bfe3-dac502259ad0.png

热门推荐干货好文

1、RK3568!四核64位ARMv8.2A架构,汇聚编译源码及实战样例

2、开源作品秀,教你如何DIY一款自己的声源跟踪小车

3、从零入门物联网OH开源平台,从简单到高阶项目,创客电子爱好者都爱用!

4、低成本ESP32方案,支持OpenHarmony系统开发(附10+项目样例Demo)

5、从0到1玩转瑞萨RA4系列开发板,教你变着花样玩板子

6、四核64位,超强CPU ,看RK3568“竞”开发板DEMO!

7、人工智能也能这么玩, 简单快速入手,还能自定义AI运算

8、全部开源 | 基于全志V85X的运动相机,工业网关,可穿戴式摄像头

9、高性能双核RISC-V,满足大多数开发,这款国产MCU工程师都爱


原文标题:【教程分享】FPGA零基础学习:LED流水灯设计

文章出处:【微信公众号:电子发烧友论坛】欢迎添加关注!文章转载请注明出处。


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

原文标题:【教程分享】FPGA零基础学习:LED流水灯设计

文章出处:【微信号:gh_9b9470648b3c,微信公众号:电子发烧友论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    蜂鸟E203在黑金XC7A200T型FPGA上点亮LED并实现流水灯

    一、队伍介绍 本篇介绍的内容是蜂鸟E203在黑金XC7A200T型FPGA上点亮LED并实现流水灯。 二、前言 在此之前我们已经将蜂鸟E203在黑金XC7A200T型FPGA开发
    发表于 10-31 09:04

    免焊BNC接头接法:零基础快速安装指南与信号稳定技巧

    通过以上步骤,即使零基础用户也能快速完成免焊BNC接头的安装,确保视频、音频信号稳定传输,满足监控、音视频工程等场景需求。
    的头像 发表于 08-28 16:59 801次阅读
    免焊BNC接头接法:<b class='flag-5'>零基</b>础快速安装指南与信号稳定技巧

    【沁恒CH585开发板免费试用体验】GPIO 流水灯

    开发环境: IDE:MounRiver Studio MCU:CH585 1 GPIO工作原理 熟悉单片机的朋友都知道,学习的第一个例程就是流水灯,要想实现流水灯,首先必须了解GPIO的工作原理
    发表于 07-04 22:55

    【教程】零基础!手把手教你使用STM32F4进行E22-400T22S编程通信

    通过本文带大家零基础使用STM32F407VET6单片机进行E22-400T22S模块编程并进行简单的通信,当然如果学会了,也可以举一反三应用于E22、E220、E32所有模块上。一STM32环境
    的头像 发表于 07-03 19:32 1077次阅读
    【教程】<b class='flag-5'>零基</b>础!手把手教你使用STM32F4进行E22-400T22S编程通信

    零基学习LuatOS编程:快速上手开发实战教程!

    无论你是刚接触物联网编程的新手,还是希望拓展技能的技术爱好者,本教程将为零基础的读者提供一条清晰的LuatOS学习路径。从安装开发工具到编写第一个程序,我们将通过实例讲解核心概念,助你快速实现从理论
    的头像 发表于 06-13 17:27 458次阅读
    <b class='flag-5'>零基</b>础<b class='flag-5'>学习</b>LuatOS编程:快速上手开发实战教程!

    【「零基础开发AI Agent」阅读体验】+读《零基础开发AI Agent》掌握扣子平台开发智能体方法

    收到发烧友网站寄来的《零基础开发AI Agent》这本书已经有好些天了,这段时间有幸拜读了一下全书,掌握了一个开发智能体的方法。 该书充分从零基础入手,先阐述了Agent是什么,它的基本概念和知识
    发表于 05-14 19:51

    【「零基础开发AI Agent」阅读体验】+ 入门篇学习

    很高兴又有机会学习ai技术,这次试读的是「零基础开发AI Agent」,作者叶涛、管锴、张心雨。 大模型的普及是近三年来的一件大事,万物皆可大模型已成为趋势。作为大模型开发应用中重要组成部分,提示词
    发表于 05-02 09:26

    【RA-Eco-RA4M2开发板评测】点灯实现6种LED花式流水灯操作

    很高兴收到瑞萨电子提供的RA4M2开发板,这次帖子就专门用来说说专业点灯操作,实现各种花式的流水灯,可以十分方便地控制LED的各种状态,甚至多个LED组合控制,如跑马灯等。 打开原理图,可以看到3个
    发表于 04-28 21:28

    【RA-Eco-RA4M2开发板评测】2 初识GPIO流水灯

    工作原理 熟悉单片机的朋友都知道,学习的第一个例程就是流水灯,要想实现流水灯,首先必须了解GPIO的工作原理。GPIO的基本结构如下图所示。 Figure ‑ GPIO的基本结构 和其他
    发表于 04-25 23:06

    【「零基础开发AI Agent」阅读体验】+初品Agent

    期待中的《零基础开发AI Agent——手把手教你用扣子做智能体》终于寄到了,该书由叶涛、 管锴、张心雨完成,并由电子工业出版社出版发行。 全书分为三个部分,即入门篇、工具篇及实践篇。由此可见这是
    发表于 04-22 11:51

    零基学习一阶RC低通滤波器(从原理到实践)

    *附件:零基学习一阶RC低通滤波器(从原理到实践).docx
    发表于 03-26 14:35

    #中国香河英茂科工#STC32G12K128#屠龙刀三.2 流水灯例程

    流水灯
    丙丁先生
    发布于 :2025年01月19日 14:19:35

    Vivado Tcl零基础入门与案例实战【高亚军编著】

    Vivado Tcl零基础入门与案例实战-高亚军编写
    发表于 01-14 11:13

    【正点原子STM32H7R3开发套件试用体验】流水灯

    【正点原子STM32H7R3开发套件试用体验】流水灯 本文介绍了使用 STM32CubeMX 辅助配置 GPIO 及晶振参数,实现流水灯的方法。 工程创建 1.打开 STM32CubeMX 软件
    发表于 12-28 18:51

    低成本单片机方案——触摸流水灯开关控制

    概述本方案旨在提供一种基于低成本单片机的触摸流水灯开关控制解决方案。该方案结合了单片机技术、电容式触摸传感技术和LED驱动技术,实现了通过触摸操作控制流水灯的效果。
    的头像 发表于 12-26 16:37 1196次阅读
    低成本单片机方案——触摸<b class='flag-5'>流水灯</b>开关控制