FPGA-结合协议时序实现UART收发器(六):仿真模块SIM_uart_drive_TB
FPGA-结合协议时序实现UART收发器(六):仿真模块SIM_uart_drive_TB
仿真模块SIM_uart_drive_TB,仿真实现。
vivado联合modelsim进行仿真。
文章目录
- FPGA-结合协议时序实现UART收发器(六):仿真模块SIM_uart_drive_TB
- 一、SIM_uart_drive_TB仿真代码
- 二、仿真结果
- 总结
一、SIM_uart_drive_TB仿真代码
`timescale 1ns / 1ns //时间单位/时间精度
//
// Company:
// Engineer:
//
// Create Date: 2023/09/12 14:52:47
// Design Name:
// Module Name: SIM_uart_drive_TB
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//module SIM_uart_drive_TB();/****仿真语法、产生时钟与复位****/localparam CLK_PERIOD = 20 ;reg clk,rst;initial begin //过程语句,只在仿真里可以使用,不可综合rst = 1; //上电开始复位#100; //延时100ns@(posedge clk) rst = 0; //上电复位释放
endalways begin//过程语句,只在仿真里可以使用,不可综合clk = 0;#(CLK_PERIOD/2);clk = 1;#(CLK_PERIOD/2);
endlocalparam P_USER_DATA_WIDTH = 8;reg [P_USER_DATA_WIDTH - 1 : 0] r_user_tx_data ;
reg r_user_tx_valid ;
wire w_user_tx_ready ;
wire [P_USER_DATA_WIDTH - 1 : 0] w_user_rx_data ;
wire w_user_rx_valid ;
wire w_user_active ;
wire w_user_clk ;
wire w_user_rst ;
assign w_user_active = r_user_tx_valid & w_user_tx_ready;uart_drive#(.P_SYSTEM_CLK (50_000_000 ), //输入时钟频率.P_UART_BUADRATE (9600 ), //波特率.P_UART_DATA_WIDTH (P_USER_DATA_WIDTH ), //数据宽度.P_UART_STOP_WIDTH (1 ), //1或者2.P_UART_CHECK (2 ) //None=0 Odd-1 Even-2
)
uart_drive_u0
( .i_clk (clk),.i_rst (rst), .i_uart_rx (o_uart_tx ),.o_uart_tx (o_uart_tx ),.i_user_tx_data (r_user_tx_data ),.i_user_tx_valid (r_user_tx_valid ),.o_user_tx_ready (w_user_tx_ready ),.o_user_rx_data (w_user_rx_data ),.o_user_rx_valid (w_user_rx_valid ),.o_user_clk (w_user_clk ) ,.o_user_rst (w_user_rst )
);/****激励信号****/
always@(posedge w_user_clk,posedge w_user_rst)
beginif(w_user_rst)r_user_tx_data <= 'd0;else if(w_user_active)r_user_tx_data <= r_user_tx_data + 1;else r_user_tx_data <= r_user_tx_data;
endalways@(posedge w_user_clk,posedge w_user_rst)
beginif(w_user_rst)r_user_tx_valid <= 'd0;else if(w_user_active)r_user_tx_valid <= 'd0;else if(w_user_tx_ready)r_user_tx_valid <= 'd1;else r_user_tx_valid <= r_user_tx_valid;
endendmodule
二、仿真结果


总结
还得练,要熟练使用modelsim进行仿真,因为比vivado快。
要会写仿真代码文件,继续多练。
结合协议时序实现UART收发器也算完结了。
相关文章:
FPGA-结合协议时序实现UART收发器(六):仿真模块SIM_uart_drive_TB
FPGA-结合协议时序实现UART收发器(六):仿真模块SIM_uart_drive_TB 仿真模块SIM_uart_drive_TB,仿真实现。 vivado联合modelsim进行仿真。 文章目录 FPGA-结合协议时序实现UART收发器(六):仿真模…...
Spring Boot集成EasyExcel实现数据导出
在本文中,我们将探讨如何使用Spring Boot集成EasyExcel库来实现数据导出功能。我们将学习如何通过EasyExcel库生成Excel文件,并实现一些高级功能,如支持列下拉和自定义单元格样式,自适应列宽、行高,动态表头 ÿ…...
EasyExcel3.0读(日期、数字或者自定义格式转换)
EasyExcel 3.0读(日期、数字或者自定义格式转换) 依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>3.2.1</version> </dependency>对象 package com.xiaobu.entity.vo;import …...
浅谈C++|STL之vector篇
一.vector的基本概念 vector是C标准库中的一种动态数组容器,提供了动态大小的数组功能,能够在运行时根据需要自动扩展和收缩。vector以连续的内存块存储元素,可以快速访问和修改任意位置的元素。 以下是vector的基本概念和特点: 动…...
微信、支付宝修改步数【小米运动】
简介 小米运动是一款流行的健身应用,可以记录用户的步数和运动数据。然而,有些用户希望能够修改步数,以达到一些特定的目的。本文将介绍一个Python脚本,可以帮助用户实现修改小米运动步数的功能。 正文 脚本介绍: 本脚本是一个Python脚本,用于修改小米运动步数。通过模…...
stu02-初识HTML
1.HTML概述 (1)HTML是Hyper Text Mark-up Language的首字母缩写。 (2)HTML是一种超文本标记语言。 (3) 超文本:指除了文字外,页面内还可以包含图片、链接、甚至音乐、视频等非文字元…...
软件测试7大误区
随着软件测试对提高软件质量重要性的不断提高,软件测试也不断受到重视。但是,国内软件测试过程的不规范,重视开发和轻视测试的现象依旧存在。因此,对于软件测试的重要性、测试方法和测试过程等方面都存在很多不恰当的认识…...
【深度学习】 Python 和 NumPy 系列教程(十二):NumPy详解:4、数组广播;5、排序操作
目录 一、前言 二、实验环境 三、NumPy 0、多维数组对象(ndarray) 多维数组的属性 1、创建数组 2、数组操作 3、数组数学 4、数组广播 5、排序操作 1. np.sort() 函数 2. np.argsort() 函数 3. ndarray.sort() 方法 4. 按列或行排序 5. n…...
CSS宽度问题
一、魔法 为 DOM 设置宽度有哪些方式呢?最常用的是配置width属性,width属性在配置时,也有多种方式: widthmin-widthmax-width 通常当配置了 width 时,不会再配置min-width max-width,如果将这三者混合使…...
浅谈C++|STL之string篇
一.string的基本概念 本质 string是C风格的字符串,而string本质是一个字符串 string和char * 区别 char * 是一个指针string是一个类,类内部封装了char *,管理这个字符串,是一个char * 型容器。 特点 string类内部封装了很多成…...
Kubernetes Dashboard安装部署
Kubernetes Dashboard安装部署 1. 下载Dashboard 部署文件2. 修改yaml配置文件3. 应用安装,查看pod和svc4. 创建dashboard服务账户5. 创建admin-user用户的登录密钥6. 登录6.1 使用token登录(1) 短期token(2) token长期有效 6.2 使用 Kubeconfig 文件登录 7.安装met…...
在Qt的点云显示窗口中添加坐标轴C++
通过摸索整理了三个方法: 一、方法1://不推荐,但可以参考 1、通过pcl的compute3DCentroid()方法计算点云的中心点坐标; 函数原型如下: compute3DCentroid (const pcl::PointCloud<PointT> &cloud, Eigen…...
[密码学入门]凯撒密码(Caesar Cipher)
密码体质五元组:P,C,K,E,D P,plaintext,明文空间 C,ciphertext,密文空间 K,key,密钥空间 E,encrypt,加密算法 D,decrypt,解密算法 单表代换…...
uboot 顶层Makefile-make xxx_deconfig过程说明三
一. uboot 的 make xxx_deconfig配置 本文接上一篇文章的内容。地址如下:uboot 顶层Makefile-make xxx_deconfig过程说明二_凌肖战的博客-CSDN博客 本文继续来学习 uboot 源码在执行 make xxx_deconfig 这个配置过程中,顶层 Makefile有关的执行思路。 …...
c++中的多线程通信
信息传递 #include <iostream> #include <thread> #include <chrono> #include <mutex> #include <condition_variable> #include <queue> // 用于存储和同步数据的结构 struct Data {std::queue<std::string> messag…...
IO day7
1->x.mind 2-> A进程 B进程...
C语言之指针进阶篇(3)
目录 思维导图 回调函数 案例1—计算器 案例2—qsort函数 关于qsort函数 演示qsort函数的使用 案例3—冒泡排序 整型数据冒泡排序 回调函数搞定各类型冒泡排序 cmp_int比较大小 cmp传参数 NO1. NO2. 解决方案 交换swap 总代码 今天我们学习指针难点之回调函数…...
SQL7 查找年龄大于24岁的用户信息
描述 题目:现在运营想要针对24岁以上的用户开展分析,请你取出满足条件的设备ID、性别、年龄、学校。 用户信息表:user_profile iddevice_idgenderageuniversityprovince12138male21北京大学Beijing23214male复旦大学Shanghai36543female20…...
vite搭建vue3项目
参考视频 1.使用npm搭建vite项目,会自动搭建vue3项目 npm create vitelatest yarn create vite2.手动搭建vue3项目 创建一个项目名称的文件夹执行命令:npm init -y 快速的创建一个默认的包信息安装vite: npm i vite -D -D开发环境的依赖 安装vue,现在默认是vue3.…...
Qt中表格属性相关操作,调整表格宽度高度自适应内容等
1 表格列宽设置 利用Qt designer设计,可以通过改变表头的列宽从而保证内容不会被遮盖,输入空格的方式增加表头的长度,比如表头为"Value",则改成"Value ",可以扩展列默认的宽度,保证后面…...
基于Helm Chart在Kubernetes中部署docker-mailserver邮件服务器
1. 项目概述与核心价值最近在折腾自建邮件服务器,发现了一个宝藏项目:docker-mailserver。它把邮件服务里那些复杂的组件,比如 Postfix、Dovecot、SpamAssassin、ClamAV 这些,全都打包进了一个 Docker 镜像里,开箱即用…...
从基础到智能体:RAG技术演进与实战避坑指南
1. 从基础到进阶:我眼中的RAG技术演进与实战价值如果你正在探索如何让大语言模型(LLM)变得更“靠谱”,尤其是在处理专业、实时或私有数据时,那么“检索增强生成”(RAG)技术几乎是你绕不开的路径…...
实证论文不用愁!虎贲等考 AI 数据分析:零代码跑模型,图表 + 结论一键生成
在本科、硕士毕业论文写作中,数据分析往往是最让学生头疼的章节。不会数据清洗、不懂模型选择、跑不出稳健结果、图表不会做、文字不会写,即便前面内容写得再完整,第四章一塌糊涂,整篇论文直接被导师打回。 传统软件如 Stata、Py…...
vibe-to-ui:让AI助手将你的“感觉”翻译成专业设计系统
1. 项目概述:当“感觉”成为设计语言如果你和我一样,是一个能写出复杂业务逻辑,但一碰到UI设计就头疼的开发者,那今天聊的这个工具,可能会彻底改变你的工作流。我们常常陷入一个困境:心里有一个模糊的“感觉…...
scp 命令的使用方法 什么软件支持 .git bash xshell .openssh
scp 命令的使用方法 什么软件支持 .git bash xshell .openssh scp backup.sh deploy.sh rollback.sh userserver:/path/to/project/ 这个命令主要在 Linux、macOS 或 Windows (10/11) 的 命令行终端(Terminal / Command Prompt / PowerShellÿ…...
Drogon框架数据库连接监控终极指南:性能指标与智能告警机制
Drogon框架数据库连接监控终极指南:性能指标与智能告警机制 【免费下载链接】drogon Drogon: A C14/17/20 based HTTP web application framework running on Linux/macOS/Unix/Windows 项目地址: https://gitcode.com/gh_mirrors/dr/drogon Drogon是一个基于…...
3步搞定B站视频下载:BBDown让你的收藏从未如此简单 [特殊字符]
3步搞定B站视频下载:BBDown让你的收藏从未如此简单 🎬 【免费下载链接】BBDown Bilibili Downloader. 一个命令行式哔哩哔哩下载器. 项目地址: https://gitcode.com/gh_mirrors/bb/BBDown 还在为无法离线观看B站优质内容而烦恼吗?BBDo…...
为AI智能体构建自动化RSS信息管道:agent-rss工具详解与实践
1. 项目概述:为AI智能体打造的RSS信息管道 如果你正在构建或使用AI智能体(比如Claude Code、OpenClaw这类工具),并且希望它们能像人类一样,定时、定向地获取互联网上的最新信息,那么你很可能需要一个专门为…...
松下绿色科技战略:技术复用与协同效应如何驱动企业转型
1. 松下困局:消费电子巨头的十字路口2013年初的拉斯维加斯,消费电子展(CES)的喧嚣与霓虹之下,松下的时任社长津贺一宏站在聚光灯前,面对的却是一个冰冷而残酷的现实:公司预计将连续第二年录得高…...
别再只调API了!深入Qt QGraphicsView事件流,彻底搞懂拖拽缩放背后的‘为什么’
深入Qt QGraphicsView事件流:从拖拽缩放的底层机制到高效调试 在Qt的图形视图框架中,QGraphicsView、QGraphicsScene和QGraphicsItem构成了一个强大的交互系统。许多开发者虽然能够通过调用API实现基本功能,但当遇到事件被意外吞噬、坐标计算…...
