| |
| module case1 (in1, in2, out2); |
| input [7:0] in1; |
| input [2:0] in2; |
| output out2; |
| always@(in1 or in2) |
| case (in2) |
| 2'b000 : out2 = in1[0]; |
| 2'b001 : out2 = in1[1]; |
| 2'b010 : out2 = in1[2]; |
| 2'b011 : out2 = in1[3]; |
| 2'b100 : out2 = in1[4]; |
| 2'b101 : out2 = in1[5]; |
| 2'b110 : out2 = in1[6]; |
| 2'b111 : out2 = in1[7]; |
| endcase |
| |
| endmodule |
| |
| |
| module case2 (in1, sel, out2); |
| input [1:0] in1; |
| input [2:0] sel; |
| output [15:0] out2; |
| reg [7:0] select; |
| /* address decoder */ |
| always@(sel) |
| case (sel) |
| 3'b000 : select = 8'b00000001; |
| 3'b001 : select = 8'b00000010; |
| 3'b010 : select = 8'b00000100; |
| 3'b011 : select = 8'b00001000; |
| 3'b100 : select = 8'b00010000; |
| 3'b101 : select = 8'b00100000; |
| 3'b110 : select = 8'b01000000; |
| 3'b111 : select = 8'b10000000; |
| endcase |
| assign out2[1:0] = in1 & select[0]; |
| assign out2[3:2] = in1 & select[1]; |
| assign out2[5:4] = in1 & select[2]; |
| assign out2[7:6] = in1 & select[3]; |
| assign out2[9:8] = in1 & select[4]; |
| assign out2[11:10] = in1 & select[5]; |
| assign out2[13:12] = in1 & select[6]; |
| assign out2[15:14] = in1 & select[7]; |
| endmodule |
| |
| |
| module pri_encooder (Op, Funct, Sel, B); |
| input [1:0] Op; |
| input [4:0] Funct; |
| output [1:0] Sel; |
| output B; |
| always@(Op or Funct) |
| casex ({Op, Funct}) |
| {2'b01, 5'bx} : begin |
| Sel = 2'b11; |
| B = 1'b1; |
| end |
| {2'b11, 5'b00011} : begin |
| Sel = 2'b01; |
| B = 1'b1; |
| end |
| {2'b11, 5'b00001} : begin |
| Sel = 2'b10; |
| B = 1'b1; |
| end |
| default : begin |
| Sel = 2'bxx; |
| B = 1'bx; |
| end |
| endcase |
| endmodule |