Ich möchte einen Taschenrechner basierend auf FPGA Board (spartan 3) machen. Ich habe folgenden CodeWie zweistellige BCD in Binär konvertieren?
module bcd_converter(
input [7:0] R,
output reg [3:0] Hundreds,
output reg [3:0] Tens,
output reg [3:0] Ones
);
integer i;
always @ (R)
begin
Hundreds = 4'd0;
Tens = 4'd0;
Ones = 4'd0;
for(i=7;i>=0;i = i-1) begin
if(Hundreds >= 5)
Hundreds = Hundreds + 3;
if(Tens >= 5)
Tens = Tens + 3;
if(Ones >= 5)
Ones = Ones + 3;
Hundreds = Hundreds<<1;
Hundreds[0] = Tens[3];
Tens = Tens << 1;
Tens[0] = Ones[3];
Ones = Ones<<1;
Ones[0] = R[i];
end
end
endmodule
Der Code zur Verfügung stellt jedoch Konvertierung nur für Binär in BCD. Ich suche nach einer Möglichkeit, diesen Algorithmus umzukehren. Gibt es eine bessere Möglichkeit, BCD in Binär zu konvertieren?
Für 2 BCD-Ziffern gibt es nur 100 Werte. Sie können also eine case-Anweisung mit 100 Einträgen verwenden und den Compiler für sich arbeiten lassen. – aja