Gast
#1458967
Ich schreibe im Moment mit Verilog einen Floating-Point-Adder/Subtractor. Ja, ich weiß, das gibt's schon tausend Mal, aber es ist ein Problem, das für mich als Anfänger die richtige Größenordung hat, und daher zum Lernen gut geeignet. Jedenfalls ist das Problem: Ich muss nach der Addition oder Subtraktion der Mantissen die resultierende Mantisse wieder normalisieren, also left-shiften, so dass die höchste Eins auf der Position des hidden bit steht. Aber dazu muss ich wissen, wie weit ich zu shiften habe, also wo diese erste Eins überhaupt steht. Nun könnte ich einfach so lange jeweils um eine Position bewegen, bis das hidden bit Eins ist, aber da das in möglichst wenigen Taktzyklen fertig sein soll, ist das ausgeschlossen. Im Moment benutze ich als Notlösung eine if-Kaskade, um für jede Stelle abzufragen, ob dort eine Eins steht. Aber das ist auch eine reichlich dämliche Lösung. Ich hätte gerne eine Möglichkeit, das möglichst einfach ohne ifs zu machen. Gibt es da einen allgemein bekannten einfachen Weg? Ich habe nichts gefunden. Oder macht man die Sache vielleicht auch ganz anders?