串口发送端verilog代码分析

 `timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer: chensimin
//
// Create Date: 2018/05/23 13:59:45
// Design Name:
// Module Name: uart_tx
// Project Name:
// Target Devices:
// Tool Versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
////////////////////////////////////////////////////////////////////////////////// module uart_tx( input wire clk,
input wire receive_ack,
input wire [:]data_o,
output reg txd ); localparam IDLE = ,
SEND_START = ,
SEND_DATA = ,
SEND_END = ; reg txd = ; reg [:]cur_st = ;
reg [:]nxt_st = ;
always @(posedge clk)
begin
cur_st <= nxt_st;
end always @(*)
begin
nxt_st = cur_st; case(cur_st) IDLE:
begin
if(receive_ack)
nxt_st = SEND_START;
end SEND_START:
begin
nxt_st = SEND_DATA;
end //每次发送是8bit
SEND_DATA:
begin
if(count == )
nxt_st = SEND_END;
end SEND_END:
begin
if(receive_ack)
nxt_st = SEND_START;
end default:
begin
nxt_st = IDLE;
end endcase
end reg [:]count = ;
always @(posedge clk)
begin
if(cur_st == SEND_DATA)
count <= count + 'b1; else if(cur_st == IDLE || cur_st == SEND_END)
count <= ;
end reg [:]data_o_tmp = ;
always @(posedge clk)
begin
if(cur_st == SEND_START)
data_o_tmp <= data_o; // 在开始状态,采集数据 else if(cur_st == SEND_DATA) //在发送状态,对暂存数据进行右移操作
data_o_tmp[:] <= data_o_tmp[:];
end always @(posedge clk)
begin
if(cur_st == SEND_START)
txd <= ; else if(cur_st == SEND_DATA)
txd <= data_o_tmp[]; //在发送状态,发送最低位 else if(cur_st == SEND_END)
txd <= ;
end endmodule /* add_force {/uart_tx/clk} -radix hex {1 0ns} {0 50000ps} -repeat_every 100000ps
add_force {/uart_tx/data_o} -radix hex {ab 0ns}
add_force {/uart_tx/receive_ack} -radix hex {1 0ns} */

仿真结果:

串口发送端verilog代码分析的更多相关文章

  1. 串口接收端verilog代码分析

    串口接收端verilog代码分析 `timescale 1ns / 1ps ////////////////////////////////////////////////////////////// ...

  2. verilog 代码分析与仿真

    verilog 代码分析与仿真 注意:使用vivado 自带的仿真工具, reg和wire等信号需要赋予初始值 边沿检测 module signal_test( input wire cmos_pcl ...

  3. Bluez SPP实现代码分析(转)

    源:http://blog.csdn.net/walkingman321/article/details/7218705 本文分析蓝牙协议栈中蓝牙转串口(SPP)部分的实现. 1.  基本概念 Blu ...

  4. RX232串口发送

    在进行工程调试的时候有时候需要对变量进行观察,SingnaTap II Logic Analyzer 只能对管脚进行观察,所以要观察内部的变量必须把内部的变量进行输出.一种方法是直接把变量定义成管脚通 ...

  5. 【第五篇】androidEventbus源代码阅读和分析之发送粘性事件和接收粘性事件代码分析

    代码里面发送粘性事件代码如下: // 发送Sticky事件 EventBus.getDefault().postSticky(new User("soyoungboy", &quo ...

  6. 基于Verilog的带FIFO写入缓冲的串口发送接口封装

    一.模块框图及基本思路 tx_module:串口发送的核心模块,详细介绍请参照前面的“基于Verilog的串口发送实验” fifo2tx_module:当fifo不为空时,读取fifo中的数据并使能发 ...

  7. 基于Verilog的串口发送程序

    一.模块框图及基本思路 tx_bps_module:波特率时钟产生模块 tx_control_module:串口发送的核心控制模块 tx_module:前两个模块的组合 control_module: ...

  8. Flink中发送端反压以及Credit机制(源码分析)

    上一篇<Flink接收端反压机制>说到因为Flink每个Task的接收端和发送端是共享一个bufferPool的,形成了天然的反压机制,当Task接收数据的时候,接收端会根据积压的数据量以 ...

  9. 完整全面的Java资源库(包括构建、操作、代码分析、编译器、数据库、社区等等)

    构建 这里搜集了用来构建应用程序的工具. Apache Maven:Maven使用声明进行构建并进行依赖管理,偏向于使用约定而不是配置进行构建.Maven优于Apache Ant.后者采用了一种过程化 ...

随机推荐

  1. 20175317 《Java程序设计》第三周学习总结

    20175317 <Java程序设计>第三周学习总结 教材学习内容总结 第三周我学习了教材第四章的内容,了解了Java中的部分常用语句,学到了以下内容: 明白了什么是类,成员变量有哪些,什 ...

  2. 安卓MVP框架

    一.理解MVP 原文地址 我的Demo 效果图: 项目结构: 实现 一.Model层 首先定义一个实体类User package app.qcu.pmit.cn.mvpdemo.model; /** ...

  3. 【C/C++】Rotate Array

    实现数组旋转(循环右移) 如数组 [1, 2, 3, 4, 5, 6, 7],右移 3 位则为 [5, 6, 7, 1, 2, 3, 4] 首先使用泛型函数 void Rotate(void *fro ...

  4. vue项目中多个组件之间传递数据

    //父组件<template> <div> <div style="float: left"> <input-data :city=&qu ...

  5. 二十二. Python基础(22)--继承

    二十二. Python基础(22)--继承 ● 知识框架   ● 继承关系中self的指向 当一个对象调用一个方法时,这个方法的self形参会指向这个对象 class A:     def get(s ...

  6. [Leetcode 90]求含有重复数的子集 Subset II

    [题目] Given a collection of integers that might contain duplicates, nums, return all possible subsets ...

  7. springboot学习之构建简单项目搭建

    概述 相信对于Java开发者而言,spring和springMvc两个框架一定不陌生,这两个框架需要我们手动配置的地方非常多,各种的xml文件,properties文件,构建一个项目还是挺复杂的,在这 ...

  8. Android stdio 报错 error invoking main method

    打开Android stdio失败 报错:error invoking main method 想想前一天做了什么事?? 昨天把企图把Android Stdio文件包移盘,但是中途截止了,也就是说移动 ...

  9. UDP协议学习(转)

    reference: https://blog.csdn.net/s_lisheng/article/details/73538229                  https://blog.cs ...

  10. 1091 N-自守数

    如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”.例如 3×92​2​​=25392,而 25392 的末尾两位正好是 92,所以 92 是一个 3-自守 ...