-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbin2BCD.v
41 lines (30 loc) · 1.06 KB
/
bin2BCD.v
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
module bin2BCD (binario_in, unidade, dezena, centena, milhar);
parameter bits_in = 8;
input [bits_in-1:0] binario_in;
output [3:0] unidade, dezena, centena, milhar;
reg [15:0] bcd;
reg [bits_in-1:0] binario;
reg [7:0] i;
assign unidade = bcd[3:0];
assign dezena = bcd[7:4];
assign centena = bcd[11:8];
assign milhar = bcd[15:12];
always @ (binario_in)
begin
bcd = 0;
binario = binario_in;
for (i = 0; i < bits_in; i = i+1) //run for 8 iterations
begin
bcd = {bcd[14:0],binario[bits_in-1-i]}; //concatenation
//if a hex digit of 'bcd' is more than 4, add 3 to it.
if(i < 7 && bcd[3:0] > 4)
bcd[3:0] = bcd[3:0] + 3;
if(i < 7 && bcd[7:4] > 4)
bcd[7:4] = bcd[7:4] + 3;
if(i < 7 && bcd[11:8] > 4)
bcd[11:8] = bcd[11:8] + 3;
if(i < 7 && bcd[15:12] > 4)
bcd[15:12] = bcd[15:12] + 3;
end
end
endmodule