ASIC實(shí)驗(yàn)報(bào)告-幀同步檢測(cè)_第1頁(yè)
ASIC實(shí)驗(yàn)報(bào)告-幀同步檢測(cè)_第2頁(yè)
ASIC實(shí)驗(yàn)報(bào)告-幀同步檢測(cè)_第3頁(yè)
ASIC實(shí)驗(yàn)報(bào)告-幀同步檢測(cè)_第4頁(yè)
ASIC實(shí)驗(yàn)報(bào)告-幀同步檢測(cè)_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、許金良 電子院10級(jí)04班 1321784084 目錄1. 前言22. 實(shí)驗(yàn)?zāi)康?3. 實(shí)驗(yàn)任務(wù)24. 幀同步系統(tǒng)實(shí)現(xiàn)原理24.1幀結(jié)構(gòu)24.2幀同步的原理45. 幀同步電路模塊設(shè)計(jì)55.1模塊外部管腳55.2設(shè)計(jì)思路56. 幀同步檢測(cè)模塊設(shè)計(jì)67. 仿真、測(cè)試、綜合與分析88. 實(shí)驗(yàn)總結(jié)與心得119. Verilog代碼139.1主模塊代碼139.2測(cè)試模塊代碼151 前言兩個(gè)工作站之間以報(bào)文分組為單位傳輸信息時(shí),必須將線路上的數(shù)據(jù)流劃分成報(bào)文分組規(guī)程的幀,以幀的格式進(jìn)行傳送。幀的幀標(biāo)識(shí)位用來(lái)標(biāo)識(shí)幀的開(kāi)始和結(jié)束。通信開(kāi)通時(shí),當(dāng)檢測(cè)到幀標(biāo)識(shí),即認(rèn)為是幀的開(kāi)始,然后在數(shù)據(jù)傳輸過(guò)程中一旦檢測(cè)到幀標(biāo)

2、識(shí)F即表示幀結(jié)束。之所以要把比特組合成以幀為單位傳送,是為了在出錯(cuò)時(shí),可只將有錯(cuò)的幀重發(fā),而不必將全部數(shù)據(jù)重新發(fā)送,從而提高了效率。幀同步指的是接收方應(yīng)當(dāng)能從接收到的二進(jìn)制比特流中區(qū)分出幀的起始與終止。本文中在linux操作系統(tǒng)下,用具有強(qiáng)大的行為描述能力和豐富的仿真語(yǔ)句的verilog HDL語(yǔ)言來(lái)描述PCM幀同步檢測(cè)及告警系統(tǒng),并用大型EDA軟件cadence對(duì)其進(jìn)行仿真、綜合和邏輯驗(yàn)證。2 實(shí)驗(yàn)?zāi)康?. 掌握利用Verilog進(jìn)行專用集成電路設(shè)計(jì)的流程和方法。2. 學(xué)習(xí)用cadence軟件進(jìn)行EDA設(shè)計(jì)綜合的方法。3. 提高用書(shū)本知識(shí)解決實(shí)際問(wèn)題的能力。3 實(shí)驗(yàn)任務(wù)1. 畫出電路實(shí)現(xiàn)幀同

3、步、失步的檢測(cè)流程。2. 用verilog HDL 進(jìn) 行frame電路的描述。3. 寫出正確的測(cè)試文件,測(cè)試文件必須包括從“幀同步”到“幀同步”再到“幀同步”的狀態(tài)轉(zhuǎn)變過(guò)程。4. 在linux環(huán)境下使用Verilog XL模擬器進(jìn)行verilog語(yǔ)言文件進(jìn)行仿真測(cè)試,測(cè)試無(wú)誤后進(jìn)行電路綜合。 4 幀同步系統(tǒng)實(shí)現(xiàn)原理 4.1 幀結(jié)構(gòu)編碼數(shù)字信號(hào)是一個(gè)無(wú)頭無(wú)尾的數(shù)碼流,盡管其中含有大量的信息,但若不能分辨一個(gè)樣值所對(duì)應(yīng)的碼子,將無(wú)法進(jìn)行正確的譯碼。在時(shí)分多路通信中,若不能判定各話路的序號(hào),將無(wú)法進(jìn)行準(zhǔn)確的通信。所謂幀結(jié)構(gòu),就是一種按時(shí)隙分配的重復(fù)性圖案。在PCM基群設(shè)備中是以幀結(jié)構(gòu)為準(zhǔn)則,將各種

4、信息規(guī)律性地相互交叉匯總后形成高速碼流。對(duì)于數(shù)碼率為 2048 kb/s 的設(shè)備而言,由于取樣頻率為 8 kHz,每個(gè)樣值編 8 位碼,則應(yīng)能傳輸 32 路 64 kb/s 信息碼。為了保證收、發(fā)雙方步調(diào)一致地工作,有必要在信息碼流中插入一些完成同步功能的同步碼、對(duì)告碼以及每個(gè)話路的隨路信令等非語(yǔ)聲信息,其傳輸速率之和為 128kbs ,即占用了兩個(gè)話路。因此,PCM 基群的話路數(shù)只有 30 個(gè),故稱為PCM3032 路系統(tǒng)。為了擴(kuò)大通信容量,高次群復(fù)接設(shè)備均以這種系統(tǒng)為基本復(fù)接單元。因此,將PCM 30/32 路系統(tǒng)稱為基群(或一次群)?;旱膸Y(jié)構(gòu)如下圖。在PCM 3032 路制式中,取樣

5、周期為125us(1800OHz),每個(gè)樣值編8 位碼,稱一個(gè)碼字。為了保全碼字,避免譯碼差錯(cuò),在基群中是按碼字復(fù)接的,那么,只要在125us 的時(shí)間內(nèi)將32 路信號(hào)(32 個(gè)碼字)在時(shí)間上排開(kāi)就組成了一幀。每傳一個(gè)碼字的時(shí)間稱為一個(gè)時(shí)隙(Time slot),以TSi(i= 0,1,31)表示,并規(guī)定TS0 時(shí)隙為同步時(shí)隙,作為一幀的開(kāi)始,在這個(gè)時(shí)隙中傳送幀同步碼(同步碼型為x0011011)和對(duì)告碼(A1)。圖表 1 幀結(jié)構(gòu)示意圖在TSo 時(shí)隙中,同步碼和對(duì)告碼交替?zhèn)魉停魉屯酱a的那一幀稱為偶幀,傳送對(duì)告碼的一幀稱為奇幀。TSo 時(shí)隙的第一位碼留給國(guó)際通信使用,也可用于CRC 校驗(yàn)等

6、,不用時(shí)發(fā)“1”。TSl6 時(shí)隙為信令時(shí)隙,主要傳送30 個(gè)話路的信令碼(占用、撥號(hào)、掛機(jī)等)。每個(gè)話路的信令有四位,分別記為a、b、c、d,其中b、c、d 不用時(shí)固定發(fā)“101”。由于一幀內(nèi)的TS16 時(shí)隙中只能傳送兩個(gè)話路的信令碼,將30 個(gè)話路的信令碼各傳輸一次需要15 幀的時(shí)間,各幀的TS16 時(shí)隙中前4 位碼傳送第115 路的信令碼,后4 位碼傳送第1630 路的信令碼。為了正確分離信令碼,并傳送復(fù)幀對(duì)告信號(hào),需要插入復(fù)幀同步碼及復(fù)幀對(duì)告碼,故將16 幀組成一個(gè)復(fù)幀,一個(gè)復(fù)幀內(nèi)的各幀記為Fi(i=0,1,15)。在F0 幀的TSl6 時(shí)隙內(nèi)傳送復(fù)幀同步碼(其碼型為“0 0 0 0”)

7、和復(fù)幀對(duì)告(A2)碼,并以F0 幀作為一個(gè)復(fù)幀的開(kāi)始。其他15 幀的TSl6 時(shí)隙內(nèi)傳送30 個(gè)話路的信令碼,其中F1 幀TSl6 時(shí)隙傳送第1 路、第16 路的信令碼,F(xiàn)2 幀TSl6 時(shí)隙傳送第2 路,第17 路的信令碼,依次類推。幀結(jié)構(gòu)中的基本參數(shù):數(shù)碼率:32×8kHz×8b2048kbs一幀的比特?cái)?shù):32×8b256b幀周期:18000Hz125us每時(shí)隙的時(shí)間:125us÷323.9us每位碼的時(shí)間:3.9us÷8488ns復(fù)幀周期:125us×l62ms4.2 幀同步的原理幀同步系統(tǒng)是保證收、發(fā)雙方同步工作的重要單元。從

8、基群的幀結(jié)構(gòu)中可知,同步時(shí)隙TS0是奇、偶幀兩種形式的圖案交替,即偶幀TS0時(shí)隙的D2D8為幀同步碼“0011011”,奇幀TS0時(shí)隙的D2固定為“1”。為了提供防止偽幀定位的附加保護(hù)措施和提高比特五碼檢測(cè)能力,TS0時(shí)隙中的第一位碼作為循環(huán)冗余校驗(yàn)CRC碼。在幀失步的情況下,幀定位恢復(fù)的判定依據(jù)為: 第一次檢測(cè)到正確的偶幀定位信號(hào)(0011011); 核實(shí)下一奇幀TS0時(shí)隙中第二比特為“1”; 再下一幀第二次出現(xiàn)正確的幀定位信號(hào)(0011011)。以上三條必須都滿足,缺一不可。在幀同步的情況下,幀定位失步的判定依據(jù)為: 第一次檢測(cè)不到正確的偶幀定位信號(hào)(0011011); 核實(shí)下一奇幀TS0

9、時(shí)隙中第二比特不為“1”; 再下一幀第二次不出現(xiàn)正確的幀定位信號(hào)(0011011)。以上三條必須都滿足時(shí),系統(tǒng)立即進(jìn)入失步狀態(tài)。信號(hào)在傳輸過(guò)程中不可避免地存在誤碼,因此,要求幀同步系統(tǒng)具有一定的穩(wěn)定性,才能抵御誤碼對(duì)同步的影響。具體地說(shuō),如果同步碼由于誤碼產(chǎn)生差錯(cuò),不應(yīng)該使系統(tǒng)脫離同步態(tài),這就要求同步電路具有前方保護(hù)的功能,即應(yīng)該滿足幀失步的判據(jù)。當(dāng)確認(rèn)系統(tǒng)已經(jīng)失步時(shí),應(yīng)立即捕捉同步碼。當(dāng)系統(tǒng)工作在同步態(tài)時(shí),由于幀同步碼插在偶幀的ST0 時(shí)隙,因此,每?jī)蓭M(jìn)行一次同步檢出。當(dāng)系統(tǒng)失步后,為了盡快從信碼中捕捉到幀同步碼組,電路由按幀檢測(cè)轉(zhuǎn)為按位檢測(cè)。由于信碼中可能出現(xiàn)與幀同步碼型完全相同的碼字,

10、因此,當(dāng)電路捕捉到同步碼型時(shí),并不一定是幀同步碼,必須進(jìn)行校核,以防止偽幀同步。校核的方法是:一旦捕捉到同步碼字,電路立即由按位檢測(cè)改為按幀檢測(cè)(每幀檢測(cè)一次)。由于TS0 時(shí)隙中,偶幀總是幀同步碼,奇幀的第二比特一定為“1”,其出現(xiàn)是有規(guī)律的,而信碼中混入與同步碼相同的碼字時(shí),其出現(xiàn)將是無(wú)規(guī)律的。校核電路正是利用這一特點(diǎn)來(lái)檢查被捕捉的同步碼型的真假。具體地說(shuō),當(dāng)電路捕捉到同步碼型之后,還需檢查下一幀TS0 時(shí)隙第二位碼是否為“1”,若不是“1”,則上次捕捉到的是假同步碼,電路重新按位捕捉,直到捕捉到另一個(gè)同步碼型后再轉(zhuǎn)入按幀檢測(cè),如果奇幀TS0 時(shí)隙的第二位碼是“1”,也不能保證上次捕捉到的

11、一定是同步碼,還要進(jìn)一步檢測(cè)再下一幀的內(nèi)容。如果第一次捕捉到的是假同步碼,兩幀后又出現(xiàn)一次假同步碼的可能性很小,若捕捉到的是真同步碼,那么,兩幀后同步碼還會(huì)出現(xiàn)。因此,只有在第三幀又捕捉到了同步碼,系統(tǒng)才由捕捉態(tài)重新進(jìn)入同步態(tài)。這種多次進(jìn)行校核以確認(rèn)同步的過(guò)程稱為后方保護(hù)。CCITT 建議基群的前、后方保護(hù)次數(shù)均為3次。5 幀同步電路模塊設(shè)計(jì)5.1模塊外部管腳圖表 2 幀同步模塊示意圖各管腳的功能說(shuō)明如下:pcm:輸入的大量編碼數(shù)字信號(hào)。clk:與編碼信號(hào)同步的時(shí)鐘信號(hào)。rst:復(fù)位信號(hào),異步上升沿復(fù)位,rst出現(xiàn)上升沿后,系統(tǒng)恢復(fù)到最開(kāi)始的失步狀態(tài)。lfa:當(dāng)幀失步時(shí),lfa輸出1,當(dāng)幀同步

12、時(shí),lfa輸出0。5.2 設(shè)計(jì)思路幀同步檢測(cè)電路的設(shè)計(jì)用狀態(tài)機(jī)來(lái)實(shí)現(xiàn),設(shè)定各狀態(tài)標(biāo)示符及其含義如下。表格 1 狀態(tài)標(biāo)示符S0initial stateS1syn_confirm1S2syn_confirm2S3syn_holdS4loss_confirm1S5loss_confirm2另外我們?cè)俣x兩個(gè)變量even和odd,其中even置“1”,表示偶幀檢測(cè)到子幀同步碼;odd置“1”,表示奇幀檢測(cè)到同步標(biāo)志位。在此基礎(chǔ)上,做系統(tǒng)狀態(tài)轉(zhuǎn)移圖如下:圖表 3 狀態(tài)轉(zhuǎn)移圖系統(tǒng)開(kāi)機(jī)后,首先進(jìn)入子幀同步搜索狀態(tài)S0,在接收時(shí)鐘clk的作用下,將接收碼流存入移位寄存器shift_reg8,當(dāng)shift_r

13、eg8=0011011時(shí),even置“1”,表示檢測(cè)到奇幀同步位,系統(tǒng)進(jìn)入后方保護(hù)狀態(tài)S1;NUM從0開(kāi)始計(jì)數(shù),當(dāng)NUM=248時(shí),如果接收的碼位為“1”,則將odd置“1”,表示接收到的第2幀的TSO時(shí)隙內(nèi)無(wú)幀同步碼,且第2比特為“1”,系統(tǒng)進(jìn)入S2,否則返回S0;當(dāng)NUM=511時(shí),若even=1,則表示接著來(lái)的幀內(nèi)的TS0時(shí)隙出現(xiàn)正確的幀同步碼,系統(tǒng)進(jìn)入子幀同步保持狀態(tài)S3并置lfa=0,否則返回S0。進(jìn)入S3后,NUM從0開(kāi)始計(jì)數(shù),當(dāng)NUM=511時(shí),若果接收到偶幀同步碼,則仍 處于S3;否則進(jìn)入前方保護(hù)狀態(tài)S4;進(jìn)入S4,NUM從0開(kāi)始計(jì)數(shù),當(dāng)NUM=511時(shí),若接收到正確的偶幀同步

14、碼則返回S3,否則進(jìn)入S5;進(jìn)入S5,NUM從0開(kāi)始計(jì)數(shù),當(dāng)NUM=511時(shí),若接收到正確的偶幀同步碼則返回S3,否則進(jìn)入S6并復(fù)位lfa,系統(tǒng)失去同步。之所以S4狀態(tài)仍檢測(cè)偶幀同步碼而非奇幀同步位,也是出于減小誤判概率的緣故。6 幀同步測(cè)試模塊設(shè)計(jì) #0 rst=1; #2 rst=0; /give reset signal #7 rst=1; #2 rst=0;如上面幾行代碼所示,測(cè)試文件首先給出穩(wěn)定的clk時(shí)鐘信號(hào),然后給出復(fù)位信號(hào)rst,利用其上升沿對(duì)所有的信號(hào)復(fù)位。之后給出大量的pcm碼輸入信號(hào)進(jìn)行測(cè)試??梢栽O(shè)定一個(gè)計(jì)數(shù)器計(jì)算正確的次數(shù)。每一幀的信號(hào)輸入后,都檢測(cè)一次電路的輸出,每次

15、當(dāng)電路的輸出與所期望的值完全一致時(shí),計(jì)數(shù)器加1。如果所有幀的輸入得到的結(jié)果都是正確的,即可說(shuō)明電路的設(shè)計(jì)是正確的。下面的代碼的功能是以循環(huán)嵌套的方式輸入pcm值。 for(frame_num=1;frame_num<=20;frame_num=frame_num+1) /幀循環(huán),一共二十幀 for(bit_num=0;bit_num<=255;bit_num=bit_num+1)/幀內(nèi)循環(huán),一共256bit #2 pcm=row_pcm5375-bit_num-256*frame_num;/輸入值為了盡可能地讓測(cè)試文件完整,并能夠涵蓋幾乎所有的狀態(tài)跳轉(zhuǎn)的情況,本測(cè)試程序使用了20幀

16、的輸入信號(hào)對(duì)設(shè)計(jì)的電路進(jìn)行測(cè)試。這20幀信號(hào)的幀頭部和期望的測(cè)試結(jié)果如下:表格 2輸入幀數(shù)據(jù)幀數(shù)幀頭部?jī)?nèi)容輸出信號(hào)(lfa)1正確的偶幀定位信號(hào)12奇幀第二位為113正確的偶幀定位信號(hào)04奇幀第二位為105正確的偶幀定位信號(hào)06奇幀第二位為107錯(cuò)誤的偶幀定位信號(hào)08奇幀第二位為109正確的偶幀定位信號(hào)010奇幀第二位為1011錯(cuò)誤的偶幀定位信號(hào)012奇幀第二位為0013正確的偶幀定位信號(hào)014奇幀第二位為0015錯(cuò)誤的偶幀定位信號(hào)016奇幀第二位為0017錯(cuò)誤的偶幀定位信號(hào)018錯(cuò)誤的偶幀定位信號(hào)019奇幀第二位為1120錯(cuò)誤的偶幀定位信號(hào)1其中第1幀信號(hào)是從任意的時(shí)間開(kāi)始輸入的,仔細(xì)分析以

17、上20幀信號(hào)可知,以上20幀信號(hào)包括了所有6種狀態(tài)互相跳轉(zhuǎn)的情況。用上表的20幀數(shù)據(jù)進(jìn)行測(cè)試結(jié)果如果正確,則可以保證電路的設(shè)計(jì)是完全正確的。且由上表可以看出,整個(gè)測(cè)試過(guò)程中l(wèi)fa先是1、后變成0、之后再變成1,也即整個(gè)系統(tǒng)的過(guò)程是失步狀態(tài)同步狀態(tài)失步狀態(tài)。由于數(shù)據(jù)量非常大,故在程序中設(shè)定一個(gè)很長(zhǎng)的一維數(shù)組row_pcm,在初始化的時(shí)候?qū)?0幀信號(hào)存入存儲(chǔ)器。再根據(jù)時(shí)鐘信號(hào)按位輸出波形。除了同步碼之外pcm信號(hào)中還存在大量額外數(shù)據(jù),在實(shí)際應(yīng)用中這些數(shù)據(jù)是實(shí)際傳輸?shù)挠杏脭?shù)據(jù)。本系統(tǒng)是具有一定的系統(tǒng)漏洞的。例如從幀失步到幀同步狀態(tài)的判定過(guò)程中,就忽略了小概率事件。因?yàn)橐獋鬏數(shù)挠杏脭?shù)據(jù)可能恰好也符合判

18、定幀同步的要求,這是系統(tǒng)就判定其為同步,而是事實(shí)上此時(shí)系統(tǒng)并未同步。我們可以計(jì)算誤判的概率。我們假設(shè)要傳輸?shù)臄?shù)據(jù)中出現(xiàn)0和出現(xiàn)1的概率均為, 則由幀失步到幀同步狀態(tài)轉(zhuǎn)換時(shí)誤判的概率=可見(jiàn)這個(gè)誤判的概率是很小的,如果系統(tǒng)要求不高,這種概率可以忽略。假如我們判斷幀同步是在此基礎(chǔ)上再增加一個(gè)奇幀和一個(gè)偶幀,那么錯(cuò)判的概率變?yōu)?由此可見(jiàn)增加判斷的幀數(shù)對(duì)降低誤判率的作用是多么的顯著。但是這種誤判率的降低以延時(shí)的增加為代價(jià),在實(shí)際應(yīng)用中應(yīng)綜合考慮系統(tǒng)對(duì)延時(shí)的要求、對(duì)誤判率的要求以及數(shù)據(jù)流中0和1出現(xiàn)的概率這3中情況來(lái)選擇最佳策略。7 仿真、測(cè)試、綜合與分析圖表 4 控制臺(tái)輸出上圖最左邊的數(shù)據(jù)代表是第幾幀信

19、號(hào),lfa是電路的輸出值,而lfa_e是期望的正確輸出值,最右邊給出對(duì)每一幀結(jié)果的判斷。判斷完所有的輸出后給出最終的判斷結(jié)果??梢钥闯觯撾娐返脑O(shè)計(jì)完全正確。由于該測(cè)試文件的數(shù)據(jù)量比較大,對(duì)波形的分析不太方便,所以主要根據(jù)控制臺(tái)的輸出信息進(jìn)行正誤的判斷。這里僅給出對(duì)部分波形的分析。圖表 5 整體波形圖(注意第二個(gè)波形為輸出)上面的波形是20幀信號(hào)的全部工作過(guò)程??梢钥吹?,在激勵(lì)pcm信號(hào)的作用下,lfa(從上面看第二行)由1變?yōu)?,再由0變?yōu)?,系統(tǒng)由失步狀態(tài)變成同步狀態(tài),之后又變成失步狀態(tài)。我把移位寄存器的波形刪掉了,很遺憾。圖表 6 由失步到同步上圖體現(xiàn)了從失步狀態(tài)到同步狀態(tài)的跳變,lfa

20、由1變?yōu)???梢苑治龀鲈撨^(guò)程的時(shí)序是完全正確的。圖表 7 由同步到失步上圖體現(xiàn)了從同步狀態(tài)到失步狀態(tài)的跳變??梢苑治龀鲈撨^(guò)程的時(shí)序是完全正確的。圖表 8 綜合所得到的門級(jí)電路1圖表 9 綜合所得到的門級(jí)電路2 圖表8和圖表9是綜合后得到的門級(jí)電路,可以看到門級(jí)電路由與非門,非門,寄存器和連線等構(gòu)成。8 實(shí)驗(yàn)總結(jié)與心得為期4周的ASIC實(shí)驗(yàn),對(duì)我而言那是一段難忘的經(jīng)歷。還記得,課上請(qǐng)教韓老師的諄諄教導(dǎo);還記得,與同學(xué)爭(zhēng)論一個(gè)小問(wèn)題時(shí)的唾沫紛飛;還記得,午夜在自習(xí)室敲代碼的數(shù)個(gè)日夜;還記得,一朝功成的喜上眉梢。有喜有憂,有汗有淚,一次ASIC實(shí)驗(yàn),就像一顆碎石丟進(jìn)靜謐的湖水,為這平凡的大三下學(xué)期激

21、起層層漣漪。通過(guò)這次實(shí)驗(yàn),我學(xué)習(xí)并鞏固了verilog編程這一部分課堂內(nèi)容,這不僅有助于完成本次試驗(yàn),也將使我在期末考試中獲益,何樂(lè)而不為呢?一方面,我陳列一下我這幾周我對(duì)verilog 硬件描述語(yǔ)言的點(diǎn)點(diǎn)總結(jié)。對(duì)于組合邏輯,敏感變量必須包含邏輯門所有的輸入變量。always模塊敏感表不完備是綜合前后仿真結(jié)果不一致的原因之一。避免鎖存器的產(chǎn)生。每一個(gè)if都應(yīng)對(duì)應(yīng)一個(gè)else;每一個(gè)case都應(yīng)對(duì)應(yīng)一個(gè)default; Ifelse語(yǔ)句與case語(yǔ)句。對(duì)于組合邏輯,采用ifelse或case語(yǔ)句,其綜合的結(jié)果有所不同。如果電路不需要有優(yōu)先級(jí)的設(shè)計(jì),則應(yīng)優(yōu)先采用case語(yǔ)句;因?yàn)樵谝话闱闆r下,ca

22、se語(yǔ)句實(shí)現(xiàn)的設(shè)計(jì)路徑延遲要小于ifelse語(yǔ)句實(shí)現(xiàn)的電路。避免在設(shè)計(jì)中既用時(shí)鐘的上升沿又用下降沿。盡可能將上升沿和下降沿觸發(fā)的觸發(fā)器分別放到不同的模塊中實(shí)現(xiàn)保持良好地代碼風(fēng)格。一個(gè)好的設(shè)計(jì)代碼不僅要有正確的邏輯表達(dá),還要有良好的代碼風(fēng)格。比如說(shuō)在代碼中有必要的注釋、在程序的頭部寫上作者、時(shí)間、版本等信息,這樣才能增強(qiáng)代碼的可讀性。而寫代碼的習(xí)慣,需要在平時(shí)的練習(xí)中嚴(yán)格要求自己。另一方面,在整個(gè)實(shí)驗(yàn)過(guò)程中柳暗花明時(shí)喜滋滋的感覺(jué)是那樣的讓人難以忘懷。在第一此實(shí)驗(yàn)課前,我從網(wǎng)上查了與幀同步相關(guān)的不少資料,盡管我是懷著找現(xiàn)成的verilog代碼的美好愿望去的,但是現(xiàn)實(shí)是殘酷的,我的希望很快破滅了。我

23、只好從老師之前給的實(shí)驗(yàn)相關(guān)資料中學(xué)習(xí)幀同步的基本知識(shí),盡量從中挖掘與可以寫成代碼的東西。一個(gè)下午加一個(gè)晚上,在加上之前學(xué)過(guò)的狀態(tài)轉(zhuǎn)移圖的相關(guān)知識(shí),我竟然謝了200行的代碼出來(lái)。盡管后來(lái)發(fā)現(xiàn)那個(gè)代碼不但很冗長(zhǎng),而且方法有點(diǎn)蠢,最重要的是仿真輸出的結(jié)果嚴(yán)重不合要求。雖然當(dāng)時(shí)程序爛成這樣,但是很有成就感,現(xiàn)在想想,那時(shí)的路是需要的。第二次課上我從別人那兒閱讀了前人的很類似的代碼,那套代碼對(duì)我啟發(fā)很大,它的代碼量如此至少也讓我很吃驚。晚上回去后我在自習(xí)室加班加點(diǎn)忙活了幾個(gè)小時(shí),終于得到了相當(dāng)滿意的結(jié)果。雖然不能保證在cadence下編譯綜合通過(guò),但至少在modelsim下是完全沒(méi)問(wèn)題的。然后我做了很多

24、精簡(jiǎn)代碼的工作,最終把代碼量壓縮到令我自己都覺(jué)得吃驚的少。cadence不能編譯二維數(shù)組,而modelsim則沒(méi)有這個(gè)限制,這個(gè)差異是我最先懷疑并驗(yàn)證的。這個(gè)由于仿真平臺(tái)性能的差異讓很多同學(xué)很頭疼。cadence默認(rèn)的時(shí)鐘是1ns,在本實(shí)驗(yàn)中,時(shí)鐘周期不宜過(guò)大,因?yàn)檫@會(huì)讓你看波形的時(shí)候很頭疼,因?yàn)槭髽?biāo)移動(dòng)了好久波形仍不變化,甚至?xí)屇銘岩刹ㄐ问清e(cuò)誤的。代碼量少不見(jiàn)得代碼的復(fù)雜度低。一味的壓縮代碼可能是以代碼性能的犧牲為代價(jià)。cadence平臺(tái)不允許在聲明變量時(shí)賦值,而這在modelsim那兒是沒(méi)問(wèn)題的。在cadence平臺(tái)必須在initial塊里初始化。本次試驗(yàn)的不足之處是有一些的,其中一個(gè)是

25、沒(méi)有徹底綜合成功,因?yàn)榫C合過(guò)程產(chǎn)生的文件framre_syn.sdf文件是空白的,也就是說(shuō)根本沒(méi)有綜合成功。由于學(xué)期末時(shí)間緊張而且實(shí)驗(yàn)室條件原因,沒(méi)能繼續(xù)做下去?;蛟S離終極的成功只隔著一層窗戶紙,也可能距離還很遙遠(yuǎn),我大概沒(méi)機(jī)會(huì)知道了。希望后繼有人,就像2013年的我們,把它做得更完善。最后感謝韓可老師一路上不厭其煩地指導(dǎo),感謝兩位學(xué)長(zhǎng)兼助教的無(wú)私幫助。9 Verilog代碼 9.1 主模塊代碼/*/ File: frame_syn.v / Author: Xu Jinliang/ Class: 2010211204/ Number: 10210929/ Create Date: 06/21/

26、2013 / Version: Cadence 16.5 / Port Description: / frame/ -/ clk->| |/ | |/ pcm->| |->lfa/ | |/ rst->| |/ -/*/module frame_syn(lfa,pcm,clk,rst); input pcm,clk,rst; /define 3 inputs output lfa; /define output reg lfa; reg8:0 NUM; /counter reg7:0 shift_reg8; /8 bit shift register, store re

27、cent PCM codes reg6:0 even_head7; reg5:0 state; /define state, Distinguish between different state parameter S0=6'b000001,/initial state S1=6'b000010,/syn_confirm1 S2=6'b000100,/syn_confirm2 S3=6'b001000,/syn_hold S4=6'b010000,/loss_confirm1 S5=6'b100000;/loss_confirm2 always

28、 (posedge clk or posedge rst) begin if(rst=1) /reset all signals begin shift_reg8<=0; state<=S0; NUM<=0; lfa<=1; end else if(clk=1) begin shift_reg8<=shift_reg86:0,pcm; even_head7<=shift_reg85:0,pcm; NUM<=NUM+1; case(state) S0:if(even_head7=7'b0011011) begin state<=S1; NU

29、M<=0; /first time find the framing signal(even), state=1 end S1:if(NUM=248) if(pcm=1) /second time find the framing signal(odd), state=2 begin state<=S2; NUM<=0; end else state<=S0; /else: out of frame S2:if(NUM=262) if(even_head7=7'b0011011) begin lfa<=0; state<=S3; NUM<=0;

30、 /third time find the framing signal(even), state=3 end else state<=S0; /else: out of frame S3:if(NUM=511) if(even_head7=7'b0011011) begin state<=S3; NUM<=0; /check every two frames end else begin state<=S4; NUM<=0; /can not find the framing signal, state=4 end S4:if(NUM=511) if(e

31、ven_head7=7'b0011011) begin state<=S3; NUM<=0; /find the next framing signal(even) end else state<=S5; /can not find, state=5 S5:if(NUM=511) if(even_head7=7'b0011011) begin state<=S3; /find the next framing signal(even) NUM<=0; end else begin state<=S0; /can not find, out o

32、f frame, state=0 lfa<=1; end endcase end end endmodule9.2 測(cè)試模塊代碼/*/ File: frame_syn_test.v / Author: Xu Jinliang/ Class: 2010211204/ Number: 10210929/ Create Date: 06/21/2013 / Version: Cadence 16.5 / Description: Use 20 frames signal/ to test whether your/ design is correct!/*/module frame_syn_t

33、est; reg pcm=1'b0,clk=1'b1,rst=1'b0; /test signal wire lfa; /test signal reg1:20 lfa_e=20'b11000000000000000011; /correct receipt signal reg5:0 right_num=0; /store correct times reg yes_no=1'b0; reg7:0 head=8'b10011011; /correct even framing signal reg7:0 odd1=8'b11011111; /correct odd framing signal reg7:0 odd2=8'b01010101; /random signal (8 bits) reg247:0 data=318'b01010101; /random

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論