基于FPGA的PCI總線(xiàn)接口原理研究與設計
● 時(shí)序控制
在時(shí)序控制程序中采用狀態(tài)機模型來(lái)實(shí)現不同時(shí)序的轉換。各種命令、數據交換、控制均在狀態(tài)機的管理下進(jìn)行工作。PCI總線(xiàn)上的信號是并行工作的,因此,對應每個(gè)狀態(tài)必須明確其執行的任務(wù)。這些任務(wù)要用VHDL的進(jìn)程語(yǔ)句來(lái)描述所發(fā)生的事件。本設計中的狀態(tài)機共使用了6種狀態(tài),它以從設備響應狀況為依據,主要以DEVSEL#信號和TRDY#信號的狀況為依據。狀態(tài)機如圖1所示,分別對應空閑狀態(tài)(此狀態(tài)DEVSEL#、TRDY#和STOP#以及其他輸出信號為高阻態(tài));準備狀態(tài)、DEVSEL#和TRDY#均為高電平狀態(tài),DEVSEL#為低電平且TRDY#為高電平狀態(tài),DEVSEL#和TRDY#均為低電平狀態(tài);操作結束狀態(tài)(此狀態(tài)使DEVSEL#、TRDY#和STOP#維持一個(gè)周期高電平)。本系統接到復位信號后對系統進(jìn)行復位,然后轉入空閑狀態(tài),在空閑狀態(tài)中采樣總線(xiàn),并根據總線(xiàn)的變化來(lái)決定下一個(gè)時(shí)鐘上升沿后狀態(tài)機轉入何種狀態(tài),這些時(shí)序和程序中用到的信號都是基本且必須的,在進(jìn)行開(kāi)發(fā)時(shí)可以根據需要增添必要的狀態(tài)和信號,VHDL對狀態(tài)機的描述如下。
type pci_state is (Idle, Ready, DevTrdyHi, DevLoTrdyHi, DevTrdyLo, OprOver);
signal c_state :pci_state;
Idle為空閑狀態(tài);Ready為準備狀態(tài);DevTrdyHi表示DEVSEL#和TRDY#均為高電平狀態(tài);DevLoTrdyHi表示DEVSEL#為低電平且TRDY#為高電平狀態(tài);DevTrdyLo表示DEVSEL#和TRDY#均為低電平狀態(tài);OprOverr表示操作結束狀態(tài)。
程序如下。
下一步應列出每個(gè)狀態(tài)所對應的并發(fā)事件,寫(xiě)出相關(guān)的進(jìn)程。進(jìn)程語(yǔ)句是一個(gè)并行語(yǔ)句,它定義進(jìn)程被激活時(shí)將要執行的特定行為。例如,在Ready狀態(tài)時(shí),就要判斷從主設備方發(fā)來(lái)的地址信息是否與從設備地址相同,因此要寫(xiě)出地址比較進(jìn)程。
評論