Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)
Announcements
Intel Support hours are Monday-Fridays, 8am-5pm PST, except Holidays. Thanks to our community members who provide support during our down time or before we get to your questions. We appreciate you!

Need Forum Guidance? Click here
Search our FPGA Knowledge Articles here.
15336 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?

KRose13
Beginner
214 Views

//////////////////// 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)

 begin

 if (reset)

  count <= 0;

 else

  count <= count + 1;

 end

 

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 @ (*)

 begin

 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

  begin

   sseg = HEX0;

   an_temp = 4'b1110;

  end

  

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

  begin

   sseg = HEX1;

   an_temp = 4'b1101;

  end

  

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

  begin

   sseg = HEX2;

   an_temp = 4'b1011;

  end

   

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

  begin

   sseg = HEX3;

   an_temp = 4'b0111;

  end

 endcase

 end

assign an = an_temp;

 

 

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

 

always @ (*)

 begin

 case(sseg)

  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

 endcase

 end

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

 

 

endmodule

0 Kudos
1 Reply
RichardTanSY_Intel
190 Views

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. 

https://www.fpga4student.com/2017/09/vhdl-code-for-seven-segment-display.html

Reply