13.6??FPGA內(nèi)部結(jié)構(gòu)設(shè)計
13.6.1??構(gòu)框圖
基于FPGA及PCI9054的信號采集卡的核心設(shè)計部分是FPGA內(nèi)部結(jié)構(gòu)的邏輯設(shè)計。如圖13.15所示為本系統(tǒng)FPGA內(nèi)部結(jié)構(gòu)框圖。
其中,信號接收器是接收采集信號的模塊,對LVTTL信號接口和LVDS信號接口輸入的信號進行分析,并將獲得的信號送入下一個模塊。
內(nèi)部信號源是一個用于測試的模塊。通過產(chǎn)生一個已知的有序的信號序列送至信號接收器,最終進入主機后進行檢測,即可得知整個傳輸過程的正確性。
雙口RAM用于實現(xiàn)信號的串并轉(zhuǎn)換,使輸入的信號轉(zhuǎn)換成32位數(shù)據(jù)位寬,同時實現(xiàn)時鐘域的轉(zhuǎn)換。另外通過乒乓操作實現(xiàn)數(shù)據(jù)的有序存取。
圖13.15???FPGA內(nèi)部結(jié)構(gòu)框圖
數(shù)據(jù)控制模塊用于產(chǎn)生雙口RAM和SDRAM控制器的地址總線、數(shù)據(jù)總線和控制總線,是雙口RAM模塊與SDRAM控制器的橋梁。實現(xiàn)雙口RAM至SDRAM控制器正確的數(shù)據(jù)轉(zhuǎn)移。同時,數(shù)據(jù)控制模塊還負(fù)責(zé)從SDRAM控制器讀取數(shù)據(jù),并送至FPGA內(nèi)的FIFO緩沖區(qū)中,用于PCI總線交互。
SDRAM控制器是FPGA內(nèi)用于外部SDRAM控制的模塊。
PCI本地控制器是FPGA內(nèi)用于控制PCI9054本地總線交互的模塊。
PLL是Altera?FPGA內(nèi)提供的模擬延遲鎖相環(huán)模塊,可以實現(xiàn)系統(tǒng)時鐘的倍頻、分頻及延遲等時鐘控制操作。通過該模塊可以實現(xiàn)系統(tǒng)內(nèi)不同時鐘域的時鐘分配。
13.6.2??設(shè)計方法
在實際的設(shè)計中,主要通過自行編寫模塊、調(diào)用宏模塊和引用開源模塊3種方式來實現(xiàn)模塊的設(shè)計。
1.自行編寫模塊
自行編寫模塊就是完全通過自行編寫的邏輯完成模塊的設(shè)計,可以使用硬件編程語言、狀態(tài)機、電路圖等方式實現(xiàn)。
本設(shè)計中的PCI本地控制器、信號接收器、內(nèi)部信號源、數(shù)據(jù)控制等模塊都是使用Verilog硬件語言自行編寫設(shè)計的。
2.調(diào)用宏模塊
在邏輯設(shè)計中,Altera已經(jīng)為設(shè)計者提供了豐富的基本邏輯組件的模塊。設(shè)計者只需使用宏模塊向?qū)нM行調(diào)用,配置相應(yīng)的參數(shù),即可得到符合設(shè)計需求的模塊。
本設(shè)計中的雙口RAM、PLL及FIFO緩沖模塊正是通過調(diào)用Cyclone?FPGA支持的相應(yīng)的LPM_RAM_DP、ALTPLL和LPM_FIFO+宏模塊實現(xiàn)的。如圖13.16所示為Altera?宏模塊向?qū)Ч芾砥鹘缑妗?/p>
圖13.16??Altera宏模塊向?qū)Ч芾砥?/p>
?
3.引用開源模塊
除了設(shè)計者自行編寫模塊及宏模塊向?qū)Ч芾砥髦刑峁┑哪K以外,設(shè)計者還可以引用開源的模塊加入到系統(tǒng)的設(shè)計中。開源的模塊往往是一些廠家對一些常見的外圍器件提供的控制模塊。
本設(shè)計中使用的SDRAM控制器正是引用了成熟的開源模塊進行的設(shè)計,Altera為SDRAM控制器給出了白皮書和開源模塊。設(shè)計者只需將該開源模塊引用至系統(tǒng)的設(shè)計中,進行一定的修改即可使用。