1)適用於DE2-70 的8組 2x1 MUX
//適用於DE2-70 的程式
module mux_8_2x1(
input [17:0]SW,
input [3:0] KEY,
output [17:0] LEDR,
output [7:0] LEDG,
output [6:0] HEX0,
output [6:0] HEX1,
output [6:0] HEX2,
output [6:0] HEX3,
output [6:0] HEX4,
output [6:0] HEX5,
output [6:0] HEX6,
output [6:0] HEX7
);
assign HEX0=7'b111_1111; //off 7-segment Display
assign HEX1=7'b111_1111;
assign HEX2=7'b111_1111;
assign HEX3=7'b111_1111;
assign HEX4=7'b111_1111;
assign HEX5=7'b111_1111;
assign HEX6=7'b111_1111;
assign HEX7=7'b111_1111;
wire [7:0] A ,B ;
wire sel ;
reg [7:0]Y ;
assign A[0]=SW[0];
assign B[0]=SW[1];
assign A[1]=SW[2];
assign B[1]=SW[3];
assign A[2]=SW[4];
assign B[2]=SW[5];
assign A[3]=SW[6];
assign B[3]=SW[7];
assign A[4]=SW[8];
assign B[4]=SW[9];
assign A[5]=SW[10];
assign B[5]=SW[11];
assign A[6]=SW[12];
assign B[6]=SW[13];
assign A[7]=SW[14];
assign B[7]=SW[15];
assign sel=SW[17];
assign {LEDR[15],LEDR[13],LEDR[11],LEDR[9],LEDR[7],LEDR[5],LEDR[3],LEDR[1]}=Y;
always@ (sel , A , B)
begin
if (sel==1)
Y <= B;
else
Y <= A ;
end
endmodule
2)不適用於DE2-70 的8組 2x1 MUX
module mux_8_2x1(
input [7:0] A ,
input [7:0] B ,
input sel ,
output reg [7:0] Y
);
always@ (sel , A , B)
begin
if (sel==1)
Y <= B;
else
Y <= A ;
end
endmodule
3) 測試程式 test bench
`timescale 1ns/1ps
module test_bench1;
reg [7:0]A;
reg [7:0]B;
reg sel;
wire [7:0]Y ;
mux_8_2x1 DUT
(.A(A),.B(B),.sel(sel),.Y(Y));
initial
begin
A=0; B=255; sel=0;
end
always #50 sel=sel+1;
always #50 A=A+1;
always #100 B=B-1;
endmodule