2014年6月1日 星期日

Quartus II 9.1和DE2基本使用方法----入門(3) 數位比較器的設計與模擬

入門(3) 數位比較器的設計與模擬

1). 適用於DE2-70 的8bit 比較器的設計(可以下載到DE2-70)

module comp_8bit(

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;
reg [2:0]Y ;

assign A=SW[7:0];
assign B=SW[15:8];
assign LEDR[2:0]=Y;

always@(A,B)
begin
  if (A==B)
     begin
      Y[0]=0;
      Y[1]=1;
      Y[2]=0;  //{0,1,0};
     end      
  else if (A>B)
     begin
      Y[1]=0;
      Y[0]=1;
      Y[2]=0;  //{1,0,0};
     end
  else
     begin
      Y[1]=0;
      Y[0]=0;
      Y[2]=1;  //{0,0,1};
     end

end
endmodule

2). 不適用於DE2-70 的8bit 比較器的設計
module comp_8bit(
input [7:0]A,
input [7:0]B,
output reg [2:0]Y 
);


always@(A,B)
begin
  if (A==B)
     begin
      Y[0]=0;
      Y[1]=1;
      Y[2]=0;  //{0,1,0};
     end       
  else if (A>B)
     begin
      Y[1]=0;
      Y[0]=1;
      Y[2]=0;  //{1,0,0};
     end  
  else
     begin
      Y[1]=0;
      Y[0]=0;
      Y[2]=1;  //{0,0,1};
     end  

end
endmodule
         

3). 測試程式test bench

`timescale 1ns/1ps
module test_bench1;

reg [7:0]A;
reg [7:0]B;
wire [7:0]Y ;

comp_8bit DUT 
(.A(A),.B(B),.Y(Y));

initial 

begin
A=0; B=10;
end
always #50 A=A+1;
always #50 B=B-1;


endmodule









沒有留言:

張貼留言

2024_09 作業3 以Node-Red 為主

 2024_09 作業3  (以Node-Red 為主  Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker  2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...