30 lines
589 B
Coq
30 lines
589 B
Coq
|
|
/*
|
||
|
|
Decoder / Encoder
|
||
|
|
*/
|
||
|
|
|
||
|
|
module decoder_3bit (
|
||
|
|
input [2:0] in,
|
||
|
|
output [7:0] out
|
||
|
|
);
|
||
|
|
assign out = 1 << in;
|
||
|
|
endmodule
|
||
|
|
|
||
|
|
module encoder_3bit(
|
||
|
|
input [7:0] in,
|
||
|
|
output reg [2:0] out
|
||
|
|
);
|
||
|
|
always @(*) begin
|
||
|
|
out = 0;
|
||
|
|
|
||
|
|
casez(in)
|
||
|
|
8'b1???????: out = 3'd7;
|
||
|
|
8'b01??????: out = 3'd6;
|
||
|
|
8'b001?????: out = 3'd5;
|
||
|
|
8'b0001????: out = 3'd4;
|
||
|
|
8'b00001???: out = 3'd3;
|
||
|
|
8'b000001??: out = 3'd2;
|
||
|
|
8'b0000001?: out = 3'd1;
|
||
|
|
8'b00000001: out = 3'd0;
|
||
|
|
endcase
|
||
|
|
end
|
||
|
|
endmodule
|