/* The following module coverts a 4 bit signed integer to the respective BCD number on a HEX display.
Sign is displayed as a - or nothing on another HEX display */

module Bto7seg(A, B, S);
input[3:0] A;// 4 bit input
output[6:0] B;// Seven segment output
output[6:0] S;// Sign output
wire[6:0] B;
wire[6:0] S;

/* Defines are used for easy reference to 7 segment bit patterns. */
`define n0 7'b1000000
`define n1 7'b1111001
`define n2 7'b0100100
`define n3 7'b0110000
`define n4 7'b0011001
`define n5 7'b0010010
`define n6 7'b0000011
`define n7 7'b1111000
`define n8 7'b0000000
`define n9 7'b0011000
`define P 7'b1111111
`define N 7'b1111110

/* The condition operator is used to map the 7 segment bit pattern */

assign B = (A == 4'b0000) ? `n0 :
(A == 4'b0001) ? `n1 :
(A == 4'b0010) ? `n2 :
(A == 4'b0011) ? `n3 :
(A == 4'b0100) ? `n4 :
(A == 4'b0101) ? `n5 :
(A == 4'b0110) ? `n6 :
(A == 4'b0111) ? `n7 :
(A == 4'b1111) ? `n1 :
(A == 4'b1110) ? `n2 :
(A == 4'b1101) ? `n3 :
(A == 4'b1100) ? `n4 :
(A == 4'b1011) ? `n5 :
(A == 4'b1010) ? `n6 :
(A == 4'b1001) ? `n7 : `n8;

assign S = (A == 4'b0000) ? `P:
(A == 4'b0001) ? `P :
(A == 4'b0010) ? `P :
(A == 4'b0011) ? `P :
(A == 4'b0100) ? `P :
(A == 4'b0101) ? `P :
(A == 4'b0110) ? `P :
(A == 4'b0111) ? `P :
(A == 4'b1111) ? `N :
(A == 4'b1110) ? `N :
(A == 4'b1101) ? `N :
(A == 4'b1100) ? `N :
(A == 4'b1011) ? `N :
(A == 4'b1010) ? `N :
(A == 4'b1001) ? `N : `N;
endmodule