12.整个工程进行仿真

在对顶层模块进行仿真时,需要使用一个可下载的EEPROM仿真模型。然而,该模型存在一个bug,要求地址A0,A1,A2必须配置为000。文章提供了仿真代码示例,展示了如何配置IIC设备地址,并对时钟、复位信号进行了设定,以避免遇到问题。同时,代码中还引入了对M24LC64器件的配置,确保写保护和复位功能正常。
摘要由CSDN通过智能技术生成

标题1.前言

 在对顶层模块进行仿真的时候,我们需要列化一个eeprom的仿真模型,给我们发送响应信号。这个模型在网上可以下载
 但是注意这个eeprom的仿真模型有一个bug,就是我们在仿真代码中列化该模块,设置该eeprom仿真模块A0,A1,A2的地址的时候必须配置为000,否则会有问题。
 所以在仿真的时候我们顶层模块代码,配置IIC设备地址的时候,最后三位地址也要是000

标题2.仿真代码

`timescale 1ns/1ns
module tb_eeprom_byte_rd_wr();
//wire define
wire scl ;
wire sda ;
wire stcp;
wire shcp;
wire ds ;


//reg define
reg clk ;
reg rst_n ;
reg key_wr;
reg key_rd;

 //时钟、复位信号
initial begin
    clk = 1'b1 ;
    rst_n <= 1'b0 ;
    key_wr <= 1'b1 ;
    key_rd <= 1'b1 ;
    #200
    rst_n <= 1'b1 ;
    #1000
    key_wr <= 1'b0 ;
    key_rd <= 1'b1 ;
    #400
    key_wr <= 1'b1 ;
    key_rd <= 1'b1 ;
    #20000000
    key_wr <= 1'b1 ;
    key_rd <= 1'b0 ;
    #400
    key_wr <= 1'b1 ;
    key_rd <= 1'b1 ;
    #40000000
    $stop;
end
 always #10 clk = ~clk;
 
defparam eeprom_byte_rd_wr_inst.KEY_FILTER_CNT_MAX = 5;//减少按键等待时间
defparam eeprom_byte_rd_wr_inst.i2c_rw_data_inst.CNT_WAIT_MAX = 1000;//减少对eeprom两次读写之间的间隔
eeprom_byte_rd_wr eeprom_byte_rd_wr_inst
(
    .sys_clk (clk ), //输入工作时钟,频率 50MHz
    .sys_rst_n (rst_n ), //输入复位信号,低电平有效
    .key_wr (key_wr ), //按键写
    .key_rd (key_rd ), //按键读
    
    .sda (sda ), //串行数据
    .scl (scl ), //串行时钟
    .stcp (stcp ), //输出数据存储寄时钟
    .shcp (shcp ), //移位寄存器的时钟输入
    .ds (ds ) //串行数据输入

);

//-------------eeprom_inst-------------
M24LC64 M24lc64_inst
(
    .A0 (1'b0 ), //器件地址
    .A1 (1'b0 ), //器件地址
    .A2 (1'b0 ), //器件地址
    .WP (1'b0 ), //写保护信号,高电平有效
    .RESET (~rst_n ), //复位信号,高电平有效
    
    .SDA (sda ), //串行数据
    .SCL (scl ) //串行时钟
);

endmodule
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值