sdram读写

源代码在线查看: uart_tx.v

软件大小: 2845 K
上传用户: Whibrafy
关键词: sdram 读写
下载地址: 免注册下载 普通下载 VIP

相关代码

				`timescale 1ns / 1ps
				////////////////////////////////////////////////////////////////////////////////
				// Company		: 
				// Engineer		: 
				// Create Date	: 
				// Design Name	: 
				// Module Name	: uart_tx
				// Project Name	: 
				// Target Device: Cyclone EP1C3T144C8 
				// Tool versions: Quartus II 8.1
				// Description	: 串口数据发送底层模块
				//					1bit起始位+8bit数据+1bit停止位
				// Revision		: V1.0
				// Additional Comments	:  
				// 
				////////////////////////////////////////////////////////////////////////////////
				module uart_tx(
								clk,rst_n,
								tx_data,tx_start,clk_bps,
								rs232_tx,bps_start,fifo232_rdreq
							);
				
				input clk;			// 25MHz主时钟
				input rst_n;		//低电平复位信号
				input[7:0] tx_data;	//待发送数据
				input tx_start;		//串口发送数据启动标志位,高有效
				input clk_bps;		//发送数据标志位,高有效
				
				output rs232_tx;	// RS232发送数据信号
				output bps_start;	//波特率时钟计数器启动信号,高有效
				output fifo232_rdreq;	//FIFO读请求信号,高有效
				
				//---------------------------------------------------------
				reg tx_en;			//发送数据使能信号,高有效
				reg[3:0] num;
				
				always @ (posedge clk or negedge rst_n)
					if(!rst_n) tx_en 					else if(num==4'd11) tx_en 					else if(tx_start) tx_en 				
				assign bps_start = tx_en;
				
				//tx_en脉冲上升沿检测,作为FIFO读使能信号
				reg tx_enr1,tx_enr2;	//tx_en寄存器
				always @(posedge clk or negedge rst_n)
					if(!rst_n) begin
							tx_enr1 							tx_enr2 						end
					else begin
							tx_enr1 							tx_enr2 						end
				
				assign fifo232_rdreq = tx_enr1 & ~tx_enr2;	//tx_en上升沿置高一个时钟周期
				
				//---------------------------------------------------------
				reg rs232_tx_r;		// RS232发送数据信号
				
				always @ (posedge clk or negedge rst_n)
					if(!rst_n) begin
							num 							rs232_tx_r 						end
					else if(tx_en) begin
							if(clk_bps)	begin
									num 									case (num)
										4'd0: rs232_tx_r 										4'd1: rs232_tx_r 										4'd2: rs232_tx_r 										4'd3: rs232_tx_r 										4'd4: rs232_tx_r 										4'd5: rs232_tx_r 										4'd6: rs232_tx_r 										4'd7: rs232_tx_r 										4'd8: rs232_tx_r 										4'd9: rs232_tx_r 									 	default: rs232_tx_r 										endcase
								end
							else if(num==4'd11) num 						end
				
				assign rs232_tx = rs232_tx_r;
				
				
				
				endmodule
							

相关资源