首先,这里设计的是一个8选1的的选择器,在这里博主的代码风格可能与之前会有所变化,毕竟去了公司,就都按照公司的代码风格来写了;另外,会了8选1之后,再进行其他的128选一等都是比较容易的,无非就是多写8选1而已。话不多说直接上代码。
module MUX8_1
(
clk,
rst_n,
input wire [7:0] i0,
input wire [7:0] i1,
input wire [7:0] i2,
input wire [7:0] i3,
input wire [7:0] i4,
input wire [7:0] i5,
input wire [7:0] i6,
input wire [7:0] i7,
input wire [2:0] sel,
output reg [7:0] dout
);
always@(posedge clk or negedge rst_n)begin
if(!rst_n)begin
dout <= 8'b0;
end
else begin
case (sel) begin
3'b0 : dout <= i0;
3'b1 : dout <= i1;
3'b2 : dout <= i2;
3'b3 : dout <= i3;
3'b4 : dout <= i4;
3'b5 : dout <= i5;
3'b6 : dout <= i6;
3'b7 : dout <= i7;
default : dout <= 8'b0;
endcase
end
end
endmodule