VHDL med ModelSim (igen).

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
AndersPP
Inlägg: 25
Blev medlem: 8 september 2006, 18:09:03
Ort: None
Kontakt:

VHDL med ModelSim (igen).

Inlägg av AndersPP »

Jag får ursäkta mig nu ifall jag har gjort något fel med att ha skapat två stycken trådar. Dock handlar dessa trådar om två enskilda saker så jag hoppas inte att jag får massor av "skit".

Nu har jag suttit en del och lärt mig nya saker med ModelSim. Jag har lyckats skriva ett program i VHDL som uppför sig precis som det skall, kompilering och allt fungerar utmärkt!

Nu kommer ytterliggare ett problem som är lite större, jag hoppas någon kan hjälpa till på denna biten.
VHDL-koden fungerar som det skall, dock så vill jag se tidsdiagramen för 3 signaler på utgångarna, men det enda jag får fram är följande;


Detta är givetvis fel, hur skall jag gå tillväga för att få det korrekt. :shock:
Tacksam för hjälp!

PS. Tack till de andra som hjälpte till med det övriga.
Senast redigerad av AndersPP 24 september 2006, 16:06:17, redigerad totalt 1 gång.
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Alla signaler är odefinierade...

Hur vet du att koden funkar om du inte fått fram något diagram?

Om du vet att koden är korrekt har du kanske bara inget som driver insignalerna -> dessa är odefinierade -> utsignalerna blir också odefinierade.

Om det är en liten simpel sak kan du använda "force" i modelsim för att driva insignalerna, annars skriver du lämpligen en liten testbänk.
AndersPP
Inlägg: 25
Blev medlem: 8 september 2006, 18:09:03
Ort: None
Kontakt:

Inlägg av AndersPP »

Hej!

Koden är ok.

Kurslitteraturen är verkligen inget vidare, så jag har sökt efter lite kompendium på internet men blir ännu mer förvirrad när jag försöker med det du nämnde "force"?

Sedan läste jag något om "Do.fil" kan detta vara något jag behöver, ytterst tacksam för svar!
rehnmaak
Inlägg: 2204
Blev medlem: 13 december 2005, 01:43:41

Inlägg av rehnmaak »

Svårt att ge något definitivt svar på frågan eftersom jag inte vet hur din vhdl-kod ser ut, om du har någon testbänk etc etc.

Generellt så måste du definera alla signaler till något värde. Gör du inte det så blir signalen 'U' (undefined). Om du gör en logisk operation på en signal som är 'U' så kan resultatet bli antingen '0', 'U' eller '1' beroende på vilken operation du gör.

Normalt sett så brukar man ha en reset-ingång på entity:n som man drar aktiv under några cykler på testbänken. Har man gjort sin läxa är då *alla* signaler i designen definerade till '1' eller '0'.
AndersPP
Inlägg: 25
Blev medlem: 8 september 2006, 18:09:03
Ort: None
Kontakt:

Inlägg av AndersPP »

Okej, det är fotfarande lite oklart hur jag skall få fram tidsdiagrammet.Jag postar koden så ni får inblick i det hela.
Senast redigerad av AndersPP 24 september 2006, 16:07:05, redigerad totalt 1 gång.
rehnmaak
Inlägg: 2204
Blev medlem: 13 december 2005, 01:43:41

Inlägg av rehnmaak »

buffer var en lattjo portdeklaration... den har jag nog aldrig använt.

Hade du någon testbänk?

Annars så är det bara att skriva en sådan och instantiera Vtbird så ska det nog fungera. I testbänken skickar du in clock, reset, left mm.
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

OK, och vad har du gjort för att skapa "indata" på signalerna CLOCK, RESET, LEFT, RIGHT, HAZ ?

Om du inte stoppar in nåt så får du inte heller ut nåt.
AndersPP
Inlägg: 25
Blev medlem: 8 september 2006, 18:09:03
Ort: None
Kontakt:

Inlägg av AndersPP »

Ja du, faktiskt inte aning, inget antar jag.

Vad och vart skall jag placera indata värdena i programmet? :?

Känner mig en aning dum nu...
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

För det första, kalla det inte för "program". Det gör att man tänker sig ett vanligt program för en mikroprocessor och då är man inne i helt fel tankebanor.

Du ska inte ha indatan där, datan kommer ju utifrån den modulen du har skrivit. Antingen gör du "som man ska" och skriver en testbänk. Det är en annan VHDL-modul som instansierar den modul som du vill testa och skickar in testdata.

Quick-and-dirty varianten är att man använder "force" i modelsim för att tala om vad som ska in, och vid vilken tidpunkt.

T.ex. så behöver du ju en klocksignal till din modul, ungefär såhär vid modelsim-prompten:

force CLOCK 0 0 ns, 1 5 ns -repeat 10 ns
run 1 us

Nu har du fått en klocksignal med en period på 10ns...

Om det inte står nåt i din kurslitteratur om det, så kolla på google efter exempel.
AndersPP
Inlägg: 25
Blev medlem: 8 september 2006, 18:09:03
Ort: None
Kontakt:

Inlägg av AndersPP »

Okej!

Jag hittade ett intressant kompendium dessutom på svenska. Där behandlas det som du talar om - Instimuli.

Men jag hittar inte vart jag skall skriva in värderna, håller på att bli tokig med andra ord. Jag följer med på ditt argument, men det går inte att hitta.
Det enda jag hittar där man kan forca är;



Jag är tacksam för att du är tålmodig med mig.
Senast redigerad av AndersPP 24 september 2006, 16:07:16, redigerad totalt 1 gång.
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg av cyr »

Mitt modelsim på den här datorn verkar inte vilja starta, så jag kan inte fixa en skärmdump. Men visst har du ett fönster med en prompt nånstans?

Där kan du skriva in kommandon som force, run, restart osv.
AndersPP
Inlägg: 25
Blev medlem: 8 september 2006, 18:09:03
Ort: None
Kontakt:

Inlägg av AndersPP »

Ska se, hold on så tar jag print tror jag vet vad du menar nu.

Nu ska vi se, jag har ringat in de jag antar att du menar, är lite osäker.


EDIT: hittade det nu, det är fönstret längst ner, ska se här hur det blir.
Senast redigerad av AndersPP 24 september 2006, 16:22:23, redigerad totalt 1 gång.
rehnmaak
Inlägg: 2204
Blev medlem: 13 december 2005, 01:43:41

Inlägg av rehnmaak »

Gör nu som man ska göra!

Skriv en vhdl snutt som instantierar din modul.

ex:

Kod: Markera allt


uut: Vtbird
port map(CLOCK => CLOCK,
.
.
)

tb1 : process()
begin
  clk <= '0';
  wait for 10 ns
  clk <= '1';
  wait for 10 ns
end process;

tb2 : process()
begin
  RESET <= '1';
  wait for 100 ns
  RESET <= '0';
  LEFT <= '1';
  wait for 1 us
  .
  .
  .

  wait;
end process;
AndersPP
Inlägg: 25
Blev medlem: 8 september 2006, 18:09:03
Ort: None
Kontakt:

Inlägg av AndersPP »

Så om jag enbart är ute efter 3 signaler, så behöver jag bara skriva clk, reset samt de tre andra signalerna?

PS. Hur lägger man in denna fil sedan :shock:
rehnmaak
Inlägg: 2204
Blev medlem: 13 december 2005, 01:43:41

Inlägg av rehnmaak »

Det är väl bara att kompilera och ladda in i biblioteket som du gjorde med den andra filen?
Skriv svar