//采用16倍波特率的时钟信号,在每个位的中间时刻进行采样
module UartRecv(input Clk_x,DataIn,output reg [7:0]DataOut,output reg DataReady);
// BitRate = Clk_x / (Multi+1)
parameter Multi = 4'b1111;
// State Parameter
parameter Idle = 2'd0;
parameter Recv = 2'd1;
parameter CheckByte = 2'd2;
parameter CheckStop = 2'd3;
reg [3:0] ClkCount;
reg [3:0] BitCount;
reg [1:0] State;
reg [8:0] Buffer;
always @(posedge Clk_x)
begin
if(State == Idle)
begin
BitCount <=0;
Buffer <=0;
DataReady <=0;
if(DataIn == 1)
begin
ClkCount <=0;
State <= Idle;
end
else // if(DataIN == 0)
begin
if(ClkCount ==7)
begin
ClkCount <=0;
State <= Recv;
end
else// if (ClkCount <7)
begin
ClkCount <= ClkCount+1'd1;
State <= Idle;
end
end
end
else if(State == Recv)
begin
ClkCount<=ClkCount+1'b1;
DataReady <=0;
if (ClkCount==15)
begin
BitCount <= BitCount+1'b1;
Buffer[BitCount]<=DataIn;
State <= CheckByte;
end
else State <= Recv;
end
else if(State == CheckByte)
begin
ClkCount<=ClkCount+1'b1;
if (BitCount==9) State <= CheckStop;
else State <= Recv;
end
else if(State == CheckStop)
begin
State <= Idle;
if (DataIn==1)
begin
DataOut<=Buffer[7:0];
DataReady <=1;
end
end
end
endmodule
UART接收器设计
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 1. 将图片转换为Base64编码,POST上传。PHP将Base64解码为二进制,再写出文件。 缺点:不能上传较...
- 原因:后台的json格式错误,后台数据格式不规范导致的。有时安卓好用iOS却不好用。 解决方法:1.跟后台沟通选用...