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

📄 send.v

📁 用Verilog实现的串口异步通信
💻 V
字号:
`timescale 1ns / 1ps
////////////////////////////////////////////////////////////////////////////////
// Company: 
// Engineer:
//
// Create Date:    16:09:24 01/11/08
// Design Name:    
// Module Name:    send
// Project Name:   
// Target Device:  
// Tool versions:  
// Description:
//
// Dependencies:
// 
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
// 
////////////////////////////////////////////////////////////////////////////////
module send(CLK,flag,data_in,data_out,data_out_flag);
 input CLK;
 input [7:0]data_in;
 output reg data_out;
 output reg data_out_flag;
 input flag;
 reg busy=0;
 reg [29:0]cnt1=0;
 reg [25:0]cnt2=0;
 reg [3:0]cnt;

 always@(posedge CLK) begin
  if(flag) begin
   busy<=1;								 //FPGA收到帧后准备开始发帧
  end

  if(busy) begin
   cnt1<=cnt1+1;
	cnt2<=cnt2+1;
  end

  if(cnt2==3413-1) begin			 //在第二百个采样点处引入输出数据
   cnt2<=0;
  end

  if(cnt1==34133-1-2500) begin
   busy<=0;
	cnt1<=0;
	cnt2<=0;
  end

 end

 always@(posedge CLK) begin
  if(busy==1&&cnt2==200) begin
   data_out_flag<=1;
   if(cnt==9) begin						 //在第二百个采样点处串行输出数据
	 cnt<=0;
	end
	else begin
	 cnt<=cnt+1;
	end

	case(cnt)
	 4'b0000:data_out<=0;
	 4'b0001:data_out<=data_in[7];
	 4'b0010:data_out<=data_in[6];
	 4'b0011:data_out<=data_in[5];
	 4'b0100:data_out<=data_in[4];
	 4'b0101:data_out<=data_in[3];
	 4'b0110:data_out<=data_in[2];
	 4'b0111:data_out<=data_in[1];
	 4'b1000:data_out<=data_in[0];
	 4'b1001:data_out<=1;
	endcase

  end
  else begin
   data_out_flag<=0;
  end
 end

endmodule

⌨️ 快捷键说明

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