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

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收发器&#xff08;六&#xff09;&#xff1a;仿真模块SIM_uart_drive_TB 仿真模块SIM_uart_drive_TB&#xff0c;仿真实现。 vivado联合modelsim进行仿真。 文章目录 FPGA-结合协议时序实现UART收发器&#xff08;六&#xff09;&#xff1a;仿真模…...

Spring Boot集成EasyExcel实现数据导出

在本文中&#xff0c;我们将探讨如何使用Spring Boot集成EasyExcel库来实现数据导出功能。我们将学习如何通过EasyExcel库生成Excel文件&#xff0c;并实现一些高级功能&#xff0c;如支持列下拉和自定义单元格样式&#xff0c;自适应列宽、行高&#xff0c;动态表头 &#xff…...

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标准库中的一种动态数组容器&#xff0c;提供了动态大小的数组功能&#xff0c;能够在运行时根据需要自动扩展和收缩。vector以连续的内存块存储元素&#xff0c;可以快速访问和修改任意位置的元素。 以下是vector的基本概念和特点&#xff1a; 动…...

微信、支付宝修改步数【小米运动】

简介 小米运动是一款流行的健身应用,可以记录用户的步数和运动数据。然而,有些用户希望能够修改步数,以达到一些特定的目的。本文将介绍一个Python脚本,可以帮助用户实现修改小米运动步数的功能。 正文 脚本介绍: 本脚本是一个Python脚本,用于修改小米运动步数。通过模…...

stu02-初识HTML

1.HTML概述 &#xff08;1&#xff09;HTML是Hyper Text Mark-up Language的首字母缩写。 &#xff08;2&#xff09;HTML是一种超文本标记语言。 &#xff08;3&#xff09; 超文本&#xff1a;指除了文字外&#xff0c;页面内还可以包含图片、链接、甚至音乐、视频等非文字元…...

软件测试7大误区

随着软件测试对提高软件质量重要性的不断提高&#xff0c;软件测试也不断受到重视。但是&#xff0c;国内软件测试过程的不规范&#xff0c;重视开发和轻视测试的现象依旧存在。因此&#xff0c;对于软件测试的重要性、测试方法和测试过程等方面都存在很多不恰当的认识&#xf…...

【深度学习】 Python 和 NumPy 系列教程(十二):NumPy详解:4、数组广播;5、排序操作

目录 一、前言 二、实验环境 三、NumPy 0、多维数组对象&#xff08;ndarray&#xff09; 多维数组的属性 1、创建数组 2、数组操作 3、数组数学 4、数组广播 5、排序操作 1. np.sort() 函数 2. np.argsort() 函数 3. ndarray.sort() 方法 4. 按列或行排序 5. n…...

CSS宽度问题

一、魔法 为 DOM 设置宽度有哪些方式呢&#xff1f;最常用的是配置width属性&#xff0c;width属性在配置时&#xff0c;也有多种方式&#xff1a; widthmin-widthmax-width 通常当配置了 width 时&#xff0c;不会再配置min-width max-width&#xff0c;如果将这三者混合使…...

浅谈C++|STL之string篇

一.string的基本概念 本质 string是C风格的字符串&#xff0c;而string本质是一个字符串 string和char * 区别 char * 是一个指针string是一个类&#xff0c;类内部封装了char *&#xff0c;管理这个字符串&#xff0c;是一个char * 型容器。 特点 string类内部封装了很多成…...

Kubernetes Dashboard安装部署

Kubernetes Dashboard安装部署 1. 下载Dashboard 部署文件2. 修改yaml配置文件3. 应用安装&#xff0c;查看pod和svc4. 创建dashboard服务账户5. 创建admin-user用户的登录密钥6. 登录6.1 使用token登录(1) 短期token(2) token长期有效 6.2 使用 Kubeconfig 文件登录 7.安装met…...

在Qt的点云显示窗口中添加坐标轴C++

通过摸索整理了三个方法&#xff1a; 一、方法1&#xff1a;//不推荐&#xff0c;但可以参考 1、通过pcl的compute3DCentroid()方法计算点云的中心点坐标&#xff1b; 函数原型如下&#xff1a; compute3DCentroid (const pcl::PointCloud<PointT> &cloud, Eigen…...

[密码学入门]凯撒密码(Caesar Cipher)

密码体质五元组&#xff1a;P,C,K,E,D P&#xff0c;plaintext&#xff0c;明文空间 C&#xff0c;ciphertext&#xff0c;密文空间 K&#xff0c;key&#xff0c;密钥空间 E&#xff0c;encrypt&#xff0c;加密算法 D&#xff0c;decrypt&#xff0c;解密算法 单表代换…...

uboot 顶层Makefile-make xxx_deconfig过程说明三

一. uboot 的 make xxx_deconfig配置 本文接上一篇文章的内容。地址如下&#xff1a;uboot 顶层Makefile-make xxx_deconfig过程说明二_凌肖战的博客-CSDN博客 本文继续来学习 uboot 源码在执行 make xxx_deconfig 这个配置过程中&#xff0c;顶层 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岁的用户信息

描述 题目&#xff1a;现在运营想要针对24岁以上的用户开展分析&#xff0c;请你取出满足条件的设备ID、性别、年龄、学校。 用户信息表&#xff1a;user_profile iddevice_idgenderageuniversityprovince12138male21北京大学Beijing23214male复旦大学Shanghai36543female20…...

vite搭建vue3项目

参考视频 1.使用npm搭建vite项目,会自动搭建vue3项目 npm create vitelatest yarn create vite2.手动搭建vue3项目 创建一个项目名称的文件夹执行命令&#xff1a;npm init -y 快速的创建一个默认的包信息安装vite: npm i vite -D -D开发环境的依赖 安装vue,现在默认是vue3.…...

Qt中表格属性相关操作,调整表格宽度高度自适应内容等

1 表格列宽设置 利用Qt designer设计&#xff0c;可以通过改变表头的列宽从而保证内容不会被遮盖&#xff0c;输入空格的方式增加表头的长度&#xff0c;比如表头为"Value"&#xff0c;则改成"Value "&#xff0c;可以扩展列默认的宽度&#xff0c;保证后面…...

基于Helm Chart在Kubernetes中部署docker-mailserver邮件服务器

1. 项目概述与核心价值最近在折腾自建邮件服务器&#xff0c;发现了一个宝藏项目&#xff1a;docker-mailserver。它把邮件服务里那些复杂的组件&#xff0c;比如 Postfix、Dovecot、SpamAssassin、ClamAV 这些&#xff0c;全都打包进了一个 Docker 镜像里&#xff0c;开箱即用…...

从基础到智能体:RAG技术演进与实战避坑指南

1. 从基础到进阶&#xff1a;我眼中的RAG技术演进与实战价值如果你正在探索如何让大语言模型&#xff08;LLM&#xff09;变得更“靠谱”&#xff0c;尤其是在处理专业、实时或私有数据时&#xff0c;那么“检索增强生成”&#xff08;RAG&#xff09;技术几乎是你绕不开的路径…...

实证论文不用愁!虎贲等考 AI 数据分析:零代码跑模型,图表 + 结论一键生成

在本科、硕士毕业论文写作中&#xff0c;数据分析往往是最让学生头疼的章节。不会数据清洗、不懂模型选择、跑不出稳健结果、图表不会做、文字不会写&#xff0c;即便前面内容写得再完整&#xff0c;第四章一塌糊涂&#xff0c;整篇论文直接被导师打回。 传统软件如 Stata、Py…...

vibe-to-ui:让AI助手将你的“感觉”翻译成专业设计系统

1. 项目概述&#xff1a;当“感觉”成为设计语言如果你和我一样&#xff0c;是一个能写出复杂业务逻辑&#xff0c;但一碰到UI设计就头疼的开发者&#xff0c;那今天聊的这个工具&#xff0c;可能会彻底改变你的工作流。我们常常陷入一个困境&#xff1a;心里有一个模糊的“感觉…...

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)‌ 的 ‌命令行终端&#xff08;Terminal / Command Prompt / PowerShell&#xff…...

Drogon框架数据库连接监控终极指南:性能指标与智能告警机制

Drogon框架数据库连接监控终极指南&#xff1a;性能指标与智能告警机制 【免费下载链接】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站视频下载&#xff1a;BBDown让你的收藏从未如此简单 &#x1f3ac; 【免费下载链接】BBDown Bilibili Downloader. 一个命令行式哔哩哔哩下载器. 项目地址: https://gitcode.com/gh_mirrors/bb/BBDown 还在为无法离线观看B站优质内容而烦恼吗&#xff1f;BBDo…...

为AI智能体构建自动化RSS信息管道:agent-rss工具详解与实践

1. 项目概述&#xff1a;为AI智能体打造的RSS信息管道 如果你正在构建或使用AI智能体&#xff08;比如Claude Code、OpenClaw这类工具&#xff09;&#xff0c;并且希望它们能像人类一样&#xff0c;定时、定向地获取互联网上的最新信息&#xff0c;那么你很可能需要一个专门为…...

松下绿色科技战略:技术复用与协同效应如何驱动企业转型

1. 松下困局&#xff1a;消费电子巨头的十字路口2013年初的拉斯维加斯&#xff0c;消费电子展&#xff08;CES&#xff09;的喧嚣与霓虹之下&#xff0c;松下的时任社长津贺一宏站在聚光灯前&#xff0c;面对的却是一个冰冷而残酷的现实&#xff1a;公司预计将连续第二年录得高…...

别再只调API了!深入Qt QGraphicsView事件流,彻底搞懂拖拽缩放背后的‘为什么’

深入Qt QGraphicsView事件流&#xff1a;从拖拽缩放的底层机制到高效调试 在Qt的图形视图框架中&#xff0c;QGraphicsView、QGraphicsScene和QGraphicsItem构成了一个强大的交互系统。许多开发者虽然能够通过调用API实现基本功能&#xff0c;但当遇到事件被意外吞噬、坐标计算…...