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

仿站模板网络推广员压力大吗

仿站模板,网络推广员压力大吗,在东莞怎么找工作,图标怎么在wordpressFPGA-结合协议时序实现UART收发器(五):串口顶层模块UART_TOP、例化PLL、UART_FIFO、uart_drive 串口顶层模块UART_TOP、例化PLL、UART_FIFO、uart_drive,功能实现。 文章目录 FPGA-结合协议时序实现UART收发器(五&…

FPGA-结合协议时序实现UART收发器(五):串口顶层模块UART_TOP、例化PLL、UART_FIFO、uart_drive

串口顶层模块UART_TOP、例化PLL、UART_FIFO、uart_drive,功能实现。


文章目录

  • FPGA-结合协议时序实现UART收发器(五):串口顶层模块UART_TOP、例化PLL、UART_FIFO、uart_drive
  • 一、功能实现
  • 一、UART_TOP代码
  • 总结


一、功能实现

对照代码,串口发送模块UART_TOP实现功能包括:

  • PLL锁相环,实现稳定系统输入时钟功能
  • UART_FIFO,数据先进先出,实现数据缓存功能,防止出现数据错乱
  • w_clk_rst = ~w_system_pll_locked;保证复位电平是先高位再地位
  • r_user_tx_ready,用户输出ready信号慢一拍,用于判断数据是否发送完毕,是否为结束状态
  • r_rden_lock,fifo使能锁控制
  • r_fifo_rden,fifo读使能情况
  • r_uart_tx_vaild比FIFO中的读使能r_fifo_rden慢一拍,为实现有效信号和数据能够匹配上,所以对有效信号进行打一拍来延迟一个周期,从而实现信号和数据匹配,正确获取数据

一、UART_TOP代码

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date: 2023/09/09 13:13:15
// Design Name: 
// Module Name: UART_TOP
// Project Name: 
// Target Devices: 
// Tool Versions: 
// Description: 
// 
// Dependencies: 
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
//不要直接用系统时钟!!!
//要添加一个pll锁相环,进行滤波稳定时钟,方便后续处理
//module UART_TOP(//模块输入输出input       i_clk       ,input       i_uart_rx   ,output      o_uart_tx   );wire                    w_clk_50Mhz;
wire                    w_clk_rst;
wire                    w_system_pll_locked;wire    [7:0]           w_user_tx_data;
wire                    w_user_tx_ready;
wire    [7:0]           w_user_rx_data;
wire                    w_user_rx_vaild;
wire                    w_user_clk;
wire                    w_user_rst;
wire                    w_fifo_empty;
reg                     r_fifo_rden;
reg                     r_uart_tx_vaild;
reg                     r_rden_lock;//fifo使能锁
reg                     r_user_tx_ready;//pll锁存器在时钟不稳定的时候是低电平,在稳定后是高电平,即先低电平后高电平
//系统中习惯使用复位信号先高后低,即上电先高电平进行复位,然后再低电平,故需进行取反
assign w_clk_rst = ~w_system_pll_locked;system_pll system_pll_u0
(.clk_in1                        (i_clk),      // input clk_in1.clk_out1                       (w_clk_50Mhz),     // output clk_out1.locked                         (w_system_pll_locked)       // output locked
);uart_drive#(//串口可调参数.P_SYSTEM_CLK                  (50_000_000),.P_UART_BUADRATE               (115200),.P_UART_DATA_WIDTH             (8),.P_UART_STOP_WIDTH             (1),.P_UART_CHECK                  (0)
)
uart_drive_u0( //串口驱动输入输出.i_clk                         (w_clk_50Mhz),.i_rst                         (w_clk_rst),.i_uart_rx                     (i_uart_rx),.o_uart_tx                     (o_uart_tx),.i_user_tx_data                (w_user_tx_data),//用户输出数据,作为驱动的输入,即先输入到驱动处理再输出.i_user_tx_vaild               (r_uart_tx_vaild),//握手.o_user_tx_ready               (w_user_tx_ready),.o_user_rx_data                (w_user_rx_data),//用户输入数据,作为驱动的输出,即先经过驱动输出再输入到用户.o_user_rx_vaild               (w_user_rx_vaild),.o_user_clk                    (w_user_clk),.o_user_rst                    (w_user_rst));UART_FIFO UART_FIFO_U0 (.clk          (w_user_clk),      // input wire clk.srst         (w_user_rst),    // input wire srst.din          (w_user_rx_data),      // input wire [7 : 0] din.wr_en        (w_user_rx_vaild),  // input wire wr_en.rd_en        (r_fifo_rden),  // input wire rd_en.dout         (w_user_tx_data),    // output wire [7 : 0] dout.full         (),    // output wire full.empty        (w_fifo_empty)  // output wire empty
);//处理用户输出ready信号慢一拍
//用于判断数据是否发送完毕,是否为结束状态
always @(posedge w_user_clk or posedge w_user_rst)
beginif(w_user_rst)r_user_tx_ready <= 'd0;elser_user_tx_ready <= w_user_tx_ready;end//处理fifo使能控制,使能锁r_rden_lock
//防止fifo使能持续两个周期,导致读取两个数据,但握手只会读取一个数据,就会导致数据丢失,故需要使能锁控制来fifo只持续一个周期
always @(posedge w_user_clk or posedge w_user_rst)
beginif(w_user_rst)                                      //初始状态r_rden_lock <= 'd0;else if(w_user_tx_ready && !r_user_tx_ready)        //结束状态,当前为高电平1,前一拍为低电平,即上升沿判断为结束状态r_rden_lock <= 'd0;else if(~w_fifo_empty && w_user_tx_ready)           //变化状态,即fifo内有数据+ready好了r_rden_lock <= 'd1;elser_rden_lock <= r_rden_lock;end//处理fifo读使能情况,r_fifo_rden
always @(posedge w_user_clk or posedge w_user_rst) 
beginif(w_user_rst)r_fifo_rden <= 'd0;else if(~w_fifo_empty && w_user_tx_ready)r_fifo_rden <= 'd1;elser_fifo_rden <= 'd0;
end//因为发送的数据是比FIFO中的读使能r_fifo_rden满一个周期
//为实现有效信号和数据能够匹配上,所以对有效信号进行打一拍来延迟一个周期,从而实现信号和数据匹配,正确获取数据
always @(posedge w_user_clk or posedge w_user_rst) 
beginif(w_user_rst)r_uart_tx_vaild <= 'd0;elser_uart_tx_vaild <= r_fifo_rden;
endendmodule

总结

串口顶层模块UART_TOP、例化PLL、UART_FIFO、uart_drive,功能实现,数据缓存先进先出fifo实现,fifo使能控制等功能实现。

http://www.mmbaike.com/news/29436.html

相关文章:

  • 厦门网站建设是什么意思做一个公司网站要多少钱
  • 日本出线未seo关键词查询工具
  • 东莞土木建筑学会网站百度网站搜索排名
  • 泉州疫情最新数据seo专员工资一般多少
  • 建设银行商城网站怎么做好网络营销推广
  • 网站背景 手机显示不全沐浴露营销软文
  • 常州网站公司深圳seo网站优化公司
  • 怎么做装球的网站珠海seo快速排名
  • 做外国购物网站需要交税吗免费seo优化
  • 库存网站建设哪家好网页制作咨询公司
  • 网站和浏览器不兼容windows优化软件排行
  • 网站个人中心wordpress免费网站安全软件大全
  • 做购物网站的外挂需要自己搭建服务器吗千峰培训
  • 陇西 网站开发营销课程
  • Wordpress多语言配置沈阳seo关键词排名优化软件
  • 打开一个不良网站提示创建成功怎么在平台上做推广
  • ps做图软件怎么下载网站百度竞价推广是什么
  • 线上网站设计培训青岛网站建设微动力
  • 精品网站建设教程江阴网站优化公司
  • 住房和城乡建设部幼儿园网站seo外包公司兴田德润官方地址
  • 郑州做网站哪家好站长查询站长工具
  • 山东网站制作应用个人网站免费域名和服务器
  • 邯郸网站建设提供商seo公司排名教程
  • 宁波网站建设i sp.net智能优化大师下载
  • 室内设计联盟app下载英文谷歌seo
  • 陕西建委建设厅网站镇江网站建设制作公司
  • 网站建设专家怎么样在线代理浏览国外网站
  • 政府建设行业服务网站广州网站优化多少钱
  • 网站平台建设实训心得体会优化方案
  • 网站建设 zzit6淮北网站建设