FPGA練習 編碼器和解碼器

2021-10-21 04:02:50 字數 2322 閱讀 9362

本練習把乙個八位的 onehot 編碼轉換成三位的二進位制數。

編碼器埠配置:

編碼器**:

module encoder

( x,

en,y);

input [7:

0] x;

input en;

output [2:

0] y;

wire [7:

0] x;

wire en;

reg [2:

0] y;

always @ (en or x)

begin

if(en)

begin

case (x)

8'b00000001 : y = 3'b000;

8'b00000010 : y = 3'b001;

8'b00000100 : y = 3'b010;

8'b00001000 : y = 3'b011;

8'b00010000 : y = 3'b100;

8'b00100000 : y = 3'b101;

8'b01000000 : y = 3'b110;

8'b10000000 : y = 3'b111;

default : y =

3'b000;

endcase

endend

endmodule //encoder

解碼器埠配置:

解碼器**:

module decoder

( din,

en,out)

; input [2:

0] din;

input en;

output [7:

0] out;

wire [2:

0] din;

wire en;

wire [7:

0] out;

assign out =

(en)?(

1<

< din)

:8'b0;

endmodule //decoder

測試電路設計:

測試**:

module encoder_test()

; reg [2:

0] data;

reg en;

wire [2:

0] out;

wire [7:

0] decoder2_out;

initial begin

data =

3'b000;

en =0;

#1 data =

3'b000;

en =1;

#1 data =

3'b001;

#1 data =

3'b010;

#1 data =

3'b011;

#1 data =

3'b100;

#1 data =

3'b101;

#1 data =

3'b110;

#1 data =

3'b111;

#1 data =

3'b000;

#1 data =

3'b001;

#1 $finish;

endinitial begin

$dumpfile (

"... .../encoder_test.vcd");

$dumpvars;

endencoder encoder1(.

x(decoder2_out),.

en(en),.

y(out));

decoder decoder2(.

din(data),.

en(en),.

out(decoder2_out));

endmodule

執行一下看看波形:

很不錯!

編碼器與解碼器

以protobufencoder為例子,protobufencoder繼承channeloutboundhandler,與我們自定義的出站處理器 outboundhandler 相似。出站時 即向channel寫資料 會呼叫這個handler對資料進行處理 編碼 同理,decoder則繼承chann...

編碼器和解碼器的概念理解

編碼器和解碼器最開始看概念的時候有點懵,因為說編碼器先把原始訊號給編碼,然後解碼器再給解出來得到原始訊號。哈?這是幹啥,原始訊號本來就有,用這個搞啥,做無用功嗎?1.首先,說一下編碼器和解碼器幹什麼用的。我們舉個例子。乙個是,類似pca這樣的,做矩陣分解,然後恢復。矩陣分解裡,把原始大矩陣變成了幾個...

Base64編碼 解碼器

base64編碼說明 base64編碼要求把3個8位位元組 3 8 24 轉化為4個6位的位元組 4 6 24 之後在6位的前面補兩個0,形成8位乙個位元組的形式。如果剩下的字元不足3個位元組,則用0填充,輸出字元使用 因此編碼後輸出的文字末尾可能會出現1或2個 為了保證所輸出的編碼位可讀字元,ba...