Advertisement
Guest User

BCD Previous - Marcelo Cárdenas

a guest
May 4th, 2015
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module bcdcounter_pre(cuenta_bcd, cuenta_prev);
  2.    
  3.      input [15:0] cuenta_bcd;
  4.      output reg [15:0] cuenta_prev;
  5.      
  6.     wire d0_0;//indica si el dígito 1 llegó a 0
  7.     wire d1_0;//indica si el dígito 2 llegó a 0
  8.     wire d2_0;//indica si el dígito 3 llegó a 0
  9.     wire d3_0;//indica si el dígito 4 llegó a 0
  10.  
  11.     assign d0_0=(cuenta_bcd[3:0]==4'd0);
  12.     assign d1_0=(cuenta_bcd[7:4]==4'd0);
  13.     assign d2_0=(cuenta_bcd[11:8]==4'd0);
  14.     assign d3_0=(cuenta_bcd[15:12]==4'd0);
  15.  
  16.  
  17.     always@(*)
  18.         if(d0_0)
  19.             cuenta_prev[3:0] = 4'd9;
  20.         else
  21.             cuenta_prev[3:0] = cuenta_bcd[3:0] - 4'd1;
  22.  
  23.     always@(*)
  24.         case({d1_0,d0_0})
  25.             2'b01:cuenta_prev[7:4] = cuenta_bcd[7:4] - 4'd1;
  26.             2'b11:cuenta_prev[7:4] = 4'd9;
  27.             default:cuenta_prev[7:4] = cuenta_bcd[7:4];
  28.         endcase
  29.  
  30.     always@(*)
  31.         case({d2_0,d1_0,d0_0})
  32.             3'b011:cuenta_prev[11:8] = cuenta_bcd[11:8] - 4'd1;
  33.             3'b111:cuenta_prev[11:8] = 4'd9;
  34.             default:cuenta_prev[11:8] = cuenta_bcd[11:8];
  35.         endcase
  36.  
  37.     always@(*)
  38.     case({d3_0,d2_0,d1_0,d0_0})
  39.         4'b0111:cuenta_prev[15:12] = cuenta_bcd[15:12] - 4'd1;
  40.         4'b1111:cuenta_prev[15:12] = 4'd9;
  41.         default:cuenta_prev[15:12] = cuenta_bcd[15:12];
  42.          endcase
  43.  
  44.  
  45.  
  46. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement