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

📄 rs232_send_fun.v

📁 这是一个verilog HDL 语言的例子
💻 V
字号:
`timescale 1ns/1ps

 module rs232_send_fun
	(
		Clk,Rst,
		band_start,band_CheckFlag,
		rs232_tx, SendByte ,
		needSend_flag
	);
	
	input Clk;
	input Rst;
	input band_CheckFlag;
	input needSend_flag;
	
	output rs232_tx ; 
	
	output band_start;	
	input wire[7:0]  SendByte;
  
	reg rs232_tx_r;
	reg band_start_r;
	reg[7:0] tx_data_temp;
	reg[3:0] num;
	reg tx_en;
	
	wire neg_chked ;
	reg neg_chk0 , neg_chk1 ;
	always @ ( posedge Clk or negedge Rst ) begin	
		if( !Rst ) begin   
			neg_chk0 <= 'b0;
			neg_chk1 <= 'b0;
		end
		else begin  
			neg_chk0 <= needSend_flag ; 
			neg_chk1 <= neg_chk0 ;
		end
	end
	
	assign neg_chked = neg_chk1 &  ~neg_chk0 ; //  下降沿  10 //高低电平分别判断一个 
			
	
	always @ ( posedge Clk or negedge Rst ) begin	
		if( !Rst ) begin 
			band_start_r <= 1'b0;
			tx_data_temp <=8'd0; 
			tx_en <= 1'b0;
		end
		else if ( neg_chked && (tx_en == 1'b0 ) ) begin
			band_start_r <= 1'b1;
			tx_data_temp <=  SendByte ; 
			tx_en <= 1'b1;
		end
		else if ( num == 4'd10) begin //数据发送完成 
			band_start_r <= 1'b0;
			tx_en <= 1'b0;
		end
	end
	
	
	always @ ( posedge Clk or negedge Rst ) begin	
		if( !Rst ) begin
			rs232_tx_r <= 1'b1; 
			num <= 4'h0; 
		end
		else if( tx_en) begin
			if( band_CheckFlag ) begin
				case (num)  
					4'd0: rs232_tx_r <= 1'b0; 	//发送起始位
					4'd1: rs232_tx_r <= tx_data_temp[0] ;
					4'd2: rs232_tx_r <= tx_data_temp[1] ;
					4'd3: rs232_tx_r <= tx_data_temp[2] ;
					4'd4: rs232_tx_r <= tx_data_temp[3] ;
					4'd5: rs232_tx_r <= tx_data_temp[4] ;
					4'd6: rs232_tx_r <= tx_data_temp[5] ;
					4'd7: rs232_tx_r <= tx_data_temp[6] ;
					4'd8: rs232_tx_r <= tx_data_temp[7] ;
					4'd9: rs232_tx_r <= 1'b1;	//发送结束位
					default :;
				endcase
				num <= num + 4'd1;
			end			
			else if( num == 4'd10) 
				num <= 4'd0;
		end
	end
	
	assign band_start = band_start_r ;
	assign rs232_tx = rs232_tx_r ; 

endmodule

⌨️ 快捷键说明

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