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