57.基于IIC协议的EEPROM驱动控制(4)

news2024/11/24 19:34:54

(1)顶层代码:

module IIC_EEPROM(
    
    input   wire                clk         ,
    input   wire                reset_n     ,
    input   wire                key_r       ,
    input   wire                key_w       ,
    
    output  wire                IIC_SCL     ,
    inout   wire                IIC_SDA     

);

wire                    key_rd      ;
wire                    key_wr      ;
wire    [7:0]           fifo_rd_data;
wire                    IIC_start   ;
wire                    wr_en       ;
wire                    rd_en       ;
wire    [15:0]          byte_addr   ;
wire    [7:0]           wr_data     ;
wire                    IIC_clk     ;
wire                    IIC_end     ;
wire    [7:0]           rd_data     ;



key_filter  key_w_filter(
        .clk                (   clk         ),
        .reset_n            (   reset_n     ),
        .key_in             (   key_w       ),
        .key_p_flag         (   key_wr      ),
        .key_r_flag         (               ),
        .key_state          (               )
);

key_filter  key_r_filter(
        .clk                (   clk         ),
        .reset_n            (   reset_n     ),
        .key_in             (   key_r       ),
        .key_p_flag         (   key_rd      ),
        .key_r_flag         (               ),
        .key_state          (               )
);

IIC_rw_data IIC_rw_data_inst(

    .clk                (clk            ),
    .reset_n            (reset_n        ),
    .key_rd             (key_rd         ),
    .key_wr             (key_wr         ),
    .IIC_clk            (IIC_clk        ),
    .IIC_end            (IIC_end        ),
    .rd_data            (rd_data        ),

    .fifo_rd_data       (fifo_rd_data   ),
    .IIC_start          (IIC_start      ),
    .wr_en              (wr_en          ),
    .rd_en              (rd_en          ),
    .byte_addr          (byte_addr      ),
    .wr_data            (wr_data        )
    
);

IIC_ctrl    IIC_ctrl_inst(

    .clk                (clk            ),
    .reset_n            (reset_n        ),
    .IIC_start          (IIC_start      ),
    .wr_en              (wr_en          ),
    .rd_en              (rd_en          ),
    .byte_addr          (byte_addr      ),
    .wr_data            (wr_data        ),
    .addr_num           (1'd1           ),

    .IIC_SCL            (IIC_SCL        ),
    .IIC_SDA            (IIC_SDA        ),
    .IIC_clk            (IIC_clk        ),
    .IIC_end            (IIC_end        ),
    .rd_data            (rd_data        )
    
);

endmodule

(2)顶层RTL视图:

(3)仿真代码:

`timescale 1ns / 1ps

module IIC_EEPROM_tb;

reg         clk     ;
reg         reset_n ;
reg         key_r   ;
reg         key_w   ;

wire        IIC_SCL ;
wire        IIC_SDA ;  

initial clk = 1'd1;
always #10 clk = ~ clk;

defparam IIC_EEPROM_inst.key_w_filter.CNT_MAX = 5;
defparam IIC_EEPROM_inst.key_r_filter.CNT_MAX = 5;
defparam IIC_EEPROM_inst.IIC_rw_data_inst.CNT_WAIT_MAX = 10_000;

initial begin
    reset_n <= 1'd0;
    key_r   <= 1'd1;
    key_w   <= 1'd1;
    #21;
    reset_n <= 1'd1;
    #1000;
    key_r   <= 1'd1;
    key_w   <= 1'd0;
    #400;
    key_r   <= 1'd1;
    key_w   <= 1'd1;
    #200_000_000;
    key_r   <= 1'd0;
    key_w   <= 1'd1;
    #400;
    key_r   <= 1'd1;
    key_w   <= 1'd1;
    #400_000_000;
    $stop;
end
    
IIC_EEPROM  IIC_EEPROM_inst(
    
    .clk            ( clk       ),
    .reset_n        ( reset_n   ),
    .key_r          ( key_r     ),
    .key_w          ( key_w     ),

    .IIC_SCL        (IIC_SCL    ),
    .IIC_SDA        (IIC_SDA    )

);

M24LC64     M24LC64_inst(
    .A0              (1'd1       ), 
    .A1              (1'd1       ), 
    .A2              (1'd0       ), 
    .WP              (1'd0       ), 
    .SDA             (IIC_SDA    ),    
    .SCL             (IIC_SCL    ),
    .RESET           (~reset_n   )
);

endmodule

(4)仿真波形(官网提供的仿真模型不太理想,没有读取理想的数据):

(5)顶层加入ILA ip核进行在线逻辑分析:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2086979.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DM一主一实时备一异步备守护集群安装

在前面章节中已经部署了一主一实时备机&#xff0c;此次实施过程中主要添加异步备库。 1. 环境描述 实例详情&#xff1a; 端口详情 2. 关闭主备库守护进程、监视器、数据库实例 [dmdbaray1 ]$ DmWatcherServiceDW stop Stopping DmWatcherServiceDW: …

基于ssm+vue+uniapp的图书管理系统小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…

JVM 内存参数

文章目录 引言I JVM基础知识Java 语言是解释型的OpenJDK和Sun/Oracle JDK和hotspot的关系JDK、JRE、JVM 之间的关系JVM基础功能JVM组成JIT:Just In Time CompilerJVM内存区域JVM运行时数据区JVM 堆内存布局II JVM 内存参数常用参数JIT编译参数GC信息打印GC参数III 例子引言 J…

M2BEV

Part 1: 2D 图像编码器 给定 NNN 张大小为 HW3的图像&#xff0c;我们对所有图像使用共享的 CNN 主干网络进行前向传播&#xff0c;例如使用 ResNet&#xff0c;并通过特征金字塔网络&#xff08;FPN&#xff09;创建四级特征 F1,F2,F3,F4。 然后&#xff0c;将这些特征全部上…

Quartus网盘资源下载与安装 附图文安装教程

如大家所了解的&#xff0c;Quartus是一种FPGA设计软件&#xff08;相信理工科的小伙伴&#xff0c;很多都接触或学习过FPGA&#xff09;&#xff0c;旨在为数字电路设计师提供一个高效、便捷的开发环境。它可以帮助用户完成数字逻辑电路的设计、仿真、综合和布局&#xff0c;以…

webpack4手动搭建Vue项目

小满视频 很多解释使用通义灵码搜的,通义灵码的搜索结果也是有错误的全程使用pnpm包管理工具&#xff0c;和npm的用法基本一样 学习总结 1. 多看看webpack官网 2. webpack的作用&#xff1a;配置一堆东西&#xff0c;达到运行程序的目的 3. 无论什么东西都转成js&#xff0c;…

什么是CSRF跨站请求伪造

CSRF&#xff08;跨站请求伪造&#xff0c;Cross-Site Request Forgery&#xff09;是一种网络攻击&#xff0c;攻击者通过伪造用户的身份&#xff0c;诱使用户在已认证的 Web 应用上执行非预期的操作。CSRF 攻击的风险在于它能够利用用户的身份认证状态&#xff0c;从而执行恶…

app逆向1-实战里常见东西

幕布链接&#xff1a;app逆向1-实战里常见东西 - 幕布

JVM性能监控实用工具jconsole与jvisualvm

jdk小工具jconsole与jvisualvm&#xff0c;jvisualvm为升级版的jconsole&#xff1b;通过命令行启动&#xff0c;可监控本地和远程应用。 推荐使用&#xff1a;jvisualvm jconsole使用 1.直接命令 jcondole 打开窗口&#xff0c;选择我们要查看的进行 连接后可看到面板 jvisu…

4岁患儿玩耍误伤眼内起迷“障”,耽误多年成都爱尔公益救助手术焕清晰

近日&#xff0c;成都爱尔眼科医院收治了一名来自西藏的7岁小患者小多。小多是由父亲带到医院的&#xff0c;可惜两人都不会汉语&#xff0c;医护人员与他们的交流依靠着孩子父亲拨打的亲戚电话&#xff0c;在电话中一句一句的翻译终于厘清病情原委。 据说&#xff0c;3年前小多…

固态硬盘损坏,有什么方法可以恢复数据?

我认为值得推荐的固态硬盘数据恢复&#xff0c;必须满足2个硬条件&#xff1a; 恢复成功率高 不损害原文件&#xff0c;保证数据的绝对安全 推荐2个超好用的U盘数据恢复神器&#xff0c;帮你快速找回重要文件&#xff01; 1、转转数据恢复大师 点击直达链接>>www.huifuz…

简单工作流-节点增加输入内容

之前已经做完了前端的流程图像绘制&#xff0c;后端对流程图像的CURD&#xff0c;现在主要做流程节点的必要属性做完善&#xff0c;之前只做了节点上权限用户的绑定没有对用户输入内容做管理&#xff0c;现在加上了输入内容管理&#xff0c;具体代码在github上&#xff1a; 前端…

css-50 Projects in 50 Days(1)

改变背景图 html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>改变背景</title><link …

【ceph学习】rgw网关进程如何启动

rgw 网关进程启动 主要在rgw_main.cc的main函数中&#xff0c;主要涉及一些关键线程启动、前端服务器&#xff08;beast等&#xff09;启动、后端存储模块启动&#xff08;rados&#xff09;、perf和log启动等。 流程图关键节点如下&#xff1a; 1、beast的启动 2、rados的启…

对标GPT4o,智谱推出新一代基座大模型 GLM-4-Plus

最新基座大模型 GLM-4-Plus发布并上线开放平台 在 KDD 国际数据挖掘与知识发现大会上&#xff0c;智谱 GLM 团队介绍了新一代基座大模型GLM-4-Plus。GLM-4-Plus 是智谱全自研 GLM 大模型的最新版本&#xff0c;它标志着智谱继续瞄准通用人工智能&#xff0c;持续推进大模型技术…

Django框架安全

【图书介绍】《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》_django 5企业级web应用开发实战(视频教学版)-CSDN博客 《Django 5企业级Web应用开发实战&#xff08;视频教学版&#xff09;》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) 本节主要介…

阿里PAI-ChatLearn:大规模 Alignment高效训练框架正式开源

导读 ChatGPT是OpenAI开发的基于大型语言模型(LLM)的聊天机器人&#xff0c;以其令人惊叹的对话能力而迅速火爆并被广泛采用。ChatGPT 成功背后得益于大型语言模型生成领域的新训练范式&#xff1a;RLHF (Reinforcement Learning from Human Feedback)&#xff0c;即以强化学习…

代码随想录第十天——LeetCode 150. 逆波兰表达式求值、239. 滑动窗口最大值、347.前 K 个高频元素

150. 逆波兰表达式求值 力扣题目链接(opens new window) 根据 逆波兰表示法&#xff0c;求表达式的值。 有效的运算符包括 , - , * , / 。每个运算对象可以是整数&#xff0c;也可以是另一个逆波兰表达式。 说明&#xff1a; 整数除法只保留整数部分。 给定逆波兰表达式总是…

weditor使用问题总结

1.Pixel连接weditor提示Local server not started 产生原因1&#xff1a;开发者模式关闭后重开部分选项没勾选 解决方案&#xff1a;打开如下设置即可 产生原因2&#xff1a;安装了uiautodev导致uiautomator2版本升级到了3.x版本 解决方案&#xff1a;重新安装uiautomator2的…

Nginx: 缓存, 不缓存特定内容和缓存失效降低上游压力策略及其配置示例

概述 在负载均衡的过程中&#xff0c;有一个比较重要的概念&#xff0c;就是缓存利用缓存可以很好协调Nginx在客户端和上游服务器之间的速度不匹配的矛盾从而很好的解决整体系统的响应速度 如果用户需要通过Nginx获取某一些内容的时候&#xff0c;发起一个request请求这个请求…