国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

深度解讀VHDL語言的卷積碼和Viterbi譯碼的實現

電子工程師 ? 來源:微型機與應用 ? 作者:陶 杰 王 欣 張天輝 ? 2021-05-12 15:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

摘 要: 介紹并用VHDL語言實現了卷積編碼和維特比譯碼。根據編碼器特征設計了一種具有針對性的簡潔的維特比譯碼器結構,并通過ModelSim平臺驗證了該設計的正確性。

卷積碼自1955年由愛里斯(Elias)提出以來,因其良好的糾錯能力,已經在現代通信系統中得到了廣泛應用,比如,電力系統通信、衛星通信、移動通信等。Viterbi譯碼是1967年維特比(Viterbi)基于Viterbi算法提出的,這種譯碼算法是基于碼的網格(trellis)圖基礎之上的一種最大似然譯碼算法,是一種最佳的概率譯碼算法[1]。本設計是在認真研究了卷積編碼和維特比譯碼原理以后,用VHDL語言實現了(2,1,2)卷積編碼,并根據這種編碼特性簡化了相應的維特比譯碼器結構。

1 卷積編碼

卷積碼是一種有限記憶系統,它與分組碼類似,也是先將信息序列分隔成長度為k的一個個分組;不同的是,某一時刻的編碼輸出不僅取決于本時刻的分組,而且取決于本時刻以前的L個分組[2],稱L+1為約束長度。一般情況下卷積碼寫成(n,k,L)的形式,其中:n表示編碼器有n位編碼輸出,k表示編碼器有k位輸入。如果用R表示卷積編碼的效率,則R=k/n。

圖1是(n,k,L)卷積編碼器的一般結構圖[2]。從該圖可以看出,串行信號可由串/并轉換器轉換成L個分組,并按位存儲到k-1個存儲器中,存儲器中的每一個單元與線性組合器的連線表示該單元數據參與了線性組合計算,但實際中是否參與取決于線性組合系數。

在二進制系統中,該系數為“0”和“1”,當系數為“0”時,表示該單元數據沒參與線性組合計算;當系數為“1”時,表示該單元數據參與了線性組合計算。并/串轉換器可將線性組合器計算得到的并行結果轉化成串行輸出。

o4YBAGCbgbGADUrNAADUZXct950313.png

圖1示意的是卷積編碼器的一般結構,實際應用時可根據需求進行相應改變。例如圖2是(2,1,2)碼的編碼器,由于只有一位輸入,串/并轉換器自然不存在,線性組合器就是兩個模2加法器,存儲單元由兩個移位寄存器組成,其生成多項式矩陣可表示為:G(D)=[1+D+D2,1+D2]。

圖3是圖2所示卷積碼的狀態轉移圖,根據這個狀態轉移圖用VHDL語言實現卷積編碼。圖3中S0、S1、S2、S3表示該卷積碼的4個不同狀態,編程時用狀態機完成狀態之間的跳變和編碼輸出。

10601074305040.gif

10601152305384.gif

部分程序如下:

……

if(clk1=′1′) then

state 《=next_state;

……

else

state 《=state;

……

case state is

when “00” =》

if(datain = ′0′) then

next_state 《= “00”;

enc_out 《= “00”;

else

next_state 《= “10”;

enc_out 《= “11”;

end if;

when “01” =》

……

其中,clk1為編碼時鐘(另一時鐘是碼輸入時鐘,為clk1的2倍頻),state為本次編碼狀態,并根據它的值和數據輸入(datain)的值給出卷積碼的下一個狀態值(next_state)和編碼輸出值(enc_out)。如此往復循環下去,便可得到卷積碼。

2 維特比譯碼

維特比譯碼算法是一種最大似然譯碼算法。根據維特比譯碼算法的譯碼步驟,譯碼算法的實現一般包括:加比選模塊、度量查找表、狀態變量存儲器等模塊,如圖4所示。本設計根據該卷積碼的特性,找到一種簡便的改進譯碼方法。

10601432485479.gif

通過圖3可知,到達每一狀態的輸入碼均相同。例如,無論是由S0轉變成S1還是由S2轉變成S1,雖然編碼輸出段不一樣,但是碼輸入都是‘1’,其他狀態之間的轉變也是如此。因而,通過這個特征可以去掉該卷積碼的維特比譯碼實現時的度量查找表和路徑存儲器等模塊,只保留加比選模塊即可,如圖5所示,從而簡化了維特比譯碼算法的實現。再結合該卷積碼的狀態轉移圖,畫出相應籬笆圖,如圖6所示。

10601563831092.gif

在這個譯碼器結構中,“加”是指計算在該時刻實際編碼輸入與圖3中狀態轉移編碼輸出之間的漢明距,“比”是指比較出上述漢明距最小距離,“選”是指通過“比”的結果選擇一位最佳碼字輸出。按照這一結構,在本時刻即可得到一位最佳輸出碼字。

例如,在L=0時刻時,實際編碼輸入若為“01”或“10”,則可以通過判斷L=1時刻的實際編碼輸入來選擇一位最佳碼字輸出。本設計運用VHDL語言編程實現這一譯碼過程時,采用了兩個時鐘,在一個clk周期內將16 bit卷積碼輸入到譯碼器內,然后再由其8倍頻時鐘clk1完成“加”、“比”、“選”、譯碼輸出等動作。由于信號只能采用阻塞賦值,因而,“加”與“比”、“選”分別在兩個clk1時鐘周期內完成,并且“加”先于后兩者1個時鐘周期。

3 仿真結果

3.1 卷積編碼仿真結果

依據“卷積編碼”單元分析,運用VHDL語言在ModelSim下實現的圖2編碼器仿真結果,如圖7所示,當輸入碼分別為:10111000、11000000、01001000時,對應輸出碼序列:1110000110011100、1101011100000000、0011101111101100。

可以通過輸入碼和生成多項式矩陣來驗證此卷積編碼是正確有效的。圖7中dataouta為編碼輸出端,clr為編碼器清零端,datain為串行碼輸入端,clk為碼輸入時鐘,clk1為編碼時鐘。

3.2 維特比譯碼仿真結果

依據“維特比譯碼”單元分析,運用VHDL語言在ModelSim下實現的圖5譯碼器仿真結果如圖8所示,當輸入碼分別為:1110000110011100、1101011100000000、0011101111101100時,對應輸出碼序列為:10111000、11000000、01001000。

圖8中c_out為譯碼輸出端,clr_viterbi_acs為譯碼器清零端,c_in為卷積碼并行輸入端,clk為譯碼處理時鐘,clk2為并行碼輸入時鐘。

10601758053510.gif

本文利用VHDL語言在ModelSim平臺上實現與驗證了(2,1,2)卷積編碼和維特比譯碼,并根據給出的編碼器的特征簡化了譯碼器結構,從而減小了用VHDL語言編程的復雜度,同時也提高了程序的健壯性。該設計可以為同類型采用卷積編碼和維特比譯碼的方案提供一定的幫助。

作者:陶 杰 王 欣 張天輝

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 轉換器
    +關注

    關注

    27

    文章

    9418

    瀏覽量

    156327
  • 存儲器
    +關注

    關注

    39

    文章

    7738

    瀏覽量

    171650
  • vhdl
    +關注

    關注

    30

    文章

    822

    瀏覽量

    131680
  • 卷積編碼
    +關注

    關注

    0

    文章

    13

    瀏覽量

    2871
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于FPGA VHDL的FSK調制與解調設計

    VHDL誕生于1982年。在1987年底,VHDL被IEEE和美國國防部確認為標準硬件描述語言。
    的頭像 發表于 01-27 10:58 ?327次閱讀
    基于FPGA <b class='flag-5'>VHDL</b>的FSK調制與解調設計

    德州儀器BCD到七段譯碼器/驅動器深度剖析

    德州儀器BCD到七段譯碼器/驅動器深度剖析 在數字電路設計中,BCD到七段譯碼器/驅動器是實現數字顯示的關鍵組件。德州儀器(TI)的SN5446A、’47A、’48、SN54LS47、
    的頭像 發表于 01-19 11:30 ?269次閱讀

    原廠 FZH851 高可靠性、低功耗的LED行選譯碼芯片

    特點用兩個 FZH851實現四地址數據輸入和16譯碼輸出的4-16譯 器,應用中未使用的使能端要處在譯碼有效輸出 使能電平狀態。 FZH851為LED顯示專用芯片,具有防燒 PMOS
    發表于 11-11 09:50

    官方例程nice_core解讀

    均為7‘b11111011’ Nice_core信號解讀 譯碼段,對輸入指令,將指令func3字段func7字段及opcode段譯碼 判斷是否是custom3類型擴展指令,判斷func3
    發表于 10-30 06:14

    卷積運算分析

    卷積運算的基礎運算是乘加運算(MAC,Multiplication and Accumulation),本文設計了基本運算單元PE模塊來實現MAC運算。對于卷積運算而言,一次性至少處理一個感受域規模
    發表于 10-28 07:31

    深度操作系統deepin 25全面支持凹語言

    近日,deepin(深度)社區宣布,deepin 25 現已完成對國產通用編程語言語言 (Wa-Lang) 的兼容性測試。在 deepin 25 默認安裝環境下,即可直接使用凹語言
    的頭像 發表于 07-10 15:26 ?1004次閱讀
    <b class='flag-5'>深度</b>操作系統deepin 25全面支持凹<b class='flag-5'>語言</b>

    為什么我選擇VHDL入門

    篇。 從長期來看,兩個語言大概率都要學一下;但是從初學角度而言,總要選擇一個入門語言。 根據網上的信息,總結對比結論: Verilog 的優勢: 1. Verilog 語法接近C,學習容易;VHDL
    的頭像 發表于 06-25 11:18 ?1204次閱讀
    為什么我選擇<b class='flag-5'>VHDL</b>入門

    AI SoC #BK7258 AI能力和技術參數深度解讀

    BK7258芯片AI能力深度解讀 BK7258是博通集成推出的一款高集成度Wi-Fi 6+藍牙5.4低功耗音視頻SoC芯片,其AI能力通過硬件加速、算法優化及生態整合實現,覆蓋邊緣計算、端云協同兩大
    的頭像 發表于 06-20 09:44 ?6730次閱讀
    AI SoC #BK7258 AI能力和技術參數<b class='flag-5'>深度</b><b class='flag-5'>解讀</b>

    瑞薩365 深度解讀

    技術架構、核心功能、行業影響及未來展望四個維度進行深度解讀: 一、技術架構:融合硬件與設計軟件的跨領域協作平臺 瑞薩365基于Altium 365云平臺構建,整合了瑞薩的半導體產品組合與Altium的設計工具鏈,形成從芯片選型到系統部署的全流程數字環境。其核心架構圍繞 五
    的頭像 發表于 06-06 09:58 ?2187次閱讀
    瑞薩365 <b class='flag-5'>深度</b><b class='flag-5'>解讀</b>

    ARM Mali GPU 深度解讀

    ARM Mali GPU 深度解讀 ARM Mali 是 Arm 公司面向移動設備、嵌入式系統和基礎設施市場設計的圖形處理器(GPU)IP 核,憑借其異構計算架構、能效優化和生態協同,成為全球移動
    的頭像 發表于 05-29 10:12 ?4313次閱讀

    Arm 公司面向 PC 市場的 ?Arm Niva? 深度解讀

    面向 PC 市場的 ? Arm Niva ? 深度解讀 ? Arm Niva ? 是 Arm 公司為 PC 市場推出的核心計算平臺,屬于其“平臺優先”戰略的關鍵布局。作為 ? Arm 計算
    的頭像 發表于 05-29 09:56 ?1630次閱讀

    高效解讀機器語言,profinet轉ethernet ip網關煙草企業自動化升級案例分析

    高效解讀機器語言,profinet轉ethernetip網關煙草自動化升級案例
    的頭像 發表于 04-07 15:16 ?597次閱讀
    高效<b class='flag-5'>解讀</b>機器<b class='flag-5'>語言</b>,profinet轉ethernet ip網關煙草企業自動化升級案例分析

    英偉達Cosmos-Reason1 模型深度解讀

    。以下從技術架構、訓練策略、核心能力及行業影響四方面展開深度解讀: Cosmos-Reason 1:從物理 AI 常識到具體決策 物理 AI 系統需要感知、理解和執行物理世界中的復雜作。在本文中,我們提出了 Cosmos-Reason1 模型,該模型可以理解物理世界并通過
    的頭像 發表于 03-29 23:29 ?2984次閱讀

    數字電路—12、譯碼

    譯碼器定義:把具有特定意義信息的二進制代碼翻譯出來的過程稱為譯碼實現譯碼操作的電路稱為譯碼器。 譯碼
    發表于 03-26 11:11

    如何使用MATLAB實現一維時間卷積網絡

    本文對一維卷積操作進行介紹,包括一維擴展卷積和一維因果卷積,以及 MATLAB 對一維卷積的支持情況。在最后通過一個實例演示如何在 MATLAB 中將一維
    的頭像 發表于 03-07 09:15 ?2107次閱讀
    如何使用MATLAB<b class='flag-5'>實現</b>一維時間<b class='flag-5'>卷積</b>網絡