FPGA:流水灯设计

本次基于FPGA实现流水灯,即让LED[0:7]从左到右依次电量,每个LED灯频闪周期为1s钟,在这里,给出下面三种实现思路:

1、实验思路

1、使用位运算符
在复位时令LED灯为LED=8’b0000_0001,然后每过一秒钟,左移一位,如果LED灯状态为LED=8’b1000_0000,下一次再让LED=8’b0000_0001即可实现流水灯。
2、使用循环位移
使用循环位移和位拼接符,复位时如果我们令led=1000_0000,然后开始计时,我们让led[6:0]和led[7]进行拼接,得到0000_0001,再过一秒,同样进行拼接,得到0000_0010,使用这个方法无需考虑上面的末尾情况。
3、使用3-8译码器
再加入一个计数器,作为状态输入端,我们有8个输出,所以需要三个输入端口,复位令计数器为0,每过一秒状态计数器的值加1,最后状态计数器的值作为3-8译码器的输入端口即可。

2、代码编写

下面给出上面三种思路对应设计文件的verilog代码:
1、使用位运算符

module led_run1(clk,Reset_n,led
);
input clk;
input Reset_n;
output reg[7:0] led; 
reg [24:0] counter;
always@(posedge clk or negedge Reset_n)
if (!Reset_n)counter<=0;
else if(counter == 24999999)
//else if(counter == 24999)   //节约仿真时间counter <=0;
else counter <= counter+1;
always@(posedge clk or negedge Reset_n)
if (!Reset_n)led <= 8'b0000_0001;
else if(counter == 24999999)
//else if(counter == 24999)  //节约仿真时间beginif(led == 8'b1000_0000)   //如果是最后一个灯亮,则再回去led <= 8'b0000_0001;elseled <= (led<<1); //如果是其他情况,则左移一位即可endendmodule

2、使用循环位移

module led_run2(clk,Reset_n,led
);
input clk;
input Reset_n;
output reg[7:0] led;
reg [24:0] counter;
always@(posedge clk or negedge Reset_n)
if (!Reset_n)counter<=0;
else if(counter ==24999999)
//else if(counter == 24999)   //节约仿真时间counter<=0;
else counter <= counter+1;
always@(posedge clk or negedge Reset_n)
if (!Reset_n)led<=8'b0000_0001;
else if(counter==24999999)
//else if(counter == 24999)   //节约仿真时间led <= {led[6:0],led[7]};  //使用拼接符,循环左移
endmodule

3、外接3-8译码器

module led_run3(clk,Reset_n,led
);
input clk;
input Reset_n;
output [7:0] led;  //此处led是由底层三八译码器驱动,不需要reg类型,已经在decoder中定义out为reg了 
reg [25:0] counter;   //为了和前面区分,这里设为1秒的速率
always@(posedge clk or negedge Reset_n)
if (!Reset_n)counter<=0;
else if(counter == 49999999)
//else if(counter == 24999)   //节约仿真时间counter <=0;
else counter <= counter+1;
//使用三八译码器,八个输出刚好对应八个LED灯,三个输入利用重新产生一个变量即可
reg [2:0] counter2;  //产生三位输出作为三八译码器输出
always@(posedge clk or negedge Reset_n)
if (!Reset_n)counter2 <= 3'b000;
//else if(counter == 24999) 
else if(counter == 49999999)counter2 <= counter2+1'b1;
//例化3-8译码器模块
decoder_3_8 decoder_3_8(.a(counter2[2]),.b(counter2[1]),.c(counter2[0]),.out(led)
);
endmodule

编写测试文件,不同的设计文件更改对应的模块名即可

`timescale 1ns/1ps
module led_run_tb();
reg clk;
reg Reset_n;
wire [7:0] led;
led_run3 led_run(    //例化led_run1修改对应的前面的标签即可.clk(clk),.Reset_n(Reset_n),.led(led)
);
initial clk=1; //时钟初始值设为1
always #10 clk=!clk;   //每延时10ns,时钟翻转一次,这样一个周期就是20ns
initial begin
Reset_n = 0;  //复位
#201  
Reset_n = 1;  // 复位接高电平
#40000000;
$stop;
end
endmodule

3、仿真测试

在这里插入图片描述

4、板级验证

生成比特流,烧到开发板即可。

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

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

相关文章

软考:软件设计师 — 7.软件工程

七. 软件工程 1. 软件工程概述 &#xff08;1&#xff09;软件生存周期 &#xff08;2&#xff09;软件过程 软件开发中所遵循的路线图称为 "软件过程"。 针对管理软件开发的整个过程&#xff0c;提出了两个模型&#xff1a;能力成熟度模型&#xff08;CMM&#…

嵌入式C++、STM32、MySQL、GPS、InfluxDB和MQTT协议数据可视化:智能物流管理系统设计思路流程(附代码示例)

目录 项目概述 系统设计 硬件设计 软件设计 系统架构图 代码实现 1. STM32微控制器与传感器代码 代码讲解 2. MQTT Broker设置 3. 数据接收与处理 代码讲解 4. 数据存储与分析 5. 数据分析与可视化 代码讲解 6. 数据可视化 项目总结 项目概述 随着电子商务的快…

简单小案例分析

一、容器和实例关系 <div class"app"><h1>Hello,{{name}}</h1> </div> <div class"app"><h1>Hello,{{name}}</h1> </div><script>//创建Vue实例new Vue({el:".app", //el用于指定当前V…

暴风骑士S9电摩上市,定义青少年骑行安全新标准

暴风骑士&#xff0c;作为全球高端儿童电动车的开创品牌&#xff0c;以其卓越的技术实力和创新精神&#xff0c;不断推动行业发展。如今&#xff0c;暴风骑士再次突破自我&#xff0c;推出了全新力作——S9青少年电摩。这款全新上市的青少年专属电摩&#xff0c;以其领先的安全…

LCD 横屏切换为竖屏-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

LCD 横屏切换为竖屏 横屏显示如何切换为竖屏显示 LCD 屏默认横屏显示 开发板配套的 LCD 屏默认都是横屏显示&#xff0c;如 4.3 寸、7 寸和 10.1 寸的不同分辨率的 RGB LCD 屏 固定坐标体系 &#xff08;以 800*480 分辨率为例&#xff09;横屏模式下的固定坐标&#xff1a;…

某数据泄露防护(DLP)系统NoticeAjax接口SQL注入漏洞复现 [附POC]

文章目录 某数据泄露防护(DLP)系统NoticeAjax接口SQL注入漏洞复现 [附POC]0x01 前言0x02 漏洞描述0x03 影响版本0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现某数据泄露防护(DLP)系统NoticeAjax接口SQL注入漏洞复现 [附POC] 0x01 前言 免责声明:请勿利用文章内…

Vitis AI 使用 VAI_Q_PYTORCH 工具

目录 1. 简介 2. 资料汇总 3. 示例解释 3.1 快速上手示例 4. 总结 1. 简介 vai_q_pytorch 是 Vitis AI Quantizer for Pytorch 的缩写&#xff0c;主要作用是优化神经网络模型。它是 Vitis AI 平台的一部分&#xff0c;专注于神经网络的深度压缩。 vai_q_pytorch 的作用…

如何应对SQL注入攻击?

引言 在现今的网络世界中&#xff0c;安全性已成为至关重要的话题。SQL注入&#xff08;SQL Injection&#xff09;是一种常见且危险的网络攻击方式&#xff0c;攻击者通过向SQL查询中插入恶意代码来操控数据库&#xff0c;从而获取敏感信息或破坏数据。了解SQL注入的各种类型…

2024中国大学生算法设计超级联赛(2)

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;陈童学哦&#xff0c;彩笔ACMer一枚。 &#x1f3c0;所属专栏&#xff1a;杭电多校集训 本文用于记录回顾总结解题思路便于加深理解。 &#x1f4e2;&#x1f4e2;&#x1f4e2;传送门 A - 鸡爪解题思…

AI在Facebook的应用:预见智能化社交的新前景

在数字化时代&#xff0c;社交媒体平台已成为我们生活的重要组成部分&#xff0c;而人工智能&#xff08;AI&#xff09;的快速发展正推动着这些平台向更智能、更个性化的方向发展。Facebook&#xff0c;作为全球最大的社交网络平台之一&#xff0c;正不断探索和应用AI技术&…

MySQL作业四

1. 创建数据库mydb15_indexstu 2. 创建表student&#xff0c;course&#xff0c;sc 2.1 创建表student 2.2 创建表course 2.3 创建表sc 3. 处理表 3.1 修改表student中年龄&#xff08;sage&#xff09;字段属性&#xff0c;数据类型由int改变为smallint 3.2 为表course中cno…

智能算法驱动的爬虫平台:解锁网络数据的无限潜力

摘要 在信息爆炸的时代&#xff0c;网络数据如同深海宝藏&#xff0c;等待着有识之士发掘其无尽价值。本文将探索智能算法驱动的爬虫平台如何成为解锁这一宝库的关键&#xff0c;不仅剖析其技术优势&#xff0c;还通过实例展示它如何助力企业与开发者高效、稳定地采集数据&…

专家访谈|王本友:分不清9.11和9.9谁大?大模型该做擅长的,而不是事事完美

作为生成式人工智能的代表&#xff0c;大模型已经进入全新的发展阶段。 红星新闻、红星资本局与OpenEval平台联合发起“巢燧杯”大模型创新发展大赛&#xff0c;已于本月正式启动。2024“巢燧杯”大模型创新发展大赛由通用大模型评测、行业大模型评测大赛、专项挑战赛、大模型…

JavaScript模拟滑动手势

双击回到顶部 左滑动 右滑动 代码展示 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>Gesture…

opencv使用KCF算法跟踪目标,给出目标中心位置

效果图 代码 import cv2class VideoTracker:def __init__(self, video_path: str):self.video_path video_pathself.cap cv2.VideoCapture(video_path)self.tracker cv2.legacy.TrackerKCF_create()self.initBB Noneself.tracker_initialized Falseself.selecting Fals…

河道高效治理新策略:视频AI智能监控如何助力河污防治

一、背景与现状 随着城市化进程的加快&#xff0c;河道污染问题日益严重&#xff0c;对生态环境和居民生活造成了严重影响。为了有效治理河道污染&#xff0c;提高河道管理的智能化水平&#xff0c;TSINGSEE青犀提出了一套河污治理视频智能分析及管理方案。方案依托先进的视频…

Android adb shell ps进程查找以及kill

Android adb shell ps进程查找以及kill 列出当前Android手机上运行的所有进程信息如PID等&#xff1a; adb shell ps 但是这样会列出一大堆进程信息&#xff0c;不便于定向查阅&#xff0c;可以使用关键词查找&#xff1a; adb shell "ps | grep 关键词" 关键词查…

SQLException:Operation not allowed after ResultSet closed

运行代码时出现的错误&#xff1a; 这是在运行简单的JDBC访问数据库时出现的问题&#xff0c;原因是在ResultSet方法中添加了close()关闭方法,如图&#xff1a; ResultSet 是通过 query 方法获得的&#xff0c;并且在 try-catch 块中没有显式地关闭它。这实际上是 一个常见的…

C++STL详解(一)——string类的接口详解(下)

目录 一.string的大小和容量成员函数 1.1size()和length() 1.2capacity() 1.3resize() 1.4reserve() 1.5clear()和empty() ​编辑 二.string元素的访问 2.1operator[]和at() 2.2范围for 三.string中迭代器相关函数 3.1begin()和end() 3.2rbegin()和rend() 四.string…

机械学习—零基础学习日志(高数12——反三角函数)

零基础为了学人工智能&#xff0c;真的开始复习高数 反三角函数很困难&#xff0c;但是当建立了逻辑链条&#xff0c;还是能快速理解的。这个办法就是笛卡尔坐标系。 三角函数与反三角函数的个人理解 sinx与cosx&#xff0c;tanx&#xff0c;secx&#xff0c;其实都可以放在…