使用IIC进行多数据读取测试

本文介绍了使用IIC接口控制器进行多数据读取测试的过程,包括control_RD_req模块的功能,负责读写的延迟控制;IIC_control_EEPROM顶层模块,整合了控制模块和I2C控制模块;以及control_RD_req_tb测试文件,用于验证EEPROM仿真模型。通过测试,确保了256个数据的正确写入和读出,验证了模块的稳定性。
摘要由CSDN通过智能技术生成

IIC系列文章:
(1)I2C 接口控制器理论讲解
(2)I2C接口控制设计与实现
(3)I2C连续读写实现
(4) 使用IIC进行多数据读取测试


前言

使用已完成的IIC模块,将256个数据写入,然后将256个数据读出,测试该模块写入与读取是否正常。

提示:以下是本篇文章正文内容,下面案例可供参考

一、control_RD_req模块

该模块主要用于读写测试的状态转换,其中状态CNT_1和CNT_2是计时5000000ns的延时,这个是仿真模型的两次操作时间间隔,小于这个延时的,操作就会有问题,初始阶段addr 为0000;写入
wrdata为 8’h00,当数据读出后让地址与数据自加1。当地址为256(0-255)是进入STOP状态。

`timescale 1ns / 1ps
// 
// Create Date: 2023/08/17 16:18:01
// Tool Versions: Vivado 2018.3
// Module Name: control_RD_req
//


module control_RD_req(
    
	input Clk,
	input Rst_n,
	input str_go,
	input RW_Done,
	
	output reg wrreg_req,
	output reg rdreg_req,
	output reg [15:0]addr,
    output reg [7:0]wrdata
	
    );
	
	
	parameter a_second = 18'd249999;
	
	
	reg [17:0]count;
	
	
	
	reg [4:0]curr_state;
	
	
	parameter IDLE    = 6'b000001,
			  WRITE   = 6'b000010,
              CNT_1   = 6'b000100,
              READ    = 6'b001000,
			  CNT_2   = 6'b010000,
              STOP    = 6'b100000;			  
	
	
	always @ (posedge Clk or negedge Rst_n)
		if(!Rst_n)
			begin
				wrreg_req <= 0;
				rdreg_req <= 0;
				count     <= 0;
				curr_state     <= IDLE;
				addr      <= 16'h0000;
				wrdata    <= 8'h00;
			end
		else 
			begin 
				case (curr_state)	
					IDLE : begin
								if(str_go)
									curr_state <= WRITE;
								else
									curr_state <= IDLE;
						   end
					WRITE: begin
								wrreg_req <= 1;
								if(RW_Done)
								   begin
										curr_state <= CNT_1;
										wrreg_req <= 0;
										
								 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

C.V-Pupil

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

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

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

打赏作者

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

抵扣说明:

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

余额充值