一種基于PCI IP核的碼流接收卡的設計
發布時間:2007/8/24 0:00:00 訪問次數:355
作者:福州大學物理與信息工程學院 張略 楊秀芝
摘 要:本文介紹了一種基于Altera公司的PCI接口IP核的DVB碼流接收系統的硬件設計方案及設計要點的分析。該設計采用Altera公司的新一代FPGA芯片EP1C12和PCI IP核以及高速串行數據通信接收芯片,實現DVB-ASI信號的接收。
關鍵詞:DVB;異步串行接口;PCI;IP核
前言
隨著數字化廣播電視技術的迅速發展和基于MPEG-2標準的圖像壓縮和復用技術的完善,利用PC對大容量信息的處理變得日益重要,如基于PC的軟復用器的實現,使得通過PC接收DVB(數字視頻廣播)碼流已逐漸成為一項不可替代的多媒體數據接收技術。因此,設計基于PC平臺的DVB 碼流接收卡是數字廣播電視發展的需要。
由于DVB-ASI信號的平均傳輸速率為270 Mbps,而DVB傳輸流又要求保證接收的實時性,因此本文選擇了PCI總線。33MHz、32位的PCI總線的數據傳輸速率最高可達133MBps, 完全可以滿足高速實時傳輸的需求。選擇了Altera公司的PCI編譯器軟件包來實現PCI接口控制電路。該軟件包為PCI接口提供了一個完整的解決辦法,包含了PCI控制電路的所有功能。用戶可以通過修改參數生成所需的IP核模塊,以設計自己的外部設備接口邏輯。本文選擇了其生成的PCI_MT32功能模塊。
系統硬件模塊設計
系統的硬件電路設計要求:能將傳輸速率為270Mbps的串行DVB—ASI碼流實時、無損地通過PCI接口傳輸到PC,以供PC上的應用程序做進一步處理。在操作和使用上要方便,在設計上要求結構緊湊、接口簡單、性能可靠、易于升級。系統硬件框圖如圖1所示。
從圖中可以看出,由于使用了FPGA及PCI IP核,使整個硬件電路顯得特別簡潔。它主要由DVB碼流輸入模塊和核心控制模塊組成。串行DVB傳輸流經同軸電纜進入DVB碼流輸入模塊,轉換為8位并行輸出。核心控制模塊對并行數據進行緩存,并采用DMA方式傳輸給PCI總線,完成本地總線和PCI總線的可靠通信。
DVB碼流輸入模塊
本文選用ASI接口。ASI信號由同軸電纜經BNC接頭輸入,經過互感(用PE65508芯片)轉換為PECL(正向發射極耦合邏輯)差分電平信號,再經過耦合電路,到達CY7B933的差分線輸入端。 CY7B933是Cypress公司的一種用于點對點高速串行數據通信的接收芯片,它完成碼流輸入模塊的核心功能。它有三種工作模式,這里選用它的解碼模式對輸入信號進行8B/10B解碼和串并轉換。最后輸出經過字節對齊的8位并行TLL信號,輸出的信號包括 MPEG-2傳輸流和作為同步字使用的逗號字符(在8B/10B傳輸碼規則中定義為 K28.5專用字符),其輸出速率恒定為27MBps。
圖1 系統硬件框圖
核心控制模塊
核心控制模塊由FPGA控制電路和異步FIFO組成。主要完成對輸入ASI信號的緩存和對PCI總線信號的控制的功能。其中最主要的部分是FPGA控制電路。基于整個系統的性能的考慮,選擇Altera公司的EP1C12。這款芯片有12060個邏輯單元,52個RAM塊等資源,完全可以支持本設計的要求。
FPGA控制電路內部框圖如圖2所示,它是本設計的核心部分,對輸入的ASI信號保留有效的DVB傳輸流,發送到FIFO輸入端進行緩存。并將FIFO緩存后輸出的數據用DMA傳輸方式通過PCI總線實現對PC內存的存取,同時利用FIFO的標志信號控制DMA傳輸過程。下面對FPGA控制電路的各模塊進行介紹。
PCI_MT32功能模塊
本文在選擇PCI接口芯片時,選擇了Altera公司的PCI 編譯器軟件包,它可以參數化地生成用于PCI接口的IP核----MegaCore。這個可編譯和綜合的MegaCore有以下4種宏功能模塊:PCI_MT64、PCI_MT32、PCI_T64和PCI_T32。它們都可以完成總線協議的轉換,將復雜的、電氣和時序要求高的PCI總線邏輯轉換為易于操作的本地接口邏輯,遵循PCI總線協議2.2版,經過嚴格的工業級驗證并支持多款優化FPGA。其中,PCI_MT32是支持33/66MHz工作頻率、32位PCI總線、支持主/從模式的PCI IP功能模塊。考慮到市場的需求,通常的PC主板都支持32位PCI,且在主模式下DMA控制器才能工作,因此選擇了PCI_MT32。 本地信號都以l (local)開頭,其中以lt_開頭的是從控信號,以lm_開頭的是主控信號。
要使用PCI_MT32功能模塊就要了解其配置寄存器,配置寄存器中的基址寄存器最為重要,PCI_MT32共提供了6個基址寄存器,可以映射6個存儲器或I/O 空間。在操作系統啟動前后,基址寄存器分別起到兩個作用。在操作系統啟動前,基址寄存器存放定義的空間長度。以使加電軟件以確定在系統中有多少存儲器以及系統中的 I/O 控制器要求多少地址空間,然后才可以把 I/O 控制器映射到合理的地址空間并引導系統。在操作系統啟動后,基址寄存器又要起到存放基地址的作用,通過對要存取的基址寄存器用配置寫操作寫入基地址,再通過基地址加偏移量就可以訪問想要存取的空間。
<
作者:福州大學物理與信息工程學院 張略 楊秀芝
摘 要:本文介紹了一種基于Altera公司的PCI接口IP核的DVB碼流接收系統的硬件設計方案及設計要點的分析。該設計采用Altera公司的新一代FPGA芯片EP1C12和PCI IP核以及高速串行數據通信接收芯片,實現DVB-ASI信號的接收。
關鍵詞:DVB;異步串行接口;PCI;IP核
前言
隨著數字化廣播電視技術的迅速發展和基于MPEG-2標準的圖像壓縮和復用技術的完善,利用PC對大容量信息的處理變得日益重要,如基于PC的軟復用器的實現,使得通過PC接收DVB(數字視頻廣播)碼流已逐漸成為一項不可替代的多媒體數據接收技術。因此,設計基于PC平臺的DVB 碼流接收卡是數字廣播電視發展的需要。
由于DVB-ASI信號的平均傳輸速率為270 Mbps,而DVB傳輸流又要求保證接收的實時性,因此本文選擇了PCI總線。33MHz、32位的PCI總線的數據傳輸速率最高可達133MBps, 完全可以滿足高速實時傳輸的需求。選擇了Altera公司的PCI編譯器軟件包來實現PCI接口控制電路。該軟件包為PCI接口提供了一個完整的解決辦法,包含了PCI控制電路的所有功能。用戶可以通過修改參數生成所需的IP核模塊,以設計自己的外部設備接口邏輯。本文選擇了其生成的PCI_MT32功能模塊。
系統硬件模塊設計
系統的硬件電路設計要求:能將傳輸速率為270Mbps的串行DVB—ASI碼流實時、無損地通過PCI接口傳輸到PC,以供PC上的應用程序做進一步處理。在操作和使用上要方便,在設計上要求結構緊湊、接口簡單、性能可靠、易于升級。系統硬件框圖如圖1所示。
從圖中可以看出,由于使用了FPGA及PCI IP核,使整個硬件電路顯得特別簡潔。它主要由DVB碼流輸入模塊和核心控制模塊組成。串行DVB傳輸流經同軸電纜進入DVB碼流輸入模塊,轉換為8位并行輸出。核心控制模塊對并行數據進行緩存,并采用DMA方式傳輸給PCI總線,完成本地總線和PCI總線的可靠通信。
DVB碼流輸入模塊
本文選用ASI接口。ASI信號由同軸電纜經BNC接頭輸入,經過互感(用PE65508芯片)轉換為PECL(正向發射極耦合邏輯)差分電平信號,再經過耦合電路,到達CY7B933的差分線輸入端。 CY7B933是Cypress公司的一種用于點對點高速串行數據通信的接收芯片,它完成碼流輸入模塊的核心功能。它有三種工作模式,這里選用它的解碼模式對輸入信號進行8B/10B解碼和串并轉換。最后輸出經過字節對齊的8位并行TLL信號,輸出的信號包括 MPEG-2傳輸流和作為同步字使用的逗號字符(在8B/10B傳輸碼規則中定義為 K28.5專用字符),其輸出速率恒定為27MBps。
圖1 系統硬件框圖
核心控制模塊
核心控制模塊由FPGA控制電路和異步FIFO組成。主要完成對輸入ASI信號的緩存和對PCI總線信號的控制的功能。其中最主要的部分是FPGA控制電路。基于整個系統的性能的考慮,選擇Altera公司的EP1C12。這款芯片有12060個邏輯單元,52個RAM塊等資源,完全可以支持本設計的要求。
FPGA控制電路內部框圖如圖2所示,它是本設計的核心部分,對輸入的ASI信號保留有效的DVB傳輸流,發送到FIFO輸入端進行緩存。并將FIFO緩存后輸出的數據用DMA傳輸方式通過PCI總線實現對PC內存的存取,同時利用FIFO的標志信號控制DMA傳輸過程。下面對FPGA控制電路的各模塊進行介紹。
PCI_MT32功能模塊
本文在選擇PCI接口芯片時,選擇了Altera公司的PCI 編譯器軟件包,它可以參數化地生成用于PCI接口的IP核----MegaCore。這個可編譯和綜合的MegaCore有以下4種宏功能模塊:PCI_MT64、PCI_MT32、PCI_T64和PCI_T32。它們都可以完成總線協議的轉換,將復雜的、電氣和時序要求高的PCI總線邏輯轉換為易于操作的本地接口邏輯,遵循PCI總線協議2.2版,經過嚴格的工業級驗證并支持多款優化FPGA。其中,PCI_MT32是支持33/66MHz工作頻率、32位PCI總線、支持主/從模式的PCI IP功能模塊。考慮到市場的需求,通常的PC主板都支持32位PCI,且在主模式下DMA控制器才能工作,因此選擇了PCI_MT32。 本地信號都以l (local)開頭,其中以lt_開頭的是從控信號,以lm_開頭的是主控信號。
要使用PCI_MT32功能模塊就要了解其配置寄存器,配置寄存器中的基址寄存器最為重要,PCI_MT32共提供了6個基址寄存器,可以映射6個存儲器或I/O 空間。在操作系統啟動前后,基址寄存器分別起到兩個作用。在操作系統啟動前,基址寄存器存放定義的空間長度。以使加電軟件以確定在系統中有多少存儲器以及系統中的 I/O 控制器要求多少地址空間,然后才可以把 I/O 控制器映射到合理的地址空間并引導系統。在操作系統啟動后,基址寄存器又要起到存放基地址的作用,通過對要存取的基址寄存器用配置寫操作寫入基地址,再通過基地址加偏移量就可以訪問想要存取的空間。
<