基于FPGA的視頻傳輸流發(fā)送系統(tǒng)設(shè)計(jì)
發(fā)布時(shí)間:2008/8/28 0:00:00 訪問次數(shù):553
1 引言
在目前的廣播電視系統(tǒng)中asi接口是使用非常廣泛的一種接口形式,該接口隨同spi一起被歐洲電信標(biāo)準(zhǔn)化協(xié)會(huì)(etsi)制訂,以使不同廠家生產(chǎn)的mpeg2單元可以方便地進(jìn)行互聯(lián)。本設(shè)計(jì)方案以fpga為核心器件,制作出了spi-asi接口轉(zhuǎn)換器。這套方案成本較低,利用fpga的可編程性,硬件的升級(jí)較容易。
2 系統(tǒng)結(jié)構(gòu)和功能分析
2.1 dvb-asi介紹
一般的mpeg2編碼器的輸出和解碼器的輸入都是標(biāo)準(zhǔn)的并行11位信號(hào),處理簡(jiǎn)單而且擴(kuò)展性強(qiáng),符合spi(synchronous parallel interface)信號(hào)接口。傳輸spi信號(hào),在傳輸鏈路上是lvds技術(shù)和25根管腳連接的,因此具有連線多、復(fù)雜,傳輸距離短,容易出現(xiàn)錯(cuò)誤等缺點(diǎn),而且,spi的熱插拔性能也較差。
asi是個(gè)串行傳輸協(xié)議,ts流以串行的方式傳輸,為了保證接收端能正確恢復(fù)出ts流data數(shù)據(jù),發(fā)送端需要插入同步字k28.5。asi協(xié)議中沒有psync、dvalid和clock信息,因此,在接收端需要根據(jù)ts流的同步字節(jié)0x47,由外部邏輯合成這3個(gè)信號(hào)。
asi傳輸流可以發(fā)送不同數(shù)據(jù)速率的mpeg2數(shù)據(jù),但傳輸速率恒定,為270mbps。因此asi可以發(fā)送和接收不同速率的mpeg2數(shù)據(jù)。asi傳輸系統(tǒng)使用分層結(jié)構(gòu)描述,最高層、第2層使用mpeg-2標(biāo)準(zhǔn)iso/iec 13818-1,第0層和第1層是基于iso/ieo cd 14165-1的fc纖維信道。fc支持多種物理傳輸媒介,本方案選用同軸電纜傳輸。
2.2 dvb-asi信號(hào)發(fā)送系統(tǒng)結(jié)構(gòu)
為了在編、解碼器和傳輸設(shè)備之間能正確傳遞數(shù)據(jù),本方案以fpga(altera公司的ep1c6t144c8)為核心器件,在spi和asi信號(hào)之間進(jìn)行轉(zhuǎn)換。原理如圖1所示。其中,27mhz時(shí)鐘作為系統(tǒng)時(shí)鐘,為fifo、8b10b編碼和并串轉(zhuǎn)換提供時(shí)鐘源信號(hào)。由于spi接口采用lvds電平傳輸數(shù)據(jù),從db25-f頭輸入的并行信號(hào),首先需要進(jìn)行l(wèi)vds->ttl電平轉(zhuǎn)換,得到spi接口定義的data、psync、dvalid和clock并行信號(hào)。丟棄psync和dvalid信號(hào),將data和clock信號(hào)直接連接到fifo的輸入端。外部邏輯控制著fifo的讀,從fifo讀出的數(shù)據(jù)送給8b10b編碼模塊進(jìn)行編碼轉(zhuǎn)換,并以270mbps的速率輸出串行數(shù)據(jù)。其中,270mhz時(shí)鐘由27mhz系統(tǒng)時(shí)鐘通過鎖相環(huán)產(chǎn)生。串行信號(hào)電氣特性為差分的pecl電平,經(jīng)過1:1的變壓器隔離后,由bnc頭輸出。
fifo的寫入時(shí)鐘即為ts流的字節(jié)時(shí)鐘clock,而讀出時(shí)鐘為固定值27mhz。采用不同的fifo讀邏輯,可以產(chǎn)生突發(fā)或連續(xù)兩種asi輸出模式。本方案中,fifo、fifo的讀寫控制邏輯、8b10b編碼以及并串轉(zhuǎn)換均由fpga 實(shí)現(xiàn),asi輸出為突發(fā)模式。
圖 1 spi轉(zhuǎn)asi模塊原理圖
在asi的編碼過程中,只需將mpeg2的八位數(shù)據(jù)和一位ts碼率傳輸時(shí)鐘輸入到fpga。在本方案中,ts格式為188個(gè)字節(jié),因此數(shù)據(jù)有效信號(hào)dvalid一直為高,fpga忽略這個(gè)信號(hào),只管接收ts碼流數(shù)據(jù),而不用關(guān)心ts碼流的同步頭。psync幀同步信號(hào)則作為fifo讀入的控制信號(hào)。fpga將接收到的數(shù)據(jù)以ts碼率時(shí)鐘寫入fifo,當(dāng)fifo半滿時(shí),fpga接收到fifo的半滿信號(hào),然后fifo控制邏輯發(fā)出fifo可讀信號(hào),編碼模塊以以27mbps讀取fifo中的數(shù)據(jù);當(dāng)計(jì)數(shù)器計(jì)數(shù)到編碼模塊讀取了一定數(shù)量(188個(gè)讀fifo信號(hào)周期)的fifo數(shù)據(jù),則發(fā)送fifo不可讀信號(hào),防止fifo讀空。
在fifo不可讀時(shí),向asi碼流中填充k28.5以維持270mbps的固定傳輸速率。最后串行數(shù)據(jù)經(jīng)過驅(qū)動(dòng)就可用同軸電纜傳送出去。本方案中,k28.5的插入方法選擇在每個(gè)傳輸包前必須有至少兩個(gè)同步字(k28.5字符),這符合asi的傳輸規(guī)定。
3 系統(tǒng)各結(jié)構(gòu)的實(shí)現(xiàn)方法
3.1 信號(hào)輸入
在asi的編碼過程中,只需將mpeg2傳輸流的八位數(shù)據(jù)和一位ts碼率傳輸時(shí)鐘輸入到fpga。在本方案中,ts數(shù)據(jù)通過富士通的專用asic芯片mb86391產(chǎn)生。由于控制mb86391產(chǎn)生的ts格式為188個(gè)字節(jié),因此數(shù)據(jù)有效信號(hào)dvalid一直為高,fpga忽略這個(gè)信號(hào),只管接收碼流數(shù)據(jù),而不用關(guān)心ts碼流的同步頭。psync幀同步信號(hào)也一樣忽略,只是需要從幀同步信號(hào)拉高開始,fpga將接收到的數(shù)據(jù)以ts碼率時(shí)鐘寫入fifo。
3.2 fifo模塊
fpga在搜索到188字節(jié)包長(zhǎng)的包頭0x47后開始將數(shù)據(jù)寫入fifo,同時(shí)監(jiān)測(cè)fifo的半滿信號(hào)hf, 若半滿則將fifo的讀使能信號(hào)抬高, 而此時(shí)從fifo讀出數(shù)據(jù)給8b/10b編碼模塊完成編碼。讀數(shù)據(jù)時(shí),由fpga對(duì)fifo的讀信號(hào)的時(shí)鐘脈沖計(jì)數(shù),計(jì)到188個(gè)后,將fifo的讀使能拉低,并判斷fifo是否半滿。此時(shí)fpga將不再發(fā)出讀fifo信號(hào), 而是在每個(gè)時(shí)鐘的上升沿插入一個(gè)k28.5同步字, 待發(fā)現(xiàn)fifo半滿信號(hào)hf出現(xiàn)后, 再次將fifo的讀使能抬高,并保持188個(gè)讀fifo信號(hào)周期,如此反復(fù)。由于fpga時(shí)鐘引腳接一個(gè)27mhz的外部時(shí)鐘, 而在每個(gè)時(shí)鐘的上升沿, 不是輸出正常數(shù)據(jù)就是同步字, 所以不管fifo是否有數(shù)據(jù)提供給后端的8b/10b編碼器,fpga最終都將送出固定的
1 引言
在目前的廣播電視系統(tǒng)中asi接口是使用非常廣泛的一種接口形式,該接口隨同spi一起被歐洲電信標(biāo)準(zhǔn)化協(xié)會(huì)(etsi)制訂,以使不同廠家生產(chǎn)的mpeg2單元可以方便地進(jìn)行互聯(lián)。本設(shè)計(jì)方案以fpga為核心器件,制作出了spi-asi接口轉(zhuǎn)換器。這套方案成本較低,利用fpga的可編程性,硬件的升級(jí)較容易。
2 系統(tǒng)結(jié)構(gòu)和功能分析
2.1 dvb-asi介紹
一般的mpeg2編碼器的輸出和解碼器的輸入都是標(biāo)準(zhǔn)的并行11位信號(hào),處理簡(jiǎn)單而且擴(kuò)展性強(qiáng),符合spi(synchronous parallel interface)信號(hào)接口。傳輸spi信號(hào),在傳輸鏈路上是lvds技術(shù)和25根管腳連接的,因此具有連線多、復(fù)雜,傳輸距離短,容易出現(xiàn)錯(cuò)誤等缺點(diǎn),而且,spi的熱插拔性能也較差。
asi是個(gè)串行傳輸協(xié)議,ts流以串行的方式傳輸,為了保證接收端能正確恢復(fù)出ts流data數(shù)據(jù),發(fā)送端需要插入同步字k28.5。asi協(xié)議中沒有psync、dvalid和clock信息,因此,在接收端需要根據(jù)ts流的同步字節(jié)0x47,由外部邏輯合成這3個(gè)信號(hào)。
asi傳輸流可以發(fā)送不同數(shù)據(jù)速率的mpeg2數(shù)據(jù),但傳輸速率恒定,為270mbps。因此asi可以發(fā)送和接收不同速率的mpeg2數(shù)據(jù)。asi傳輸系統(tǒng)使用分層結(jié)構(gòu)描述,最高層、第2層使用mpeg-2標(biāo)準(zhǔn)iso/iec 13818-1,第0層和第1層是基于iso/ieo cd 14165-1的fc纖維信道。fc支持多種物理傳輸媒介,本方案選用同軸電纜傳輸。
2.2 dvb-asi信號(hào)發(fā)送系統(tǒng)結(jié)構(gòu)
為了在編、解碼器和傳輸設(shè)備之間能正確傳遞數(shù)據(jù),本方案以fpga(altera公司的ep1c6t144c8)為核心器件,在spi和asi信號(hào)之間進(jìn)行轉(zhuǎn)換。原理如圖1所示。其中,27mhz時(shí)鐘作為系統(tǒng)時(shí)鐘,為fifo、8b10b編碼和并串轉(zhuǎn)換提供時(shí)鐘源信號(hào)。由于spi接口采用lvds電平傳輸數(shù)據(jù),從db25-f頭輸入的并行信號(hào),首先需要進(jìn)行l(wèi)vds->ttl電平轉(zhuǎn)換,得到spi接口定義的data、psync、dvalid和clock并行信號(hào)。丟棄psync和dvalid信號(hào),將data和clock信號(hào)直接連接到fifo的輸入端。外部邏輯控制著fifo的讀,從fifo讀出的數(shù)據(jù)送給8b10b編碼模塊進(jìn)行編碼轉(zhuǎn)換,并以270mbps的速率輸出串行數(shù)據(jù)。其中,270mhz時(shí)鐘由27mhz系統(tǒng)時(shí)鐘通過鎖相環(huán)產(chǎn)生。串行信號(hào)電氣特性為差分的pecl電平,經(jīng)過1:1的變壓器隔離后,由bnc頭輸出。
fifo的寫入時(shí)鐘即為ts流的字節(jié)時(shí)鐘clock,而讀出時(shí)鐘為固定值27mhz。采用不同的fifo讀邏輯,可以產(chǎn)生突發(fā)或連續(xù)兩種asi輸出模式。本方案中,fifo、fifo的讀寫控制邏輯、8b10b編碼以及并串轉(zhuǎn)換均由fpga 實(shí)現(xiàn),asi輸出為突發(fā)模式。
圖 1 spi轉(zhuǎn)asi模塊原理圖
在asi的編碼過程中,只需將mpeg2的八位數(shù)據(jù)和一位ts碼率傳輸時(shí)鐘輸入到fpga。在本方案中,ts格式為188個(gè)字節(jié),因此數(shù)據(jù)有效信號(hào)dvalid一直為高,fpga忽略這個(gè)信號(hào),只管接收ts碼流數(shù)據(jù),而不用關(guān)心ts碼流的同步頭。psync幀同步信號(hào)則作為fifo讀入的控制信號(hào)。fpga將接收到的數(shù)據(jù)以ts碼率時(shí)鐘寫入fifo,當(dāng)fifo半滿時(shí),fpga接收到fifo的半滿信號(hào),然后fifo控制邏輯發(fā)出fifo可讀信號(hào),編碼模塊以以27mbps讀取fifo中的數(shù)據(jù);當(dāng)計(jì)數(shù)器計(jì)數(shù)到編碼模塊讀取了一定數(shù)量(188個(gè)讀fifo信號(hào)周期)的fifo數(shù)據(jù),則發(fā)送fifo不可讀信號(hào),防止fifo讀空。
在fifo不可讀時(shí),向asi碼流中填充k28.5以維持270mbps的固定傳輸速率。最后串行數(shù)據(jù)經(jīng)過驅(qū)動(dòng)就可用同軸電纜傳送出去。本方案中,k28.5的插入方法選擇在每個(gè)傳輸包前必須有至少兩個(gè)同步字(k28.5字符),這符合asi的傳輸規(guī)定。
3 系統(tǒng)各結(jié)構(gòu)的實(shí)現(xiàn)方法
3.1 信號(hào)輸入
在asi的編碼過程中,只需將mpeg2傳輸流的八位數(shù)據(jù)和一位ts碼率傳輸時(shí)鐘輸入到fpga。在本方案中,ts數(shù)據(jù)通過富士通的專用asic芯片mb86391產(chǎn)生。由于控制mb86391產(chǎn)生的ts格式為188個(gè)字節(jié),因此數(shù)據(jù)有效信號(hào)dvalid一直為高,fpga忽略這個(gè)信號(hào),只管接收碼流數(shù)據(jù),而不用關(guān)心ts碼流的同步頭。psync幀同步信號(hào)也一樣忽略,只是需要從幀同步信號(hào)拉高開始,fpga將接收到的數(shù)據(jù)以ts碼率時(shí)鐘寫入fifo。
3.2 fifo模塊
fpga在搜索到188字節(jié)包長(zhǎng)的包頭0x47后開始將數(shù)據(jù)寫入fifo,同時(shí)監(jiān)測(cè)fifo的半滿信號(hào)hf, 若半滿則將fifo的讀使能信號(hào)抬高, 而此時(shí)從fifo讀出數(shù)據(jù)給8b/10b編碼模塊完成編碼。讀數(shù)據(jù)時(shí),由fpga對(duì)fifo的讀信號(hào)的時(shí)鐘脈沖計(jì)數(shù),計(jì)到188個(gè)后,將fifo的讀使能拉低,并判斷fifo是否半滿。此時(shí)fpga將不再發(fā)出讀fifo信號(hào), 而是在每個(gè)時(shí)鐘的上升沿插入一個(gè)k28.5同步字, 待發(fā)現(xiàn)fifo半滿信號(hào)hf出現(xiàn)后, 再次將fifo的讀使能抬高,并保持188個(gè)讀fifo信號(hào)周期,如此反復(fù)。由于fpga時(shí)鐘引腳接一個(gè)27mhz的外部時(shí)鐘, 而在每個(gè)時(shí)鐘的上升沿, 不是輸出正常數(shù)據(jù)就是同步字, 所以不管fifo是否有數(shù)據(jù)提供給后端的8b/10b編碼器,fpga最終都將送出固定的
熱門點(diǎn)擊
- EDA技術(shù)及軟件
- CPLD開發(fā)板和FPGA開發(fā)板的區(qū)別
- vc中如何使用設(shè)備描述表
- Visual C++中調(diào)用DLL實(shí)現(xiàn)數(shù)據(jù)加密
- Visual C++6.0 API函數(shù)操作技
- 采用PLC實(shí)現(xiàn)空壓站自動(dòng)化控制
- JavaCard CPU的設(shè)計(jì)與FPGA實(shí)現(xiàn)
- VC++中進(jìn)程與多進(jìn)程管理的方法
- 如何用C語言開發(fā)DSP嵌入式系統(tǒng)
- C和C++ 字符串字面量的比較
推薦技術(shù)資料
- 聲道前級(jí)設(shè)計(jì)特點(diǎn)
- 與通常的Hi-Fi前級(jí)不同,EP9307-CRZ這臺(tái)分... [詳細(xì)]
- 100A全集成電源模塊R
- Teseo-VIC6A GNSS車用精準(zhǔn)定位
- 高效先進(jìn)封裝工藝
- 模數(shù)轉(zhuǎn)換器 (Analog-to-Digit
- 集成模數(shù)轉(zhuǎn)換器(ADC)
- 128 通道20 位電流數(shù)字轉(zhuǎn)換器̴
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究