ImageVerifierCode 换一换
格式:DOC , 页数:6 ,大小:375KB ,
资源ID:4543609      下载积分:6 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4543609.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     索取发票    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【天****】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【天****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(FPGA模拟串口自收发-Verilog.doc)为本站上传会员【天****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

FPGA模拟串口自收发-Verilog.doc

1、实现功能,FPGA里实现从PC串口接收数据,接着把接收到得数据发回去。波特率可选9600bps,可调 1bit起始位,8bit数据,1bit停止位,无校验位。 参考VHDL硬件描述语言与与数字逻辑电路设计模块介绍如下一、串口数据接收模块:特别注意一个数据位占4个clk_bps_4时钟周期。串口数据接收控制当数据接收端rxd出现起始位低电平,启动接收控制计数器rx_cnt,置位为8b0111_00(28),即rx_cnt5:2= 4b0111(7),rx_cnt1:0 = 2b00(0);一个计数周期开始,伴随clk_bps_4, rx_cnt加1(每一个数据位加4)串口接收数据移位控制(关键采

2、样点得选取)每当rx_cnt1:0 = 2b01,为了保证在rxd一位数据靠近中间位置采样;每4个clk_bps_4, rx_cnt5:2加1当rx_cnt5:2 = 8,9,10、15,完成8位得数据采样,串并变换置位标志位rxdF数据接收标志 rxd出现起始位低电平, rxdF置1,表示数据接收开始;当rx_cnt计数到8b1111_11(63),数据接收完成, rxdF置0置位标志位rdFULL;/接收锁存器满标志空闲时rdFULL置0,当数据接收完成,数据锁存到do_latch,同时 rdFULL置1,向上层模块表示数据以准备OK,可以来读取;rd置0,表示上层模块开始读取数据,rdF

3、ULL置0,表示数据已读走二、串口数据发送模块:数据发送依赖于wr(低电平有效)空闲时wr置1,数据发送时wr产生低电平脉冲,wr上升沿将数据锁存到din_latch;串口数据发送控制:wr由0跳变为1后,启动发送控制计数器tx_cnt,置位为8b0111_00(28),即tx_cnt5:2= 4b0111(7), tx_cnt1:0 = 2b00(0);一个计数周期开始,伴随clk_bps_4, tx_cnt加1(每一个数据位加4)串口发送数据移位控制 每4个clk_bps_4, tx_cnt5:2加1当tx_cnt5:2 =7,8,9,10、15,完成一位起始位,8位得数据位发送,随后tx

4、d置1(停止位),完成并串转换置位标志位txdF,tdEMPTY /发送完成标志当写数据到发送寄存器din_latch时,txdF,tdEMPTY置0; 当tx_cnt计数到8b1111_11(63),数据发送完成,txdF,tdEMPTY置1;三、串口数据自收发控制模块 当rdFULL = 1& tdEMPTY = 1(rdFULL = 1表示数据准备OK,tdEMPTY = 1表示上次发送已完成) ,rd,wr产生低脉冲,rd置0,数据读取到DATA,wr置0使能发送数据控制,低脉冲将DATA锁存到din_latch四、波特率发生模块:针对9600bps,生成4倍于波特率38、4KHz得时

5、钟信号,用于采样代码如下:串口数据自收发控制模块module UART(clk, rst_n, rxd, txd, LED1 );input clk; /时钟周期50MHzinput rst_n; /低电平复位 input rxd; /串口引脚输入接收发送PCoutput reg LED1;/lED测试用/*/wire tdEMPTY;/发送寄存器空标志reg wr;/发送使能信号reg 7:0DATA;wire clk_bps_4;/4倍于波特率时钟信号reg1:0 wr_cnt;/wr低电平计数reg rd;/读接收锁存器信号wire7:0 do_latch;/接收数据锁存wire rdF

6、ULL;/接收锁存器满标志reg1:0 rd_cnt;/rd低电平计数/*当rdFULL = 1& tdEMPTY = 1(rdFULL = 1表示接收锁锁存器数据准备OK,tdEMPTY = 1表示上次发送已完成),rd,wr产生低脉冲,rd置0,do_latch数据读取到DATA,wr置0用于使能发送数据控制,低脉冲将DATA锁存到din_latch*/always(posedge clk_bps_4 or negedge rst_n)begin if(!rst_n) beginrd = 1;wr = 1;wr_cnt = 0;rd_cnt = 0;endelse beginif(rdFU

7、LL = 1)begin rd = 0;wr = 0;wr_cnt = 0;rd_cnt = 0;DATA = do_latch;end if(rd = 0)/产生rd低电平 2个clk_bps_4周期begin rd_cnt = rd_cnt + 1;if(rd_cnt = 3)rd = 1;endif(wr = 0)/产生wr低电平 2个clk_bps_4周期begin wr_cnt = wr_cnt + 3;if(wr_cnt = 1)wr = 1;endendend/*发送*/Uart_TX tx( 、rst_n(rst_n), 、clk_bps_4(clk_bps_4),、wr(wr

8、),、tdEMPTY(tdEMPTY), 、DATA(DATA), 、txd(txd) );/output to tx_m/*接收*/ Uart_RX rx( 、rst_n(rst_n), 、clk_bps_4(clk_bps_4),、rd(rd), 、rdFULL(rdFULL),、do_latch(do_latch), 、rxd(rxd) );/*针对9600bps,生成38、4KHz得时钟信号,用于接收数据采样与数据发送*/Baudrate baud(、clk(clk), 、rst_n(rst_n), 、clk_bps_4(clk_bps_4); Endmodule串口数据接收模块:mo

9、dule Uart_RX(rst_n, clk_bps_4, rd, rdFULL, do_latch, rxd);input rst_n; /低电平复位 input clk_bps_4; /4倍于波特率时钟信号即一个数据位占4个时钟周期input rd;/接收使能,低电平有效output reg7:0 do_latch;/接收数据锁存output reg rdFULL;/接收锁存器满标志input rxd;/串口引脚输入reg7:0 data_r = 8bx; /接收数据寄存器reg5:0 rx_cnt;reg rxdF;/数据接收标志,RX模块内部信号/*当数据接收端rxd出现起始位低电平

10、,启动接收控制计数器rx_cnt,置位为8b0111_00(28),即rx_cnt5:2= 4b0111(7),rx_cnt1:0 = 2b00(0);一个计数周期开始,伴随clk_bps_4, rx_cnt加1(每一个数据位加4)*/always(posedge clk_bps_4 or negedge rst_n)beginif(!rst_n) begin rx_cnt = 0; endelse if(rx_cnt = 27 & rxd = 0) begin rx_cnt = 28; end else if(rx_cnt = 27 & rxd = 1)/串口无数据时,rx_cnt保持0 b

11、egin rx_cnt = 0; end else begin rx_cnt = rx_cnt + 1;endend/*空闲时rdFULL置0,当数据接收完成,数据锁存到do_latch,同时 rdFULL置1,向上层模块表示数据以准备OK,可以来读取;rd置0,表示上层模块开始读取数据,rdFULL置0,表示数据已读走*/always(posedge clk_bps_4 or negedge rst_n)/置位标志位 rdFULLbegin if(!rst_n) begin rdFULL = 0; endelse if(rd = 0) begin rdFULL = 0; end else i

12、f(rxdF = 1 & rx_cnt = 63) begindo_latch = data_r;/数据锁存rdFULL = 1;/锁存器数据准备OK endend/*rxd出现起始位低电平, rxdF置1,表示数据接收开始;当rx_cnt计数到8b1111_11(63),数据接收完成, rxdF置0*/always(posedge clk_bps_4 or negedge rst_n)/置位标志位 rxdFbegin if(!rst_n)begin rxdF = 0; end else if(rxd = 0)/拉低表示有数据来begin rxdF = 1;end else if(rxdF =

13、 1 & rx_cnt = 63)begin rxdF = 0;endend/*每当rx_cnt1:0 = 2b01,为了保证在rxd一位数据靠近中间位置采样;每4个clk_bps_4, rx_cnt5:2加1当rx_cnt5:2 = 8,9,1015,完成8位得数据采样,串并变换*/always(posedge clk_bps_4)/数据接收 begin if( rx_cnt1:0 = 2b01 )case(rx_cnt5:2) /4d7:rxd=0;起始位4d8:data_r0 = rxd;/ 低第1位4d9:data_r1 = rxd;/ 第2位4d10:data_r2 = rxd;/

14、第3位4d11:data_r3 = rxd;/ 第4位4d12:data_r4 = rxd;/ 第5位4d13:data_r5 = rxd;/ 第6位4d14:data_r6 = rxd;/ 第7位4d15:data_r7 = rxd;/高第8位 endcaseendendmodule串口数据发送模块:module Uart_TX(rst_n, clk_bps_4,wr,tdEMPTY, DATA, txd);input rst_n; /低电平复位 input clk_bps_4; /4倍于波特率时钟信号input 7:0DATA;input wr;/发送使能信号output reg tdEM

15、PTY;/发送寄存器空标志 对外输出output txd;/串口引脚输出reg txdF;/发送完成标志 模块内部信号reg txd_r; /发送寄存器reg7:0 din_latch;/发送数据锁存reg5:0 tx_cnt;/发送计数器/*空闲时wr置1,数据发送时wr产生低电平脉冲,wr上升沿将数据锁存到din_latch;*/always(posedge wr)begin /din_latch = 8hAB; din_latch = DATA; end/*wr由0跳变为1后,启动发送控制计数器tx_cnt,置位为8b0111_00(28),即tx_cnt5:2= 4b0111(7),

16、tx_cnt1:0 = 2b00(0);一个计数周期开始,伴随clk_bps_4, tx_cnt加1(每一个数据位加4)*/always(posedge clk_bps_4 or negedge rst_n)beginif(!rst_n) begin tx_cnt = 0; endelse if(tx_cnt = 27) beginif(tdEMPTY = 0 & wr = 1) begintx_cnt = 28;endelse begin tx_cnt = 0; endend else begin tx_cnt = tx_cnt + 1;endend/*当写数据到发送寄存器din_latch

17、时,txdF,tdEMPTY置0; 当tx_cnt计数到8b1111_11(63),数据发送完成,txdF,tdEMPTY置1;*/ always(posedge clk_bps_4 or negedge rst_n)begin if(!rst_n) begin txdF = 1;tdEMPTY = 1;endelse if(wr = 0) begintxdF = 0;tdEMPTY = 0;end else if(txdF = 0 & tx_cnt = 63) begintxdF = 1;tdEMPTY = 1; end end/*每4个clk_bps_4, tx_cnt5:2加1当tx_c

18、nt5:2 =7,8,9,1015,完成一位起始位,8位得数据位发送,随后txd置1(停止位),完成并串转换*/always(posedge clk_bps_4 or negedge rst_n)if(!rst_n) begin txd_r = 1;endelse begincase(tx_cnt5:2)4d7:txd_r = 1b0; /起始位04d8:txd_r = din_latch0; /低第1位4d9:txd_r = din_latch1; / 第2位4d10:txd_r = din_latch2;/ 第3位4d11:txd_r = din_latch3;/ 第4位4d12:txd_

19、r = din_latch4;/ 第5位4d13:txd_r = din_latch5;/ 第6位4d14:txd_r = din_latch6;/ 第7位4d15:txd_r = din_latch7;/高第8位default:txd_r = 1;endcaseendassign txd = txd_r;endmodule波特率发生模块:/*针对9600bps,生成4倍于波特率38、4KHz得时钟信号,用于采样*/module Baudrate(clk, rst_n,clk_bps_4);input clk; /时钟周期50MHzinput rst_n; /低电平复位 output clk_

20、bps_4; /38、4KHz时钟信号 9600*4reg clk_bps_4;reg 12:0 bps_cnt; /波特率产生时计数parameter N=1302;/分频系数 9600bpsalways(posedge clk or negedge rst_n)begin if(!rst_n) begin clk_bps_4 = 0; bps_cnt = 0;end else beginif(bps_cnt = N/2 1)begin clk_bps_4 = clk_bps_4; bps_cnt = 0;endelsebegin bps_cnt = bps_cnt + 1;endendendendmoduleModelsim仿真波形图:rxd端输入数据,txd发送连接PC 串口助手

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服