2020年2月1日 星期六

DE2-115 16x4 Priority Encoder (Using Data flow assign )

DE2-115 16x4 Priority Encoder (Using Data flow assign )

//需 Import  pin assignments  DE2_115_pin_assignments




module Encoder(
  //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 [2:0] mess, // MESSAGE STATUS (see lcd_test)
  input [1:0] isServer // SERVER STATUS (see lcd_test)
  */
);

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

// turn LCD ON
//assign LCD_ON  = 1'b1;
//assign LCD_BLON = 1'b1;

// blank unused 7-segment digits
// blank unused 7-segment digits
//assign HEX0 = 7'b111_1111;
//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;

assign LEDR=SW;
prio_enco_16x4( LEDG[3:0],SW[15:0],SW[17] );

endmodule




module prio_enco_16x4(d_out, d_in ,en);

   output [3:0] d_out;
   input [15:0] d_in ;
   input en;

  assign d_out = ( (en==1'b1) && (d_in[15] ==1'b1 )) ? 4'b1111:
((en==1'b1) &&(d_in[14] ==1'b1 )) ? 4'b1110:
((en==1'b1) &&(d_in[13] ==1'b1 )) ? 4'b1101:
((en==1'b1) &&(d_in[12] ==1'b1 )) ? 4'b1100:
((en==1'b1) &&(d_in[11] ==1'b1 )) ? 4'b1011:
((en==1'b1) &&(d_in[10] ==1'b1 )) ? 4'b1010:
((en==1'b1) &&(d_in[9] ==1'b1 )) ? 4'b1001:
((en==1'b1) &&(d_in[8] ==1'b1 )) ? 4'b1000:
((en==1'b1) &&(d_in[7] ==1'b1 )) ? 4'b0111:
((en==1'b1) &&(d_in[6] ==1'b1 )) ? 4'b0110:
((en==1'b1) &&(d_in[5] ==1'b1 )) ? 4'b0101:
((en==1'b1) &&(d_in[4] ==1'b1 )) ? 4'b0100:
  ((en==1'b1) &&(d_in[3] ==1'b1 )) ? 4'b0011:
  ((en==1'b1) &&(d_in[2] ==1'b1 )) ? 4'b0010:
  ((en==1'b1) &&(d_in[1] ==1'b1 )) ? 4'b0001:
  ((en==1'b1) &&(d_in[0] ==1'b1 )) ? 4'b0000: 4'bxxxx ;
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...