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

## Hello, I am trying to convert BCD to Decimal on my DE10-Lite board. I want utilize all all six seven-segment displays but I'm don't know how to go about it. At the moment I can't seem to get two of seven-segments displays to work correctly.

Beginner
660 Views

module DE10_LITE_Default (SW,HEX1,HEX0);

input [3:0]SW;

output [6:0]HEX1,HEX0;

wire z ;

wire [3:0]y , m;

wire [2:0]b;

assign y = {1'b0,b};

//-------------------------

// comparator  compar1(SW[3],SW[2],SW[1],SW[0],z);

circuitA      circuita(SW[2:0],b[2:0]);

multi       multi1(z,SW[3:0],y,m);

circuitB      hex1(z,HEX1);

char_7seg  hex0(m , HEX0 );

//-------------------------

endmodule

//--------------------------------------------------

//module eq2 (

// input wire[1:0] a,b,

// output wire q ) ;

// wire q3, q2,q1,q0;

//assign q = q3|q2|q1|q0;

//assign q3 = ( ~a[1] &~ a[0] ) & (~b[1] &~b[0]);

//assign q2 = ( ~a[1] & a[0] ) & (~b[1] &b[0]);

//assign q1 = ( a[1] &~ a[0] ) & (b[1] &~b[0]);

//assign q0 = ( a[1] & a[0] ) & (b[1] &b[0]);

//endmodule

//------------------------------------------------

//module eq3 (

// input wire[1:0] a,b,

// output wire q ) ;

// wire q1, q0;

//eql  bit0(a[0], b[0], q0);

//eql  bit1( a[1], b[1], q1 );

//assign q = q0&q1;

//endmodule

//-------------------------------------------------

//-------------------------------------

//module eql (

// input wire a,b,

// output wire q ) ;

// wire p0, p1;

//  assign q = p0 |p1;

//  assign p0 = ~a & ~b;

// assign p1 = a & b;

//endmodule

//-----------------------------------

//------------------------------------------

//module comparator(a,b,c,d,q);

//input a,b,c,d;

//output q ;

//wire q5,q4,q3,q2,q1,q0;

//assign q = q5|q4|q3|q2|q1|q0;

//assign q5 = a&~b&c&~d;  //10

//assign q4 = a&~b&c&d;  //11

//assign q3 = a&b&~c&~d;  //12

//assign q2 = a&b&~c&d;  //13

//assign q1 = a&b&c&~d;  //14

//assign q0 = a&b&c&d;   //15

//endmodule

//-----------------------------------------

module circuitA(a,b);

input [2:0]a;

output [2:0]b;

assign b[2:0] = (a[2:0] == 3'b010) ?3'b000 : // 2 ? 0

(a[2:0] == 3'b011) ?3'b001 : // 3 ? 1

(a[2:0] == 3'b100) ?3'b010 : // 4 ? 2

(a[2:0] == 3'b101) ?3'b011 : // 5 ? 3

(a[2:0] == 3'b110) ?3'b100 : // 6 ? 4

(a[2:0] == 3'b111) ?3'b101 :3'b111; // 7 ? 5 : 7

endmodule

//--------------------------------------

module circuitB(a,hex);

input [0:0]a;

output [6:0]hex;

assign hex[6:0] = (a[0] == 1'b1)? 7'b111_1001 : 7'b100_0000; // 1 - 0

endmodule

//-----------------------------------------

module multi(s,x,y,m);

input s;

input [3:0]x,y;

output [3:0]m;

assign m[3] = (~s&x[3] ) | (s&y[3]);

assign m[2] = (~s&x[2] ) | (s&y[2]);

assign m[1] = (~s&x[1] ) | (s&y[1]);

assign m[0] = (~s&x[0] ) | (s&y[0]);

endmodule

//------------------------------------------

module char_7segs(sw,hex);

input [3:0]sw;

output [6:0]hex;

// seg = {g,f,e,d,c,b,a};

// 0 is on and 1 is off

// ---a----

// |    |

// f     b

// |    |

// ---g----

// |    |

// e     c

// |    |

// ---d----

assign hex= (sw[3:0] == 4'b0000 )? 7'b100_0000: // 0

(sw[3:0] == 4'b0001 )? 7'b111_1001: // 1

(sw[3:0] == 4'b0010 )? 7'b010_0100: // 2

(sw[3:0] == 4'b0011 )? 7'b011_0000: // 3

(sw[3:0] == 4'b0100 )? 7'b001_1001: // 4

(sw[3:0] == 4'b0101 )? 7'b001_0010: // 5

(sw[3:0] == 4'b0110 )? 7'b000_0010: // 6

(sw[3:0] == 4'b0111 )? 7'b000_0111: // 7

(sw[3:0] == 4'b1000 )? 7'b000_0000: // 8

(sw[3:0] == 4'b1001 )? 7'b001_1000:7'b111_1111; // 9 - blank

endmodule

//----------------------------------------------------------------

3 Replies
Moderator
646 Views

Hi Kassy,

Could you point out which line in the mass of code is the line that gave rise or suspect to the error.

Thanks,

Regards

Beginner
646 Views

Hello Syafieq_Intel,

I can compile the code but once I have loaded to the DE10-Lite board my display is out.

display results below.

All switches off : HEX1 = 0 , HEX0 = Blank

SW2 switched on: HEX1 and HEX0=0

SW1 and SW2 switched on: HEX1= 0 and HEX0= E

SW0, SW1 and SW2 switched on: HEX1= 0 and HEX0=H

The BCD to decimal display is not functioning correctly and I think the code is to big but I'm not sure how to condense it.

I will need to utilize all six of seven segment display and perhaps using the LED's to indicate the Binary inputs.

Thanks

Kassy

Beginner
646 Views

This is what I am trying to achieve.

Use switches SW7−4 and SW3−0 for the inputs A and B, respectively, and use SW8 for the carry-in. The value of A should be displayed on the 7-segment display HEX5, while B should be on HEX3. Display the BCD sum, S1S0, on HEX1 and HEX0.