DW_APB_SPI

一、模块介绍

特点:

1、全双工同步串行数据传输 

2、可变长度传输字节高达128位

3、MSB或LSB优先数据传输

4、RX\TX分别位于时钟的上升沿或下降沿

5、全静态同步设计

寄存器描述:

1、RXTX0:0x00        32        R/W        用来存储数据

2、RXTX1:0x04        32        R/W

3、RXTX2:0x08        32        R/W

4、RXTX3:0x0c        32        R/W

5、CTRL:0x10        32        R/W        控制寄存器

【31:14】        R        reserved

【13】        R/W        ASS        

【12】        R/W        IE        将此位置1时,中断信号在传输完成时候拉高,读写任意寄存器,中断将被清除。

【11】        R/W        LSB        1:小端优先,第一个数据放在低位0:MSB大端优先,第一个数据放在高位。

【10】        R/W        TX_NEG        1:miso端的数据在下降沿改变,0:miso端的数据在上升沿改变

【9】        R/W        RX_NEG        1:mosi端的数据在上升沿改变,0:mosi端的数据在下降沿改变

【8】        R/W        GO_BSY        1:传输开始,传输结束时候自动清零。注意:所有寄存器设置都应该在此寄存器写1之前设置好。

【7】        R        Reserved        

【6:0】        R/W        CHAR_LEN        指定一次传输中传输多少位,最多64位。0x01:1bit,0x02:2bit,...0x7f:127bit,0x00:128bit

6、DIVIDER        0x14        32        R/W

【31:16】        R/W        RESERVED

【15:0】        R/W        DIVIDER        用于输出sclk_pad_o上生成串行时钟

7、SS(Slave Select)        0x18        32        R/W

【31:8】        R/W        RESERVED

【7:0】        R/W        SS         片选。

 

 工作状态表述:

工作时候,通过APB接口向DW_APB_SPI的数据寄存器写入要传输的数据,然后向控制寄存器中写入控制命令,先将GO_BSY寄存器域写0,将其他域都配置好以后,在将GO_BSY域写1,使数据开始传输。在SPI端将同样格式的数据发送到miso端口灌进DW_APB_SPI,灌进来的数据将覆盖掉数据寄存器中的原始值(数据寄存器通过mosi端口输出一位,就从miso端口接收一位)

结构图

scoreboard描述:

scoreboard内部声明有TLM_FIFO SPI,用来接收SPI端发送的item,声明有reg_model寄存器模型用来作对比。mosi_data【127:0】通过判断寄存器模型中的数据格式,将item中的数据保存下来,tx_data【127:0】从reg_model中保存对应rxtx寄存器模型的值,将这两个数据进行比较判断是否一致。miso_data【127:0】接收item中的数据,如果是大端数据,就利用rev_miso【127:0】将其转化成小端,然后再赋值回去,spi_read_data从dut中read寄存器的值,然后将其与miso_data做比较判断是否一致。rx_data【31:0】从寄存器模型接收数据,然后将miso_data赋值给rx_data,在用predict预测,比较miso_data与寄存器模型的数据是否一致。

config配置信息描述:

环境中有spi_env_config、apb_agent_config、spi_agent_config。在spi_test_base中声明并例化了一个m_env_config,在这个m_env_config中create了intr_util、m_apb_config、m_spi_agent_config,其中,在spi_test_base中m_apb_config和m_spi_agent_config通过get获取mon_bfm和drv_bfm接口(从top端set过来的,top往下一层set了五个bfm接口)。声明m_env并例化,在m_env内部get到env_config,set m_apb_agent_config、m_spi_agent_config到各个agent中。声明temp_intr_bfm并get接收其从top set来的例化对象,将得到的对象再赋值给m_env_config.INTR。

寄存器模型描述:

reg_model在spi_env_config中声明,在spi_env中创建。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值