S
saurster
Guest
HI
Jeg har et merkelig problem.Har ikke sett denne b4.Jeg prøver å modellere porter som er toveis.Jeg bruker kontinuerlig oppgave uttalelser å tilordne verdier til I / O lines fra registre.For eksempel
/ / CODE
tildele IO_1 = reg1 [0];
tildele IO_2 = reg1 [1];
.....
.....
der disc18 er et register.Jeg har 8 registre dvs. 64 I / O lines.når jeg sim min design, IO_1 til IO_19 er tildelt riktig, men alle IOS etter det har påstand problemer.Etter å ha gransket dataflyt modellen viser det seg at biter av registrene 3 til registre 8 kjører flere IO-linjer selv om de IO-linjene er tildelt individuelt fra ulike biter av ulike registre.
Jeg har ingen anelse.Hvis noen vet noe, må jeg være takknemlige
takk
-Saurster
selve koden er som følgermodul test_io (IO_1, IO_2, IO_3, IO_4, IO_5, IO_6, IO_7, IO_8, IO_9, IO_10,
IO_11, IO_12, IO_13, IO_14, IO_15, IO_16, IO_17, IO_18, IO_19, IO_20,
IO_21, IO_22, IO_23, IO_24, IO_25, IO_26, IO_27, IO_28, IO_29, IO_30,
IO_31, IO_32, IO_33, IO_34, IO_35, IO_36, IO_37, IO_38, IO_39, IO_40,
IO_41, IO_42, IO_43, IO_44, IO_45, IO_46, IO_47, IO_48, IO_49, IO_50,
IO_51, IO_52, IO_53, IO_54, IO_55, IO_56, IO_57, IO_58, IO_59, IO_60,
IO_61, IO_62, IO_63, IO_64, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9,
A10, A11, A12, A13, A14, A15, D, pclk, RESET, WE_N, RD_N, ALE, HW0, hw1, HW2, HW3);Inout IO_1, IO_2, IO_3, IO_4, IO_5, IO_6, IO_7, IO_8, IO_9, IO_10;
Inout IO_11, IO_12, IO_13, IO_14, IO_15, IO_16, IO_17, IO_18, IO_19, IO_20;
Inout IO_21, IO_22, IO_23, IO_24, IO_25, IO_26, IO_27, IO_28, IO_29, IO_30;
Inout IO_31, IO_32, IO_33, IO_34, IO_35, IO_36, IO_37, IO_38, IO_39, IO_40;
Inout IO_41, IO_42, IO_43, IO_44, IO_45, IO_46, IO_47, IO_48, IO_49, IO_50;
Inout IO_51, IO_52, IO_53, IO_54, IO_55, IO_56, IO_57, IO_58, IO_59, IO_60;
Inout IO_61, IO_62, IO_63, IO_64;/ / Microprocessor buss
input A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15;
input pclk;
input RESET;
input WE_N, RD_N, ALE;
input HW0, hw1, HW2, HW3;
Inout [0:7] D;
/ / Intern Definisjoner
reg [0:7] data2proc;
/ / reg [0:7] datafromproc;
wire [15:0] adresse;
reg [0:7] disc18;
reg [0:7] disc916;
reg [0:7] disc1724;
reg [0:7] disc2532;
reg [0:7] disc3340;
reg [0:7] disc4148;
reg [0:7] disc4956;
reg [0:7] disc5764;
reg [0:7] retning;
wire [3:0] HW;
parameter [15:0] add1 = 16'hc010,
add2 = 16'hc011,
add3 = 16'hc012,
add4 = 16'hc013,
add5 = 16'hc014,
add6 = 16'hc015,
add7 = 16'hc016,
add8 = 16'hc017;
parameter [3:0] INVALID1 = 4'h0,
CD = 4'h1,
NAV = 4'h2,
INVALID2 = 4'hf;
tildele adresse = (~ ALE)?(A15, A14, A13, A12, A11, A10, A9, A8, A7, A6, A5, A4, A3, A2, A1, A0): 16'hz;
tildele HW = (HW3, HW2, hw1, HW0);
/ *
alltid @ (WE_N eller ALE eller D eller adresse)
begynne
case (adresse)
dir: begin
if ((~ WE_N) & & (~ ALE))
begynne
direction = D;
slutt
slutt
endcase
end * /
alltid @ (HW)
begynne
case (HW)
INVALID1: begin
direction = 8'hff;
slutt
CD: begin
direction = 8'b00000000;
slutt
NAV: begin
direction = 8'b11000000;
slutt
INVALID2: begin
direction = 8'h00;
slutt
endcase
slutt
tildele D = ((~ RD_N) & & (~ ALE))?data2proc: 8'bz;
alltid @ (adresse eller retning eller WE_N eller ALE eller D eller
IO_1 eller IO_2 eller IO_3 eller IO_4 eller IO_5 eller IO_6 eller IO_7 eller IO_8 eller
IO_9 eller IO_10 eller IO_11 eller IO_12 eller IO_13 eller IO_14 eller IO_15 eller IO_16 eller
IO_17 eller IO_18 eller IO_19 eller IO_20 eller IO_21 eller IO_22 eller IO_23 eller IO_24 eller IO_25 eller IO_26 eller
IO_27 eller IO_28 eller IO_29 eller IO_30 eller IO_31 eller IO_32 eller IO_33 eller IO_34 eller IO_35 eller IO_36 eller
IO_37 eller IO_38 eller IO_39 eller IO_40 eller IO_41 eller IO_42 eller IO_43 eller IO_44 eller IO_45 eller IO_46 eller
IO_47 eller IO_48 eller IO_49 eller IO_50 eller IO_51 eller IO_52 eller IO_53 eller IO_54 eller IO_55 eller IO_56 eller
IO_57 eller IO_58 eller IO_59 eller IO_60 eller IO_61 eller IO_62 eller IO_63 eller IO_64)
begynne
case (adresse)
add1: begin
if (retning [0])
begynne
data2proc = (IO_1, IO_2, IO_3, IO_4, IO_5, IO_6, IO_7, IO_8);
slutt
else if ((~ retning [0]) & & (~ WE_N) & & (~ ALE))
begynne
disc18 <= D;
slutt
slutt
add2: begin
if (retning [1])
begynne
data2proc <= (IO_9, IO_10, IO_11, IO_12, IO_13, IO_14, IO_15, IO_16);
slutt
else if ((~ retning [1]) & & (~ WE_N) & & (~ ALE))
begynne
disc916 <= D;
slutt
slutt
add3: begin
if (retning [2])
begynne
data2proc <= (IO_17, IO_18, IO_19, IO_20, IO_21, IO_22, IO_23, IO_24);
slutt
else if ((~ retning [2]) & & (~ WE_N) & & (~ ALE))
begynne
disc1724 <= D;
slutt
slutt
add4: begin
if (retning [3])
begynne
data2proc <= (IO_25, IO_26, IO_27, IO_28, IO_29, IO_30, IO_31, IO_32);
slutt
else if ((~ retning [3]) & & (~ WE_N) & & (~ ALE))
begynne
disc2532 <= D;
slutt
slutt
add5: begin
if (retning [4])
begynne
data2proc <= (IO_33, IO_34, IO_35, IO_36, IO_37, IO_38, IO_39, IO_40);
slutt
else if ((~ retning [4]) & & (~ WE_N) & & (~ ALE))
begynne
disc3340 <= D;
slutt
slutt
add6: begin
if (retning [5])
begynne
data2proc <= (IO_41, IO_42, IO_43, IO_44, IO_45, IO_46, IO_47, IO_48);
slutt
else if ((~ retning [5]) & & (~ WE_N) & & (~ ALE))
begynne
disc4148 <= D;
slutt
slutt
add7: begin
if (retning [6])
begynne
data2proc <= (IO_49, IO_50, IO_51, IO_52, IO_53, IO_54, IO_55, IO_56);
slutt
else if ((~ retning [6]) & & (~ WE_N) & & (~ ALE))
begynne
disc4956 <= D;
slutt
slutt
add8: begin
if (retning [7])
begynne
data2proc <= (IO_57, IO_58, IO_59, IO_60, IO_61, IO_62, IO_63, IO_64);
slutt
else if ((~ retning [7]) & & (~ WE_N) & & (~ ALE))
begynne
disc5764 <= D;
slutt
slutt
endcase
slutt
/ / Overdragelse til første discIO banken
tildele IO_1 = disc18 [0]
tildele IO_2 = disc18 [1];
tildele IO_3 = disc18 [2];
tildele IO_4 = disc18 [3];
tildele IO_5 = disc18 [4];
tildele IO_6 = disc18 [5];
tildele IO_7 = disc18 [6];
tildele IO_8 = disc18 [7];
/ / Overdragelse til 2. platen IO bank
tildele IO_9 = disc916 [0];
tildele IO_10 = disc916 [1];
tildele IO_11 = disc916 [2];
tildele IO_12 = disc916 [3];
tildele IO_13 = disc916 [4];
tildele IO_14 = disc916 [5];
tildele IO_15 = disc916 [6];
tildele IO_16 = disc916 [7];
/ / Overdragelse til 3. IO banken
tildele IO_17 = disc1724 [0];
tildele IO_18 = disc1724 [1];
tildele IO_19 = disc1724 [2];
tildele IO_20 = disc1724 [3];
tildele IO_21 = disc1724 [4];
tildele IO_22 = disc1724 [5];
tildele IO_23 = disc1724 [6];
tildele IO_24 = disc1724 [7];
/ / Overdragelse til 4. IO banken
tildele IO_25 = disc2532 [0];
tildele IO_26 = disc2532 [1];
tildele IO_27 = disc2532 [2];
tildele IO_28 = disc2532 [3];
tildele IO_29 = disc2532 [4];
tildele IO_30 = disc2532 [5];
tildele IO_31 = disc2532 [6];
tildele IO_32 = disc2532 [7];
/ / Overdragelse til 5. IO banken
tildele IO_33 = disc3340 [0];
tildele IO_34 = disc3340 [1];
tildele IO_35 = disc3340 [2];
tildele IO_36 = disc3340 [3];
tildele IO_37 = disc3340 [4];
tildele IO_38 = disc3340 [5];
tildele IO_39 = disc3340 [6];
tildele IO_40 = disc3340 [7];
/ / Overdragelse til 5. IO banken
tildele IO_41 = disc4148 [0];
tildele IO_42 = disc4148 [1];
tildele IO_43 = disc4148 [2];
tildele IO_44 = disc4148 [3];
tildele IO_45 = disc4148 [4];
tildele IO_46 = disc4148 [5];
tildele IO_47 = disc4148 [6];
tildele IO_48 = disc4148 [7];
/ / Overdragelse til det 6. IO banken
tildele IO_49 = disc4956 [0];
tildele IO_50 = disc4956 [1];
tildele IO_51 = disc4956 [2];
tildele IO_52 = disc4956 [3];
tildele IO_53 = disc4956 [4];
tildele IO_54 = disc4956 [5];
tildele IO_55 = disc4956 [6];
tildele IO_56 = disc4956 [7];
/ / Overdragelse til 7. IO banken
tildele IO_57 = disc5764 [0];
tildele IO_58 = disc5764 [1];
tildele IO_59 = disc5764 [2];
tildele IO_60 = disc5764 [3];
tildele IO_61 = disc5764 [4];
tildele IO_62 = disc5764 [5];
tildele IO_63 = disc5764 [6];
tildele IO_64 = disc5764 [7];
endmodule
Jeg har et merkelig problem.Har ikke sett denne b4.Jeg prøver å modellere porter som er toveis.Jeg bruker kontinuerlig oppgave uttalelser å tilordne verdier til I / O lines fra registre.For eksempel
/ / CODE
tildele IO_1 = reg1 [0];
tildele IO_2 = reg1 [1];
.....
.....
der disc18 er et register.Jeg har 8 registre dvs. 64 I / O lines.når jeg sim min design, IO_1 til IO_19 er tildelt riktig, men alle IOS etter det har påstand problemer.Etter å ha gransket dataflyt modellen viser det seg at biter av registrene 3 til registre 8 kjører flere IO-linjer selv om de IO-linjene er tildelt individuelt fra ulike biter av ulike registre.
Jeg har ingen anelse.Hvis noen vet noe, må jeg være takknemlige
takk
-Saurster
selve koden er som følgermodul test_io (IO_1, IO_2, IO_3, IO_4, IO_5, IO_6, IO_7, IO_8, IO_9, IO_10,
IO_11, IO_12, IO_13, IO_14, IO_15, IO_16, IO_17, IO_18, IO_19, IO_20,
IO_21, IO_22, IO_23, IO_24, IO_25, IO_26, IO_27, IO_28, IO_29, IO_30,
IO_31, IO_32, IO_33, IO_34, IO_35, IO_36, IO_37, IO_38, IO_39, IO_40,
IO_41, IO_42, IO_43, IO_44, IO_45, IO_46, IO_47, IO_48, IO_49, IO_50,
IO_51, IO_52, IO_53, IO_54, IO_55, IO_56, IO_57, IO_58, IO_59, IO_60,
IO_61, IO_62, IO_63, IO_64, A0, A1, A2, A3, A4, A5, A6, A7, A8, A9,
A10, A11, A12, A13, A14, A15, D, pclk, RESET, WE_N, RD_N, ALE, HW0, hw1, HW2, HW3);Inout IO_1, IO_2, IO_3, IO_4, IO_5, IO_6, IO_7, IO_8, IO_9, IO_10;
Inout IO_11, IO_12, IO_13, IO_14, IO_15, IO_16, IO_17, IO_18, IO_19, IO_20;
Inout IO_21, IO_22, IO_23, IO_24, IO_25, IO_26, IO_27, IO_28, IO_29, IO_30;
Inout IO_31, IO_32, IO_33, IO_34, IO_35, IO_36, IO_37, IO_38, IO_39, IO_40;
Inout IO_41, IO_42, IO_43, IO_44, IO_45, IO_46, IO_47, IO_48, IO_49, IO_50;
Inout IO_51, IO_52, IO_53, IO_54, IO_55, IO_56, IO_57, IO_58, IO_59, IO_60;
Inout IO_61, IO_62, IO_63, IO_64;/ / Microprocessor buss
input A0, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15;
input pclk;
input RESET;
input WE_N, RD_N, ALE;
input HW0, hw1, HW2, HW3;
Inout [0:7] D;
/ / Intern Definisjoner
reg [0:7] data2proc;
/ / reg [0:7] datafromproc;
wire [15:0] adresse;
reg [0:7] disc18;
reg [0:7] disc916;
reg [0:7] disc1724;
reg [0:7] disc2532;
reg [0:7] disc3340;
reg [0:7] disc4148;
reg [0:7] disc4956;
reg [0:7] disc5764;
reg [0:7] retning;
wire [3:0] HW;
parameter [15:0] add1 = 16'hc010,
add2 = 16'hc011,
add3 = 16'hc012,
add4 = 16'hc013,
add5 = 16'hc014,
add6 = 16'hc015,
add7 = 16'hc016,
add8 = 16'hc017;
parameter [3:0] INVALID1 = 4'h0,
CD = 4'h1,
NAV = 4'h2,
INVALID2 = 4'hf;
tildele adresse = (~ ALE)?(A15, A14, A13, A12, A11, A10, A9, A8, A7, A6, A5, A4, A3, A2, A1, A0): 16'hz;
tildele HW = (HW3, HW2, hw1, HW0);
/ *
alltid @ (WE_N eller ALE eller D eller adresse)
begynne
case (adresse)
dir: begin
if ((~ WE_N) & & (~ ALE))
begynne
direction = D;
slutt
slutt
endcase
end * /
alltid @ (HW)
begynne
case (HW)
INVALID1: begin
direction = 8'hff;
slutt
CD: begin
direction = 8'b00000000;
slutt
NAV: begin
direction = 8'b11000000;
slutt
INVALID2: begin
direction = 8'h00;
slutt
endcase
slutt
tildele D = ((~ RD_N) & & (~ ALE))?data2proc: 8'bz;
alltid @ (adresse eller retning eller WE_N eller ALE eller D eller
IO_1 eller IO_2 eller IO_3 eller IO_4 eller IO_5 eller IO_6 eller IO_7 eller IO_8 eller
IO_9 eller IO_10 eller IO_11 eller IO_12 eller IO_13 eller IO_14 eller IO_15 eller IO_16 eller
IO_17 eller IO_18 eller IO_19 eller IO_20 eller IO_21 eller IO_22 eller IO_23 eller IO_24 eller IO_25 eller IO_26 eller
IO_27 eller IO_28 eller IO_29 eller IO_30 eller IO_31 eller IO_32 eller IO_33 eller IO_34 eller IO_35 eller IO_36 eller
IO_37 eller IO_38 eller IO_39 eller IO_40 eller IO_41 eller IO_42 eller IO_43 eller IO_44 eller IO_45 eller IO_46 eller
IO_47 eller IO_48 eller IO_49 eller IO_50 eller IO_51 eller IO_52 eller IO_53 eller IO_54 eller IO_55 eller IO_56 eller
IO_57 eller IO_58 eller IO_59 eller IO_60 eller IO_61 eller IO_62 eller IO_63 eller IO_64)
begynne
case (adresse)
add1: begin
if (retning [0])
begynne
data2proc = (IO_1, IO_2, IO_3, IO_4, IO_5, IO_6, IO_7, IO_8);
slutt
else if ((~ retning [0]) & & (~ WE_N) & & (~ ALE))
begynne
disc18 <= D;
slutt
slutt
add2: begin
if (retning [1])
begynne
data2proc <= (IO_9, IO_10, IO_11, IO_12, IO_13, IO_14, IO_15, IO_16);
slutt
else if ((~ retning [1]) & & (~ WE_N) & & (~ ALE))
begynne
disc916 <= D;
slutt
slutt
add3: begin
if (retning [2])
begynne
data2proc <= (IO_17, IO_18, IO_19, IO_20, IO_21, IO_22, IO_23, IO_24);
slutt
else if ((~ retning [2]) & & (~ WE_N) & & (~ ALE))
begynne
disc1724 <= D;
slutt
slutt
add4: begin
if (retning [3])
begynne
data2proc <= (IO_25, IO_26, IO_27, IO_28, IO_29, IO_30, IO_31, IO_32);
slutt
else if ((~ retning [3]) & & (~ WE_N) & & (~ ALE))
begynne
disc2532 <= D;
slutt
slutt
add5: begin
if (retning [4])
begynne
data2proc <= (IO_33, IO_34, IO_35, IO_36, IO_37, IO_38, IO_39, IO_40);
slutt
else if ((~ retning [4]) & & (~ WE_N) & & (~ ALE))
begynne
disc3340 <= D;
slutt
slutt
add6: begin
if (retning [5])
begynne
data2proc <= (IO_41, IO_42, IO_43, IO_44, IO_45, IO_46, IO_47, IO_48);
slutt
else if ((~ retning [5]) & & (~ WE_N) & & (~ ALE))
begynne
disc4148 <= D;
slutt
slutt
add7: begin
if (retning [6])
begynne
data2proc <= (IO_49, IO_50, IO_51, IO_52, IO_53, IO_54, IO_55, IO_56);
slutt
else if ((~ retning [6]) & & (~ WE_N) & & (~ ALE))
begynne
disc4956 <= D;
slutt
slutt
add8: begin
if (retning [7])
begynne
data2proc <= (IO_57, IO_58, IO_59, IO_60, IO_61, IO_62, IO_63, IO_64);
slutt
else if ((~ retning [7]) & & (~ WE_N) & & (~ ALE))
begynne
disc5764 <= D;
slutt
slutt
endcase
slutt
/ / Overdragelse til første discIO banken
tildele IO_1 = disc18 [0]
tildele IO_2 = disc18 [1];
tildele IO_3 = disc18 [2];
tildele IO_4 = disc18 [3];
tildele IO_5 = disc18 [4];
tildele IO_6 = disc18 [5];
tildele IO_7 = disc18 [6];
tildele IO_8 = disc18 [7];
/ / Overdragelse til 2. platen IO bank
tildele IO_9 = disc916 [0];
tildele IO_10 = disc916 [1];
tildele IO_11 = disc916 [2];
tildele IO_12 = disc916 [3];
tildele IO_13 = disc916 [4];
tildele IO_14 = disc916 [5];
tildele IO_15 = disc916 [6];
tildele IO_16 = disc916 [7];
/ / Overdragelse til 3. IO banken
tildele IO_17 = disc1724 [0];
tildele IO_18 = disc1724 [1];
tildele IO_19 = disc1724 [2];
tildele IO_20 = disc1724 [3];
tildele IO_21 = disc1724 [4];
tildele IO_22 = disc1724 [5];
tildele IO_23 = disc1724 [6];
tildele IO_24 = disc1724 [7];
/ / Overdragelse til 4. IO banken
tildele IO_25 = disc2532 [0];
tildele IO_26 = disc2532 [1];
tildele IO_27 = disc2532 [2];
tildele IO_28 = disc2532 [3];
tildele IO_29 = disc2532 [4];
tildele IO_30 = disc2532 [5];
tildele IO_31 = disc2532 [6];
tildele IO_32 = disc2532 [7];
/ / Overdragelse til 5. IO banken
tildele IO_33 = disc3340 [0];
tildele IO_34 = disc3340 [1];
tildele IO_35 = disc3340 [2];
tildele IO_36 = disc3340 [3];
tildele IO_37 = disc3340 [4];
tildele IO_38 = disc3340 [5];
tildele IO_39 = disc3340 [6];
tildele IO_40 = disc3340 [7];
/ / Overdragelse til 5. IO banken
tildele IO_41 = disc4148 [0];
tildele IO_42 = disc4148 [1];
tildele IO_43 = disc4148 [2];
tildele IO_44 = disc4148 [3];
tildele IO_45 = disc4148 [4];
tildele IO_46 = disc4148 [5];
tildele IO_47 = disc4148 [6];
tildele IO_48 = disc4148 [7];
/ / Overdragelse til det 6. IO banken
tildele IO_49 = disc4956 [0];
tildele IO_50 = disc4956 [1];
tildele IO_51 = disc4956 [2];
tildele IO_52 = disc4956 [3];
tildele IO_53 = disc4956 [4];
tildele IO_54 = disc4956 [5];
tildele IO_55 = disc4956 [6];
tildele IO_56 = disc4956 [7];
/ / Overdragelse til 7. IO banken
tildele IO_57 = disc5764 [0];
tildele IO_58 = disc5764 [1];
tildele IO_59 = disc5764 [2];
tildele IO_60 = disc5764 [3];
tildele IO_61 = disc5764 [4];
tildele IO_62 = disc5764 [5];
tildele IO_63 = disc5764 [6];
tildele IO_64 = disc5764 [7];
endmodule