FPGA 二進位制轉bcd碼
阿新 • • 發佈:2018-12-18
//這是一個使用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