FPGA+DSP编码过程

复位

*rst_ft245(4003)=0x0;
delay(10);
*rst_ft245bm=0x01;
delay(10);

在这里插入图片描述要让ADDR[4…0],XZCS,XWE都有效,只有一个ACTIVE周期,也就是4个DSP主频周期。也就是说RESRT_FT245BM存在4个DSP主频周期,低电平有效。

对于M2CONTROL模块,如图,有
在这里插入图片描述

编码初始化

M2_T/R=0, INT_D=1,RESET=0,这是复位的时候
经过初始化编码后

*wrctrl=0x1f1;//1 1111 0001初始化编码

如上图,

M2_T/R=1, INT_D=0,RESET=1
CLEARM2FIFO,CLEARM5FIFO,CLEARM7FIFO=1
M2MR=0,M5RST=0,M7RST=0

m2cmd为高电平复位,需要加非门 (图有错) ,写入该命令后,m2cmd应该是结束复位状态,此时
M2FE=1,M2FF=0

  status_edib=*rdstatus;
    while(checkbit16(status_edib,0)==1)
    {
         status_edib=*rdstatus;
    }
    *wrcmd=cmddata[0]; 

读取状态,判断其第0位是否为0,为0跳出循环
也就是说,M2FF=0时,进行下一步将cmddata[0]写入*wrcmd处
在这里插入图片描述

写入cmddata[0过程]

选中*wrcmd后
在这里插入图片描述FFIN16=1,是触发器,会一直为1
WRREG=1,是选择器,只有一个脉冲,脉冲宽度为4个DSP主频
在这里插入图片描述上图有错
FFIN[15…0]=PCB[15…0] 的,因为M2RXWR=0(经过了复位)
在这里插入图片描述此时,第一个数据就写入了m2cmd

从m2cmd读出来

M2FE=0(是由1变为0)
在这里插入图片描述M2SD=0,INIT_D=1(M2SD是错的,需要加一个非门)
MESTRAT=1
在这里插入图片描述最先产生TXRDFIFO=1的脉冲,然后是LOADSR=1,STARTEE=1,M2EE就会输出高电平

TXRDFIFO=1的脉冲产生,产生 RDREG=1 的脉冲,脉冲宽度为一个CLK
在这里插入图片描述然后产生命令同步信号M2SS=1
在这里插入图片描述然后m2cmdFIFO会被读出信号,FFOUT[16…0] 输出

LOADSR=1,FFOUT[15…0] 有数据,并串转换只会移动一位出去

RDREG=1,FE=1,FE上升沿,mebusy=1,直到meend=1之后,mebusy=0,

写入数据进入m2cmd

for(i=0;i<cmddata[6];i++)
{
    status_edib=*rdstatus;
    while(checkbit16(status_edib,0)==1)
    {
      status_edib=*rdstatus;
    }
   temp=*downdata;
   *wrdata=temp;
   downdata++;

满信号不为1时,将 *WRDATA=TEMP写入
此时,FFIN16=0,数据进入后,M2FE=0

读出m2cmd数据,并串转换输出

此时,M2EE高电平后,M2SD就会有高电平过来,M2SD=1,持续16个M2ESC周期,
在这里插入图片描述M2SD下降沿时,MEEND=1,LOADNEXT=1
才会输出下一个读信号REREG

在M2SD为高的这段时间,每个M2ESC周期,都会移位出去
编码过程大致如此

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值