📄 test_rec.v
字号:
module test_rec(clk,rxd,data_out,in_en,vcc,state);
input clk;
input rxd;
output in_en;
output vcc;
output[1:0] state;
output[7:0] data_out;
reg[7:0] data_out;
reg data_reg;
reg in_en;
reg ready;
reg[3:0] num;
reg[4:0] n;
reg[2:0] bit;
reg[1:0] state;//空闲-00 起始-01 采样数据-10 停止-11
assign vcc=1'b1;
/*always@(posedge clk)
begin
if((state==2'b00)&(~rxd))
state=2'b01;//进入起始阶段
end*/
always@(posedge clk)
begin
if((state==2'b00)&(~rxd))
state=2'b01;//进入起始阶段
case(state)
2'b01://处于起始状态
begin
if(num==4'b0111)
begin
num=4'b0000;
state=2'b10;
end
else
num=num+4'b0001;
end
2'b10://进入数据采集阶段
begin
if(bit==3'b111)
begin
if(num==4'b1111)
begin
data_out={rxd,data_out[7:1]};//移位
num=4'b0000;
bit=3'b000;
state=2'b11;//进入停止位阶段
ready=1'b1;
end
else
num=num+4'b0001;
end
else
begin
if(num==4'b1111)
begin
data_out={rxd,data_out[7:1]};//移位
num=4'b0000;
bit=3'b001+bit;
end
else
num=num+4'b0001;
end
end
2'b11://停止状态
begin
if(n==5'b1_0111)
begin
state=2'b00;
end
else
n=n+5'b00001;
end
2'b00://空闲状态
begin
num=4'b0000;
n=5'b00000;
bit=3'b000;
in_en=1'b1;
end
endcase
end
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -