0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Verilog的經(jīng)典數(shù)字電路設(shè)計(4)編碼器

冬至子 ? 來源:新芯設(shè)計 ? 作者:新芯設(shè)計 ? 2023-10-09 16:49 ? 次閱讀

引言

在近代戰(zhàn)爭中,軍事信息傳遞,例如通過發(fā)電報的方式,電報信息難免被敵方截獲,而我們又不得不通過發(fā)電報傳輸信息(喲,都近代了,就別飛鴿傳書了),所以發(fā)送方需要對信息進(jìn)行加密,也就是編碼,然后以一種雙方事先溝通好的編碼方式(密碼本就是這樣來的),在接收方再進(jìn)行反編碼,也就是解碼,這樣,即使信息被截獲了,短時間內(nèi)也難以被破解;這就是編碼器的重要性。

編碼器的邏輯功能就是將多輸入的每一個高、低電平信號轉(zhuǎn)為一個對應(yīng)的二進(jìn)制代碼,它分為普通編碼器和優(yōu)先編碼器。對于普通編碼器,任何時刻只允許輸入一個編碼信號,否則輸出將發(fā)生混亂。

一、普通編碼器的 Verilog 代碼實現(xiàn)和 RTL 電路實現(xiàn)

module Encoders(
    input wire [7:0] d, // 輸入信號_未編碼
    output reg [2:0] b = 3'b000 // 輸出信號_已編碼
    );  

    always @ ( d ) begin 
        case ( d )
            8'b0000_0001 : b <= 3'b000;
            8'b0000_0010 : b <= 3'b001;
            8'b0000_0100 : b <= 3'b010;
            8'b0000_1000 : b <= 3'b011;
            8'b0001_0000 : b <= 3'b100;
            8'b0010_0000 : b <= 3'b101;
            8'b0100_0000 : b <= 3'b110;
            8'b1000_0000 : b <= 3'b111; 
            default      : b <= 3'b000;
        endcase 
    end

endmodule

這是一個 8 線 ? 3 線普通編碼器,基于查找表 LUT(Look Up Table)的方式實現(xiàn)的一個電路,其 RTL 電路圖如下所示:

圖片

普通編碼器的 RTL 電路圖

優(yōu)先編碼器其實就是允許同時在幾個輸入端有輸入信號,編碼器按輸入信號排定的優(yōu)先順序,只對同時輸入的幾個信號中優(yōu)先權(quán)最高的一個進(jìn)行編碼,即已經(jīng)排好了隊,從高位向低位遞減。比如,8 線 - 3 線優(yōu)先編碼器的輸入有 “0、1、2、3、4、5、6、7” 八位輸入,而輸出只有 “Y0、Y1、Y2” 三位輸出,在這里,就是當(dāng) “7” 為 “1” 的時候,即 “7” 為有效值的時候,無論 “0” 到 “6” 之間為何值,都只對 “7” 進(jìn)行編碼,高位優(yōu)先判斷是否有效,以此類推。

二、優(yōu)先編碼器的 Verilog 代碼實現(xiàn)和 RTL 電路實現(xiàn)

module Encoders(
    input wire [7:0] d, // 輸入信號_未編碼
    output reg [2:0] b = 3'b000 // 輸出信號_已編碼
    );  

    always @ ( d ) begin 
        casex ( d )
            8'b0000_0001 : b <= 3'b000;
            8'b0000_001x : b <= 3'b001;
            8'b0000_01xx : b <= 3'b010;
            8'b0000_1xxx : b <= 3'b011;
            8'b0001_xxxx : b <= 3'b100;
            8'b001x_xxxx : b <= 3'b101;
            8'b01xx_xxxx : b <= 3'b110;
            8'b1xxx_xxxx : b <= 3'b111; 
            default      : b <= 3'bxxx;
        endcase 
    end

endmodule

這是一個 8 線 ? 3 線優(yōu)先編碼器,基于查找表 LUT(Look Up Table)的方式實現(xiàn)的一個電路,其 RTL 電路圖如下所示:

圖片

優(yōu)先編碼器的 RTL 電路圖

附加說明,其實,Verilog 中的 if - else 語句便隱含了優(yōu)先特性,可以進(jìn)行優(yōu)先編碼器的設(shè)計。中級及以上的 FPGA 玩家應(yīng)該能懂的。

總結(jié)

編碼器是非常重要的一個數(shù)字電路組合邏輯模塊,不僅可以大大減少傳輸數(shù)據(jù)的信號線的數(shù)量,還是密碼學(xué)的一部分,基于某種協(xié)議的編碼能夠讓雙方之間的通訊較為安全。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 編碼器
    +關(guān)注

    關(guān)注

    45

    文章

    3574

    瀏覽量

    133982
  • RTL
    RTL
    +關(guān)注

    關(guān)注

    1

    文章

    385

    瀏覽量

    59666
  • LUT
    LUT
    +關(guān)注

    關(guān)注

    0

    文章

    49

    瀏覽量

    12475
  • Verilog設(shè)計
    +關(guān)注

    關(guān)注

    0

    文章

    20

    瀏覽量

    6509
收藏 人收藏

    評論

    相關(guān)推薦

    數(shù)字電路設(shè)計中的一款強(qiáng)大工具—Verilog編程語言介紹

    Verilog是一種硬件描述語言,用于描述數(shù)字電路的結(jié)構(gòu)和行為。與傳統(tǒng)的編程語言不同,Verilog更加注重電路的行為和時序特性。
    發(fā)表于 08-01 09:00 ?4200次閱讀
    <b class='flag-5'>數(shù)字電路設(shè)計</b>中的一款強(qiáng)大工具—<b class='flag-5'>Verilog</b>編程語言介紹

    招聘:數(shù)字電路設(shè)計

    數(shù)字集成電路設(shè)計ASIC設(shè)計/驗證經(jīng)驗;2.熟悉邏輯/時序電路的原理和設(shè)計;3.精通verilog語言;熟練使用Cadence,Modelsim,NC-Verilog,DC等設(shè)計驗證工
    發(fā)表于 02-27 10:52

    數(shù)字電路設(shè)計Verilog HDL

    數(shù)字電路設(shè)計Verilog HDL
    發(fā)表于 07-16 16:21

    數(shù)字電路設(shè)計的基本方法有哪些

    化簡→畫邏輯電路圖。時序電路設(shè)計:列原始狀態(tài)轉(zhuǎn)移圖和表→狀態(tài)優(yōu)化→狀態(tài)分配→觸發(fā)選型→求解方程式→畫邏輯電路圖。在實際應(yīng)用中,數(shù)字電路設(shè)計
    發(fā)表于 02-27 11:55

    基于LabVIEW的數(shù)字電路設(shè)計和仿真

    基于LabVIEW的數(shù)字電路設(shè)計和仿真 數(shù)字電路設(shè)計和仿真是電子工程領(lǐng)域的基本技術(shù)。介紹了基于LabV IEW的數(shù)字電路設(shè)計和仿真的原理和方法,比較了其與專業(yè)EDA軟
    發(fā)表于 03-30 16:09 ?124次下載

    高速數(shù)字電路設(shè)計

    高速數(shù)字電路設(shè)計 關(guān)于高速數(shù)字電路的電氣特性,設(shè)計重點(diǎn)大略可分為三項 : Ø 正時 (Timing) :由于數(shù)字電路大多依據(jù)時脈信號來做信號間的同
    發(fā)表于 10-16 17:22 ?3109次閱讀

    數(shù)字電路設(shè)計

    數(shù)字電路設(shè)計 關(guān)于高速數(shù)字電路的電氣特性,設(shè)計重點(diǎn)大略可分為三項: 正時(Timing) :由于數(shù)字電路
    發(fā)表于 08-26 19:08 ?2799次閱讀

    旋轉(zhuǎn)編碼器抗抖動接口電路設(shè)計

    旋轉(zhuǎn)編碼器抗抖動接口電路設(shè)計
    發(fā)表于 09-26 14:48 ?88次下載

    數(shù)字電路中的FPGA和verilog教程

    數(shù)字電路中的FPGA和verilog教程,好東西,喜歡的朋友可以下載來學(xué)習(xí)。
    發(fā)表于 01-18 17:44 ?42次下載

    旋轉(zhuǎn)編碼器抗抖動接口電路設(shè)計

    旋轉(zhuǎn)編碼器抗抖動接口電路設(shè)計
    發(fā)表于 01-24 16:54 ?48次下載

    FPGA CPLD數(shù)字電路設(shè)計經(jīng)驗分享.

    FPGA CPLD數(shù)字電路設(shè)計經(jīng)驗分享.(電源技術(shù)發(fā)展怎么樣)-FPGA CPLD數(shù)字電路設(shè)計經(jīng)驗分享? ? ? ? ? ? ? ? ? ??
    發(fā)表于 09-18 10:58 ?52次下載
    FPGA CPLD<b class='flag-5'>數(shù)字電路設(shè)計</b>經(jīng)驗分享.

    Verilog數(shù)字系統(tǒng)設(shè)計——復(fù)雜數(shù)字電路設(shè)計2(FIFO控制設(shè)計)

    Verilog數(shù)字系統(tǒng)設(shè)計十二復(fù)雜數(shù)字電路設(shè)計2文章目錄Verilog數(shù)字系統(tǒng)設(shè)計十二前言一、什么是FIFO控制
    發(fā)表于 12-05 15:51 ?9次下載
    <b class='flag-5'>Verilog</b><b class='flag-5'>數(shù)字</b>系統(tǒng)設(shè)計——復(fù)雜<b class='flag-5'>數(shù)字電路設(shè)計</b>2(FIFO控制<b class='flag-5'>器</b>設(shè)計)

    數(shù)字電路設(shè)計的基本流程

    數(shù)字電路設(shè)計數(shù)字電路最為關(guān)鍵及重要的一步,今天我們將從各個流程為大家介紹完整的數(shù)字電路設(shè)計!
    的頭像 發(fā)表于 07-10 17:14 ?7606次閱讀

    基于Verilog經(jīng)典數(shù)字電路設(shè)計(5)譯碼

    前面講完了編碼器,其實不知不覺地,也順便把譯碼也講了,畢竟,二者是一個相反操作的過程,類似于加減,前進(jìn)與后退,調(diào)制與解調(diào),F(xiàn)FT 和 IFFT 等等。
    的頭像 發(fā)表于 10-09 17:20 ?1784次閱讀
    基于<b class='flag-5'>Verilog</b>的<b class='flag-5'>經(jīng)典</b><b class='flag-5'>數(shù)字電路設(shè)計</b>(5)譯碼<b class='flag-5'>器</b>

    高速數(shù)字電路設(shè)計.zip

    高速數(shù)字電路設(shè)計
    發(fā)表于 12-30 09:22 ?19次下載