2013-01-23 10 views
5

Es ist scheinbar in der Nähe zu arbeiten, es ist nur in Linie 7 anscheinend versauen? Was ist los mit meinem DMux 4 Weg?

/** 
* 4-way demultiplexor. 
* {a,b,c,d} = {in,0,0,0} if sel==00 
*    {0,in,0,0} if sel==01 
*    {0,0,in,0} if sel==10 
*    {0,0,0,in} if sel==11 
*/ 


CHIP DMux4Way { 
    IN in, sel[2]; 
    OUT a, b, c, d; 

    PARTS: 
    DMux(in = in, sel = sel[0], a = out1, b = out2); 

    DMux(in = out1, sel = sel[1], a = a, b = b); 
    DMux(in = out2, sel = sel[1], a = c, b = d); 
} 

Ich habe meine DMux wie folgt umgesetzt, und ich bin nur mit, dass, als ob es ein Baum waren:

/** 
* Dmultiplexor. 
* {a,b} = {in,0} if sel==0 
*   {0,in} if sel==1 
*/ 


CHIP DMux { 
    IN in, sel; 
    OUT a, b; 

    PARTS: 
    Not(in = sel, out = notsel); 
    And(a = in, b = notsel, out = a); 
    And(a = in, b = sel, out = b); 
} 
+2

In welchem ​​HDL willst du deine Sachen schreiben? Es sieht nicht so aus wie VHDL oder Verilog ... – Marty

+2

Es scheint der in nand2tetris Kurs verwendet: http://nand2tetris.org/ –

Antwort

7

Sie haben die richtige Idee! Aber Sie haben begonnen, indem Sie sel [0] im Gegensatz zu sel [1] eingrenzen, was der linken Spalte entspricht.

PS: Ich weiß, ich

bearbeiten spät bin: den festen Code gemäß der Anforderung unten hinzugefügt. Danke für das Feedback

CHIP DMux4Way { 
    IN in, sel[2]; 
    OUT a, b, c, d; 

    PARTS: 
    DMux(in = in, sel = sel[1], a = out1, b = out2); 

    DMux(in = out1, sel = sel[0], a = a, b = b); 
    DMux(in = out2, sel = sel[0], a = c, b = d); 
} 

In Eingrenzung, was zur rechten Spalte in einer Wahrheitstabelle beziehen würde (Das heißt, sel [1]; erinnert von rechts zu beginnen, wenn das Zählen), dann würden Sie effektiv Spaltung sein die Optionen genau in der Mitte

+1

Nichts falsch mit zu spät, wenn niemand anderes geantwortet hat! Sie können auch den korrigierten Code (teilweise) berücksichtigen, um ihn so klar wie möglich zu machen. –

+0

In dieser speziellen Situation sollten Sie die Lösung wirklich nicht veröffentlichen. Ich bin mir nicht sicher, ob Sie das wissen, aber die Autoren fordern ausdrücklich, dass Sie dies nicht tun. – michaelavila

+0

@AdrianWragg: Ich stimme völlig mit Ihnen überein, aber selbst wenn jemand geantwortet hat, ist es nicht falsch spät zu antworten. Alles, was dem q/a einen Mehrwert hinzufügt, ist in Ordnung, egal ob es spät oder früh ist. –