当前位置: 首页 > news >正文

fpga入门 串口定时1秒发送1字节

一、 程序说明

FPGA通过串口定时发送数据,每秒发送1字节,数据不断自增
参考小梅哥教程

二、 uart_tx.v

`timescale 1ns / 1psmodule uart_tx(input		wire 				    sclk,input		wire				    rst_n,output		reg	                   uart_tx);parameter  		CLK_FREQ 	    = 50000000;	//时钟频率50M
parameter  		UART_BAUD 	    = 115200;	//时钟频率50M
parameter  		MAX_BIT_COUNT 	= 9;	//时钟频率50M
localparam 		MAX_BAUD_CNT 	= CLK_FREQ / UART_BAUD;//434reg [7:0] write_data;   //发送数据//运行计数器
reg [31:0] run_cnt;	//波特率计数器
always @(posedge sclk or negedge rst_n)
beginif(rst_n == 1'b0)run_cnt <= 32'd0;else if(run_cnt == CLK_FREQ)run_cnt <= 0;elserun_cnt <= run_cnt + 1;
end//波特率计数器
reg [8:0] baud_cnt;	//波特率计数器
reg en_baud_cnt;	//波特率计数器开关
always @(posedge sclk or negedge rst_n)
beginif(rst_n == 1'b0)baud_cnt <= 8'd0;else if(en_baud_cnt == 1'b1) beginif(baud_cnt == MAX_BAUD_CNT)baud_cnt <= 8'd0;elsebaud_cnt <= baud_cnt + 1;endelsebaud_cnt <= baud_cnt;
end//发送位计数器
reg [4:0] bit_cnt = 0;	//波特率计数器
always @(posedge sclk or negedge rst_n)
beginif(rst_n == 1'b0)bit_cnt <= 4'd0;else if(baud_cnt == MAX_BAUD_CNT)beginif(bit_cnt ==  MAX_BIT_COUNT)bit_cnt <= 4'd0;elsebit_cnt <= bit_cnt + 1;endelsebit_cnt <= bit_cnt;
end //位发送逻辑
always @(posedge sclk or negedge rst_n)
beginif(rst_n == 1'b0)uart_tx <= 1'b0;else if(baud_cnt == MAX_BAUD_CNT/2)beginif(bit_cnt ==  0)uart_tx <= 1'b0;else if(bit_cnt == MAX_BIT_COUNT)uart_tx <= 1'b1;elsebegincase(bit_cnt)1:uart_tx <= write_data[0];2:uart_tx <= write_data[1];3:uart_tx <= write_data[2];4:uart_tx <= write_data[3];5:uart_tx <= write_data[4];6:uart_tx <= write_data[5];7:uart_tx <= write_data[6];8:uart_tx <= write_data[7];default:uart_tx <= uart_tx;endcaseend//uart_tx <= write_data[bit_cnt-1];endelseuart_tx <= uart_tx;
endalways @(posedge sclk or negedge rst_n)
beginif(rst_n == 1'b0)en_baud_cnt <= 1'b0;else if(run_cnt == 0) beginen_baud_cnt <= 1'b1;endelse if(bit_cnt ==  MAX_BIT_COUNT && baud_cnt == MAX_BAUD_CNT)en_baud_cnt <= 1'b0;elseen_baud_cnt <= en_baud_cnt;
endalways @(posedge sclk or negedge rst_n)
beginif(rst_n == 1'b0)write_data <= 8'd0;else if(run_cnt == 0)write_data <= write_data + 1;elsewrite_data <= write_data;
endendmodule

三、 运行截图

在这里插入图片描述

相关文章:

fpga入门 串口定时1秒发送1字节

一、 程序说明 FPGA通过串口定时发送数据&#xff0c;每秒发送1字节&#xff0c;数据不断自增 参考小梅哥教程 二、 uart_tx.v timescale 1ns / 1psmodule uart_tx(input wire sclk,input wire rst_n,output reg uart_tx);parameter …...

总结一下自己,最近三年,我做了哪些工作

简单总结下吧&#xff0c;我算是业务架构师&#xff0c;确实对得起这个名字&#xff0c;经常冲在一线&#xff0c;业务和架构相关的东西都有做&#xff0c;系统比较复杂&#xff0c;不过逐步了解谁都会熟悉的 下面简单列一列我这三年的工作情况吧&#xff0c;也算是给自己一个交…...

SpringCloud Gateway基础入门与使用实践总结

官网文档&#xff1a;点击查看官网文档 Cloud全家桶中有个很重要的组件就是网关&#xff0c;在1.x版本中都是采用的Zuul网关。但在2.x版本中&#xff0c;zuul的升级一直跳票&#xff0c;SpringCloud最后自己研发了一个网关替代Zuul&#xff0c;那就是SpringCloud Gateway一句话…...

TensorBoard在pytorch训练过程中如何使用,及数据读取问题解决方法

TensorBoard 模块导入日志记录文件的创建训练中如何写入数据如何提取保存的数据调用TensorBoard面板可能会遇到的问题 模块导入 首先从torch中导入tensorboard的SummaryWriter日志记录模块 from torch.utils.tensorboard import SummaryWriter然后导入要用到的os库&#xff0…...

【Vue】普通组件的注册使用-全局注册

文章目录 一、使用步骤二、练习 一、使用步骤 步骤 创建.vue组件&#xff08;三个组成部分&#xff09;main.js中进行全局注册 使用方式 当成HTML标签直接使用 <组件名></组件名> 注意 组件名规范 —> 大驼峰命名法&#xff0c; 如 HmHeader 技巧&#xf…...

爬虫之反爬思路与解决手段

阅读时间建议&#xff1a;4分钟 本篇概念比较多&#xff0c;嗯。。 0x01 反爬思路与解决手段 1、服务器反爬虫的原因 因为爬虫的访问次数高&#xff0c;浪费资源&#xff0c;公司资源被批量抓走&#xff0c;丧失竞争力&#xff0c;同时也是法律的灰色地带。 2、服务器反什么…...

2.1.4 采用配置类与注解方式使用MyBatis

实战概述&#xff1a;采用配置类与注解方式使用MyBatis 创建MyBatis配置类 在net.huawei.mybatis.config包中创建MyBatisConfig类&#xff0c;用于配置MyBatis核心组件&#xff0c;包括数据源、事务工厂和环境设置。 配置数据源和事务 使用PooledDataSource配置MySQL数据库连接…...

微信小程序云开发实现利用云函数将数据库表的数据导出到excel中

实现目标 将所有订单信息导出到excel表格中 思路 1、在页面中bindtap绑定一个导出点击事件daochu() 2、先获取所有订单信息&#xff0c;并将数据添加到List数组中 3、传入以List数组作为参数&#xff0c;调用get_excel云函数 4、get_excel云函数利用node-xlsx第三方库&#…...

python 字符串(str)、列表(list)、元组(tuple)、字典(dict)

学习目标: 1:能够知道如何定义一个字符串; [重点] 使用双引号引起来: 变量名 "xxxx" 2:能够知道切片的语法格式; [重点] [起始: 结束] 3:掌握如何定义一个列表; [重点] 使用[ ]引起来: 变量名 [xx,xx,...] 4:能够说出4个列表相关的方法; [了解] ap…...

【源码】SpringBoot事务注册原理

前言 对于数据库的操作&#xff0c;可能存在脏读、不可重复读、幻读等问题&#xff0c;从而引入了事务的概念。 事务 1.1 事务的定义 事务是指在数据库管理系统中&#xff0c;一系列紧密相关的操作序列&#xff0c;这些操作作为一个单一的工作单元执行。事务的特点是要么全…...

技巧:合并ZIP分卷压缩包

如果ZIP压缩文件文件体积过大&#xff0c;大家可能会选择“分卷压缩”来压缩ZIP文件&#xff0c;那么&#xff0c;如何合并zip分卷压缩包呢&#xff1f;今天我们分享两个ZIP分卷压缩包合并的方法给大家。 方法一&#xff1a; 我们可以将分卷压缩包&#xff0c;通过解压的方式…...

数据挖掘 | 实验三 决策树分类算法

文章目录 一、目的与要求二、实验设备与环境、数据三、实验内容四、实验小结 一、目的与要求 1&#xff09;熟悉决策树的原理&#xff1b; 2&#xff09;熟练使用sklearn库中相关决策树分类算法、预测方法&#xff1b; 3&#xff09;熟悉pydotplus、 GraphViz等库中决策树模型…...

Python机器学习预测区间估计工具库之mapie使用详解

概要 在数据科学和机器学习领域,预测的不确定性估计是一个非常重要的课题。Python的mapie库是一种专注于预测区间估计的工具,旨在提供简单易用的接口来计算和评估预测的不确定性。通过mapie库,用户可以为各种回归和分类模型计算预测区间,从而更好地理解模型预测的可靠性。…...

Linux基础指令磁盘管理002

LVM&#xff08;Logical Volume Manager&#xff09;是Linux系统中一种灵活的磁盘管理和存储解决方案&#xff0c;它允许用户在物理卷&#xff08;Physical Volumes, PV&#xff09;上创建卷组&#xff08;Volume Groups, VG&#xff09;&#xff0c;然后在卷组上创建逻辑卷&am…...

Python怎么添加库:深入解析与操作指南

Python怎么添加库&#xff1a;深入解析与操作指南 在Python编程中&#xff0c;库&#xff08;Library&#xff09;扮演着至关重要的角色。它们为我们提供了大量的函数、类和模块&#xff0c;使得我们可以更高效地编写代码&#xff0c;实现各种功能。那么&#xff0c;Python如何…...

Python | 虚拟环境的增删改查

mkvirtualenv创建虚拟环境 mkvirtualenv是用于在Pyhon中创建虚拟环境的命令。它通过使用vitualenv库来创建一个隔离的Python环境&#xff0c;以便您可以安装特定版本的Python包&#xff0c;而不会影响全局Python环境。 使用方法: 安装virtualenv&#xff1a;pip install vir…...

【MySQL数据库】:MySQL内外连接

目录 内外连接和多表查询的区别 内连接 外连接 左外连接 右外连接 简单案例 内外连接和多表查询的区别 在 MySQL 中&#xff0c;内连接是多表查询的一种方式&#xff0c;但多表查询包含的范围更广泛。外连接也是多表查询的一种具体形式&#xff0c;而多表查询是一个更…...

C# FTP/SFTP 详解及连接 FTP/SFTP 方式示例汇总

文章目录 1、FTP/SFTP基础知识FTPSFTP 2、FTP连接示例3、SFTP连接示例4、总结 在软件开发中&#xff0c;文件传输是一个常见的需求。尤其是在不同的服务器之间传输文件时&#xff0c;FTP&#xff08;文件传输协议&#xff09;和SFTP&#xff08;安全文件传输协议&#xff09;成…...

二、【源码】实现映射器的注册和使用

源码地址&#xff1a;https://github.com/mybatis/mybatis-3/ 仓库地址&#xff1a;https://gitcode.net/qq_42665745/mybatis/-/tree/02-auto-registry-proxy 实现映射器的注册和使用 这一节的目的主要是实现自动注册映射器工厂 流程&#xff1a; 1.创建MapperRegistry注册…...

Android Compose 十:常用组件列表 监听

1 去掉超出滑动区域时的拖拽的阴影 即 overScrollMode 代码如下 CompositionLocalProvider(LocalOverscrollConfiguration provides null) {LazyColumn() {items(list, key {list.indexOf(it)}){Row(Modifier.animateItemPlacement(tween(durationMillis 250))) {Text(text…...

别再乱改注册表了!详解Windows桌面路径修改与explorer进程重启的底层逻辑

Windows桌面路径修改与explorer进程重启的底层逻辑解析 每次修改Windows注册表时&#xff0c;你是否真正理解背后的运行机制&#xff1f;当我们将桌面路径从默认位置迁移到D盘后&#xff0c;简单的"还原默认值"操作有时并不能完全解决问题。这背后涉及Windows Shell …...

KMS_VL_ALL_AIO终极指南:5分钟搞定Windows与Office永久激活的简单教程

KMS_VL_ALL_AIO终极指南&#xff1a;5分钟搞定Windows与Office永久激活的简单教程 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 你是否曾经为Windows系统弹出"需要激活"的提示而烦恼…...

边缘计算与云原生的融合:从中心到边缘

边缘计算与云原生的融合&#xff1a;从中心到边缘 前言 作为一个在数据深渊里捞了十几年 Bug 的女码农&#xff0c;我深知边缘计算在现代应用中的重要性。随着物联网、5G 等技术的发展&#xff0c;边缘计算已经成为处理海量数据、降低延迟的关键技术。今天&#xff0c;我就来聊…...

USART串口通信

一、串口 USART USART&#xff08;Universal Synchronous/Asynchronous Receiver/Transmitter&#xff0c;通用同步 / 异步收发器&#xff09; 是一种全双工、串行、逐位传输的通信接口&#xff0c;核心是把单片机 / 处理器的并行数据转为串行数据发送&#xff0c;或把串行数据…...

Z-Image-Turbo实战指南:用Gradio搭建交互式绘画站

Z-Image-Turbo实战指南&#xff1a;用Gradio搭建交互式绘画站 1. 为什么选择Z-Image-Turbo 在AI绘画领域&#xff0c;速度和质量的平衡一直是开发者面临的挑战。Z-Image-Turbo作为阿里巴巴通义实验室开源的高效文生图模型&#xff0c;以其独特的优势脱颖而出&#xff1a; 惊…...

WuliArt Qwen-Image Turbo效果对比:FP16黑图频发 vs BF16稳定出图实测

WuliArt Qwen-Image Turbo效果对比&#xff1a;FP16黑图频发 vs BF16稳定出图实测 1. 引言&#xff1a;从“黑图”困扰到稳定出图 如果你用过一些本地部署的文生图模型&#xff0c;可能遇到过这样的糟心事儿&#xff1a;满怀期待地输入一段描述&#xff0c;点击生成&#xff…...

实测:千元安卓机离线跑DeepSeek-R1 1.5B模型,写代码、解数学题够用吗?

千元安卓机实测&#xff1a;离线运行DeepSeek-R1 1.5B模型的全场景性能报告 去年我在西藏旅行时&#xff0c;手机全程处于无信号状态&#xff0c;却需要紧急处理一封英文邮件。当时就幻想如果AI模型能完全离线运行该多好——没想到半年后这个愿望已成现实。最近一周&#xff0c…...

c++编程:D进制的A+B(1022-PAT乙级)

1022. D进制的AB#include<bits/stdc.h> using namespace std; int main() { int A, B, D; // 定义三个整数变量 A、B 和进制 Dcin >> A >> B >> D; // 从标准输入读取 A、B、D 的值int sum A B; // 计算…...

(23)ArcGIS Pro 空间连接与缓冲区分析:属性传递、多环缓冲区实战全攻略

点赞&#xff0b;关注送&#xff1a; 1、天地图GS&#xff08;2024&#xff09;0650号_2025.9版&#xff1b; 2、全国土地覆盖数据CLCD2025年&#xff1b; 注&#xff1a;其他数据也可私信或留言&#xff0c;看是否有 前言 在 ArcGIS Pro 空间分析中&#xff0c;缓冲区分析与空…...

好写作AI“期刊论文魔法工坊”:打造学术发表的秘密武器

在学术的浩瀚星空中&#xff0c;期刊论文宛如璀璨星辰&#xff0c;是研究者展示智慧结晶、推动学科发展的重要途径。然而&#xff0c;撰写一篇高质量且符合期刊要求的论文&#xff0c;却如同在荆棘丛中开辟道路&#xff0c;充满了挑战与艰辛。别担心&#xff0c;好写作AI宛如一…...