UART模块Verilog代码.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
UART模块Verilog代码

uart.v`timescale 1ns / 100psmodule uart (dout, data_ready, framing_error, parity_error, rxd, clk16x, rst, rdn, din, tbre, tsre, wrn, sdo);output tbre ;output tsre ;output sdo ;input [7:0] din ;input rst ;input clk16x ;input wrn ;input rxd ;input rdn ;output [7:0] dout ;output data_ready ;output framing_error ;output parity_error ;rcvr u1 (dout,data_ready,framing_error,parity_error,rxd,clk16x,rst,rdn) ;txmit u2 (din,tbre,tsre,rst,clk16x,wrn,sdo) ;endmodulercvr.v`timescale 1 ns / 1 nsmodule rcvr (dout,data_ready,framing_error,parity_error,rxd,clk16x,rst,rdn) ;input rxd ;input clk16x ;input rst ;input rdn ;output [7:0] dout ;output data_ready ;output framing_error ;output parity_error ;reg rxd1 ;reg rxd2 ;reg clk1x_enable ;reg [3:0] clkdiv ;reg [7:0] rsr ;reg [7:0] rbr ;reg [3:0] no_bits_rcvd ;reg data_ready ;reg parity ;reg parity_error ;reg framing_error ;wire clk1x ;assign dout = !rdn ? rbr : 8bz ;always @(posedge clk16x or posedge rst)beginif (rst)beginrxd1 = 1b1 ;rxd2 = 1b1 ;endelse beginrxd1 = rxd ;rxd2 = rxd1 ;endendalways @(posedge clk16x or posedge rst)beginif (rst)clk1x_enable = 1b0;else if (!rxd1 rxd2)clk1x_enable = 1b1 ;else if (no_bits_rcvd == 4b1100)clk1x_enable = 1b0 ;endalways @(posedge clk16x or posedge rst or negedge rdn)beginif (rst)data_ready = 1b0 ;else if (!rdn)data_ready = 1b0 ;elseif (no_bits_rcvd == 4b1011)data_ready = 1b1 ;endalways @(posedge clk16x or posedge rst)beginif (rst)clkdiv = 4b0000 ;else if (clk1x_enable)clkdiv = clkdiv +1 ;endassign clk1x = clkdiv[3] ;always @(posedge clk1x or posedge rst)if (rst)beginrsr = 8b0 ;rbr = 8b0 ;parity = 1b1 ;framing_error = 1b0 ;parity_error = 1b0 ;endelse beginif (no_bits_rcvd = 4b0001 no_bits_rcvd = 4b1000) //4b1001begin/* MSB Firstrsr[0] = rxd2 ;rsr[7:1] = rsr[6:0] ;parity = parity ^ rsr[7] ;*//* LSB First */rsr[7] = rxd2 ;rsr[6:0] = rsr[7:1] ;parity = parity ^ rsr[0] ;endelse if (no_bits_rcvd == 4b1001) //4b1010beginrbr = rsr ;endelse if (!parity) parity_error = 1b1 ;else if ((no_bits_rcvd == 4

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档