付费下载
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Verilog实现UART之一:接收模块异步串行数据的一般格式是:起始位+数据位+停止位,其中起始位1位,8位数据位,奇校验、偶校验或无校验位;停止位可以是1、2位,LSBfirst:2.接收原理:由于UART是异步传输,没有传输同步时钟。为了能保证数据传输的正确性,采样模块利用16倍数据波特率的时钟进行采样,假设波特率为115200,则采样时钟为clk16x=115200×16。每个数据占据16个采样时钟周期,1bit起始位+8bit数据为+1bit停止位=10bit,因此一帧共占据16×10=160个采样时钟,考虑到每个数据为可能有1-2个采样时钟周期的便宜,因此将各个数据位的中间时刻作为采样点,以保证采样不会滑码或误码。一般UART一帧的数据位数为8,这样即使每个数据有一个时钟的误差,接收端也能正确地采样到数据。因此,采样时刻为24(跳过起始位的16个时钟)、40、56、72、88、104、120、136、152(停止位),如下图所示:其中,RX为接收引脚,CNT为对采样时钟进行计数的计数器;3.代码实现:
/******************************************************************************
*
*Module:rx_module
*FileName:rx_module.v
*Author:JC_Wang
*Version:1.0
*Date:2012/12/5
*Description:UART接收模块
*
*
********************************************************************************/modulerx_module(
inputGClk,/*systemtopestclock*/
inputclk16x,/*sampleclock,16×115200*/
inputrst_n,/*glabolresetsignal*/
inputrx,/*serialdatain*/
outputregDataReady,/*acompletebytehasbeenreceived*/
outputreg[7:0]DataReceived/*Bytesreceived*/
);/*捕获rx的下降沿,即起始信号*/
regtrigger_r0;
wireneg_tri;
always@(posedgeGClkornegedgerst_n)/*下降沿使用全局时钟来捕获的,其实用clk16x来捕获也可以*/
begin
if(!rst_n)
begin
trigger_r0<=1'b0;
end
else
begin
trigger_r0<=rx;
end
endassignneg_tri=trigger_r0&~rx;//----------------------------------------------
/*countercontrol*/
regcnt_en;
always@(posedgeGClkornegedgerst_n)
begin
if(!rst_n)
cnt_en<=1'b0;
elseif(neg_tri==1'b1)/*如果捕获到下降沿,则开始计数*/
cnt_en<=1'b1;
elseif(cnt==8'd152)
cnt_en<=1'b0;end
//---------------------------------------------
/*countermodule,对采样时钟进行计数*/
reg[7:0]cnt;
always@(posedgeclk16xornegedgerst_n)
begin
if(!rst_n)
cnt<=8'd0;
elseif(cnt_en)
cnt<=cnt+1'b1;
else
cnt<=8'd0;end
//---------------------------------------------
/*receivemodule*/
regStopBit_r;
always@(posedgeclk16xornegedgerst_n)
begin
if(!rst_n)
begin
DataReceived<=8'b0;
end
elseif(cnt_en)
case(cnt)
8'd24:DataReceived[0]<=rx;/*在各个采样时刻,读取接收到的数据*/
8'd40:DataReceived[1]<=rx;
8'd56:DataReceived[2]<=rx;
8'd72:DataReceived[3]<=rx;
8'd88:DataReceived[4]<=rx;
8'd104:DataReceived[5]<=rx;
8'd120:DataReceived[6]<=rx;
8'd136:DataReceived[7]<=rx;endcaseendalways@(posedgeclk16xornegedgerst_n)
begin
if(!rst_n)
DataReady<=1'b0;
elseif(cnt==8'd152)
DataReady<=1'b1;//接收到停止位后,给出数据准备好标志位
else
DataReady<=1'b0;
endendmodule注:1)采样时钟clk16x必须是波特率的16倍,波特率任意设置如57600、9600等皆可,只要满足16倍关系;2)此模块经过测试上万字节的接收,从未出错!3)引入了最高时钟对起始信号下降沿进行捕获,会造成什么不良影响,比如所谓的“时钟满天飞”问题,博主还不清楚,若您有好的讲解,请您发链接给我,在此感谢!4.如果需要校验位的朋友,可以参考xilinx公司的参考设计:
`timescale1ns/1nsmodulercvr(dout,data_ready,framing_error,parity_error,rxd,clk16x,rst,rdn);inputrxd;/*数据接收端*/
inputclk16x;/*采样时钟*/
inputrst;/*复位信号,高电平有效*/
inputrdn;/*数据接收使能,低电平有效*/
output[7:0]dout;/*数据输出*/
outputdata_ready;/*数据接收完毕标志位*/
outputframing_error;/*帧错误标志位*/
outputparity_error;/*校验位错误标志位*/regrxd1;
regrxd2;
regclk1x_enable;
reg[3:0]clkdiv;
reg[7:0]rsr;
reg[7:0]rbr;
reg[3:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年广州医科大学校本部公开招聘工作人员备考题库及一套完整答案详解
- 2026年三江侗族自治县斗江镇卫生院招聘备考题库及答案详解参考
- 2026年南通市劳动劳务有限公司面向社会公开招聘工作人员备考题库完整参考答案详解
- 2026年厦门大学航空航天学院航空宇航装备动力学课题组行政、科研助理招聘备考题库完整参考答案详解
- 2026年中国铁路通信信号上海工程局集团有限公司成都分公司招聘备考题库带答案详解
- 2026年农业农村部耕地质量和农田工程监督保护中心度面向社会公开招聘工作人员12人备考题库及完整答案详解1套
- 2026年中能建新型储能科技(山东)有限公司招聘备考题库有答案详解
- 2026年三门县人民政府海游街道办事处招聘社区辅工备考题库及1套完整答案详解
- 2026年和建国际工程有限公司招聘备考题库及完整答案详解1套
- 2026年宁波舜瑞产业控股集团有限公司招聘补充备考题库及1套完整答案详解
- 马克思主义与当代课后习题答案
- 施工升降机卸料平台(盘扣式)专项施工方案(品茗验算通过可套用)
- 安全员的述职报告
- 2025年内蒙古能源集团招聘(管理类)复习题库及答案
- 二十届四中全会测试题及参考答案(第三套)超难
- 机器人行业薪酬调查
- 2025年事业单位面试心理素质测试模拟试卷及答案
- 胸外科围手术期护理指南
- 吸塑机安全教育培训内容课件
- 2025至2030年中国牙科充填材料行业发展监测及发展战略规划报告
- 【《光伏发电MP-PT跟踪系统仿真设计》8800字(论文)】
评论
0/150
提交评论