通信編解碼器設計_第1頁
通信編解碼器設計_第2頁
通信編解碼器設計_第3頁
通信編解碼器設計_第4頁
通信編解碼器設計_第5頁
已閱讀5頁,還剩14頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第一章通信解碼器概述編解碼器指的是一個能夠對一個信號或者一個數據流進行變換的設備或者程序。這里指的變換既包括將信號或者數據流進行編碼(通常是為了傳輸、存儲或者加密)或者提取得到一個編碼流的操作,也包括為了觀察或者處理從這個編碼流中恢復適合觀察或操作的形式的操作。編解碼器經常用在視頻會議和流媒體等應用中,通常主要還是用在廣電行業,作前端應用。1.1幾種碼的介紹1.1.1NRZ碼數字信號可以直接采用基帶傳輸,所謂基帶就是指基本頻帶。基帶傳輸就是在線路中直接傳送數字信號的電脈沖,這是一種最簡單的傳輸方式,近距離通信的局域網都采用基帶傳輸。基帶傳輸時,需要解決數字數據的數字信號表示以及收發兩端之間的信號同步問題。對于傳輸數字信號來說,最簡單最常用的方法是用不同的電壓電平來表示兩個二進制數字,也即數字信號由矩形脈沖組成。按數字編碼方式,可以劃分為單極性碼和雙極性碼,單極性碼使用正(或負)的電壓表示數據;雙極性碼是二進制碼,1為反轉,0為保持零電平。根據信號是否歸零,還可以劃分為歸零碼和非歸零碼,歸零碼碼元中間的信號回歸到0電平,而非歸零碼遇1電平翻轉,零時不變。1.1.2差分碼通信中的差分編碼,差分編碼輸入序列{an},差分編碼輸出序列{bn},二者都為{0、1}序列,則差分編碼輸出結果為bn=an異或bn-1,并不是bn=an異或an-1(即所謂的:對數字數據流,除第一個元素外,將其中各元素都表示為各該元素與其前一元素的差的編碼。這么定義是不準確的。)。前者多用在2DPSK調制,后者多用在MSK調制預編碼。同時后者是碼反變換器的數學表達式,即用來解差分編碼用的。1.1.3曼徹斯特碼(又稱雙相碼)曼徹斯特編碼(ManchesterEncoding),也叫做相位編碼(PE),是一個同步時鐘編碼技術,被物理層使用來編碼一個同步位流的時鐘和數據。曼徹斯特編碼被用在以太網媒介系統中。曼徹斯特編碼提供一個簡單的方式給編碼簡單的二進制序列而沒有長的周期沒有轉換級別,因而防止時鐘同步的丟失,或來自低頻率位移在貧乏補償的模擬鏈接位錯誤。在這個技術下,實際上的二進制數據被傳輸通過這個電纜,不是作為一個序列的邏輯1或0來發送的(技術上叫做反向不歸零制(NRZ))。相反地,這些位被轉換為一個稍微不同的格式,它通過使用直接的二進制編碼有很多的優點。曼徹斯特編碼,常用于局域網傳輸。在曼徹斯特編碼中,每一位的中間有一跳變,位中間的跳變既作時鐘信號,又作數據信號;從低到高跳變表示"0",從高到低跳變表示"1"。還有一種是差分曼徹斯特編碼,每位中間的跳變僅提供時鐘定時,而用每位開始時有無跳變表示"0"或"1",有跳變為"0",無跳變為"1"。本文主要介紹用VerilogHDL語言來描述編寫一個將NRZ碼轉換為曼徹斯特碼和差分碼的軟件模塊,并能夠在FPGA芯片中調試和仿真。四總碼型的編碼方案如下圖1-1:圖1-1四總碼型的編碼方案1.2總體方案概述曼徹斯特解碼器是一種基于硬件描述的設計方案;該方案先利用VerilogHDL語言描述少量邏輯單元,構成邏輯處理模塊,繼而搭建出解碼器。曼徹斯特碼是將NRZ普通二進制數據與其位率時鐘信號相異或而得,解決了傳輸數據沒有時鐘的問題。當傳送信號為“1”,曼徹斯特編碼由高電平跳變為低電平;若傳送的信息為“0”;曼徹斯特編碼由低電平轉變為高電平;如果有連續的“1”或“0”信息出現時,則曼徹斯特編碼保持“1”或“0”的跳變,即編碼后,信息“0”與時鐘一致,信息“1”與時鐘反相(相位相差180度)。曼徹斯特編碼是一種相位調制,有時鐘的180度相位代表NRZ信號的邏輯“1”電平。這次設計主要是要實現將NRZ碼轉成曼徹斯特碼的功能,總體的設計原理框圖如圖1-2所示。圖1-2原理框圖1.3用狀態機設計差分碼編碼器1.3.1狀態機簡介狀態機是一個有向圖形,由一組節點和一組相應的轉移函數組成。狀態機通過響應一系列事件而“運行”。每個事件都在屬于“當前”節點的轉移函數的控制范圍內,其中函數的范圍是節點的一個子集。函數返回“下一個”(也許是同一個)節點。這些節點中至少有一個必須是終態。當到達終態,狀態機停止。狀態機主要分為2大類:第一類,若輸出只和狀態有關而與輸入無關,則稱為Moore狀態機:第二類,輸出不僅和狀態有關而且和輸入有關系,則稱為Mealy狀態機。要特別注意的是,因為Mealy狀態機和輸入有關,輸出會受到輸入的干擾,所以可能會產生毛刺(Gitch)現象,使用時應當注意。事實上現在市面上有很多EDA工具可以很方便的將采用狀態圖的描述轉換成可以綜合的VHDL程序代碼。1.3.2對編碼器的設計設初始狀態為S0編碼為00,根據功能帶入輸入0時得到下一狀態S1和相應輸出0。依次代入類推,可得到如圖1-3所示的狀態圖。圖1-3狀態圖其狀態機設計程序如下:always@(negedgeclkornegedgereset)if(reset==0)state<=S0;elsestate<=next_state;always@(stateorin)beginout=0;case(state)S0:beginif(in==0)next_state=S1;elsenext_state=S3;endS1:beginnext_state=S2;endS2:beginout=1;if(in==0)next_state=S1;elsenext_state=S3;endS3:beginout=1;next_state=S0;endendcaseend1.4曼徹斯特碼模塊程序曼徹斯特編碼模塊如下:moduleManchester_bian(in_dat,clk_tong,clk_fan,out_dat_tong,out_dat_fan,clr);inputin_dat,clk_tong,clk_fan,clr;outputout_dat_tong,out_dat_fan;wireout_dat_tong,out_dat_fan;wireout_dat_tong_1,out_dat_fan_1;wireout_dat_tong_0,out_dat_fan_0;assignout_dat_tong_1=(state1[1:0]==2'b01)?(clk_tong&&con):1'b0;assignout_dat_tong_0=(state1[1:0]==2'b10)?(clk_fan&&con):1'b0;assignout_dat_tong=(out_dat_tong_1)||(out_dat_tong_0);assignout_dat_fan_1=(state2[1:0]==2'b01)?(clk_tong&&con):1'b0;assignout_dat_fan_0=(state2[1:0]==2'b10)?(clk_fan&&con):1'b0;assignout_dat_fan=(out_dat_fan_1)||(out_dat_fan_0);reg[1:0]state1;reg[1:0]state2;reg[1:0]dat_reg;regcon;always@(posedgeclk_tong)begincon=1'b0;if(~clr)beginstate1[1:0]=2'b01;state2[1:0]=2'b01;con=1'b0;endelsebegindat_reg[1:0]=dat_reg[1:0]>>1;dat_reg[1]=in_dat;if(dat_reg[1])beginstate1[1:0]=2'b01;con=1'b1;if(state2[1:0]==2'b01)beginstate2[1:0]=2'b10;endelsebeginstate2[1:0]=2'b01;endendelsebeginstate1[1:0]=2'b10;con=1'b1;if(state2[1:0]==2'b01)beginstate2[1:0]=2'b01;endelseif(state2[1:0]==2'b10)beginstate2[1:0]=2'b10;endendendendendmodule第二章轉碼器的設計與仿真2.1功能描述1、輸入NRZ碼;2、設置CLK;3、輸出差分碼,曼徹斯特碼。2.2差分碼源程序(基于VerilogHDL語言)moduleNRZ_To_Differential(Out,in,clk,reset);outputOut;inputin;inputclk,reset;regOut;reg[1:0]state,next_state;parameterS0=0,S1=1,S2=2,S3=3;always@(negedgeclkornegedgereset)if(reset==0)state<=S_0;elsestate<=next_state;always@(state)beginOut=0;case(state)S_0:beginif(==0)next_state=S_1;elsenext_state=S_3;endS_1:beginnext_state=S_2;endS_2:beginOut=1;if(==0)next_state=S_1;elsenext_state=S_3;endS_3:beginOut=1;next_state=S_0;endendcaseendendmodulemodulestimulus();regCLK,RESET;regBIN;wireBOUT;NRZ_To_DifferentialT1(.Out(BOUT),.(BIN),.clk(CLK),.reset(RESET));initial$monitor($time,":IN=%bOUT=%b",BIN,BOUT,);initialbeginRESET<=0;BIN<=0;#5if(BOUT!=0)$display($time,":ResetState_0Failed!");RESET<=1;#10if(BOUT!=0)$display($time,":State_1Failed!");#5BIN<=1;#5if(BOUT!=1)$display($time,":State_2Failed!");#10if(BOUT!=1)$display($time,":State_3Failed!");#45BIN<=0;#40BIN<=1;#20BIN<=0;#60$stop;endendmodule2.3功能模塊的仿真功能仿真采用QuartusII7.2實現程序功能:1.打開Quartus后,新建VerilogHDLfile文件,將上述程序復制到生成的對話框保存;2.保存運行后,新建一個VectorWaveformfile文件保存在同一文件夾下;3.將,Out,CLK,RESET導入窗口;4.修改EndTime,CLK和RESET的Countevery;5.將窗口保存同一文件夾下;完成以上步驟就可得到2.1圖所示的仿真碼。EndTime為500us,Clock為100us時,解碼器輸出的Manchester、如圖2-1所示。圖2-1時序仿真2.4曼徹斯特碼源程序(基于VerilogHDL)Manchester碼(雙相碼)編碼器。//總模塊:moduleManchester_shuchu(clk,clr,in_dat,out_dat_tong,out_dat_fan);inputclk,clr,in_dat;outputout_dat_tong,out_dat_fan;wireclk_fan;fpju0(.clk(clk),.clk_fan(clk_fan),);Manchester_bianu1(.in_dat(in_dat),.clk_tong(clk),.clk_fan(clk_fan),.out_dat_tong(out_dat_tong),.out_dat_fan(out_dat_fan),.clr(clr));endmodule//fpj模塊:modulefpj(clk,clk_fan);outputclk_fan;inputclk;wireclk2_fan;assignclk_fan=~clk;endmodule//Manchester_bian模塊:moduleManchester_bian(in_dat,clk_tong,clk_fan,out_dat_tong,out_dat_fan,clr);inputin_dat,clk_tong,clk_fan,clr;outputout_dat_tong,out_dat_fan;wireout_dat_tong,out_dat_fan;wireout_dat_tong_1,out_dat_fan_1;wireout_dat_tong_0,out_dat_fan_0;assignout_dat_tong_1=(state1[1:0]==2'b01)?(clk_tong&&con):1'b0;assignout_dat_tong_0=(state1[1:0]==2'b10)?(clk_fan&&con):1'b0;assignout_dat_tong=(out_dat_tong_1)||(out_dat_tong_0);assignout_dat_fan_1=(state2[1:0]==2'b01)?(clk_tong&&con):1'b0;assignout_dat_fan_0=(state2[1:0]==2'b10)?(clk_fan&&con):1'b0;assignout_dat_fan=(out_dat_fan_1)||(out_dat_fan_0);reg[1:0]state1;reg[1:0]state2;reg[1:0]dat_reg;regcon;always@(posedgeclk_tong)begincon=1'b0;if(~clr)beginstate1[1:0]=2'b01;state2[1:0]=2'b01;con=1'b0;endelsebegindat_reg[1:0]=dat_reg[1:0]>>1;dat_reg[1]=in_dat;if(dat_reg[1])beginstate1[1:0]=2'b01;con=1'b1;if(state2[1:0]==2'b01)beginstate2[1:0]=2'b10;endelsebeginstate2[1:0]=2'b01;endendelsebeginstate1[1:0]=2'b10;con=1'b1;if(state2[1:0]==2'b01)beginstate2[1:0]=2'b01;endelseif(state2[1:0]==2'b10)beginstate2[1:0]=2'b10;endendendendendmodule2.5功能模塊仿真功能仿真采用QuartusII7.2實現程序功能:1.打開Quartus后,新建一個VerilogHDLfile文件,講上述程序復制到生成的對話框中,保存;2.保存運行后,新建一個VectorWaveformfile文件保存在同一文件夾下;3.將NRZ,Manchester,CLK,RESET導入窗口;4.修改EndTime,CLK和RESET的Countevery;5.將窗口保存同一文件夾下;完成以上步驟就可得到2-2圖所示的仿真碼。EndTime為00us,Clock為200us時,解碼器輸出的Manchester、如圖2-2所示。圖2-2Manchester時序仿真轉碼器的綜合及硬件驗證3.1轉碼器碼的綜合3.1.1曼徹斯特碼轉碼器在QuartusII軟件的圖形編譯模式下,NRZ碼轉曼徹斯特碼轉碼器如圖3.1所示,綜合后的曼徹斯特碼轉碼器內核有3個輸入控制端、2個輸出端。3.1.2差分碼轉碼器重復上述步驟,可得圖3-2的差分碼轉碼器內核,其內核由3個輸入控制端、1個輸出端。圖3-1RZ碼轉曼徹斯特碼轉碼器圖3-2差分碼轉碼器內核3.2圖形文件在QuartusII軟件的圖形編譯模式下,通過與軟件內部的輸入、輸出模塊聯接,并定義各輸入、輸出端口的名字即得到了轉碼器的圖形文件仿真如圖3-3所示。圖3-3轉碼器的圖形文件第四章轉碼器的設計總結4.1設計調試要注意狀態機的設計過程是否正確,其中的語言描述語法是否正確,符號的問題,在總體編譯的過程中不通過,查出頂層文件名出線錯誤,經修改后編譯通過。4.2設計心得電子設計的必由之路是數字化,這已成為共識。在數字化的道路上,我國的電子設計技術經歷了并將繼續經歷許多重大的變革。從應用小規模集成電路(SSI)芯片構成電路系統,到廣泛地應用微控制器或單片機(MCU),在電子系統設計上發生了具有里程碑意義的飛躍。這一飛躍不但克服了純SSI數字系統許多不可逾越的困難,同時也為電子設計技術的應用開拓了更廣闊的前景。它使得電子系統的智能化水平在廣度和深度上產生了質的飛躍。MCU的廣泛應用并沒有拋棄SSI的應用,而是為它們在電子系統中找到了更合理的地位。隨著社會經濟發展的延伸,各類新型電子產品的開發為我們提出了許多全新的課題和更高的要求。不言而喻,我國的電子設計技術發展到今天,又將面臨另一次更大意義的突破,即CPLD,FPGA(復雜可編程邏輯器件?現場可編程門陣列)在EDA(電子設計自動化)基礎上的廣泛應用。從某種意義上說,新的電子系統運轉的物理機制又將回到原來的純數字電路結構,但卻是一種更高層次的循環,它在更高層次上容納了過去數字技術的優秀部分,對MCU系統將是一種揚棄,而在電子設計的技術操作和系統構成的整體上卻發生了質的飛躍。了解到EDA技術很有發展前景,也運用平時上課學到的知識,實驗課中時間操作軟件和實體連線中積累的經驗,再加上朋友的幫忙和自己的努力,課設如期完成。知識是書本上的文字,只有自己靈活地掌握,熟練地運用才能成為發揮光芒的智慧,令人滿意的成果。第五章參考文獻[1]潘松,黃繼業.EDA技術實用教程.北京:科學出版社,2021[2]盧杰,賴毅.VHDL與數字電路設計.北京:科學出版社,2021[3]宋萬杰,羅豐,吳順君.CPLD技術及其應用.西安:西安電子科技大學出版社,2021[4]王金明,楊吉斌.數字系統設計與VerilogHDL.北京:電子工業出版社,2021[5]梁紅兵.安防芯片市場被廣泛看好[J].金卡工程.2021(02)[6]林杰.貝能科技專題之(四)NT系列Keeloq解碼芯片的應用[J].電子世界.2021

論大學生寫作能力寫作能力是對自己所積累的信息進行選擇、提取、加工、改造并將之形成為書面文字的能力。積累是寫作的基礎,積累越厚實,寫作就越有基礎,文章就能根深葉茂開奇葩。沒有積累,胸無點墨,怎么也不會寫出作文來的。寫作能力是每個大學生必須具備的能力。從目前高校整體情況上看,大學生的寫作能力較為欠缺。一、大學生應用文寫作能力的定義那么,大學生的寫作能力究竟是指什么呢?葉圣陶先生曾經說過,“大學畢業生不一定能寫小說詩歌,但是一定要寫工作和生活中實用的文章,而且非寫得既通順又扎實不可。”對于大學生的寫作能力應包含什么,可能有多種理解,但從葉圣陶先生的談話中,我認為:大學生寫作能力應包括應用寫作能力和文學寫作能力,而前者是必須的,后者是“不一定”要具備,能具備則更好。眾所周知,對于大學生來說,是要寫畢業論文的,我認為寫作論文的能力可以包含在應用寫作能力之中。大學生寫作能力的體現,也往往是在撰寫畢業論文中集中體現出來的。本科畢業論文無論是對于學生個人還是對于院系和學校來說,都是十分重要的。如何提高本科畢業論文的質量和水平,就成為教育行政部門和高校都很重視的一個重要課題。如何提高大學生的寫作能力的問題必須得到社會的廣泛關注,并且提出對策去實施解決。二、造成大學生應用文寫作困境的原因:(一)大學寫作課開設結構不合理。就目前中國多數高校的學科設置來看,除了中文專業會系統開設寫作的系列課程外,其他專業的學生都只開設了普及性的《大學語文》課。學生寫作能力的提高是一項艱巨復雜的任務,而我們的課程設置僅把這一任務交給了大學語文教師,可大學語文教師既要在有限課時時間內普及相關經典名著知識,又要適度提高學生的鑒賞能力,且要教會學生寫作規律并提高寫作能力,任務之重實難完成。(二)對實用寫作的普遍性不重視。“大學語文”教育已經被嚴重地“邊緣化”。目前對中國語文的態度淡漠,而是呈現出全民學英語的大好勢頭。中小學如此,大學更是如此。對我們的母語中國語文,在大學反而被漠視,沒有相關的課程的設置,沒有系統的學習實踐訓練。這其實是國人的一種偏見。應用寫作有它自身的規律和方法。一個人學問很大,會寫小說、詩歌、戲劇等,但如果不曉得應用文寫作的特點和方法,他就寫不好應用文。(三)部分大學生學習態度不端正。很多非中文專業的大學生對寫作的學習和訓練都只是集中在《大學語文》這一門課上,大部分學生只愿意被動地接受大學語文老師所講授的文學經典故事,而對于需要學生動手動腦去寫的作文,卻是盡可能應付差事,這樣勢必不能讓大學生的寫作水平有所提高。(四)教師的實踐性教學不強。學生寫作能力的提高是一項艱巨復雜的任務,但在教學中有不少教師過多注重理論知識,實踐性教學環節卻往往被忽視。理論講了一大堆,但是實踐卻幾乎沒有,訓練也少得可憐。閱讀與寫作都需要很強的實踐操作,學習理論固然必不可少,但是閱讀方法和寫作技巧的掌握才是最重要的。由于以上的原

溫馨提示

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

評論

0/150

提交評論