畢業(yè)設(shè)計(jì)(論文)基于USB的LVDS數(shù)據(jù)傳輸_第1頁
畢業(yè)設(shè)計(jì)(論文)基于USB的LVDS數(shù)據(jù)傳輸_第2頁
畢業(yè)設(shè)計(jì)(論文)基于USB的LVDS數(shù)據(jù)傳輸_第3頁
畢業(yè)設(shè)計(jì)(論文)基于USB的LVDS數(shù)據(jù)傳輸_第4頁
畢業(yè)設(shè)計(jì)(論文)基于USB的LVDS數(shù)據(jù)傳輸_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、中北大學(xué)xxxx屆畢業(yè)設(shè)計(jì)說明書1 引言1.1 課題研究背景如今,高速處理器、多媒體、虛擬現(xiàn)實(shí)以及網(wǎng)絡(luò)技術(shù)所需傳送的數(shù)據(jù)量越來越大,速度越來越快。目前存在的點(diǎn)對(duì)點(diǎn)物理層接口如rs-422,rs-485,scsi 以及其它數(shù)據(jù)傳輸標(biāo)準(zhǔn),由于其在速度、噪聲/emi、功耗、成本等方面所固有的限制越來越難以勝任此任務(wù)。因此,采用新的i/o 接口技術(shù)來解決數(shù)據(jù)傳輸這一瓶頸問顯得日益突出,lvds 這種高速低功耗接口標(biāo)準(zhǔn)為解決這一瓶頸問題提供了可能。 lvds (low voltage differential signaling) 即低壓差分信號(hào)是適應(yīng)高速數(shù)據(jù)傳輸和低功耗的一種通用點(diǎn)對(duì)點(diǎn)物理接口技術(shù)。它

2、使用一種低擺幅差分信號(hào)技術(shù),使得信號(hào)能在差分pcb線對(duì)或平衡電纜上以幾百mb/s的速度傳輸,其低擺幅和低電流驅(qū)動(dòng)輸出實(shí)現(xiàn)了低噪聲和低功耗。本次設(shè)計(jì)擬將設(shè)備接入通用pc以方便控制和數(shù)據(jù)驗(yàn)證。然而與pc機(jī)連接的接口有多種,如串口,并口,usb接口等,鑒于如下原因本設(shè)計(jì)采用usb接口:usb具有傳輸速度快(usb1.1是12mbps,usb2.0是480mbps, usb3.0是5 gbps),使用方便,支持熱插拔,連接靈活,獨(dú)立供電等優(yōu)點(diǎn),可以連接鼠標(biāo)、鍵盤、打印機(jī)、掃描儀、攝像頭、閃存盤、mp3機(jī)、手機(jī)、數(shù)碼相機(jī)、移動(dòng)硬盤、外置光軟驅(qū)、usb網(wǎng)卡、adsl modem、cable modem等,

3、幾乎所有的外部設(shè)備。usb接口可用于連接多達(dá)127個(gè)外設(shè),如鼠標(biāo)、調(diào)制解調(diào)器和鍵盤等。usb自從1996年推出后,已成功替代串口和并口,并成為當(dāng)今個(gè)人電腦和大量智能設(shè)備的必配的接口之一。1.2 課題相關(guān)技術(shù)的發(fā)展與現(xiàn)狀1995年11月,以美國(guó)國(guó)家半導(dǎo)體公司為主推出了ansftiajeia一644標(biāo)準(zhǔn)1996年3月,ieee公布了ieee1596.3標(biāo)準(zhǔn)。這兩個(gè)標(biāo)準(zhǔn)注重于對(duì)lvds接口的特性、互連與線路端接等方面的規(guī)范,對(duì)于生產(chǎn)工藝、傳輸介質(zhì)和供電電壓等沒有明確。lvds可采用cmos、gaas或其他技術(shù)實(shí)現(xiàn),其供電電壓可以從+5到+3.3v,甚至更低;其傳輸介質(zhì)可以是pcb連線,也可以是特制的

4、電纜。推薦的最高數(shù)據(jù)傳輸速率是655mbps,而理論上,在一個(gè)無衰耗的傳輸線上,lvds的最高傳輸速率可達(dá)1.923gbps。近年來,現(xiàn)代高性能微處理器的速度已經(jīng)突破了ighz,芯片間的傳輸速率也達(dá)到兒百兆赫茲,在cmos電路系統(tǒng)中進(jìn)行600mbps以上的信號(hào)傳輸已經(jīng)不可避免。在眾多用于高速數(shù)據(jù)傳輸?shù)慕涌陔娖叫问街?,只有l(wèi)vds能夠?qū)崿F(xiàn)高速度、低功耗、低噪聲以及低成本的結(jié)合而無需折衷。因此,國(guó)際上對(duì)lvds及其相關(guān)產(chǎn)品的研究開發(fā)十分活躍,各大公司均推出了lvds信號(hào)的asicfo接口單元產(chǎn)品系列,如國(guó)家半導(dǎo)體公司的ds90、ds92系列速度達(dá)到600mbps,德州儀器公司的sn65lvds和s

5、n75lvds系列速度達(dá)到400mbps600mbps. faraday公司的ijvdst80hgoa和fxlvix08ollaoa系列速度達(dá)到600mbps左右,富士通公司的ce61、ce71系列的速度也達(dá)到了300mhz400mhz。這些產(chǎn)品在高性能計(jì)算機(jī)、電訊、通訊、顯示及消費(fèi)電子等領(lǐng)域得到廣泛的應(yīng)用。lvds高速/o接口單元是高性能計(jì)算機(jī)和通訊電子設(shè)備中重要的構(gòu)件,直接影響到系統(tǒng)性能。但是,國(guó)外把這些研究成果都作為核心機(jī)密。為了掌握高性能計(jì)算機(jī)中的這項(xiàng)重要技術(shù),我們必須研究開發(fā)具有自主知識(shí)產(chǎn)權(quán)的 lvds1/0接口單元。lvds高速fo接口單元包括lvds驅(qū)動(dòng)器、lvds接收器和lvd

6、s偏置單元。1.3 本課題的研究意義目前存在的點(diǎn)對(duì)點(diǎn)物理層接口如rs-422,rs-485,scsi 以及其它數(shù)據(jù)傳輸標(biāo)準(zhǔn)由于其在速度、噪聲/emi、功耗、成本等方面所固有的不足。本次研究的lvds和usb總線組成的高速數(shù)據(jù)傳輸裝置擬在克服傳統(tǒng)接口的不足,實(shí)現(xiàn)高速穩(wěn)定的數(shù)據(jù)傳輸,并通過usb接口器件與計(jì)算機(jī)友好鏈接,通過計(jì)算機(jī)對(duì)數(shù)據(jù)進(jìn)行時(shí)時(shí)控制與檢測(cè)。因此本次研究具有很重要的應(yīng)用意義。1.4 設(shè)計(jì)要求及工作內(nèi)容 設(shè)計(jì)要求:利用fpga來控制lvds接口芯片來發(fā)送、接收數(shù)據(jù),然后通過usb總線將數(shù)據(jù)傳輸給計(jì)算機(jī)進(jìn)行驗(yàn)證。本次設(shè)計(jì)的主要工作內(nèi)容如下: (1)查閱相關(guān)資料提出設(shè)計(jì)方案; (2)利用制

7、圖軟件繪制硬件原理圖和pcb版圖; (3)編寫相應(yīng)的fpga程序; (4)焊接電路板調(diào)試程序; (5)翻譯一篇與本設(shè)計(jì)相關(guān)的英文資料。2 系統(tǒng)總體設(shè)計(jì)方案及關(guān)鍵技術(shù)2.1 系統(tǒng)總體設(shè)計(jì)方案2.1.1 系統(tǒng)硬件框圖 直流電源模塊pc機(jī)ds92lv1023clc001主控制器fpgausb模塊 tx clc014ds92lv1224 rx 圖2-1 vds和usb總線組成的高速數(shù)據(jù)傳輸系統(tǒng)框圖2.1.2 系統(tǒng)組成及各模塊功能整個(gè)系統(tǒng)包含這樣幾個(gè)模塊:電源模塊,usb模塊,主控制器模塊,串行數(shù)傳輸模塊。電源模塊為整個(gè)系統(tǒng)提供工作電源;usb模塊實(shí)現(xiàn)pc機(jī)與高速傳輸裝置的數(shù)據(jù)交換;主控制器模塊控制外圍

8、電路有序工作,實(shí)現(xiàn)數(shù)據(jù)的中轉(zhuǎn),協(xié)調(diào)數(shù)據(jù)的傳輸;串行數(shù)據(jù)傳輸模塊包括串化器 ds92lv1023和解串器ds92lv1224,串化器 ds92lv1023將10位并行數(shù)據(jù)轉(zhuǎn)換為差分串行數(shù)據(jù),解串器ds92lv1224將差分串行數(shù)據(jù)轉(zhuǎn)換為10位并行數(shù)據(jù)。2.1.3 系統(tǒng)功能的實(shí)現(xiàn)原理本系統(tǒng)將實(shí)現(xiàn)自己發(fā)送遞增數(shù)自己接收然后送到pc機(jī)驗(yàn)證的功能。系統(tǒng)的主控芯片是fpga,它將產(chǎn)生一組0到8f的遞增數(shù)發(fā)送給串化器 ds92lv1023。解串器ds92lv1224將總線上的差分串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)傳給fpga。fpga將接收到的并行數(shù)據(jù)送到內(nèi)部fifo緩存。pc機(jī)上的上位機(jī)軟件通過usb接口讀取fpga

9、內(nèi)部fifo中緩存的數(shù)據(jù),然后驗(yàn)證接收到的數(shù)據(jù)是否為0到8f的遞增數(shù)。2.2 系統(tǒng)設(shè)計(jì)的關(guān)鍵技術(shù)(1)lvds串行傳輸 lvds 信號(hào)的傳輸是依靠串行器和解串器成對(duì)出現(xiàn)相互搭配來完成的,串行器和解串器都需要外部給它們一個(gè)工作時(shí)鐘。只有這兩個(gè)工作時(shí)鐘頻率相等,串行器和解串器之間才能正常通信。由于fpga 管腳與內(nèi)部邏輯的靈活性,完全可以解決時(shí)鐘頻率相等的問題。串行器ds92lv1023是將外部并行數(shù)據(jù)串化成串行數(shù)據(jù),此時(shí)該串行器輸出的差分壓差是100mv左右,這種小壓差只能傳輸不到十米的距離,但加上clc006 這款電纜驅(qū)動(dòng)芯片后,其輸出壓差可達(dá)到2v(壓差可通過電阻r23調(diào)節(jié)),這樣就可以驅(qū)動(dòng)

10、雙絞線傳輸實(shí)現(xiàn)長(zhǎng)距離傳輸。(1) 速度匹配由于本系統(tǒng)usb 模塊傳輸速度最快為20mbps,不能將數(shù)據(jù)適時(shí)的傳到計(jì)算機(jī)里,lvds每次傳輸需要500us的同步時(shí)間,為了讓lvds一次同步然后進(jìn)行不間斷的數(shù)據(jù)傳輸,可以通過如下方式實(shí)現(xiàn): 串行器ds92lvl023和解串器ds92lvl224有l(wèi)o個(gè)數(shù)據(jù)引腳,一般都是通過8位數(shù)據(jù)進(jìn)行傳輸?shù)模溆?個(gè)位就可以用來標(biāo)識(shí)這個(gè)8位的數(shù)據(jù)是有效數(shù)據(jù)還是無效數(shù)據(jù)。比如說用“00“來表示有效數(shù)據(jù),用”11“來表示無效數(shù)據(jù)。首先高速數(shù)據(jù)傳輸裝置向設(shè)備發(fā)送一個(gè)命令,告訴設(shè)備發(fā)送有效數(shù)據(jù),此時(shí)高速傳輸裝置檢測(cè)數(shù)據(jù)是否有效,并將有效數(shù)據(jù)存入高速fifo中,當(dāng)fifo中

11、數(shù)據(jù)達(dá)到一個(gè)限值時(shí),然后高速傳輸裝置又發(fā)送命令叫設(shè)備發(fā)送無效數(shù)據(jù),當(dāng)高速傳輸裝置檢測(cè)到無效數(shù)據(jù)時(shí)就將這些無效數(shù)據(jù)拋棄,又當(dāng)fifo中的數(shù)據(jù)量下降到一個(gè)限值時(shí),高速傳輸裝置又發(fā)送命令讓設(shè)備發(fā)送有效數(shù)據(jù)。這樣就可以實(shí)現(xiàn)讓lvds一次同步然后進(jìn)行不間斷的數(shù)據(jù)傳輸,實(shí)現(xiàn)數(shù)度匹配。2.3 主要芯片工作原理簡(jiǎn)介2.3.1 主控芯片fpga本次畢業(yè)設(shè)計(jì)選用了xilinx公司的spartan-ii系列fpga芯片xc2s30,該款fpga具有豐富的邏輯單元和i/o接口資源,是一種高集成度芯片。它能夠完成數(shù)據(jù)的接收、緩存、以及數(shù)據(jù)傳輸?shù)裙δ?,因此整個(gè)系統(tǒng)就可以由一塊fpga進(jìn)行控制,進(jìn)而使整個(gè)系統(tǒng)的體積實(shí)現(xiàn)了小

12、型化,功耗也隨之大大降低。xc2s30的內(nèi)部結(jié)構(gòu)如圖2-2所示:圖2-2 xc2s30內(nèi)部結(jié)構(gòu)框圖xc2s30 fpga芯片有一個(gè)定期的、靈活的、可編程架構(gòu)的可配置邏輯塊(clbs),在它的四周包圍著可編程輸入/輸出模塊(iobs),在四個(gè)角落里分布著4個(gè)延時(shí)鎖相環(huán)(dlls),在clbs和iobs之間分布著兩列塊ram,所有的功能模塊通過強(qiáng)大的多功能互聯(lián)通道相互連接。2.3.2 lvds芯片ds92lv1023和ds92lv1224ds92lv1023和ds92lv1224是美國(guó)國(guó)家半導(dǎo)體公司推出的10位總線型低壓差分信號(hào)的應(yīng)用芯片組。其中ds92lv1023 是可將10 位并行cmos或t

13、tl數(shù)據(jù)轉(zhuǎn)換為具有內(nèi)嵌時(shí)鐘的高速串行差分?jǐn)?shù)據(jù)流的串化器;而ds92lv1224 則是接收該差分?jǐn)?shù)據(jù)流并將它們轉(zhuǎn)換為并行數(shù)據(jù)的解串器,它同時(shí)又可以重建并行時(shí)鐘。采用該器件組進(jìn)行數(shù)據(jù)串化時(shí)采用的是內(nèi)嵌時(shí)鐘,這樣可有效地解決由于時(shí)鐘與數(shù)據(jù)的不嚴(yán)格同步而制約高速傳輸?shù)钠款i問題。 ds92lv1023和ds92lv1224芯片組的管腳分布如圖2-3所示,各管腳功能見表2-1 所列。 圖2-3 ds92lv1023和ds92lv1224的管腳分布圖 表2-1 各管腳功能串化器ds92lv1023管腳功能表解串器ds92lv1224管腳功能表3.3.3 usb接口芯片cy7c68013 一般usb的接口芯片

14、種類大致可分為:主控制器、根集線器、接口芯片以及具有usb接口的微控制器。所謂的接口芯片,即是僅包含usb的串行接口引擎、fifo內(nèi)存、收發(fā)器以及電壓調(diào)整器的芯片。cypress公司的ez-usb fx2系列芯片是世界上第一款集成了usb 2.0接口的微控制器,包括了usb接口和8051兼容的指令系統(tǒng)。ez-usb fx2lp系列芯片為其低功耗的版本。本設(shè)計(jì)利用的是ez-usb fx2lp系列的cy7c68013a-128pin芯片。其內(nèi)部結(jié)構(gòu)如圖2-4所示。cy7c68013a主要包括usb2.0收發(fā)器、串行引擎(sie)、增強(qiáng)型8051內(nèi)核、16kb的ram、4kb的fifo存儲(chǔ)器、i/o

15、接口、數(shù)據(jù)總線、地址總線和通用可編程接口(gpif)。 圖2 -4 cy7c68013結(jié)構(gòu)框圖3 系統(tǒng)硬件設(shè)計(jì)3.1系統(tǒng)電源電路本系統(tǒng)中主控芯片fpga內(nèi)核工作電壓為1.8v,輸出電壓源電壓為3.3v。故本系統(tǒng)選用+5v作為電源輸入電壓,采用tps767d325電源轉(zhuǎn)換芯片將5v的電壓轉(zhuǎn)換為穩(wěn)定的3.3v和1.8v,為fpga提供工作電壓,fpga供電電路如圖3-1所示: 圖3-1 fpga電源電路本系統(tǒng)中fpga模塊與cy7c68013模塊分開供電,cy7c68013模塊采用usb接口提供的+5v電壓作為電源輸入電壓,采用tps767d325電源轉(zhuǎn)換芯片將5v的電壓轉(zhuǎn)換為穩(wěn)定的3.3v,為c

16、y7c68013提供工作電壓,cy7c68013供電電路如圖3-2所示: 圖3-2 cy7c68013電源電路3.2 fpga時(shí)鐘電路晶振是為電路提供頻率基準(zhǔn)的元器件,本設(shè)計(jì)采用60mhz的有源貼片晶振作為芯片工作的時(shí)鐘輸入,它可以提供高精度的頻率基準(zhǔn),信號(hào)質(zhì)量較好。fpga時(shí)鐘電路如圖3-3所示: 圖3-3 fpga時(shí)鐘電路 3.3 fpga配置電路fpga的配置方式靈活多樣,根據(jù)芯片是否能夠自己主動(dòng)加載配置數(shù)據(jù),分為主模式、從模式及jtag模式。典型的主模式都是加載片外非易失性存儲(chǔ)器中的配置比特流,配置所需的時(shí)鐘信號(hào)(稱為cclk)由fpga內(nèi)部產(chǎn)生,且fpga控制整個(gè)配置過程。fpga上

17、電后,自動(dòng)的將數(shù)據(jù)從相應(yīng)的外存儲(chǔ)器讀入到sram中,實(shí)現(xiàn)內(nèi)部結(jié)構(gòu)映射。根據(jù)比特流的位寬有可以分為串行模式和并行模式兩大類。本設(shè)計(jì)利用主串模式進(jìn)行配置fpga,如圖3-4。 圖3-4 fpga配置電路其中prom選擇官方推薦的xcf02s。cclk為配置時(shí)鐘。prog為配置邏輯異步復(fù)位。done為啟動(dòng)控制。tms、tck、tdi、tdo分別為邊界掃描模式選擇、時(shí)鐘、數(shù)據(jù)輸入及數(shù)據(jù)輸出。104電容為內(nèi)部電源輸入引腳的去耦電容。3.4 cy7c68013啟動(dòng)配置電路cy7c68013芯片的程序和數(shù)據(jù)存放在內(nèi)部的ram中,并從ram中開始執(zhí)行。但是,在掉電的時(shí)候,ram中的程序和數(shù)據(jù)都將丟失。只有在u

18、sb上電的時(shí)候,usb主機(jī)將程序和數(shù)據(jù)下載到ram中執(zhí)行。其上電的處理類型有以下幾種。l 無eeprom啟動(dòng)l 0xc0的eeprom啟動(dòng)l 0xc2的eeprom啟動(dòng)l 地址/數(shù)據(jù)總線的外存儲(chǔ)器啟動(dòng)本設(shè)計(jì)采用0xc0的eeprom啟動(dòng)方式。即在eeprom中首字節(jié)寫入0xc0,并將vid、pid、did和配置字節(jié)寫入eeprom。芯片上電后,將這些數(shù)據(jù)復(fù)制到片內(nèi)存儲(chǔ)器,并將其發(fā)送給主機(jī),由主機(jī)根據(jù)id數(shù)據(jù)選擇合適的固件程序下載到usb芯片內(nèi)。本設(shè)計(jì)使用具有i2c總線接口的串行eeprom芯片at24c64。at24c64具有8192 x 8位容量,可重復(fù)擦除100萬次。其電路連接如圖3-5所

19、示。圖中r40、r41為i2c總線線路的上拉電阻,確保數(shù)據(jù)能夠正常傳輸。 圖3-5 cy7c68013啟動(dòng)配置電路3.5 cy7c68013時(shí)鐘,usb插口,復(fù)位電路本系統(tǒng)中cy7c68013的工作頻率為24mhz,圖3-6左及是為cy7c68013提供工作頻率的電路,其中22p電容c171和c172幫助晶振起振。圖3-6中為usb電纜連接口電路。cy7c68013是通過低電平復(fù)位,其上電復(fù)位電路如圖3-6右所示。 圖3-6 cy7c68013時(shí)鐘,usb插口,復(fù)位電路3.6 串行器 ds92lv1023 連接電路串行器 ds92lv1023 是將外部并行數(shù)據(jù)串化成串行數(shù)據(jù) 此時(shí)該串行器輸出的

20、差分壓差約 100mv 該差分壓差傳輸距離只有幾米 加上 clc001 電纜高速驅(qū)動(dòng)器 其輸出壓差可達(dá) 2v 這樣就可以驅(qū)動(dòng)同軸電纜傳輸 300m 的距離 圖 3-7 為 lvds 發(fā)送電路。串行器 ds92lv1023與fpga通過排阻rp10,rp11,rp12相連,排阻在這里起限流作用。 圖3-7 串行器 ds92lv1023 連接電路3.7 解串器ds92lv1224連接電路解串器ds92lv1224是一款lvds芯片,它將串行器 ds92lv1023 發(fā)送到總線上的差分串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù)。芯片clc014是自適應(yīng)均衡器,它能夠自動(dòng)補(bǔ)償信號(hào)損耗 使電纜傳輸?shù)拇袛?shù)字信號(hào)能夠重新恢復(fù)

21、其原有性能 利用這一特點(diǎn) 并采用高速串行數(shù)字接口 sdi serialdigitalinterface 自適應(yīng)電纜均衡器及電纜驅(qū)動(dòng)器構(gòu)建系統(tǒng)可擴(kuò)大lvds 技術(shù)的數(shù)據(jù)傳輸范圍 實(shí)現(xiàn)高速長(zhǎng)距離數(shù)據(jù)傳輸因此 本系統(tǒng)采用 ds92lv1023 型 lvds 器件 clc006 型高速驅(qū)動(dòng)器以及 clc014 型自適應(yīng)均衡器構(gòu)建的系統(tǒng)設(shè)計(jì)。led7為lvds鎖定指示燈,lvds串化器端口連續(xù)發(fā)送由六位0及六位1組成的同步信號(hào),然后由解串器鎖相環(huán)試圖鎖定到內(nèi)嵌時(shí)鐘。一旦鎖定成功,即可置lock 管腳為低,fpga將led7對(duì)應(yīng)管腳值高即可點(diǎn)亮指示燈。 圖3-8 解串器ds92lv1224連接電路4 系統(tǒng)

22、軟件設(shè)計(jì)4.1 系統(tǒng)軟件頂層結(jié)構(gòu) 系統(tǒng)軟件頂層模塊如圖4-1所示。該模塊管腳說明如下:rdclk:cy7c68013讀取fpga內(nèi)部fifo時(shí)的讀數(shù)時(shí)鐘管腳;lvdsin(9:0):fpga與解串器ds92lv1224的數(shù)據(jù)輸出口rout09的鏈接管腳;rclk:連接解串器ds92lv1224的重建時(shí)鐘管腳rclk;clk60m:整個(gè)軟件系統(tǒng)的60m外部時(shí)鐘輸入;refclk:連接解串器ds92lv1224的參考時(shí)鐘輸入管腳;half:fpga內(nèi)部fifo的半滿信號(hào)輸出,連接外部led指示燈;empty:fpga內(nèi)部fifo的空指示信號(hào),連接外部led指示燈;fifodata(7:0):相連c

23、y7c68013的gpifd07,通過他們讀取fpga 內(nèi)部fifo數(shù)據(jù);ren:連接解串器ds92lv1224的輸出允許管腳ren;rclk_rf:連接解串器ds92lv1224的rclk-r/f管腳選擇重建時(shí)鐘的觸發(fā)沿;full1:fpga內(nèi)部fifo溢出信號(hào)標(biāo)志,連接外部led指示燈;full:fpga內(nèi)部fifo數(shù)據(jù)滿信號(hào)標(biāo)志,連接外部led指示燈;tclk:連接串化器ds92lv1023的發(fā)送時(shí)鐘輸入端tclk;sync:連接串化器ds92lv1023的sync管腳,該腳置1時(shí)發(fā)送連續(xù)同步信號(hào);tclk_rf:連接串化器ds92lv1023的tclk-r/f,選擇發(fā)送時(shí)鐘觸發(fā)沿;lv

24、dsout(9:0):連接串化器ds92lv1023的數(shù)據(jù)輸入管腳din09; 圖4-1 系統(tǒng)軟件頂層模塊 系統(tǒng)軟件頂層結(jié)構(gòu)圖如圖4-2所示,其中重要的模塊有三個(gè):usbfifo模塊,緩存接收到的數(shù)據(jù)等待上位機(jī)的讀??;send_lvds模塊,發(fā)送0到8f的遞增數(shù)給串化器ds92lv1023讓其轉(zhuǎn)換為差分串行數(shù)據(jù)發(fā)送出去;receive_lvds模塊,接收解串器ds92lv1224送來的并行數(shù)據(jù)。鎖相環(huán)模塊clkdll將60m輸入信號(hào)2倍頻后作為軟件系統(tǒng)的工作時(shí)鐘。復(fù)位模塊reset產(chǎn)生復(fù)位信號(hào)可實(shí)現(xiàn)系統(tǒng)的軟件復(fù)位。xiaodou1,xiaodou2分別對(duì)rdclk和rclk進(jìn)行消抖防止意外干擾

25、。 圖4-2 系統(tǒng)軟件頂層結(jié)構(gòu)4.2 數(shù)據(jù)接收模塊的軟件實(shí)現(xiàn) 接收解串器ds92lv1224送來的并行數(shù)據(jù)并對(duì)數(shù)據(jù)的有效性進(jìn)行判斷,如果是有效數(shù)據(jù)就將數(shù)據(jù)送往usbfifo并增加usbfifo的地址置寫usbfifo的標(biāo)志wrflag,如果是無效數(shù)據(jù)就拋棄。數(shù)據(jù)的有效與無效是通過rout(9 downto 8)來判斷的,這兩位如果是01則表示rout(7 downto 0)是一個(gè)有效數(shù)據(jù),否者為無效數(shù)據(jù)。數(shù)據(jù)接收模塊的原理圖如圖4-3所示: 圖4-3 數(shù)據(jù)接收模塊數(shù)據(jù)接收模塊的vhdl程序?qū)崿F(xiàn)如下:library ieee;use ieee.std_logic_1164.all;use iee

26、e.std_logic_arith.all;use ieee.std_logic_unsigned.all;- uncomment the following library declaration if instantiating- any xilinx primitives in this code.-library unisim;-use unisim.vcomponents.all;entity receive_lvds is port( fosc:in std_logic;-120m時(shí)鐘輸入 rout: in std_logic_vector(9 downto 0); rst: in

27、 std_logic; rclk_rf: out std_logic; refclk : out std_logic; -20m的參考時(shí)鐘給1224 rclk: in std_logic; -重建時(shí)鐘輸入 wrflag:out std_logic; fifowr:out std_logic; ren : out std_logic; fifodata: out std_logic_vector(7 downto 0) -將數(shù)據(jù)寫入fifo);end receive_lvds;architecture behavioral of receive_lvds issignal lvds_data_i

28、n: std_logic_vector(9 downto 0);signal rclk_reg:std_logic;signal clk_counter : integer range 0 to 10:=0;signal clk : std_logic;signal ren1 : std_logic;beginrclk_rf=1;refclk=clk;lvds_data_in= rout;rclk_reg=rclk;fifowr=rclk_reg;fifodata=lvds_data_in(7 downto 0); ren=ren1;ren1=1;-產(chǎn)生20m時(shí)鐘給解串器ds92lv1224作

29、為參考時(shí)鐘輸入p1: process(rst, fosc) begin if rst=0 then clk_counter=0;clk=0; elsif fosc event and fosc=1 then if clk_counter=3 then clk= not clk;clk_counter=0; else clk_counter= clk_counter+1; end if; end if; end process p1;-對(duì)數(shù)據(jù)有效性進(jìn)行判斷,接收有效數(shù)據(jù) p2: process(rst, rclk_reg)beginif rst=0 thenwrflag=0;elsif rclk

30、_regevent and rclk_reg=1 thenif lvds_data_in(9 downto 8)=01 thenwrflag=1;elsewrflag=0;end if;end if;end process p2; end behavioral;4.3 數(shù)據(jù)發(fā)送模塊的軟件實(shí)現(xiàn) 數(shù)據(jù)發(fā)送模塊如圖4-4所示。數(shù)據(jù)發(fā)送模塊首先連續(xù)發(fā)送100次由五位1及五位0組成的同步信號(hào),以便解串器鎖相環(huán)鎖定到內(nèi)嵌時(shí)鐘。如果usbfifo未滿,則該模塊產(chǎn)生0到8f的遞增數(shù)并發(fā)送給串化器ds92lv1023讓其轉(zhuǎn)換為差分串行數(shù)據(jù)發(fā)送出去,并置有效數(shù)據(jù)標(biāo)志din(9 downto 8)=01;。如果us

31、bfifo已滿則發(fā)送無效數(shù)據(jù)1111100000。 圖4-4 數(shù)據(jù)發(fā)送模塊數(shù)據(jù)發(fā)送模塊的vhdl程序?qū)崿F(xiàn)如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity send_lvds is port ( clk: in std_logic; -輸入120m時(shí)鐘, 發(fā)送一個(gè)字節(jié)的數(shù)據(jù)需要8個(gè)狀態(tài),及發(fā)送時(shí)鐘為15mhz rst: in std_logic; full : in std_logic; din : out std_logi

32、c_vector(9 downto 0); tclk : out std_logic; sync : out std_logic; tclk_rf : out std_logic );end send_lvds;architecture behavioral of send_lvds issignal synctemp: std_logic;signal f_data1:std_logic_vector (7 downto 0);type femo is (yb0,yb1,yb2,yb3,yb4,yb5,yb6,yb7,state0,state1,state2,state3,state4,st

33、ate5,state6,state7,state8,state9,state10,state11,state12,state13,state14);signal fm_state : femo;signal yb_count : integer range 0 to 110:=0;begintclk_rf=1;sync=synctemp;synctemp=0; process(rst,clk)beginif rst=0 thentclk=0;f_data1=x00;fm_state=yb0;din=0000000000;yb_count tclk=0;fm_statefm_state din=

34、1111100000;fm_state fm_state tclk=1;fm_statefm_state fm_state if yb_count= 100 then fm_state=state0; else yb_count=yb_count+1;fm_statetclk=0;if full=1 thenfm_state=state1;elsefm_statefm_state if f_data1 = x8f then f_data1=x00; else f_data1= f_data1+1; end if; din(7 downto 0)=f_data1; din(9 downto 8)

35、=01;fm_state fm_state tclk=1; fm_statefm_state fm_state fm_statefm_state din(9 downto 0)=1111100000;fm_state fm_state tclk=1; fm_statefm_statefm_state fm_statefm_state=state0;end case;end if;end process;end behavioral;4.3 usbfifo模塊的軟件實(shí)現(xiàn)4.3.1 usbfifo模塊的頂層結(jié)構(gòu) usbfifo功能模塊如圖4-5所示。數(shù)據(jù)接收模塊receive_lvds將接收到的有

36、效數(shù)據(jù)寫入usbfifo緩存,上位機(jī)通過usb接口經(jīng)datain(7:0)讀取緩存中的數(shù)據(jù),usbfifo根據(jù)其內(nèi)部的數(shù)據(jù)量置empty,full,halffull,full1標(biāo)志,數(shù)據(jù)發(fā)送模塊根據(jù)這些標(biāo)志來決定發(fā)送有效數(shù)據(jù)還是無效數(shù)據(jù)。圖4-5 usbfifo模塊 usbfifo模塊內(nèi)部結(jié)構(gòu)如圖4-6所示??偣灿兴膫€(gè)模塊:wraddr11,當(dāng)wrflag置1即數(shù)據(jù)接收模塊接收到有效數(shù)據(jù)時(shí)將有效數(shù)據(jù)寫到fifo4k緩存中,該模塊提供12位緩存地址;rdaddr11,當(dāng)cy7c68013讀取fifo中的數(shù)據(jù)時(shí),該模塊提供12位的緩存地址;usbfifoctrl,該模塊根據(jù)讀地址和寫地址計(jì)算fif

37、o4k中的數(shù)據(jù)量并置相應(yīng)標(biāo)志;fifo4k,該模塊為usbfifo的4k存儲(chǔ)空間。圖4-6 usbfifo模塊內(nèi)部結(jié)構(gòu)4.3.2 寫地址產(chǎn)生模塊的軟件實(shí)現(xiàn) 寫地址產(chǎn)生模塊原理圖如圖4-7所示。當(dāng)wrflag置1即數(shù)據(jù)接收模塊接收到有效數(shù)據(jù)時(shí)將有效數(shù)據(jù)寫到fifo4k緩存中,該模塊提供12位緩存地址。 圖4-7 寫地址產(chǎn)生模塊寫地址產(chǎn)生模塊的vhdl程序?qū)崿F(xiàn)如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity wraddr11

38、isport(fosc : in std_logic;rst: in std_logic;wrflag : in std_logic;wraddr: out std_logic_vector(11 downto 0);end wraddr11 ;architecture behavior of wraddr11 issignal cont: std_logic_vector(11 downto 0);beginwraddr=cont; main :process(fosc,rst) begin if rst=0 thencont=000000000000;elsif fosc event an

39、d fosc=0 then if wrflag=1 thenif cont=111111111111 thencont=000000000000; elsecont=cont+1;end if; else cont=cont; end if;end if;end process main;end behavior;4.3.3 讀地址產(chǎn)生模塊的軟件實(shí)現(xiàn)讀地址產(chǎn)生模塊原理圖如圖4-7所示。當(dāng)cy7c68013讀取fifo中的數(shù)據(jù)時(shí)該模塊提供12位的緩存地址圖4-8 讀地址產(chǎn)生模塊讀地址產(chǎn)生模塊vhdl程序?qū)崿F(xiàn)如下:library ieee;use ieee.std_logic_1164.all;u

40、se ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity rdaddr11 isport(fosc : in std_logic;rst : in std_logic;rdaddr: out std_logic_vector(11 downto 0);end rdaddr11;architecture behavior of rdaddr11 issignal cont10: std_logic_vector(11 downto 0);beginrdaddr=cont10; main :process(fosc,rst

41、) begin if rst=0 thencont10=000000000000;elsif fosc event and fosc =0 thenif cont10=111111111111 thencont10=000000000000;elsecont10=cont10+1;end if;end if;end process main;end behavior;4.3.4 usbfifo控制模塊的軟件實(shí)現(xiàn) usbfifo控制模塊的原理圖如圖4-9所示。該模塊根據(jù)讀地址和寫地址計(jì)算fifo4k中的數(shù)據(jù)量并置相應(yīng)標(biāo)志。圖4-9 usbfifo控制模塊usbfifo控制模塊的vhdl軟件實(shí)現(xiàn)如

42、下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity usbfifoctrl isport( fclk : in std_logic;wraddr : in std_logic_vector(11 downto 0); rdaddr : in std_logic_vector(11 downto 0);empty : out std_logic;full : out std_logic;full1 : out std_logic

43、; halffull : out std_logic);end usbfifoctrl;architecture behavior of usbfifoctrl issignal offset: std_logic_vector(11 downto 0);begin offsetrdaddr) else (4095+wraddr-rdaddr);p0:process(fclk) begin if(fclk event and fclk=1)then if offset0 then empty=1 ; else empty=512then halffull=0 ; else halffull=3

44、500 then full=0 ; else full=4096 then full1=0 ; else full1=1 ; end if;end if;end process p0;end behavior;4.3.5 fifo4k的軟件實(shí)現(xiàn)4.3.5.1 fifo4k的頂層結(jié)構(gòu)fifo4k模塊的原理圖如圖4-10所示。該模塊為usbfifo提供4k存儲(chǔ)空間,寫數(shù)據(jù)時(shí)db(7:0)上的數(shù)據(jù)將被送到adda(11:0)指定的存儲(chǔ)位置。讀數(shù)據(jù)時(shí)addb(11:0)地址處得數(shù)據(jù)被送到dq(7:0)端口上。圖4-10 fifo4k模塊 fifo4k模塊內(nèi)部結(jié)構(gòu)如圖4-11所示。從圖中可以看到fifo

45、4k模塊由8個(gè)4k一位存儲(chǔ)器組成的4k字節(jié)存儲(chǔ)空間和一個(gè)輸入緩存和輸出緩存構(gòu)成。圖4-11 fifo4k模塊內(nèi)部結(jié)構(gòu)4.3.5.1 數(shù)據(jù)輸入緩存模塊的軟件實(shí)現(xiàn)圖4-12 數(shù)據(jù)輸入緩存模塊數(shù)據(jù)輸入緩存模塊的vhdl實(shí)現(xiàn)如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity data_split isport( di: in std_logic_vector(7 downto 0); wrdat0: out std_logic; wrdat1: out std_logic; wrdat2: out std_logic; wrdat3: out std_logic; wrdat4: out std_logic; wrdat5: out std_logic; wrdat6: out std_logic; wrdat7: out std_logic);end data_split;architecture behavioral of data_split isbeginwrdat0=di(0);wrdat1=di(1);wrdat2=di(2);wrdat3=di(3

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論