串行通信接收接口(LED)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

串行通信接收接口(LED)

基本要求:掌握RS232串口的协议,运用DE2的串口进行接收PC的数据。波特率为9600,8位数据位,无奇偶校验,一个停止位。

硬件验证要求:在PC机通过“串行通信调试助手”软件

发送数据,DE2通过串口接收数据,完成接收数据后在LED上面进行显示。

在完成基本要求的基础上,可以通过拨码开关来选择奇偶校验的类别。

分频模块流程图:

分频模块的程序

module clk_div (clk_in,nreset,clk_out);

input clk_in;

input nreset;

output clk_out;

reg clk_out=0;

reg [8:0]cnt=0;

parameter T = 217;

always @(posedge clk_in or negedge nreset)

begin

if(nreset == 0)

begin

cnt <= 0;

clk_out <= 0;

end

else if(cnt == T)

begin

clk_out <= ~clk_out;

cnt <=0;

end

else

cnt<=cnt+1;

end

endmodule

发送模块的程序:

module rx(clk,nreset,rxd,data);

input clk,rxd,nreset; //clk=0.1152MHz output [7:0] data;

reg [3:0] t;

reg [3:0] s;

reg [7:0] data0;

reg [7:0] data;

always @(posedge clk or negedge nreset ) //baud=9600hz if(nreset ==0)

begin

data <= 8'h00;

s <= 0;

t <= 0;

data0 <= 8'h00;

end

else

begin

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;end

else begin s<=1;t<=0; end

end

else t<=t+1;

3:if(t==11) begin data0[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) begin data0[2]<=rxd;t<=0;s<=6;end else t<=t+1;

6:if(t==11) begin data0[3]<=rxd;t<=0;s<=7;end else t<=t+1;

7:if(t==11) begin data0[4]<=rxd;t<=0;s<=8;end else t<=t+1;

8:if(t==11) begin data0[5]<=rxd;t<=0;s<=9;end else t<=t+1;

9:if(t==11) begin data0[6]<=rxd;t<=0;s<=10;end else t<=t+1;

10:if(t==11) begin data0[7]<=rxd;t<=0;s<=11;end else t<=t+1;

11: begin if(t==11)

begin

if(rxd==1)

begin t<=0;s<=0; data<=data0;end

else

begin t<=0;s<=0;end

end

else

t<=t+1; end

default:begin t<=0;s<=0;end

endcase

end

endmodule

主模块:

module uart_top(CLOCK_50,KEY,UART_RXD,LEDG);

input CLOCK_50;

input [0:0]KEY;

input UART_RXD;

output [7:0]LEDG;

wire clk_out;

clk_div u1 (.clk_in(CLOCK_50),.nreset(KEY[0]),.clk_out(clk_out));

wire [7:0]data;

rx u2 (.clk(clk_out),.nreset(KEY[0]),.rxd(UART_RXD),.data(data));

assign LEDG[7:0] =data;

endmodule

相关文档
最新文档