1. 程式人生 > >FPGA 二進位制轉bcd碼

FPGA 二進位制轉bcd碼

//這是一個使用Verilog HDL編寫的帶使能端的8-bit二進位制轉BCD碼程式,具有佔用資源少、移植性好、擴充套件方便的特點。   
module bcd(rst_n,binary,bcd);   //rst_n為使能端,binary為待轉換的二進位制數,bcd為轉換後的BCD碼      
parameter B_SIZE=12;				//B_SIZE為二進位制數所佔的位數,可根據需要進行擴充套件 

input       rst_n;                 	//rst_n高電平有效,低電平時
input  		[B_SIZE-1:0] binary;
output reg  [B_SIZE+3:0] bcd;

   
reg  [B_SIZE-1:0] bin;   
//reg  [B_SIZE+3:0] bcd;    //bcd的長度應根據實際情況進行修改   
reg  [B_SIZE+3:0] result;   //result的長度=bcd的長度 
 

  
[email protected]
(binary or rst_n) begin bin= binary; result = 0; if(rst_n == 0) bcd <= 0; else begin repeat(B_SIZE-1)//使用repeat語句進行迴圈計算 begin result[0] = bin[B_SIZE-1]; if(result[3:0] > 4) result[3:0]=result[3:0]+ 4'd3; if(result[7:4] > 4) result[7:4]=result[7:4]+4'd3; if(result[11:8] > 4) result[11:8] = result[11:8]+4'd3; //擴充套件時應參照此三條if語句續寫 if(result[15:12] > 4) result[15:12]= result[15:12]+ 4'd3; result=result<<1; bin=bin<<1; end result[0]= bin[B_SIZE-1]; bcd<=result; end end endmodule