六盘水网站建设求职简历杭州公司网站建设套餐

news/2025/10/6 12:46:35/文章来源:
六盘水网站建设求职简历,杭州公司网站建设套餐,免费用的云服务器,建设小说网站违法吗FPGA-结合协议时序实现UART收发器#xff08;四#xff09;#xff1a;串口驱动模块uart_drive、例化uart_rx、uart_tx 串口驱动模块uart_drive、例化uart_rx、uart_tx#xff0c;功能实现 文章目录 FPGA-结合协议时序实现UART收发器#xff08;四#xff09;#xff1…FPGA-结合协议时序实现UART收发器四串口驱动模块uart_drive、例化uart_rx、uart_tx 串口驱动模块uart_drive、例化uart_rx、uart_tx功能实现 文章目录 FPGA-结合协议时序实现UART收发器四串口驱动模块uart_drive、例化uart_rx、uart_tx一、功能实现二、uart_drive代码总结 一、功能实现 对照代码串口发送模块uart_drive实现功能包括 CLK_DIV时钟分频将系统输入时钟分频成串口所需波特率时钟rst_gen_module复位产生模块分频后的波特率时钟复位不稳定自己产生波特率时钟复位r_rx_overvalue 过采样动态时钟纠正方法识别获取起始位位置r_rx_overlock 过采样锁控制过采样开关r_user_rx_valid 用户接受有效利用valid来判断valid上升沿从而判断数据接收完毕用于控制过采样锁r_rx_overlockr_uart_rx_clk_rst处理纠正后的准确时钟复位r_uart_rx_clk_rst利用准确的复位系统时钟产生所需要的准确的串口接收时钟统一到同一时钟域中即波特率时钟域慢两拍 -r_user_rx_data_1 w_user_rx_data; r_user_rx_data_2 r_user_rx_data_1; r_user_rx_valid_1 w_user_rx_valid; r_user_rx_valid_2 r_user_rx_valid_1; 二、uart_drive代码 timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 2023/09/09 13:14:22 // Design Name: // Module Name: uart_drive // Project Name: // Target Devices: // Tool Versions: // Description: 串口数据的回环驱动模块 // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // //module uart_drive#(//串口可调参数parameter P_SYSTEM_CLK 50_000_000, parameter P_UART_BUADRATE 9600,parameter P_UART_DATA_WIDTH 8,parameter P_UART_STOP_WIDTH 1,parameter P_UART_CHECK 0 )( //串口驱动输入输出input i_clk ,input i_rst ,input i_uart_rx ,output o_uart_tx ,input [P_UART_DATA_WIDTH - 1 : 0] i_user_tx_data ,//用户输出数据作为驱动的输入,即先输入到驱动处理再输出input i_user_tx_valid ,//握手output o_user_tx_ready ,output [P_UART_DATA_WIDTH - 1 : 0] o_user_rx_data ,//用户输入数据作为驱动的输出即先经过驱动输出再输入到用户output o_user_rx_valid ,output o_user_clk,output o_user_rst);localparam P_CLK_DIV_NUMBER P_SYSTEM_CLK / P_UART_BUADRATE;//分频数wire w_uart_buadclk ;//串口波特率时钟线 wire w_uart_buadclk_rst ; wire w_uart_rx_clk ;//串口接收时钟线 wire w_uart_rx_rst ; reg r_uart_rx_clk_rst ; reg [2:0] r_rx_overvalue ; reg [2:0] r_rx_overvalue_1d ;//延迟1拍信号 reg r_rx_overlock ;//过采样锁控制过采样 reg r_user_rx_valid ;//用户接收有效用于判断可进行再次接收即再次过采样判断起始位 wire [P_UART_DATA_WIDTH - 1 : 0] w_user_rx_data ; wire w_user_rx_valid ;reg [P_UART_DATA_WIDTH - 1 : 0] r_user_rx_data_1 ; reg [P_UART_DATA_WIDTH - 1 : 0] r_user_rx_data_2 ; reg r_user_rx_valid_1 ; reg r_user_rx_valid_2 ;//统一到同一时钟域中即波特率时钟域 assign o_user_clk w_uart_buadclk; assign o_user_rst w_uart_buadclk_rst; assign o_user_rx_data r_user_rx_data_2; assign o_user_rx_valid r_user_rx_valid_2;//分频模块将时钟频率分频成串口波特率时钟 CLK_DIV_module#(.P_CLK_DIV_CNT (P_CLK_DIV_NUMBER) //最大为65535 ) CLK_DIV_module_u0(.i_clk (i_clk) ,//输入时钟.i_rst (i_rst) ,//high value,分配时钟的复位不准确所以需要重新生成复位rst_gen_module.o_clk_div (w_uart_buadclk) //分频后的时钟 );//复位产生模块因为分频时钟后复位不准确所以自己来产生复位 rst_gen_module#(.P_RST_CYCLE (10) //复位的周期 ) rst_gen_module_u0 (.i_clk (w_uart_buadclk) ,.o_rst (w_uart_buadclk_rst));//分频模块用于过采样计数判断起始位下降沿用于串口接收使用 //产生能够准确获取中间数据的始终 CLK_DIV_module#(.P_CLK_DIV_CNT (P_CLK_DIV_NUMBER) //最大为65535 ) CLK_DIV_module_u1(.i_clk (i_clk) ,//输入时钟.i_rst (r_uart_rx_clk_rst) ,//初始状态高电平.o_clk_div (w_uart_rx_clk) //分频后的时钟 );uart_rx#(//串口可调参数.P_SYSTEM_CLK (P_SYSTEM_CLK ), .P_UART_BUADRATE (P_UART_BUADRATE ),.P_UART_DATA_WIDTH (P_UART_DATA_WIDTH ),.P_UART_STOP_WIDTH (P_UART_STOP_WIDTH ),.P_UART_CHECK (P_UART_CHECK ) ) uart_rx_u0( //串口驱动输入输出.i_clk (w_uart_rx_clk) ,.i_rst (w_uart_buadclk_rst) ,.i_uart_rx (i_uart_rx) , .o_user_rx_data (w_user_rx_data) ,//用户输入数据作为驱动的输出即先经过驱动输出再输入到用户.o_user_rx_valid (w_user_rx_valid));uart_tx#(//串口可调参数.P_SYSTEM_CLK (P_SYSTEM_CLK ),.P_UART_BUADRATE (P_UART_BUADRATE ),.P_UART_DATA_WIDTH (P_UART_DATA_WIDTH ),.P_UART_STOP_WIDTH (P_UART_STOP_WIDTH ),.P_UART_CHECK (P_UART_CHECK ) ) uart_tx_u0( //串口驱动输入输出.i_clk (w_uart_buadclk) ,.i_rst (w_uart_buadclk_rst) ,.o_uart_tx (o_uart_tx) ,.i_user_tx_data (i_user_tx_data) ,//用户输出数据作为驱动的输入,即先输入到驱动处理再输出.i_user_tx_valid (i_user_tx_valid) ,//握手.o_user_tx_ready (o_user_tx_ready));/* 串口接收会存在亚稳态状态虽然可以使用打两拍的方法解决但不够稳妥一样出现较大累计误差 故采用时钟来动态纠正使用过采样方法来检测起始位的下降沿产生新的分频后的时钟使用该时钟可以保证每次读取数据时都在数据上升沿的中间位置 虽然使用时钟动态纠正方法一样会存在累计误差但因为每次串口传输8bit数据并且每次都进行了时钟纠正所以足以稳定满足使用效果 *///处理过采样r_rx_overvalue,不断获取传输值 always (posedge i_clk or posedge i_rst) beginif(i_rst) //初始状态r_rx_overvalue d0;else if(!r_rx_overlock) //变化状态r_rx_overvalue {r_rx_overvalue[1:0] , i_uart_rx};//低位获取i_uart_rx再左移此处先发低位还是先发高位影响不大主要是进行高低电平判断起始位用else //保持状态r_rx_overvalue 3b111; end//处理过采样锁r_rx_overlock控制过采样因为只需要过采样起始位的位置 //通过读取三位数据来判断当前是否为起始位的位置当前3拍全为低电平0前3拍全为高电平1,则判断为起始位下降沿位置 always (posedge i_clk or posedge i_rst) beginif(i_rst)r_rx_overlock d0;else if(!w_user_rx_valid r_user_rx_valid) //本次传输完成可以再次进行过采样了,使用vaild判断,同样采用慢一拍来判断上升沿当前信号r_user_rx_valid为1前一拍信号w_user_rx_valid为0即上升沿表示传输完成r_rx_overlock d0;else if(r_rx_overvalue 3b000 r_rx_overvalue_1d 3b111) //识别到起始位的位置此时不需要再次过采样了r_rx_overlock d1;elser_rx_overlock r_rx_overlock; end//处理用户接收有效信号r_user_rx_valid用于表示本次接收数据完毕可再次进行接收数据即再次过采样来判断起始位位置 //同样也是采用慢一拍的信号来结合判断vaild的上升沿 always (posedge i_clk or posedge i_rst) beginif(i_rst)r_user_rx_valid d0;elser_user_rx_valid w_user_rx_valid; //r_user_rx_valid比w_user_rx_valid慢一拍即同一时刻w_user_rx_valid为当前值r_user_rx_valid为前一拍值 end//处理纠正后的准确时钟复位r_uart_rx_clk_rst利用准确的复位系统时钟产生所需要的准确的串口接收时钟 //利用准确的时钟复位作为分频模块的复位输入输出准确的串口接收时钟即每次都在数据位中间上升沿 always (posedge i_clk or posedge i_rst) beginif(i_rst)r_uart_rx_clk_rst d1;else if(r_rx_overvalue 3b000 r_rx_overvalue_1d 3b111)//起始位时r_uart_rx_clk_rst d0;elser_uart_rx_clk_rst r_uart_rx_clk_rst; end/* //uart的rx的output与tx的输入不是同一时钟域的需要统一到同一时钟域中 //即o_user_rx_data、o_user_rx_vaild统一到w_uart_buadclk波特率时钟域中 //因为他们的时钟频率比较相近要求不严格所以打两拍就算统一到波特率时钟域了我目前也不太理解 */ //处理统一始终域问题打两拍 always (posedge w_uart_buadclk or posedge w_uart_buadclk_rst) beginif(w_uart_buadclk_rst)beginr_user_rx_data_1 d0;r_user_rx_data_2 d0;r_user_rx_valid_1 d0;r_user_rx_valid_2 d0;endelsebeginr_user_rx_data_1 w_user_rx_data;r_user_rx_data_2 r_user_rx_data_1;r_user_rx_valid_1 w_user_rx_valid;r_user_rx_valid_2 r_user_rx_valid_1;end endendmodule 总结 串口驱动模块uart_drive实现功能包含实现同时例化uart_rx、uart_tx

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

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

相关文章

数据编织平台实现AI代理自助数据访问

数据管理初创公司发布即时数据编织平台重大更新,支持AI代理自助数据访问。平台采用自然语言处理与自动化数据准备技术,无需ETL流程即可跨数百个数据源提供统一访问,并配备上下文引擎和对话式AI助手。数据编织初创公…

高水平的锦州网站建设厦门网站设计大概多少钱

目录 一、简介 二、BeanFactory 三、FactoryBean 四、区别 五、使用场景 总结 一、简介 在Spring框架中,IOC(Inversion of Control)容器是一个核心组件,它负责管理和配置Java对象及其依赖关系,实现了控制反转&a…

广州设计公司网站磁县邯郸网站建设

是将若干个学习器(分类器&回归器)组合之后产生一个新学习器。弱分类器(weak learner)指那些分类准确率只稍微好于随机猜测的分类器(errorrate <。 集成算法的成功在于保证弱分类器的多样性(Diversity)。而且集成不稳定的算法也能够得到一个比较明显的性能提升。 常见的…

[题解]P12008 【MX-X10-T4】[LSOT-4] Fragment of Memories

P12008 【MX-X10-T4】[LSOT-4] Fragment of Memories 可以想到很 naive 的思路,对于每个 \(x\) 值二分答案 \(m\)。check 函数可以 \(O(n)\) 完成。总时间是 \(O(n^2\log n)\) 的。我们发现 check 函数明显还能凹,考…

自然语言处理(NLP)的系统学习路径规划 - 实践

自然语言处理(NLP)的系统学习路径规划 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", &…

2.Android Compose 基础系列:在 Kotlin 中创建和使用变量

2.Android Compose 基础系列:在 Kotlin 中创建和使用变量在应用开发中,有些内容是固定的,例如“设置”中的菜单项;而有些内容会不断变化,比如新闻应用中的标题、来源或发布时间。为了让这些变化自动更新,而不是每…

wordpress开启多站点好处西安网站建设winkuo

shutil.copyfileobj() 是 Python 的 shutil 模块中用于复制文件对象内容的一个函数。它可以将一个文件对象的内容复制到另一个文件对象中。 shutil.copyfileobj(fsrc, fdst, length16*1024) fsrc: 源文件对象&#xff0c;即要从中复制内容的文件对象。fdst: 目标文件对象&…

线性表的顺序存储和链式存储

目录核心概念一、顺序存储(顺序表)1. 核心特点2. 实现方式3. 基本操作分析4. 优缺点总结二、链式存储(链表)1. 核心特点2. 实现方式(以单链表为例)3. 基本操作分析4. 优缺点总结三、对比总结表四、如何选择?核心…

AWS WebRTC:获取ICE服务地址(part 3):STUN服务和TURN服务的作用 - 实践

AWS WebRTC:获取ICE服务地址(part 3):STUN服务和TURN服务的作用 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-famil…

完整教程:进阶配置与优化:配置 HTTPS 以确保数据安全传输

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

贵州省城乡和住房建设厅官方网站网络方案设计与实现

二、用go语言&#xff0c;给定一个n结点的二叉树&#xff0c;写出一个 O(n)时间的递归过程&#xff0c;将该树每个结点的关键字输出。 文心一言&#xff1a; 在Go语言中&#xff0c;你可以使用递归函数来遍历二叉树的所有节点&#xff0c;并输出每个节点的关键字。以下是一个…

Python中的对象池与驻留机制:小整数、字符串与大整数

Python中的对象池与驻留机制:小整数、字符串与大整数 Python为优化内存使用和执行效率,设计了多种对象复用机制,其中最典型的是小整数对象池、字符串驻留(intern)机制和大整数对象池。以下是整理后的详细说明,包…

基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA

1.算法运行效果图预览 (完整程序运行后无水印)2.算法运行软件版本 matlab2024b3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)global MR%表示接收天线的数量 global MT%表示发射天线的数量 global mods…

厦门做返利网站的公司室内设计培训网课

1、# 创建数据库语句create database mydb default character set utf8;# 运用数据库语句use mydb;# 创建表格&#xff0c;这里只简单的创建一张表格# 设置InnoDB主要是为了事务操作的需要create table mytable(id int primary key auto_increment,name varchar(20),count int …

python网站开发 django沈阳网站哪家公司做的好

1. escape 和 unescapeescape()不能直接用于URL编码&#xff0c;它的真正作用是返回一个字符的Unicode编码值。采用unicode字符集对指定的字符串除0-255以外进行编码。所有的空格符、标点符号、特殊字符以及更多有联系非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在…

微服务各个部分的作用 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

US$34.2 KEYDIY KD B27-3 Universal Flip Remote 3 Buttons for Audi Type 5pcs/lot

KEYDIY KD B27-3 Universal Flip Remote 3 Buttons for Audi Type 5pcs/lotProduct Specifications:Manufacturer: KEYDIY Condition: New Color: Black Buttons: 3 Transponder: No Proximity / Smart / Keyless Go: …

郴州网站建设公司电话不备案域名能用吗

网络安全和内容交付网络&#xff08;CDN&#xff09;之间有着密切的关系。网络安全主要涉及保护网络和系统免受各种威胁和攻击&#xff0c;而CDN是一种用于提供更快速、高效和可靠的内容交付服务的技术。在当今数字化和云计算时代&#xff0c;网络安全和CDN之间的关系变得更加紧…

网站导航图怎么做的详细步骤wordpress默认分类链接

1 帐号管理、认证授权 1.1 账号管理 1.1.1 ELK-Huawei-01-01-01 编号&#xff1a; ELK-Huawei-01-01-01 名称&#xff1a; 无效帐户清理 实施目的&#xff1a; 删除与设备运行、维护等工作无关的账号 问题影响&#xff1a; 账号混淆&#xff0c;权限不明确&#…

计算机网站开发要考什么证网站文章怎么做才能被收录

目录 一、准备工作 1.环境相关 2.Unity中配置 二、热更新 1.创建 HotUpdate 热更新模块 2.安装和配置HybridCLR 3.配置PlayerSettings 4.创建热更新相关脚本 5.打包dll 6.测试热更新 一、准备工作 1.环境相关 安装git环境。Win下需要安装visual studio 2019或更高版…