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,微信公众号:电子发烧友论坛】欢迎添加关注!文章转载请注明出处。

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    【紫光HiYou开源入门轻量级PCIE开发板PG2L25G】实验例程2-基于紫光FPGA 的键控流水灯实验例程

    控制模块和LED显示模块的设计实现。实验通过按键切换三种LED显示模式(流水灯、交替闪烁、暗灯流水),展示了FPGA模块化设计方法,包括子模
    的头像 发表于 05-20 11:48 2032次阅读
    【紫光HiYou开源入门轻量级PCIE开发板PG2L25G】实验例程2-基于紫光<b class='flag-5'>FPGA</b> 的键控<b class='flag-5'>流水灯</b>实验例程

    【紫光HiYou开源入门轻量级PCIE开发板PG2L25G】实验例程1-基于紫光FPGALED 流水灯

    深圳市小眼睛科技联合紫光同创推出基于国产FPGA芯片的HiYou开源开发板(OPHW-25H),该开发板具备PCIe接口和全方位开源特性。文章详细介绍了通过FPGA实现按键控制LED灯顺序点亮的实验
    的头像 发表于 05-20 11:07 50次阅读
    【紫光HiYou开源入门轻量级PCIE开发板PG2L25G】实验例程1-基于紫光<b class='flag-5'>FPGA</b> 的<b class='flag-5'>LED</b> <b class='flag-5'>流水灯</b>

    零基础手写大模型资料2026

    零基础纯代码手写大模型:从数学原理到工程实践的技术解析 在深度学习框架高度封装的今天,理解大模型底层原理的开发者愈发稀缺。本文将剥离复杂框架的依赖,从数学基础出发,解析如何用基础代码实现一个具备
    发表于 05-01 17:44

    零基础玩转Linux+Ubuntu实战视频课程

    极速拆解《小白也能学会:Linux+Ubuntu 零基础实战通关课程》 面对这种标榜“零基础”、“通关”的 Linux 长篇大论,绝大多数人的死穴是:把它当成“字典”去啃。他们试图记住 ls -l
    发表于 04-18 16:16

    2小时搞定鸿蒙应用!零基础做出你的鸿蒙“处女作”

    当下,低门槛开发正成为生态扩张的最强推力,而鸿蒙生态的快速壮大,也让越来越多零基础小白蠢蠢欲动,想加入开发大军。但繁琐的配置流程、深奥的代码,也让很多人打起了退堂鼓。近日,鸿蒙开发者官网全新上线
    的头像 发表于 04-17 14:04 189次阅读
    2小时搞定鸿蒙应用!<b class='flag-5'>零基</b>础做出你的鸿蒙“处女作”

    使用FPGA控制上千颗RGB LED流水灯

    国内还有一个FPGA技术在特定垂直的领域-LED 显示。今天就从开源项目展开讲讲这个领域中FPGA扮演的角色。
    的头像 发表于 03-25 17:52 1081次阅读

    学习单片机快速方法

    要知道流水灯是怎么和单片机连接的(一般学习板都配有电路图)。然后你要能编写不同的程序去控制LED的亮灭,花样就随你遍了。 有时间的话可以去网上下载些流水灯的源程序看看。看看人家有什么
    发表于 01-14 07:42

    手把手教学:零基础玩转GNSS调试工具iNavTool!

    想要高效完成GNSS模块的调试工作,离不开专业工具的支持。iNavTool因其用户友好的界面和强大的调试能力,受到广泛欢迎。本文将以零基础用户为对象,通过详细步骤指导,带您一步步掌握iNavTool
    的头像 发表于 11-01 19:35 721次阅读
    手把手教学:<b class='flag-5'>零基</b>础玩转GNSS调试工具iNavTool!

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

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

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

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

    FPGA在机器学习中的具体应用

    随着机器学习和人工智能技术的迅猛发展,传统的中央处理单元(CPU)和图形处理单元(GPU)已经无法满足高效处理大规模数据和复杂模型的需求。FPGA(现场可编程门阵列)作为一种灵活且高效的硬件加速平台
    的头像 发表于 07-16 15:34 3179次阅读

    【沁恒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 1933次阅读
    【教程】<b class='flag-5'>零基</b>础!手把手教你使用STM32F4进行E22-400T22S编程通信

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

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

    STC8H 单片机 + RA8889/RA6809:重新定义嵌入式触控交互_高流畅、低延迟、零基础的人机界面(一)

    STC8H 单片机 + RA8889/RA6809:重新定义嵌入式触控交互_高流畅、低延迟、零基础的人机界面
    的头像 发表于 05-28 16:01 1593次阅读
    STC8H 单片机 + RA8889/RA6809:重新定义嵌入式触控交互_高流畅、低延迟、<b class='flag-5'>零基</b>础的人机界面(一)