Decoder-Design
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 85 von 90.
Aufgabe
Ein decoder nimmt eine Binärzahl als Eingabe entgegen und schaltet basierend auf dieser Zahl genau einen Ausgang ein. Der Ausgang, der eingeschaltet wird, wird als "One-Hot" bezeichnet, da nur ein Bit "hot" (1) ist und alle others "cold" (0) sind.
Wahrheitstabelle (2-zu-4-Decoder)
| Eingabe (in) | out0 | out1 | out2 | out3 |
|---|---|---|---|---|
| 00 | 1 | 0 | 0 | 0 |
| 01 | 0 | 1 | 0 | 0 |
| 10 | 0 | 0 | 1 | 0 |
| 11 | 0 | 0 | 0 | 1 |
Modulschnittstelle
| Port | Richtung | Breite | Beschreibung |
|---|---|---|---|
in | input | 2 Bits | Binäreingabe (0 bis 3) |
out0 | output | 1 Bit | Aktiv, wenn in = 00 |
out1 | output | 1 Bit | Aktiv, wenn in = 01 |
out2 | output | 1 Bit | Aktiv, wenn in = 10 |
out3 | output | 1 Bit | Aktiv, wenn in = 11 |
Ihre Aufgabe ist es, das unten stehende module mithilfe einer case-Anweisung zu vervollständigen.
Was zu tun ist:
- Wenn
in = 2'b00,out0 = 1, alle anderen 0 - Wenn
in = 2'b01,out1 = 1, alle anderen 0 - Wenn
in = 2'b10,out2 = 1, alle anderen 0 - Wenn
in = 2'b11,out3 = 1, alle anderen 0
Probier es selbst
module decoder (
input [1:0] in,
output reg out0,
output reg out1,
output reg out2,
output reg out3
);
// TODO: Füge always @(*)-Block mit case (in) hinzu
// 2'b00: out0=1, andere 0
// 2'b01: out1=1, andere 0
// 2'b10: out2=1, andere 0
// 2'b11: out3=1, andere 0
endmoduleAlle Lektionen in Grundlagen
1Einführung
Was ist VerilogHardware vs. SoftwareAbstraktionsebenen im DesignDein erstes ModulKommentare4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorVergleichsoperatorenWiederholung – Einfache MathematikBitweise Operatoren7Zuweisung und Gatter
Kontinuierliche ZuweisungZuweisung mit OperatorenIntegrierte Gatter-PrimitiveAND OR NOT GatterXOR XNOR GatterZusammenfassung - Logikgatterschaltung10Entscheidungsfindung
If-AnweisungIf - ElseWiederholung - Einfacher KomparatorCase-AnweisungCasex und CasezWiederholung - ALU-Design5Operatoren Teil 2
Logische OperatorenReduktionsoperatorenShift-OperatorenVerkettungsoperatorBedingter OperatorZusammenfassung – Operator-Challenge11Schleifen
For-SchleifeWhile-SchleifeRepeat-SchleifeEndlosschleifeDisable-AnweisungRückblick – Schleifenmuster3Zahlensystem
Binäre DarstellungZahlen mit GrößenangabeZahlen ohne GrößenangabeNegative ZahlenSpezialwerte X und ZZusammenfassung – Zahlenformate6Module
ModulstrukturEingangs- und Ausgangs-PortsInout-PortsModul-InstanziierungPort-Mapping nach NamePort-Mapping nach ReihenfolgeZusammenfassung – Ein Modul erstellen