2014年6月15日 星期日

Verilog code for 74LS151 8-INPUT MULTIPLEXER ----適用於DE2-70

8-INPUT MULTIPLEXER 
 The TTL/MSI SN54/74LS151 is a high speed 8-input Digital Multiplexer.

module Mux_8x1_LS151(En, Sel ,I, Dout);
   input En;
   input [2:0] Sel;
   input [7:0] I;
   output reg [1:0] Dout;
 
   always @ (Sel or En or I )
   begin
      if (En==1'b1)
          Dout<=2'b10;
      else  
       case (Sel)
       3'b000 :   Dout<={~I[0],I[0]};
       3'b001 :   Dout<={~I[1],I[1]};
       3'b010 :   Dout<={~I[2],I[2]};
       3'b011 :   Dout<={~I[3],I[3]};
       3'b100 :   Dout<={~I[4],I[4]};
       3'b101 :   Dout<={~I[5],I[5]};
       3'b110 :   Dout<={~I[6],I[6]};
       3'b111 :   Dout<={~I[7],I[7]};
       endcase
 
  end
     
 endmodule









module Mux_8x1(
  input CLOCK_50,     //    50 MHz clock
  input [3:0] KEY,      //    Pushbutton[3:0]
  input [17:0] SW,     //    Toggle Switch[17:0]
  output [6:0]    HEX0,HEX1,HEX2,HEX3,HEX4,HEX5,HEX6,HEX7,  // Seven Segment Digits
  output [8:0] LEDG,   //    LED Green
  output [17:0] LEDR,   //    LED Red
  inout [35:0] GPIO_0,GPIO_1,    //    GPIO Connections
//    LCD Module 16X2
  output LCD_ON,     // LCD Power ON/OFF
  output LCD_BLON,     // LCD Back Light ON/OFF
  output LCD_RW,     // LCD Read/Write Select, 0 = Write, 1 = Read
  output LCD_EN,     // LCD Enable
  output LCD_RS,     // LCD Command/Data Select, 0 = Command, 1 = Data
  inout [7:0] LCD_DATA, // LCD Data bus 8 bits
  input  UART_RXD, //RS232 RXD
  output UART_TXD //RS232 TXD
);

//    All inout port turn to tri-state
assign    GPIO_0        =    36'hzzzzzzzzz;
assign    GPIO_1        =    36'hzzzzzzzzz;

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;

//Mux_8x1_LS151
Mux_8x1_LS151(SW[17],SW[15:13],SW[7:0],LEDR[1:0]);


endmodule





 module Mux_8x1_LS151(En, Sel ,I, Dout);
   input En;
   input [2:0] Sel;
   input [7:0] I;
   output reg [1:0] Dout;
 
   always @ (Sel or En or I )
   begin
      if (En==1'b1)
          Dout<=2'b10;
      else  
       case (Sel)
       3'b000 :   Dout<={~I[0],I[0]};
       3'b001 :   Dout<={~I[1],I[1]};
       3'b010 :   Dout<={~I[2],I[2]};
       3'b011 :   Dout<={~I[3],I[3]};
       3'b100 :   Dout<={~I[4],I[4]};
       3'b101 :   Dout<={~I[5],I[5]};
       3'b110 :   Dout<={~I[6],I[6]};
       3'b111 :   Dout<={~I[7],I[7]};
       endcase
 
   
 
  end
     
 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...