基于FPGA和PCI的高精度測速板卡的設計與實現
2 各個模塊VHDL實現
根據圖1的總體設計方案,使用VHDL語言設計實現如下幾個模塊。
2.1 倍頻辨向模塊
為便于使用VHDL語言描述,對圖2的碼盤信號作如下分析:
(1)當碼盤正轉時,在一個周期T內,A,B兩相信號共有4次相對變化:00→1O→11→01。這樣,根據前一次和當前的信號,就可以判斷方向,并產生四倍頻脈沖。
(2)同理當碼盤反轉時,也根據A,B兩相信號的4次相對變化:00→01→11→10,可以判斷方向,并產生四倍頻脈沖信號。
(3)當線路受到干擾或出現故障時,則可能出現其他狀態轉換過程,此時不產生脈沖。
根據上述分析就可以設計出測速辨向模塊,當判斷正轉時,把方向輸出置‘1’,反向時置‘O’。
2.2 改進M/T法測速模塊
如圖3所示可以看出,本部分的VHDL設計分成兩個模塊:計數器模塊與鎖存器模塊。
其中,計數器模塊分為兩種:高頻時標計數器和反饋脈沖計數器。高頻時標計數器在每個高頻時標的上升沿都做+1計數,在每個反饋脈沖的上升沿對計數值鎖存。反饋脈沖計數器,需要兩個輸出:反饋脈沖計數值Cm、位置反饋脈沖計數值。其中,Cm的增量值用于速度的計算,所以在每一個反饋脈沖到來時,計數器都+1;的計數值用于位置的計算,所以它是在Cm的基礎上考慮了碼盤方向得到的計數值,在正轉時反饋脈沖計數器+1,反轉時-1,當零位脈沖Z有效時,對其置0。然后分別輸出Cm,,由此就可以得到反饋脈沖計數器模塊。
在每個采樣周期的上升沿還要鎖存Cm,Ct的增量值和與Ct的差值,由于都做了差分處理,所以這三個鎖存器使用雙字就能滿足設計要求,而鎖存器在零位信號Z后不進行差分處理,若采用36 000刻增量式碼盤,并進行10 000倍頻,位置范圍為±720°,那么需要的最大計數值為:
(36 000×10 000×720×2)/360=1 440 000 000
可見,雙字鎖存器也能滿足設計要求。
綜上所述,本設計設置了4個雙字信號鎖存器Cm,,Ct,,同時還需要對其控制輸出,所以在PCI從設備控制器中為I/O分配4個雙字的地址空間。然后根據PCI總線給出的地址信號PCI_AD[3:2]和數據輸出使能信號DATA_EN對這4個雙字寄存器尋址輸出。
2.3 PCI接口控制器
PCI的時序規則和PCI的總線協議由PCI接口控制器實現,同時它還負責傳遞地址和數據輸出使能信號給測速模塊,實現I/O口的基本讀與猝發讀數據功能。
從設備控制器包括2個部分:奇偶校驗模塊和PCI從設備狀態機。
2.3.1 奇偶校驗模塊
PCI的奇偶校驗提供了一種機制來決定一件作業。該作業判斷主設備是否成功地尋址相應的從設備,且數據是否正確地在它們之間傳輸。通過該模塊完成數據傳輸過程中PCI_AD和PCI_CBE的偶校驗。偶校驗的輸出信號在地址和數據周期有效,其產生的規則是使偶校驗輸出、PCI_ CBE、PCI_AD各位的‘1’的個數為偶數。那么采用把PCI_AD與PCI_CBE各位異或的方法,就可以實現偶校驗的功能。
2.3.2 PCI從設備狀態機
PCI從設備控制器是PCI接口設計的核心模塊,按功能來說,它要產生奇偶校驗和數據的使能信號,并根據PCI_AD和PCI_CBE產生讀地址,完成主從設備的握手信號,并且實現從設備狀態機在各個狀態之間的轉換。
由于本設計只需要完成I/0讀操作,本狀態機設計配置空間的功能放在了從設備控制器來完成,同時刪去了PCI操作中對存儲器空間、配置空間的操作,結合PCI總線的傳輸時序,如圖5給出了其基本結構。















評論