⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_rec.v

📁 用verilog实现的串口收发数据程序
💻 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 + -