本練習把乙個八位的 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...