Neben einer signierten und unsignierten Nummer eins

P

particleynamics

Guest
Ich versuche, eine signierte und eine vorzeichenlose Zahl in Verilog hinzuzufügen. Kann mir jemand sagen, wie? Bin nicht in der Lage zu tun .. : (
 
Verwenden Sie 'unterzeichnet' / 'unsigned' Schlüsselwort. ex:. Draht unterzeichnet [7:0] a;
 
Ich meinte, ich hv Signe, eine Zahl mit einer nicht signierte Add .. zum Beispiel 20 + 10, 20 + (-10), 20 + (-30) Im Grunde ein Addierer Subtrahierer Block, in dem ein Eingang wird unterzeichnet und die othe unsigniert. Wie mache ich das??
 
20 +10, 20 + (-10), 20 + (-30) All dies sind Zahlen ohne Vorzeichen. Um festzulegen, wie sie unterzeichnet Verwendung 6'sd20 +6' 6'sd20 SD10 + (-6'sd10) 6'sd20 + (-6'sd30) In diesem Fall ist Ergebnis der Operation wird signiert.
 
In Verilog, alle Operanden für das Ergebnis unterschrieben werden muss unterschrieben werden, sonst wird das Ergebnis nicht signiert. Alle arithmetischen ist 2-Komplement. Der einzige Unterschied zwischen mit und ohne Vorzeichen ist, wie relationale Operatoren funktionieren und wie geringere Breite unterzeichnet Werte Zeichen werden in größerer Breite unterzeichnet Werte erweitert. Wenn das die Breite eines unterzeichneten Operand ist kleiner als der Operand ohne Vorzeichen im selben Ausdruck, es ist an Ihnen zu unterzeichnen verlängern die kleineren Operanden.
 
eigentlich habe ich on't die Ausgabe in Form von 32.758 für -10 wollen als Ausgang, wie ich es will, wenn ich -10 20-30 getan haben. Wie implementiert man das? thanx fr ur Antworten .. plz hlp mich lösen dieses problms. Ich werde anhängen Prüfstand if u want.
 
Das ist die Momentaufnahme Ich bekomme .. Ich möchte die Ergebnisse als -10, 0 etc etc..
 
Sie müssen die Breiten unterzeichnet Zahlen ohne Vorzeichen im Vergleich zu verstehen. Sie scheinen mit allen 16-Bit-Zahlen arbeiten. Wenn der erste Operand vorzeichenlose 16-Bit und das zweite ist 16-Bit-, woher wollen Sie das Ergebnis der 16'hFFFF + 0 zu vertreten? Sie müssen entweder den ersten Operanden zu 15 Bit oder Hersteller das Ergebnis 17-Bit-zu reduzieren.
 
unserer Zahl ohne Vorzeichen ist 16 Bits in (sie beträgt nvr nie einen negativen Wert haben kann), während die andere Zahl vorzeichenbehafteten n von 30 Bits lang .. wollen wir addieren oder subtrahieren je nach Vorzeichen der Zahl mit Vorzeichen .. Can u schreiben Sie bitte einen Code auf, wie es geht? thanx fr d Hilfe :)
 
Code:
 unterzeichnet reg [31:0] Ergebnis; reg unterzeichnet [31:0] operand1; reg [15:0] operand2; immer [...] beginnen ... result = operand1 + operand2; ... Ende
 
Ich habe versucht, den Code gegeben .. Es wird einfach nur mit den beiden geben ein negatives Vorzeichen .. Can u pls dieses Problem lösen?? Es hat so viele Tage und u Menschen nicht lösen konnte ein Problem! [COLOR = "Silver"] [SIZE = 1] ---------- Beitrag hinzugefügt um 17:21 Uhr ----- ----- Der vorherige Eintrag war um 17:20 ---------- [/SIZE] [/COLOR] Es ist zu addieren oder subtrahieren je nach dem Vorzeichen der Zahl unterzeichnet .. thats, was ich immer gefragt haben .. u kann nicht Menschen geben Lösung dafür???
 
Ich glaube, Sie brauchen, um die Zahl ohne Vorzeichen zu einer Zahl mit Vorzeichen, zuerst konvertieren, dann fügen Sie es dem anderen (signiert) Nummer.
 
Geez, dann fragst du mich? Ich noch nie von Verilog gehört, bevor ich in diesen Thread geschaut! Versuchen wir es trotzdem ein Bash. Das PDF im Zusammenhang mit in Beitrag 7 wird erklärt, wie Typumwandlung zu tun. Anscheinend muss man die Tasten $ unterzeichnet -Operator, so: Angenommen, Sie haben eine vorzeichenlose Zahl A und eine signierte Zahl B. Erste erklären anderes unterzeichnet Zahl C. Dann nutzen Sie diesen Code:
Code:
 C = $ signed (A)
Dann fügen B und C.
 
particleynamics, müssen Sie den Code, den Sie laufen zu zeigen. Es hat entweder einen Bug, oder der Simulator Sie verwenden einen Bug hat. Ich habe gerade versucht dies mit ModelSim
Code:
-Modul oben; reg unterzeichnet [31:0] operand1; reg [15:0] operand2; reg unterzeichnet [31:0] Ergebnis; anfänglichen beginnen operand1 = -1; operand2 = 10; Ergebnis = operand1 + operand2; $ display (Ergebnis, operand1,, operand2); Ende Endmodul
und das Ergebnis bekomme ich
Code:
 # 9 -1 10
 
Dave_59 bin mit XILINX ... n der Code sieht wie folgt aus .. Pls helpme .. Modul Addierer (Ergebnis operand1, operand2); Eingabe unterzeichnet [31:0] operand1; Input [15:0] operand2; Ausgang unterzeichnet [31:0] Ergebnis; reg unterzeichnet [31:0] Ergebnis; immer @ (operand1, operand2) beginnen result = operand1 operand2 +; Ende Endmodul
 
ich manuell zuweisen zufällige Werte in der Testbench .. nicht hv ein Programm für sie ...
 
Es gibt kein Problem mit Ihrem Code. es so, wie Ihr Simulator wird die Anzeige der Werte der obersten Ebene. Dies funktioniert für mich.
Code:
-Modul Addierers (Input Draht unterzeichnet [31:0] operand1, Eingang Draht [15:0] operand2, Ausgabe reg unterzeichnet [31:0] result); immer @ (operand1 oder operand2) result = operand1 + operand2; Endmodul Modul oben; reg unterzeichnet [31:0] OP1; reg [15:0] OP2; Draht unterzeichnet [31:0] Ergebnis; Addierer A1 (OP1, OP2, result); anfänglichen beginnen OP1 = -1; OP2 = 10; # 10 $ display (Ergebnis, OP1,, OP2); Ende Endmodul
 

Welcome to EDABoard.com

Sponsor

Back
Top