完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
程序看不懂帮我每行注释下谢谢
module rx(clk,rxd,rd,ce,data,error,rdc); input clk,rxd;//clk=11.0592MHz input rd,ce; output error,rdc; //rdc--receive datacompleted output [7:0] data; reg [4:0] t; reg [3:0] s; reg [7:0] data; reg [7:0] data0,data1; reg error,rdc; reg rdf; //rdf--read data flag always @(ce or rd) if((ce && rd) ==1 ) begin data= data1; rdf=1; end else begin data=8'hzz; rdf=0; end always @(posedge clk) //baud=921.6khz begin if(rdf==1)rdc<=0; case(s) 0:if(rxd==1)begin s<=1;t<=0;end 1:if(rxd==0)begin s<=2;t<=t+1;end 2:if(t==6) begin if(rxd==0) begin s<=3;t<=0;error<=0;end else begin s<=1;t<=0; end end else t<=t+1; 3:if(t==11) begindata0[0]<=rxd;t<=0;s<=4;end else t<=t+1; 4:if(t==11) begin data0[1]<=rxd;t<=0;s<=5;end else t<=t+1; 5:if(t==11) begindata0[2]<=rxd;t<=0;s<=6;end else t<=t+1; 6:if(t==11) begindata0[3]<=rxd;t<=0;s<=7;end else t<=t+1; 7:if(t==11) begindata0[4]<=rxd;t<=0;s<=8;end else t<=t+1; 8:if(t==11) begindata0[5]<=rxd;t<=0;s<=9;end else t<=t+1; 9:if(t==11) begindata0[6]<=rxd;t<=0;s<=10;end else t<=t+1; 10:if(t==11) begindata0[7]<=rxd;t<=0;s<=11;end else t<=t+1; 11:if(t==11) if(rxd==1) begin t<=0;s<=0;data1<=data0;error<=0; rdc<=1; //receive data completed end else begin error<=1;t<=0;s<=0;end//frame error or overflow error else t<=t+1; default:begin t<=0;s<=0;end endcase end endmodule |
|
相关推荐
1个回答
|
|
你不会是没学过verilog吧?都是很基础的语法啊,没看到什么难的
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1559 浏览 1 评论
1335 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
1544 浏览 0 评论
927 浏览 0 评论
2341 浏览 0 评论
1465 浏览 35 评论
5678 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 09:54 , Processed in 0.503092 second(s), Total 71, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号