《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 基于Nios的通用編譯碼器的設計
NI-LabVIEW 2025
基于Nios的通用編譯碼器的設計
聶 偉, 楊曉青
摘要: 提出了一種基于Nios的通用編譯碼器的設計,利用嵌入在FPGA中的Nios處理器,對多種編譯碼模塊進行控制。詳細論述了主要模塊的設計和實現方案及整個系統的啟動機制。該編譯碼器在通信原理教學實驗系統中運行良好,體現了它的穩定性及可擴展性。
關鍵詞: NiosⅡ 編譯碼器 Altera
Abstract:
Key words :

  摘 要: 提出了一種基于Nios的通用編譯碼器" title="編譯碼器">編譯碼器的設計,利用嵌入在FPGA中的Nios處理器,對多種編譯碼模塊進行控制。詳細論述了主要模塊的設計和實現方案及整個系統的啟動機制。該編譯碼器在通信原理教學實驗系統中運行良好,體現了它的穩定性及可擴展性。
  關鍵詞: Nios 位同步 幀同步


  altera" title="altera">altera.com/">Altera公司的Nios是基于RISC技術的通用嵌入式處理器芯片軟核,它特別為可編程邏輯進行了優化設計,也為可編程單芯片系統(SOPC)設計了一套綜合解決方案。Nios采用改進的哈佛存儲器結構,CPU帶有分離的數據和程序存儲器總線控制,并具備高速緩存、中斷處理功能。與其他傳統的CPU相比,Nios指令系統可通過自定義指令和標準CPU選項,利用硬件來明顯提高系統性能,而這一措施的實現對PLD中處理器軟核非常有利。Nios開發者可以在速度和面積間選擇,增加了SOPC設計的靈活性。
  基于Nios設計的這一款通用編譯碼器,是將多種編譯碼模塊和微處理器控制部分集成到單片FPGA內部,大大減少了處理器外圍擴展電路數目、提高了系統集成度、降低了外圍電路布局走線的復雜度、提高了系統的抗干擾能力。由于FPGA的可編程性,使系統的擴展和升級更加容易,通過設置不同的技術指標,可以應用到多種通信系統中。
1 總體設計方案
  通用編譯碼器總體方案框圖如圖1所示。它由信息源、編碼器模塊、信道仿真模塊、同步提取模塊、譯碼器模塊、存儲器模塊、LCD和鍵盤模塊組成,整個系統在嵌入式處理器軟核的控制下完成對各種外設的操作,包括設置編譯碼類型和信碼速率、LCD顯示等。


  該編譯碼器可以完成卷積碼、CRC碼、RS碼等多種編譯碼方案。整個系統可工作在兩種模式下:(1)調試模式。這種模式主要應用于系統調試及實驗操作。在該模式下,信息源為其他模塊提供信碼,以便調試同步提取模塊、編譯碼模塊以及系統連接;信道仿真模塊處于正常工作狀態時,可向傳輸碼元中加入干擾,以檢驗譯碼器是否正常工作。(2)應用模式。這種模式主要應用于實際系統。在該模式下,信息源模塊只是把用戶提供的信碼傳輸給編碼器,而信道仿真模塊并不工作,編碼模塊及譯碼模塊互不連接,編碼后碼元在特定的信道中傳輸,然后再回到譯碼器。
  設計過程中使用的軟件平臺主要有Quartus Ⅱ、SOPC Builder和Nios IDE。其中,Quartus Ⅱ主要用于整個系統的構建、編譯、綜合、適配、時序分析和下載。整個SOPC系統設計完成后,在Quartus Ⅱ下進行管腳分配和編譯,并生成pof或sof文件下載到專用配置器件或FPGA中;SOPC Builder用于Nios微處理器和外圍模塊的集成設計,Nios微處理器系統設計完成后,通過“System Generation”產生可用于Quartus Ⅱ綜合的VHDL描述,同時生成Symbol文件供調用;Nios IDE用于Nios處理器的軟件開發、調試和下載。
2 硬件實現
  硬件主要包括定制合適的CPU和外設、編譯碼模塊、同步提取模塊、鍵盤顯示、存儲器模塊。
2.1 位同步提取模塊設計
  在數字通信中,位同步是最基本的同步。它的基本含義是接收端和發送端時鐘信號必須同頻同相,這樣接收端才能正確接收和判決發送端送來的每一個碼元。實現位同步的方法可分為外同步法和自同步法。目前,在數字通信系統中,常常采用數字鎖相法提取位同步[1],它屬于自同步法。
  位同步提取原理圖如圖2所示。它由晶振、分頻器、相位比較器和控制器組成。其中控制器包括圖中所示的扣除門、附加門和或門。若接收碼元的速率為F(波特),則要求位同步脈沖的重復速率也為F。這時,晶振的振蕩頻率應設在NF(赫),由晶振輸出經整形得到重復頻率為NF的窄脈沖,經扣除門、或門并N次分頻后,就可得到頻率為F的信號。如果此信號不能準確反映接收碼元的頻率和相位,就要根據相位比較器輸出的誤差信號,通過控制器對分頻器進行調整。接收碼元的相位可以從基帶信號的過零點提取,將每個碼元的寬度分為兩個區:前半碼元稱為滯后區。若位同步脈沖波形落入此區,分頻器輸出脈沖,使‘與門’B有輸出,經過單穩2產生一滯后脈沖。后半碼元稱為超前區,若位同步脈沖落入此區,分頻器的另一端使‘與門’A有輸出,經過單穩1產生一超前脈沖。這樣無論位同步脈沖超前或滯后,都會分別送出超前或滯后脈沖對加于分頻器的脈沖進行扣除或附加,達到相位調整的目的。


  圖2中的單穩3是為了保證‘與門’A先有輸出,以防位同步輸出的脈沖與接收碼元的相位相差180°。對位同步提取電路進行時序仿真,得到的仿真波形如圖3所示。圖3中,codein為輸入碼流,weifen為提取出的碼元起始相位,weitongbu為位同步信號輸出。
2.2 幀同步提取模塊設計
  數字通信時,一般總是以一定數目的碼元組成一個“句”進行傳輸。在本設計中,為了方便部分編碼方法的實現,采用了加幀頭的方法。因此在解碼端,相應設計了幀同步信號的提取模塊。實現幀同步的基本方法是在發送端預先規定的時隙插入一組特殊碼形的幀同步碼組,在接收端有幀同步檢測電路檢測該碼組以保證收發幀同步。
  本方案中幀同步碼為7位巴克碼,即1110010,集中插入到每幀的第2~8個碼元位置上,其原理框圖如圖4所示。本模塊可分為信號源、巴克碼識別器和同步保護三部分。每幀的具體結構可以通過鍵盤設置,此處以每幀24位為例,其中后16位為信息碼元,則設置分頻器1為24分頻,分頻器2設為3分頻。巴克碼識別器由圖5所示的電路來實現。在移位時鐘信號的作用下,當7位巴克碼全部移進移位寄存器時,圖5中的D0~D6全部為1。L0~L2端為門限控制端,其中L1和L2段已設置為1,而L0由同步保護端控制,只有當D0~D6中1的個數不小于門限值時,qout端才輸出一脈沖,表示一幀的開始。

 


  圖5中,同步保護的作用是減少假同步和漏同步。當無基帶信號輸入或有基帶信號輸出但識別器無輸出時,‘與門’1關閉,‘與門’2打開,單穩輸出信號通過‘與門’2輸入到分頻器2,分頻器2的輸出信號使RS置0,從而關閉‘與門’3,同步器無輸出信號;此時Q的反向端高電平把判決門限的電平置為7,打開‘與門’1,同步器處于捕捉狀態,只要識別器輸出一個信號,‘與門’4就可以輸出一個置0脈沖使分頻器1置0。這樣分頻器1就可以輸出與識別器同頻同相的信號。識別器輸出信號通過‘與門’1后使狀態觸發器置1,從而打開‘與門’3,輸出幀同步信號,同時使判決門限降為6,關閉‘或門’,使同步器進入維持狀態。在維持狀態下,因為判決門限較低,故識別器的漏識別概率減小,假識別概率增加,但假識別信號與單穩輸出信號不同步,故‘與門’1與‘與門’4不輸出假識別信號,‘與門’3輸出的仍是正確的幀同步信號。在維持狀態下,也可能出現漏識別,但由于漏識別概率比較小,只要識別器不連續出現三次漏識別,則分頻器2就不輸出一個脈沖信號,維持態不變;若超過三次,則維持態變為捕捉態,重新捕獲幀同步碼。若首次捕獲的是信息數據中與幀同步碼完全相同的碼元序列,則系統將進入錯誤的同步維持狀態。如果連續傳輸以一幀為周期的信號,此狀態將維持下去。但在實際傳輸中,連續幾幀都輸出假識別信號的概率極小,所以這種錯誤的同步維持狀態存在的時間很短。
2.3 編譯碼模塊設計
  限于篇幅,本文只簡單介紹漢明碼與卷積編碼模塊的實現。它們已很好地應用在本實驗室的通信系統實驗箱中。
2.3.1 漢明碼編譯碼模塊
  以(7,4)漢明碼為例,校正子與錯碼位置的對應關系如表1所示[2]


  監督位計算如下:
  
  4位碼元相應進入編碼器,首先進行串并變換,然后進行漢明編碼,最后進行并串變換。主要代碼如下:
  if(clk1‘event and clk1=‘0’) then
  if (en=‘0’ and counter1=0) then
  tempt(6 downto 3)〈=datain(3 downto 0);
  tempt(2) 〈= (datain(3) XOR datain(2))
  XOR datain(1);
  tempt(1) 〈= (datain(3) XOR datain(2))
  XOR datain(0);
  tempt(0) 〈= (datain(3) XOR datain(1))
  XOR datain(0);
  end if;
  end if;
  在此模塊中要設定輸入時鐘和輸出時鐘的周期為7比4的關系,具體周期大小與碼元速率對應。對于譯碼模塊,原理相同,在此不再贅述。漢明碼編譯碼模塊的仿真波形如圖6所示。圖中,outp1為編碼輸出,outp2為譯碼輸出,仿真結果與理論計算值相同。

 


2.3.2 卷積碼編譯碼模塊
  以(2,1,6)卷積編譯碼器為例,選擇生成矩陣為G(D)=(1,1+D2+D5+D6)的卷積碼。這種卷積碼不僅是系統碼,而且是自正交碼。假設輸入信息序列M=(1111),即M(D)=1+D+D2+D3,則編碼器的輸出C(D)=M(D)×G(D),即編碼器輸出序列為11111010010000000001。解碼采用大數邏輯譯碼方法,可以糾正連續14個信息碼元中的2個隨機錯誤。對于存在突發干擾的信道,采用這種方法可獲得非常大的編碼增益。譯碼中完成糾錯的代碼如下:
  summ:process(s)
  begin
  if s(6)=‘1’ then c6〈=1;else c6〈=0;end if;
  if s(5)=‘1’ then c5〈=1;else c5〈=0;end if;
  if s(2)=‘1’ then c2〈=1;else c2〈=0;end if;
  if s(0)=‘1’ then c0〈=1;else c0〈=0;end if;
  end process;
  sum〈=c0+c2+c5+c6;
  men:process(sum)
  begin
  if sum>=3 then temp〈=‘1’;else temp〈=‘0’;
  end if;
  end process;
  卷積碼模塊仿真波形如圖7所示。圖中,encode為編碼輸出,decode為解碼輸出。由圖可見,結果與理論計算相同。其中,編碼輸出速率為信息碼速率的兩倍。
2.4 Nios微處理器模塊
  Nios CPU核有Nios-16和Nios-32兩種結構,這里選用Nios-32處理器,它的預配置有標準型、最小型、全功能、標準調試功能以及自定制。在此選用標準調試功能,在標準模式下增加了用于JTAG在線調試的OCI模塊,可以通過JTAG進行Nios調試[3];還定義了一個ROM 和RAM 模塊,其數據寬度均為32 位,大小均為2KB。ROM 用來存儲GERMS Monitor程序,以便進行軟件調試, RAM作為程序運行空間和變量空間。UART 為通用串行通信IP ,用來外接RS232,用于系統的調試和通信。Avalon交換結構總線用來連接外部的Flash、SRAM以及用戶自定制邏輯。Avalon需要極小的FPGA資源,提供完全的同步操作。該模塊還定義了一個4×4的鍵盤,用來選擇編譯碼方式、信息速率以及工作模式等。
  在SOPC Builder中添加相應模塊,生成Nios微處理器及部分外設。在Quartus Ⅱ環境下采用模塊化方法將SOPC Builder下定制的Nios CPU軟核和用VHDL語言描述的硬件模塊加以整合。通過圖形化建模實現端口和信號流的匹配。
3 軟件實現
  軟件實現包括系統的初始化,對RAM、ROM進行操作,讀鍵盤和LCD顯示等,主要由Nios SDK shell來完成,通過串行通信口測試Nios的控制程序,控制程序用C語言來實現。
  Nios開發套件提供了將程序代碼存儲在Flash存儲器的功能,GERMS監控程序在CPU啟動后自動執行程序代碼。將代碼存儲在片外存儲器有兩種方法[4],本文采用的方法是使用軟件程序srec2flash將.srec格式的可執行程序代碼轉換為可以寫入Nios系統Flash存儲器的.flash文件,在完成該操作的同時,srec2flash在.Flash文件的開始添加了一段代碼,用于將應用代碼從Flash復制到RAM中并運行。軟核啟動機制如圖8所示。系統上電后,串行配置器件EPCS4配置FPGA;配置完畢后復位Nios并運行片上ROM中的BootLoader;選擇運行模式;在調試模式下,BootLoader啟動GERM監控程序,為開發者提供對系統進行開發調試的條件。在控制模式下,BootLoader將Flash存儲的主程序裝載到RAM中,指針指向程序開始地址,開始運行主程序;初始化,并配置系統。


  所選用Altera公司Cyclone系列的EP1C12Q240C8為核心的芯片,它內部包含12 060個基本邏輯單元和52個M4K RAM blocks,總共可以提供239 616bit的RAM資源,滿足了系統的需求。
  本文利用可編程邏輯的靈活性和Nios的強大處理能力,將多種編譯碼模塊和微處理器模塊集成到一片FPGA內部,方便地實現了通用編譯碼器的設計。由于采用了VHDL語言,使系統具有可移植性和可擴展性。該設計已通過實際運行且效果良好。
參考文獻
1 王 志,石江洪,周劍揚等.同步數字復接的設計及其FPGA實現[J].電子技術應用,2005;(4):77~80
2 樊昌信,張甫翊.徐炳祥等.通信原理[M].北京:國防工業出版社,2001:288
3 潘 松,黃繼業,曾 毓.SOPC技術實用教程[M].北京:清華大學出版社,2005
4 柳一村.基于Nios的SOPC系統設計以及程序引導[J]. 電子技術,2005;32(6):70~72

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 大象焦伊人久久综合网色视 | 高清一区二区亚洲欧美日韩 | 免看黄| 国产午夜影院 | 午夜成年人视频 | 日韩美一区二区三区 | 在线看欧美成人中文字幕视频 | 欧美午夜视频一区二区三区 | 亚洲美女操 | 国产亚洲精品影达达兔 | 日本全身露裸无遮挡黄漫画 | 香蕉大伊亚洲人在线观看 | 五月视频| 射狠狠 | 国产成人精品视频免费 | 成人午夜看片在线观看 | 成年网址网站在线观看 | 亚洲一区二区影视 | 欧美怀孕色xxxxx | 手机看日韩 | 久久久无码精品亚洲日韩按摩 | 欧美福利视频网 | 色视频免费观看高清完整 | 一级一级一级毛片 | aaaa欧美高清免费 | 人人看人人看人做人人模 | 91视频最新地址 | 99视频久久 | 成熟女人50岁一级毛片不卡 | 视频一区二区在线观看 | 亚洲毛片网 | 欧美成成人免费 | 黄在线观看网站 | 免费国产好深啊好涨好硬视频 | 午夜免费r级伦理片 | 国内自拍成人网在线视频 | 欧美性视频一区二区三区 | 日日夜夜爽 | 亚洲人体在线 | 精品视频免费播放 | 成人亚洲欧美日韩中文字幕 |