tx.v

来自「FPGA上实现UART串口原程序」· Verilog 代码 · 共 62 行

V
62
字号
module tx(clk,tx,data,txok,txready);
    input clk;
    output tx,txready;
    input[7:0] data;
    input txok;

	 reg tx,txclk;
    reg txready;
	 reg[3:0] bitpos;	 
  	 reg[1:0] state;
	 reg[3:0] cnt;
	 reg[10:0] count;
	 
	 wire[10:0] databuf;
	 parameter idle=1,txrun=2;
  
	 assign databuf={1,1,data,0}; 

   always @(posedge clk)
   begin
    if(count==325) begin
      count<=0;
	   txclk<=1; 
	 end
    else	 begin
      count<=count+1;
	   txclk<=0;
    end 
   end 

  always @(posedge txclk)  //发送
  begin
   case(state)
	idle: begin
	         txready<=1;
	        if(txok==0)  begin
			    cnt<=0;
			    state<=idle;
				 tx<=1;	   end
			   else   begin 
				  state<=txrun;
				  bitpos<=0; end
          end
   txrun: begin  	
				  txready<=0;
			  if(cnt==15) begin
			    cnt<=0;
	          tx<=databuf[bitpos];
			    bitpos<=bitpos+1;
			    if(bitpos==10)  begin
			      bitpos<=0;
				   state<=idle;
             end
           end
			  else  cnt<=cnt+1;
			  end
    default: state<=idle;
    endcase
   end    
    
endmodule

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?