Respecto a la respuesta de Tom Carpenter, encontré un algoritmo para Double Dabble en Google. Finalmente, agregué 'h30 a cada 4 bits del resultado y ya está
si alguien lo necesita aquí es el código:
////////////////////////////////////////////////////////////////////////////////////
// 18-bit Example //
// //
// B B B B B B B B B B B B B B B B B B //
// I I I I I I I I I I I I I I I I I I //
// N N N N N N N N N N N N N N N N N N //
// 1 1 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 //
// '0 '0 '0 '0 '0 7 6 5 4 3 2 1 0 | | | | | | | | | | //
// | | | | | | | | | | | | | | | | | | | | | | | //
// | | | | V__V__V__V | | | | | | | | | | | | | | | //
// | | | | /IF>4THEN+3\ | | | | | | | | | | | | | | | //
// | | | | \__________/ | | | | | | | | | | | | | | | //
// | | | | | | | | | | | | | | | | | | | | | | | //
// | | | | | V__V__V__V | | | | | | | | | | | | | | //
// | | | | | /IF>4THEN+3\ | | | | | | | | | | | | | | //
// | | | | | \__________/ | | | | | | | | | | | | | | //
// | | | | | | | | | | | | | | | | | | | | | | | //
// | | | | | | V__V__V__V | | | | | | | | | | | | | //
// | | | | | | /IF>4THEN+3\ | | | | | | | | | | | | | //
// | | | | | | \__________/ | | | | | | | | | | | | | //
// | | | | | | | | | | | | | | | | | | | | | | | //
// | | | V__V__V__V V__V__V__V | | | | | | | | | | | | //
// | | | /IF>4THEN+3\/IF>4THEN+3\ | | | | | | | | | | | | //
// | | | \__________/\__________/ | | | | | | | | | | | | //
// | | | | | | | | | | | | | | | | | | | | | | | //
// | | | | V__V__V__V V__V__V__V | | | | | | | | | | | //
// | | | | /IF>4THEN+3\/IF>4THEN+3\ | | | | | | | | | | | //
// | | | | \__________/\__________/ | | | | | | | | | | | //
// | | | | | | | | | | | | | | | | | | | | | | | //
// | | | | | V__V__V__V V__V__V__V | | | | | | | | | | //
// | | | | | /IF>4THEN+3\/IF>4THEN+3\ | | | | | | | | | | //
// | | | | | \__________/\__________/ | | | | | | | | | | //
// | | | | | | | | | | | | | | | | | | | | | | | //
// | | V__V__V__V V__V__V__V V__V__V__V | | | | | | | | | //
// | | /IF>4THEN+3\/IF>4THEN+3\/IF>4THEN+3\ | | | | | | | | | //
// | | \__________/\__________/\__________/ | | | | | | | | | //
// | | | | | | | | | | | | | | | | | | | | | | | //
// | | | V__V__V__V V__V__V__V V__V__V__V | | | | | | | | //
// | | | /IF>4THEN+3\/IF>4THEN+3\/IF>4THEN+3\ | | | | | | | | //
// | | | \__________/\__________/\__________/ | | | | | | | | //
// | | | | | | | | | | | | | | | | | | | | | | | //
// | | | | V__V__V__V V__V__V__V V__V__V__V | | | | | | | //
// | | | | /IF>4THEN+3\/IF>4THEN+3\/IF>4THEN+3\ | | | | | | | //
// | | | | \__________/\__________/\__________/ | | | | | | | //
// | | | | | | | | | | | | | | | | | | | | | | | //
// | V__V__V__V V__V__V__V V__V__V__V V__V__V__V | | | | | | //
// | /IF>4THEN+3\/IF>4THEN+3\/IF>4THEN+3\/IF>4THEN+3\ | | | | | | //
// | \__________/\__________/\__________/\__________/ | | | | | | //
// | | | | | | | | | | | | | | | | | | | | | | | //
// | | V__V__V__V V__V__V__V V__V__V__V V__V__V__V | | | | | //
// | | /IF>4THEN+3\/IF>4THEN+3\/IF>4THEN+3\/IF>4THEN+3\ | | | | | //
// | | \__________/\__________/\__________/\__________/ | | | | | //
// | | | | | | | | | | | | | | | | | | | | | | | //
// | | | V__V__V__V V__V__V__V V__V__V__V V__V__V__V | | | | //
// | | | /IF>4THEN+3\/IF>4THEN+3\/IF>4THEN+3\/IF>4THEN+3\ | | | | //
// | | | \__________/\__________/\__________/\__________/ | | | | //
// | | | | | | | | | | | | | | | | | | | | | | | //
// V__V__V__V V__V__V__V V__V__V__V V__V__V__V V__V__V__V | | | //
// /IF>4THEN+3\/IF>4THEN+3\/IF>4THEN+3\/IF>4THEN+3\/IF>4THEN+3\ | | | //
// \__________/\__________/\__________/\__________/\__________/ | | | //
// | | | | | | | | | | | | | | | | | | | | | | | //
// | V__V__V__V V__V__V__V V__V__V__V V__V__V__V V__V__V__V | | //
// | /IF>4THEN+3\/IF>4THEN+3\/IF>4THEN+3\/IF>4THEN+3\/IF>4THEN+3\ | | //
// | \__________/\__________/\__________/\__________/\__________/ | | //
// | | | | | | | | | | | | | | | | | | | | | | | //
// | | V__V__V__V V__V__V__V V__V__V__V V__V__V__V V__V__V__V | //
// | | /IF>4THEN+3\/IF>4THEN+3\/IF>4THEN+3\/IF>4THEN+3\/IF>4THEN+3\ | //
// | | \__________/\__________/\__________/\__________/\__________/ | //
// | | | | | | | | | | | | | | | | | | | | | | | //
// B B B B B B B B B B B B B B B B B B B B B B B //
// C C C C C C C C C C C C C C C C C C C C C C C //
// D D D D D D D D D D D D D D D D D D D D D D D //
// 2 2 2 1 1 1 1 1 1 1 1 1 1 9 8 7 6 5 4 3 2 1 0 //
// 2 1 0 9 8 7 6 5 4 3 2 1 0 //
// \_______/\__________/\__________/\__________/\__________/\__________/ //
// 100,000's 10,000's 1000's 100's 10's 1's //
// //
////////////////////////////////////////////////////////////////////////////////////
module bin2bcd
#( parameter W = 64) // input width
( input [W-1 :0] bin , // binary
output reg [W+(W-4)/3:0] bcd ); // bcd {...,thousands,hundreds,tens,ones}
integer i,j;
always @(bin) begin
for(i = 0; i <= W+(W-4)/3; i = i+1) bcd[i] = 0; // initialize with zeros
bcd[W-1:0] = bin; // initialize with input vector
for(i = 0; i <= W-4; i = i+1) // iterate on structure depth
for(j = 0; j <= i/3; j = j+1) // iterate on structure width
if (bcd[W-i+4*j -: 4] > 4) // if > 4
bcd[W-i+4*j -: 4] = bcd[W-i+4*j -: 4] + 4'd3; // add 3
end
endmodule
Muchas gracias por tu ayuda!