module detect_module

(

CLK,RSTn,

RX_Pin_In,

H2L_Sig

);

input CLK;

input RSTn;

input RX_Pin_In;

output H2L_Sig;

reg H2L_F1;

reg H2L_F2;

always@(posedge CLK or negedge RSTn)

if(!RSTn)                        //有无复位

begin

H2L_F1<=1'b1;

H2L_F2<=1'b1;            //非阻塞语句

end

else

begin

H2L_F1<=RX_Pin_In;

H2L_F2<=H2L_F1;

end

assign H2L_Sig=H2L_F2&!H2L_F1;    //有低时,H to L 输出高电平

endmodule

module rx_bps_module

(

CLK,RSTn,

Count_Sig,

BPS_CLK

);

input CLK;

input RSTn;

input Count_Sig;

output BPS_CLK;

reg[12:0]Count_BPS;

always@(posedge CLK or negedge RSTn)

if(!RSTn)

Count_BPS<=13'd0;

else if(Count_BPS==12'd5207)    //9600 bps 传输速度使一位数据的周期是 0.000104166666666667s 。

Count_BPS<=13'd0;           //以50Mhz时钟频率要得到上述的定时需要: N = 0.000104166666666667 / ( 1 / 50Mhz ) = 5208

else if(Count_Sig)

Count_BPS<=Count_BPS+1'b1;

else

Count_BPS<=13'd0;

assign BPS_CLK=(Count_BPS==13'd2604)? 1'b1 : 1'b0;  //采集数据要求“在周期的中间”,那么结果是 5208 / 2 ,BPS_CLK为采样时钟

endmodule

module rx_control_module

(

CLK,RSTn,

H2L_Sig,RX_Pin_In,BPS_CLK,RX_En_Sig,

Count_Sig,RX_Data,RX_Done_Sig

);

input CLK;

input RSTn;

input H2L_Sig;

input RX_En_Sig;

input RX_Pin_In;

input BPS_CLK;

output Count_Sig;

output [7:0]RX_Data;

output RX_Done_Sig;

reg [3:0] i;

reg [7:0] rData;

reg isCount;

reg isDone;

always@(posedge CLK or negedge RSTn)

if(!RSTn)

begin

i<=4'd0;

rData<=8'd0;

isCount<=1'b0;

isDone<=1'b0;

end

else if(RX_En_Sig)

case(i)

4'd0:

if(H2L_Sig) begin i<=i+1'b1; isCount<=1'b1;end

4'd1:

if(BPS_CLK) begin i<=i+1'b1;end

4'd2,4'd3,4'd4,4'd5,4'd6,4'd7,4'd8,4'd9:

if(BPS_CLK) begin i<=i+1'b1;rData[i-2]<=RX_Pin_In;end

4'd10:

if(BPS_CLK) begin i<=i+1'b1;end

4'd11:

if(BPS_CLK) begin i<=i+1'b1;end

4'd12:

begin i<=i+1'b1;isDone<=1'b1;isCount<=1'b0;end

4'd13:

begin i<=1'b0;isDone<=1'b0;end

endcase

assign Count_Sig=isCount;

assign RX_Data=rData;

assign RX_Done_Sig=isDone;

endmodule

module rx_module

(

CLK,RSTn,

RX_Pin_In,RX_En_Sig,

RX_Done_Sig,RX_Data

);

input CLK;

input RSTn;

input RX_Pin_In;

input RX_En_Sig;

output [7:0]RX_Data;

output RX_Done_Sig;

wire H2L_Sig;

detect_module U1

(

.CLK(CLK),

.RSTn(RSTn),

.RX_Pin_In(RX_Pin_In),    //input from top

.H2L_Sig(H2L_Sig)         //output to U3

);

wire BPS_CLK;

rx_bps_module U2

(

.CLK(CLK),

.RSTn(RSTn),

.Count_Sig(Count_Sig),       //input from U3

.BPS_CLK(BPS_CLK)            // output to U3

);

wire Count_Sig;

rx_control_module U3

(

.CLK(CLK),

.RSTn(RSTn),

.H2L_Sig(H2L_Sig),          //input from U1

.RX_En_Sig(RX_En_Sig),      //input from top

.RX_Pin_In(RX_Pin_In),      //input from top

.BPS_CLK(BPS_CLK),          //input from U2

.Count_Sig(Count_Sig),      //output to U2

.RX_Data(RX_Data),          //output to top

.RX_Done_Sig(RX_Done_Sig)   //output to top

);

endmodule

转载于:https://www.cnblogs.com/April1314/p/3425365.html

串口收 程序FPGA相关推荐

  1. STM32的USART串口通讯程序(查询方式)

    STM32的USART串口通讯程序(查询方式) 文章目录 STM32的USART串口通讯程序(查询方式) 一.USART介绍 1.异步通信: 2.同步通信: 二.CubeMX创建项目 1.点击ACCE ...

  2. 基于STM32的USART串口通讯程序

    文章目录 一.串口协议和RS-232.485标准,以及RS232.485电平与TTL电平的区别,USB/TTL转232模块的工作原理 1.串口协议 2.RS-232.RS-485标准 3.RS232. ...

  3. 简单的串口助手程序开发

    1.简介 之前在烽火集团实习的时候,开发串口通信程序用的都是纯C++.感觉串口程序开发很考验人的逻辑思考能力.不过,现在好了,科研工作中,一切已存在的"利器"都可以用来为自己的&q ...

  4. 基础问题:在一个 Activity 中定义的串口接收程序,如果 Activity 切换到其它 Activity 后还能接收到串口数据吗?...

    ====================问题描述==================== RT:基础问题:在一个 Activity 中定义的串口接收程序,如果 Activity 切换到其它 Activ ...

  5. qt linux 串口eventdriven,详解 Qt 串口通信程序全程图文 (1)

    Qt 串口通信程序全程图文 是本文介绍的内容,在Qt中并没有特定的串口控制类,现在大部分人使用的是第三方写的qextserialport类,我们这里也是使用的该类.我们可以去 http://sourc ...

  6. C#编写串口通信程序(转)

    一.概述 在Visual Studio 6.0中编写串口通讯程序,一般都使用Microsoft Communication Control(简称MSComm)的通讯控件,只要通 过对此控件的属性和事件 ...

  7. 详解 Qt 串口通信程序全程图文 (5)

    Qt 串口通信程序全程图文是本文介绍的内容,本节也是最后一节,本节主要讲述的是解决一下重要问题的说明: (下面所说的第一个程序是指第一节中写的那个程序,第二个程序是指第三节更改完后的程序,第三个程序是 ...

  8. 详解 Qt 串口通信程序全程图文 (4)

    Qt 串口通信程序全程图文是本文介绍的内容,本文一开始先讲解对程序的改进,在文章最后将要讲解一些重要问题. 1.在窗口中加入一些组合框Combo Box,它们的名称及条目如下: 串口:portName ...

  9. 详解 Qt 串口通信程序全程图文 (3)

    Qt 串口通信程序全程图文是本文要介绍的内容,下面的程序在第一部分中所写的程序上进行了一些改进.加入打开和关闭串口,发送数据等功能. 1.加入了"打开串口","关闭串口& ...

  10. 详解 Qt 串口通信程序全程图文 (2)

    Qt 串口通信程序全程图文是本文介绍的内容,上一部分中已经介绍了实现最简单的串口接收程序的编写,下面将对程序内容进行分析. 1.首先应说明操作串口的流程 步骤一:设置串口参数,如:波特率,数据位,奇偶 ...

最新文章

  1. 蓝桥杯-表达式计算(java)
  2. 【MySQL】 已经存在大量数据的表做分区
  3. 第一季6:海思方案中uboot、kernel和rootfs的烧写方法
  4. 【面向对象】泛化与继承
  5. android mux协议,GSM 07.10 MUX 协议驱动解析
  6. ajax中加入if,如何添加if语句到Ajax
  7. 山东大学机电信息学院计算机网络,山东大学机电与信息工程学院2021考研复试考核内容...
  8. 获取图片外链的方法--网易相册
  9. 微信计步器怎么不计步_微信计步器怎么用?微信计步器在哪里?
  10. mysql straight join_MySQL基础之STRAIGHT JOIN用法简介
  11. 跨考计算机日程记录01
  12. k8s集群搭建(亲测有效)
  13. uni-app使用Hbuilder X如何苹果手机IOS打包、发布、运行
  14. VR虚拟展厅产品展示如何实现的
  15. ios 黑魔法 解决问题
  16. 做前端的我准备玩Arduino
  17. Gitlab Pages 启用
  18. 怎么在电脑上看磁盘分配单元的大小_Win10系统如何磁盘分区,今天小黑来教你,看完涨知识了!...
  19. 录音转文字实用工具(可互转)
  20. 第三方应用分享到微信朋友圈功能

热门文章

  1. 微软全息眼镜Hololens开发者版发货 售19000元
  2. java程序如何在手机运行_怎么在手机上运行手机JAVA程序
  3. java8-常用stream操作(1)
  4. 怎么把手机便签图片上的文字转换成可以编辑的文字?
  5. python 学习(八—1) 项目:生成随机的测试试卷文件
  6. 【金融财经】金融市场一周简报(2018-03-30)
  7. React Native 超长列表优化方案
  8. dp转hdmi转换器_HDMI连接器类型和转换器
  9. Centos安装Perl
  10. 7 年 Python 的我,总结了这 90 条写 Python 程序的建议