M57Control仿真测试

M57Control

用M5通道举例,M5通道负责解码,也就是接收数据,receive

首先看DSP的程序,

*wrctrl=0x1fc;

0000 0001 1111 1100
M2T_R =0
M2MR =0
M5RST=1
M7RST=1
CLEARM2FIFO=1
CLEARM5FIFO=1
CLEARM7FIFO=1
RESET_M2=1
INIT_D=0

再看M5通道的输入输出
在这里插入图片描述再思考,他是如何工作的
首先,他是解码,实现的是串转并,也就是 M5SDO~M5D[15…0]

关键的三个信号如图 DCLK SDO NVM
在这里插入图片描述DCLK 一直存在,当NVM为高电平时,SDO的数据才有效

来看FPGA程序,首先sin_pout,是一个IP核,串并转换

在这里插入图片描述NVM平时为低,NVMVLR就为高,一直复位,无输出。
NVM为高时,SDO输入,在每个DCLK时钟沿,进行移位操作,在SROUT[15…0]处移出,SROUT[15…0]又连到了D[15…0],等会儿输入fifo。
什么时候输入fifo,得靠计数器来完成

在这里插入图片描述这个计数器,NVM为高时开始工作,每个DCLK时钟周期计数一次,输出BC[4…0]当它计数从0到16时 由00000~10000,也就是BC4=1。换句话说,计数满16,BC4=1。

在这里插入图片描述先看这部分的初始状态。INIT_D=0 MRST=1 没有处于复位
BC4=1后,下一个时钟周期 WRREQ=1 然后马上使其复位,也就是说。这个WRREQ=1 只存在一个CLK的时钟周期,它是一个脉冲
也会使计数器清零

在这里插入图片描述将D[16…0]写入这个FIFO FE就变为0了 也就是 M5FE=0
在这里插入图片描述检测到rdstatus寄存器第6位不为空之后,就去读取rdm5fifo的数据

status_edib=*rdstatus;
 if(checkbit16(status_edib,5)==0)
       {
         temp=*rdm5fifo;
         *extram5=temp;
         m5++;
         *extram5++;
         timeout_num=0;
       }

造成M5_SEL=0 RDM5FIFO=0

在这里插入图片描述RDM5FIFO=0 RDDATA=0 rdreq=1,数据就会从DOUT[16…0]输出。

在这里插入图片描述在这里插入图片描述M5_SEL=0 D[15…0]上输出的就是M5D[15…0]的数据

在这里插入图片描述注意:NVM要16个周期以上!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值