Fout tijdens Modelsim simulatie * Error: (vsim-3053)

R

roy_ece

Guest
Hoi,
Ik krijg de volgende foutmelding in Modelsim.Kan iemand me helpen dit probleem oplossen.
* Error: (vsim-3053) C: / kgv / Tb_LCM.v (42): Illegale output of InOut poort (poort 'LCMo').
Bedankt,
Groeten,
henry

 
How u hebben verklaard de haven LCMo

kunt u uitsluitend plakken u code hier

 
Het LCM rekenmachine is een sequentiële schakeling.
Het duurt 5 ingangen:
een klok (Clk),
een Reset (RST),
het eerste nummer (A) is niet ondertekend en minder dan 255
het tweede getal (B) is ook niet ondertekend en minder dan 255, en
een staat (Nl) signaal dat de berekening wordt gestart.
Het heeft 3 uitgangen:
de berekende aantal LCM (LCM)
een signaal dat wordt beweerd wanneer de berekening is voltooid (Gedaan) en
overflow signaal dat wordt beweerd, wanneer de berekende kgv kan niet worden vertegenwoordigd door de eenheid
vector breedte (overloop).
Het volgende is een suggestie voor een algoritme:
1.Kies de grootste van de twee getallen.
2.Vervolgens genereert een veelvoud van dit aantal met behulp van een adder.
3.Elke meerdere wordt dan gedeeld door het kleinere aantal te zien of de rest nul is.
4.Als de rest nul is, dan is de uitgang van de adder is de LCM, stellen Done.
5.Als de rest niet nul is, probeer het opnieuw door het genereren van een nieuwe meerdere (dwz door toevoeging van de
nummer aan de geaccumuleerde adder output).
6.Als de LCM niet kon worden berekend en de adder output overflows, gelden de Done
signaal en het genereren van een Overflow uitzondering.
////////////////////////////////////////////////// /
/////// Verilog Design voor LCM blok ////////////////
////////////////////////////////////////////////// /

/ / / start-up simluation voor verilog ontwerp door het vaststellen
/ / / tijdschaal
`tijdschaal 1ns / 1ns

/ / module Beschrijving
module LCM (LCMo, Gedaan, overflow, A, B, En, Clk, RST);
/ / parameter n = 5;
output [3] LCMo;
uitgang Gedaan, Overloop;
/ / output [3] tegen te gaan;
input [3] A, B;
input En, Clk, RST;

/ / aangifte van een variabele, toegewezen binnen altijd (at) block
reg [3] LCMo;
Overflow reg;
reg [3] Dividend;
reg [3] Divisor;
reg [3] Adder = 0;
/ / reg Gedaan;
/ / reg [3] toe te voegen;
Gedaan draad;
/ / Teller veranderd van reg to wire
/ / draad [3] tegen te gaan;
draad [3] Rest;
/ / reg [3] acc;
/ / Procedure blok voor het vinden van de grootste van de twee getallen

altijd @ (posedge Clk of posedge Rst)
beginnen
/ / Check voor synchrone Reset
indien (RST)
beginnen
Dividend <= 0;
Deler <= 0;
eindigen
anders
/ / Toewijzen grootste van A, B Dividend
/ / En kleinste tot Divisor
if (Nl)
beginnen
/ / Add <= Adder;
if (A> B)
beginnen
Dividend <= A;
Deler <= B;
eindigen
anders
beginnen
Dividend <= B;
Deler <= A;
eindigen
eindigen
eindigen

/ / Performing divisie
AFDELING u0 (Rest, Gedaan, Error, Dividend, Divisor, Clk, RST, Nl);

/ / proceeedure voor het genereren van een veelvoud van Dividend
/ / altijd @ (dividend of fout of Adder of Gereed of Rest)
/ / changed
altijd @ (Gedaan of Rst of dividend)
beginnen
indien (RST)
Adder = 0;
anders
if (Gedaan)
Adder = dividend;
anders
Adder Adder = Dividend;
eindigen

/ / procedure voor het toekennen uitgangen

altijd @ (Rest of Adder of fout)
/ / controleren of rest nul is dan Gedaan wordt beweerd
beginnen
if (rest)
beginnen
LCMo = 0;
Overflow = 0;
eindigen
/ / If LCM niet kan worden berekend dan beweren Overflow
anders
beginnen
LCMo = Adder;
Overflow = ~ Error;
eindigen
eindigen
endmodule

////////////////////////////////////////////////// ////////////
/ / Verilog Ontwerp voor een 4-bits Division blok genereert die /////
/ / 4 bits rest en quotiënt / / / /
////////////////////////////////////////////////// //////////
/ /
/ / Start-up elke verilog ontwerp door
/ / De oprichting van de tijd scate voor simulatie
`tijdschaal 1ns / 1ns

/ / Module beschrijving

module DIVISION (Quotiënt, rest, Gedaan, Error, Divident, deler, CLK, RST, Delen);
parameter n = 5;
/ / output [(n-2)] counter;
output [(n-2)] Quotiënt, rest;
uitgang Gedaan, fout;
input [(n-2)] Divident;
input [(n-2)] Divisor;
input CLK, RST, Delen;
/ / Verklaren geen variabele, toegewezen binnen een altijd als een blok @ reg
reg Gedaan, fout;
reg [(n-2)] A;
reg [(n-2)] B;
/ / reg [(n-2)] P;
/ / Orig: reg [2 * n-3] PA
/ / 1 bit wordt beschouwd als extra voor het voorkomen van overstroming
reg [2 * n-2] PA;
reg [(n-2)] counter;/ / Proceedural blok aan een divisie blok met design staat signaal
/ / wordt aangeroepen kloof samen met de klok rest genereren samen met quotiënt
/ / En zo goed vlag output genereren Gedaan gedaan om aan te geven operatie
/ / en fout als niet in staat om verdeeldheid te berekenen.altijd @ (posedge CLK of posedge RST)
beginnen

/ / controleren resetsignaal
if (RST)
beginnen
/ / Orig: P <= 4'b0000;
PA <= 0;
Gedaan <= 0;
/ / Orig: Fout <= 1
Fout <= 0;
counter <= 0;
eindigen
anders
/ / controleren of er mogelijk signaal verdelen
if (Divide)
beginnen
/ / Toewijzen Divident en Divisor op variabele A en B respectievelijk registreren.
/ / Orig: P [(n-2)] <= 4'b0000;
/ / Orig: A [(n-2)] <= Divident [(n-2)];
/ / Orig: B [(n-2)] <= Divisor [(n-2)];
A <= Divident;
B <= Divisor;
/ / Append Divident tot en met 8 bit register PA
/ / Orig: PA <= (P [(n-2)], Divident [(n-2)]);
PA <= A;
/ / initialiseren teller op nul waarde
/ / Counter <= UpperLimit (n-2);
if (A> B)

beginnen
counter <= 1;
Gedaan <= 0;
if (counter> = 1 & counter <= (n-1))
beginnen
/ / als de waarde van PA [6] is lessthan B, dan links verschuiven door 1 bit.
/ / en voeg zeroto de LSB van PA.
if (PA [2 * n-4

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triest" border="0" />

n-2)] <B)
beginnen
PA [2 * n-2] <= 0;
PA [2 * n-3

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triest" border="0" />

n-4)] <= PA [2 * n-4

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triest" border="0" />

n-5)];
PA [n-5] <= 0;

eindigen
anders
/ / Als de waarde van PA [6] groter is dan of equalto B, dan links
/ / Shift door 1 bit en aftrekken B uit PA [6] en zet aan PA [6]
/ / en voeg een aan de LSB van PA.
/ / If (PA [2 * n-4

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triest" border="0" />

n-2)]> = B [(n-2)])
beginnen
PA [2 * n-2

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triest" border="0" />

n-1)] <= (1'b0, PA [2 * n-4

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triest" border="0" />

n-2)]) - (1'b0, B);
PA [(n-2)

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triest" border="0" />

n-5)] <= (PA [(n-3)], 1'b1);
PA [2 * n-2] <= 0;

/ / PA [(n-2)

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triest" border="0" />

n-4)] <= PA [(n-2)];
/ / PA [n-5] <= 1;
eindigen
/ / Increment de teller
counter <= counter 1;
Gedaan <= 0;
Fout <= 0;
eindigen

/ / else
if (counter == (n-1))
Gedaan <= 1;

eindigen
else if (A <B)
beginnen Fout <= 1; Gedaan <= 1; einde
else if (A == B)
beginnen Fout <= 0; Gedaan <= 1; eindeeindigen

eindigen
/ / Toekennen rug van de herinnering en Quotient waarden
toewijzen Rest [(n-2)] = PA [2 * n-3: n-1];
toewijzen Quotient [(n-2)] = PA [(n-2)];
endmoduleToegevoegd na 1 minuten:de emoticon

<img src="http://www.edaboard.com/images/smiles/icon_sad.gif" alt="Triest" border="0" />

is: (

 
Ik denk dat u de verkeerde code geplakt

deze code met module LCM is het opstellen van goed.

Stuur mij de testbank code.probleem is er alleen i guess

 
Hoi,

Ik krijg een fout in Modelsim:
Fout: C: / temp / tmp.v ('8 '): Verpakt dimensie moet een bereik.
Dezelfde fout bestaat voor alle bus input / output.

Deze fout kan worden opgelost door vermelding ook de LSB bereik:
output [3:0] LCMo;

In Verilog u normaal specificeren de MSB en LSB bereik van een bus-signaal.

Deva

 
Ja,

Het bereik van de vector moet duidelijk worden gedefinieerd

U kunt niet een variabele voor.

 

Welcome to EDABoard.com

Sponsor

Back
Top