利用uart串口发送模块对uart串口接收模块进行仿真验证

本文档介绍了UART串口的发送和接收模块的实现及仿真测试,通过详细的代码展示了如何进行UART通信。在理解了UART的基础后,作者计划进一步探讨I2C和SPI通信协议。文中提供了UART接收和发送模块的功能仿真,并进行了多次数据传输测试,以验证模块的正确性。最后,作者展望了一个更复杂的UART回环测试作为后续计划。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

uart的发送和接收已经告一段落。在数字世界中,传输的就是0和1,所以串口通信这种传输方式是非常常见的,看来也需要了解I2C和SPI。

00.串口发送模块

详见uart串口发送模块功能实现及仿真

01.串口接收模块

详见uart串口接收模块实现、并完成led板级测试

02.串口接收模块仿真

`timescale 1ns/1ns
`define clock_period 20

module uart_byte_rx_tb;

	reg 			Clk				;
	reg 			Rst_n			;
	reg 			send_en			;
	reg 	[2:0]	baud_set		;
	reg 	[7:0]	data_byte		;

	wire			rs232_tx		;
	wire			tx_done			;
	wire 			tx_state		;
	wire 	[7:0]	data_byte_r		;
	
	wire rx_done;
	
	uart_byte_rx uart_byte_rx_inst(
		.Clk		(Clk		),
		.Rst_n		(Rst_n		),
		.rs232_rx	(rs232_tx	),
		.baud_set	(baud_set	),
		       
		.data_byte	(data_byte_r),
		.rx_done	(rx_done	)	
);
	

	uart_byte_tx  uart_byte_tx_inst(
		.Clk		(Clk		),
		.Rst_n		(Rst_n		),
		.send_en	(send_en	),
		.baud_set	(baud_set	),
		.data_byte	(data_byte	),
	                
		.rs232_tx	(rs232_tx	),
		.tx_done	(tx_done	),
		.tx_state	(tx_state	)

	);

	//产生时钟
	initial  Clk = 1'b1;
	always #(`clock_period/2) Clk = ~Clk;

	//产生激励信号
	initial begin
		Rst_n = 1'b0;
		data_byte = 8'b0;
		send_en = 1'b0;
		baud_set = 3'd0;
		#(`clock_period*20 + 1);
		Rst_n = 1'b1;
		
		
		#(`clock_period*50);
		data_byte = 8'haa;
		send_en = 1'd1;
		#`clock_period;
		send_en = 1'd0;
		@(posedge rx_done);
		
		
		#(`clock_period*5000);
		data_byte = 8'h55;
		send_en = 1'd1;
		#`clock_period;
		send_en = 1'd0;
		@(posedge rx_done);
		
		
		#(`clock_period*5000);
		data_byte = 8'hdc;
		send_en = 1'd1;
		#`clock_period;
		send_en = 1'd0;
		@(posedge rx_done);
		
		#(`clock_period*5000);
		data_byte = 8'hcd;
		send_en = 1'd1;
		#`clock_period;
		send_en = 1'd0;
		@(posedge rx_done);
		
		#(`clock_period*5000);
		$stop;	
	end

endmodule

03.功能仿真如下

在这里插入图片描述

后记

后面打算做一个较为复杂的uart回环测试。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杰之行

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值