2014年5月31日 星期六

Quartus II 9.1和DE2基本使用方法----入門(2) 多工器的設計與模擬

多工器的設計與模擬

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







沒有留言:

張貼留言

Node-Red & ModeBus FC=1

Node-Red & ModeBus FC=1 write address=0..7   8bits read address=16..23 8bits  [{"id":"cf7c1253d4d997dd","type&q...