FPGA——实现LED流水灯

news2025/3/20 5:14:22

文章目录

  • 一、Quartusll_18.1和VS Code软件的关联
  • 二、DE2-115的时钟电路
  • 三、流水灯的分层次设计
  • 四、总结

一、Quartusll_18.1和VS Code软件的关联

1.先打开Quartus II 软件,然后选择菜单栏“Tools”下的“Options…”。

在这里插入图片描述

2.点击“Options…”,在弹出的对话框中,选择“General”选项卡下的“Preferred Text Editor”,默认使用的编 辑器是“QuartusII Test Editor”。

在“Text editor:”栏选择“Custom”选项并在“Command-line”栏通过路径浏览按钮选择 VS Code的路径。路径定位到“Code. exe”启动文件,再在后缀上加入-g %f:%l,路径根据自己的VS Code路径修改(就是-g前面冒号中的路径)。然后再点击“OK”完成 Quartus II 18.1 与VS Code的关联。

在这里插入图片描述

二、DE2-115的时钟电路

DE2-115 包含一个生成 50MHz 频率时钟信号的有源晶体振荡器,另有一个时钟缓冲器用来将缓冲后的低抖动 50MHz 时钟信号分配给 FPGA。这些时钟信号用来驱动 FPGA 内的用户逻辑电路。开发板还包含两个 SMA 连接头,用来接收外部时钟输入信号到 FPGA 或者将 FPGA的时钟信号输出到外部。另外,所有这些时钟输入都连接到 FPGA 内部的 PLL 模块上,用户可以将这些时钟信号作为 PLL 电路的时钟输入。

DE2-115 板子上的时钟分配信息和 FPGA 芯片相关的引脚配置信息如下图所示。

在这里插入图片描述

所以1秒所需的时钟周期数为50000000次。

三、流水灯的分层次设计

在DE2-115开发板上,用Verilog设计一个LED流水灯实验:用6个LED完成周期为1秒的跑马灯效果。

top顶层模块

module led_top(
    input clk,
    input reset_n,
    input pause,
    output [5:0] led
);
// 顶层模块:实例化各子模块
wire clk_1hz;  // 分频时钟信号

clock_divider divider_inst(
    .clk(clk),
    .reset_n(reset_n),
    .clk_1hz(clk_1hz)
);

led_display display_inst(
    .clk(clk),
    .reset_n(reset_n),
    .pause(pause),
    .clk_1hz_en(clk_1hz),
    .led(led)
);
endmodule

分频模块

module clock_divider(
    input clk,
    input reset_n,
    output reg clk_1hz
);
// 分频模块:50MHz -> 1Hz
parameter MAX_COUNT = 26'd49_999_999; // 50MHz时钟分频

always @(posedge clk or negedge reset_n) begin
    if (!reset_n) begin
        clk_1hz <= 1'b0;
    end else begin
        if (counter >= MAX_COUNT) begin
            counter <= 26'd0;
            clk_1hz <= ~clk_1hz;
        end else begin
            counter <= counter + 1;
        end
    end
end

reg [25:0] counter;
endmodule

显示模块

module led_display(
    input clk,
    input reset_n,
    input pause,
    input clk_1hz_en,    // 来自分频模块的使能信号
    output reg [5:0] led
);
// 显示模块:包含状态机和输出控制
reg [2:0] state;
reg running;

// 状态机控制
always @(posedge clk or negedge reset_n) begin
    if (!reset_n) begin
        state <= 3'd0;
        running <= 1'b1;
    end else begin
        // 处理暂停按键
        if (pause) running <= ~running;
        
        // 状态转移(使用分频后的时钟使能)
        if (running && clk_1hz_en) begin
            state <= (state == 3'd5) ? 3'd0 : state + 1;
        end
    end
end

// LED输出控制(保持不变)
always @(*) begin
    case(state)
        3'd0: led = 6'b000001;
        3'd1: led = 6'b000010;
        3'd2: led = 6'b000100;
        3'd3: led = 6'b001000;
        3'd4: led = 6'b010000;
        3'd5: led = 6'b100000;
        3'd5: led = 6'b100000;
        default: led = 6'b000000;
    endcase
end
endmodule

引脚连接配置图

在这里插入图片描述

烧录结果

FPGA——流水灯

四、总结

通过本次实验,初步了解到了计数器的思想,而且通过分层次化设计使实验更具有可视性。但是在本次实验中也存在不足,需要一直按着暂停键才能达到暂停的效果。所以,接下来我需要取研究如何实现按下一次实现暂停,再次按下又恢复流水灯效果。

参考资料

https://blog.csdn.net/Lee_tr/article/details/122487570

https://blog.csdn.net/crrrd/article/details/136227780

https://blog.csdn.net/LX567567/article/details/138727302

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2318156.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Excel 小黑第12套

对应大猫13 涉及金额修改 -数字组 -修改会计专用 VLOOKUP函数使用&#xff08;查找目标&#xff0c;查找范围&#xff08;F4 绝对引用&#xff09;&#xff0c;返回值的所在列数&#xff0c;精确查找或模糊查找&#xff09;双击填充柄就会显示所有值 这个逗号要中文的不能英…

滚动元素的新api

点击的时候需要双重视图滚动 itemClick(id) {// 滚动到对应位置this.$nextTick(() > {// 找到对应 id 在 initList2 中的索引const index this.initList2.findIndex((item) > item.id Number(id));if (index ! -1) {// 获取所有菜单项const menuItems document.queryS…

多机调度问题(C语言)

代码如下&#xff1a; #include<stdio.h> #include<stdlib.h>int compare(void* a, void* b)//比较函数&#xff0c;用于qsort按处理时间从大到小排序 {return *(int*)a - *(int*)b; }int LPT(int jobs[], int n, int m)//多机调度问题的LPT算法 {qsort(jobs, n, …

烽火HG680-KB_海思HI3798MV310_安卓9.0_U盘强刷固件包及注意点说明

之前发布过这个固件包&#xff0c;关于烽火HG680-KA&#xff0f;HG680-KB_海思HI3798MV310_安卓9.0_U盘强刷固件包详细说明一下&#xff0c;汇总总结一些常遇到的情况&#xff0c;这次固件会分开发布&#xff0c;以免混淆。 上一个帖子地址&#xff1a;烽火HG680-KA&#xff0…

996引擎 - 红点系统

996引擎 - 红点系统 总结NPC 红点(TXT红点)Lua 红点1. Red_Point.lua2. UI_Ex.lua参考资料以下内容是在三端 lua 环境下测试的 总结 红点系统分几个部分组成。 M2中设置变量推送。 配置红点表。 Envir\Data\cfg_redpoint.xls 2.1. UI元素中找到ID填写 ids 列。 主界面挂载…

3.17BUUCTF练习day1

BUUCTF练习day1 [极客大挑战 2019]EasySQL1&#xff08;字符型&#xff0c;账号密码型&#xff0c;get型&#xff09; 判断闭合方式 在用户名输入1‘&#xff0c;此时密码先输入任何数字时&#xff0c;出现语法错误 说明闭合方式为单引号闭合&#xff0c;在判断完闭合方式后…

【贪心算法】柠檬水找零

1.题目解析 860. 柠檬水找零 - 力扣&#xff08;LeetCode&#xff09; 2.讲解算法原理 分情况讨论 5---》直接收下 10---》找五元&#xff0c;收下 20----》105△ ----》555 由于5元更有用&#xff0c;则尽可能保留5元 3.代码 class Solution {public boolean lemonadeCh…

黑马跟学.苍穹外卖.Day08

黑马跟学.苍穹外卖.Day08 苍穹外卖-day8课程内容1. 工作台1.1 需求分析和设计1.1.1 产品原型1.1.2 接口设计 1.2 代码导入1.2.1 Controller层1.2.2 Service层接口1.2.3 Service层实现类1.2.4 Mapper层 1.3 功能测试1.3.1 接口文档测试1.3.2 前后端联调测试 1.4 代码提交 2. Ap…

ABAP语言的动态编程(4) - 综合案例:管理费用明细表

本篇来实现一个综合案例&#xff1a;管理费用明细表。报表在实际项目中&#xff0c;也有一定的参考意义&#xff0c;一方面展示类似的报表&#xff0c;比如管理费用、研发费用等费用的明细&#xff0c;使用业务比较习惯的展示格式&#xff1b;另一方面正好综合运用前面学习的动…

通过Geopandas进行地理空间数据可视化

目录 引言 安装与导入 数据加载与探索 数据预处理 基本地图可视化 添加其他数据到地图上 空间分析与查询 地图叠加与分组 空间缓冲区 交互式地图可视化 实际应用案例 城市规划 环境监测 结论 引言 在数据科学领域,地理空间数据可视化扮演着至关重要的角色。它不…

在Vue3中使用Echarts的示例

1.常用-引用ts文件方式 1.1 导出ts文件-一个简单的柱状图 export const baseBarChart (xdata: string[], data: number[][], legendData: string[]) > {if (data.length 0) {return noData;}// 定义颜色数组const color [#00CCCC,#FF9900,#1677DC,#FF6666,#B366FF,#666…

GHCTF web方向题解

upload?SSTI! import os import refrom flask import Flask, request, jsonify,render_template_string,send_from_directory, abort,redirect from werkzeug.utils import secure_filename import os from werkzeug.utils import secure_filenameapp Flask(__name__)# 配置…

Logic-RL:小参数qwen模型复现DeepSeek R1 zero

最近很多参照DeepSeek模型训练推理模型的工作,本文将深入 “Logic-RL: Unleashing LLM Reasoning with Rule-Based Reinforcement Learning” 的论文,该论文提出了一种Rule-Based Reinforcement Learning, Logic-RL框架,旨在提升 LLM 的逻辑推理能力,在qwen2.5-7b-instruct…

CVE-2017-5645(使用 docker 搭建)

介绍: 是一个与 Apache Log4j2 相关的安全漏洞,属于远程代码执行,它可能允许攻击者通过构造恶意的日志信息 在目标系统上执行任意代码 Log4j2 介绍 Log4j2 是 Apache 的一个日志记录工具,属于 Java 应用的日志框架,它是 Log4j 的升级版,性能更好,功能更多.它被广泛的适用于 J…

蓝桥杯备考:特殊01背包问题——》集合subset

我们划分成两个集合&#xff0c;实际上我们只需要看一部分就行了&#xff0c;也就是从集合的所有元素里挑出恰好满足集合总和的一半儿&#xff0c;当然&#xff0c;如果我们的集合总和是奇数的话&#xff0c;我们是无论如何也挑不出刚好一半儿的&#xff0c;因为我们没有小数&a…

C#设计模式Demo——MVC

设计模式Demo——MVC 1.View1.1页面示例1.2View代码1.3修改界面以及代码 2.Model3.Controller4.数据结构5.枚举类型6.工具类6.1缓存信息6.2扩展类. 文件结构图 1.View 1.1页面示例 1.2View代码 using System; using System.Data; using System.Windows.Forms; using MVC模式…

【sql靶场】第18-22关-htpp头部注入保姆级教程

目录 【sql靶场】第18-22关-htpp头部注入保姆级教程 1.回顾知识 1.http头部 2.报错注入 2.第十八关 1.尝试 2.爆出数据库名 3.爆出表名 4.爆出字段 5.爆出账号密码 3.第十九关 4.第二十关 5.第二十一关 6.第二十二关 【sql靶场】第18-22关-htpp头部注入保姆级教程…

LabVIEW棉花穴播器排种自动监测系统

一、项目背景与行业痛点 1. 农业需求驱动 我国棉花主产区&#xff0c;种植面积常年超250万公顷&#xff0c;传统人工播种存在两大核心问题&#xff1a; 效率瓶颈&#xff1a;人均日播种面积不足0.5公顷&#xff0c;难以匹配规模化种植需求&#xff1b; 精度缺陷&#xff1a;人…

【程序人生】成功人生架构图(分层模型)

文章目录 ⭐前言⭐一、根基层——价值观与使命⭐二、支柱层——健康与能量⭐三、驱动层——学习与进化⭐四、网络层——关系系统⭐五、目标层——成就与财富⭐六、顶层——意义与传承⭐外层&#xff1a;调节环——平衡与抗风险⭐思维导图 标题详情作者JosieBook头衔CSDN博客专家…

速通大厂测开

最近26届暑期实习招聘和25届春招已经开始&#xff0c;测开学习圈也有同学拿到offer了 今天分享一位25届秋招圈友快速拿到大厂测开offer的经历&#xff0c;希望对大家有所帮助 我是某211本科生&#xff0c;在去年暑假准备考研的间隙意外收获了某大厂测开实习offer&#xff0c;…