Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
16704 Discussions

Hello, I would like to Display scroll the word 'DE10' or any word across the six seven segment display of my DE10-Lite board. I can not seem to get it working, would you be able to help me?


//////////////////// SCROLLING DE10 ////////////////////////////////


module DE10_LITE_Default(

 input clock, reset,

 input HEX0, HEX1, HEX2, HEX3, //the 4 inputs for each display

 output a, b, c, d, e, f, g, dp, //the individual LED output for the seven segment along with the digital point

 output [3:0] an  // the 4 bit enable signal



localparam N = 18;


reg [N-1:0]count; //the 18 bit counter which allows us to multiplex at 1000Hz




always @ (posedge clock or posedge reset)


 if (reset)

  count <= 0;


  count <= count + 1;



reg [6:0]sseg_temp; //the 7 bit register to hold the data to output ==== Changed from 'reg' ====

reg [3:0]an_temp; //register for the 4 bit enable


always @ (*)


 case(count[N-1:N-2]) //using only the 2 MSB's of the counter 


  2'b00 : //When the 2 MSB's are 00 enable the fourth display


   sseg = HEX0;

   an_temp = 4'b1110;



  2'b01: //When the 2 MSB's are 01 enable the third display


   sseg = HEX1;

   an_temp = 4'b1101;



  2'b10: //When the 2 MSB's are 10 enable the second display


   sseg = HEX2;

   an_temp = 4'b1011;



  2'b11: //When the 2 MSB's are 11 enable the first display


   sseg = HEX3;

   an_temp = 4'b0111;




assign an = an_temp;



reg [6:0] HEX_Display; // 7 bit register to hold the binary value of each input given


always @ (*)



  4'd0 : HEX_Display = 7'b0111111; //to display dash

  4'd1 : HEX_Display = 7'b0000001; //to display 0

  4'd2 : HEX_Display = 7'b1001111; //to display 1

  4'd3 : HEX_Display = 7'b0110000; //to display E

  4'd4 : HEX_Display = 7'b1000010; //to display d

  4'd5 : HEX_Display = 7'b0111111; //to display dash

  //4'd6 : sseg_temp = 7'b0000010; //to display 6

 // 4'd7 : sseg_temp = 7'b1111000; //to display 7

 // 4'd8 : sseg_temp = 7'b0000000; //to display 8

  //4'd9 : sseg_temp = 7'b0010000; //to display 9

  //default : sseg_temp = 7'b0111111; //dash



assign HEX_Display = {g, f, e, d, c, b, a} ; //concatenate the outputs to the register, this is just a more neat way of doing this.

// I could have done in the case statement: 4'd0 : {g, f, e, d, c, b, a} = 7'b1000000; 

// its the same thing.. write however you like it


assign dp = 1'b1; //since the decimal point is not needed, all 4 of them are turned off




0 Kudos
1 Reply

Hi, you can try out this example tutorial first to get a hand of it. 

FPGA Design with Verilog (7 segment) 

Then you can learn to multiplex in the below link, though it is in VHDL code.

0 Kudos