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,這是復位的時候
經過初始化編碼后
如上圖,
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
讀取狀態,判斷其第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周期,都會移位出去
編碼過程大致如此
總結
以上是生活随笔為你收集整理的FPGA+DSP编码过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 虚幻引擎5都有哪些重要新功能?
- 下一篇: 2023年东南大学机械工程考研上岸经验