Verilog: Anfängerproblem

Gast #3124210
Lesenswert?

Hi!

Gerade arbeite ich mich ein wenig in Verilog ein. Dazu habe ich ein 
Modul geschrieben, welches eine x86 Adresse mit Adresse und Segment 
berechnen soll. Dazu habe ich folgenden Code geschrieben:
1
module AddressGenerator(inAddr,inSeg,outAddr,enable);
2
  input [15:0] inAddr;
3
  input [15:0] inSeg;
4
  output [19:0] outAddr;
5
  input enable;
6
  //result = (segment * 10h) + addr
7
  assign outAddr = (enable) ? ({inSeg,1'b0} + inAddr) : 20'bz;
8
  
9
  initial $monitor("Addr: %h, Seg: %h, Enable: %d, Out: %h",inAddr,inSeg,enable,outAddr);
10
   
11
endmodule

Test für Modul:
1
    reg [15:0] inAddr;
2
    reg [15:0] inSeg;
3
    wire [19:0] outAddr;
4
    wire enable;
5
    assign enable = 1;
6
    
7
    AddressGenerator ag(inAddr,inSeg,outAddr,enable);
8
    
9
    initial begin
10
        inAddr = 16'h0;
11
        inSeg = 16'h0;
12
        #5
13
        inAddr = 16'hAB;
14
        #5 inSeg = 16'h230;
15
    end

Im zweiten Teil sollte das Ergebnis '0x23AB' sein ((0x230 * 0x10) + 0xAB 
= 0x23AB). Leider zeigt mir ModelSim folgenden Output an:

# Addr: 0000, Seg: 0000, Enable: 1, Out: 00000
# Addr: 00ab, Seg: 0000, Enable: 1, Out: 000ab
# Addr: 00ab, Seg: 0230, Enable: 1, Out: 0050b

habt ihr eine Idee wo das Problem liegen kann?

Danke im Voraus!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren