Xilinx ISE WebPack8.1i - makabra...

May 25, 2006 8 Replies

Witam,



Interesowałem się CPLD jako zamiennik dla układów serii 4000 i było to fajne. Rysowałem schemat logiczny w ISE i wszystko działało. Jednak "apetyt rośnie w miarę jedzenia" i zacząłem się uczyć Veriloga. Ćwiczyłem najpierw na Icarusie i jak poczułem się w miarę pewnie to postanowiłem skompilować i zaprogramować CPLD (X9536XL).



Prosty projekt zawiera jako "top-module" schemat a moduły są napisane w Verilogu. Np. taki prosty moduł:



module counter3(c_clock, c_reset, c_out); input c_clock, c_reset; output [7:0] c_out; reg [7:0] c, c_max;



assign c_out = c;



always @ (posedge c_clock) begin if (c < c_max) c <= c + 1; else c <= c_max; end



always @ (posedge c_reset) begin c <= 0; c_max <= 100; end



endmodule



W Icarusie skompilował się i działał bez problemów. Co innego w ISE... Sama synteza generuje dziwne rezultaty używające tylko 8 makrokomórek i zero flipflopów?!! Symulator behavioralny wywala się z błędem: "FATAL_ERROR: GuiUtilities:Gq_Application.c:570:1.12.10.2 - This application has discovered an exceptional condition from which it cannot recover. ..."



I robi to po kliknięciu na okienko z przebiegami, którymi ma się karmić symulator.



Więc sam nie wiem co jest nie tak by jeśli ISE ma takie bugi na aż tak podstawowym poziomie to...


Pozdrawiam,



Radek


"makabra" ... odwazne stwierdzenie o najpopularniejszym narzedziu do programowania fpga jak na kogos, kto wlasnie zaczal sie uczyc :)

dziwny ten icarus ... :)

  1. to co napisales jest wbrew regulom sztuki, rejestr z reset pisze sie tak:

always @(posedge clk) if (reset) reg <= 0; else reg <= reg + 1; jesli reset ma byc synchroniczny,

lub:

always @(posedge clk or posedge reset) if (reset) reg <= 0; else reg <= reg + 1; jesli reset asynchroniczny;

co sie stanie, jesli rozbijesz reakcje na zegar i reset na dwa bloki 'always' nie mam pojecia, prawdopodobnie jest to zalezne od kompilatora;

poza tym, nie rozumiem, co ty chcesz osiagnac:

always @ (posedge c_clock) begin if (c < c_max) c <= c + 1; else c <= c_max; end

zauwaz, ze 'c' jest inkrementowane az osiagnie wartosc 'c_max', pozniej w kolko jest do 'c' wpisywane c_max;

ten twoj kod powinien wygladac tak, jesli chciales napisac licznik modulo 100:

parameter c_max = 100;

always @(posedge c_clock) if (reset) c <= 0; else if ( c < c_max ) c <= c + 1; else c <= 0;

assign c_out = c;

lub tak, jesli chcesz licznik ktory liczy do 100 i staje po osiagnieciu setki:

parameter c_max = 100;

always @(posedge c_clock) if (c_reset) c <= 0; else if ( c < c_max ) c <= c + 1; else c <= c;

assign c_out = c;

JA

Witam,

JA napisał(a):

A jednak trochę uzasadnione - zainstalowałem update 8.1.03i i zaczęło działać! :)

I teraz kompiluje się i działa pod ISE po zrobieniu update.

A IcarusVerilog jest bardzo wygodny do testowania i nauki. No i ponieważ nie używam RedHata (ISE dla Linuxa w zasadzie wymaga tej dystrybucji) to musiałem znaleźć jakieś inne narzędzie do symulowania.

Działało ale oczywiście taki kod jest niejednoznaczny.

Wiem i oryginalnie tego else wcale nie było. Jednak były "dziwne cyrki" pod ISE przed zrobieniem update więc próbowałem właśnie takich "dodatków". W sumie w "ciemno" i niepotrzebnie.

W każdym razie cieszę się, że już działa i dziękuje za sugestie.

Pozdrawiam,

Radek

pracowalem na webpacku na uczelni, to jedno wielkie g... wersja chyba 6 czy

7 ale widze ze jeszcze maja sporo roboty z tym:) Zapisuj kopie zapasowe folderow z projektem (rar jakis) bo moze sie okazac ze nagle projekt uszkodzony :) (moze juz tak nie robi ale P.Z.U...)

A tak trudno postawic VMPlayer i RH?

Ciekawe, używałem wszystkich wersji ISE/Webpcak od 4.1i, czasem do sporych projektów, a przedtem jeszcze Foundation, i nic takiego mi się nie działo. Poza tym można robić "snapshots", gdzie cały projekt jest zrzucany do pliku zip.

A kiedyś zainstalowałem z ciekawości Quartusa (w firmie używamy tylko Xilinxa), ale nawet się nie pobawiłem za dużo bo się za często wysypywał

- nie na moje nerwy. Czy stwierdzenie że to wielkie g.., jak ty mówisz o Webpack'u, będzie uzasadnione, rozważ sam.

PAndy napisał(a):

Może i nie jest trudno ale to by była przesada jak dla moich skromnych zastosowań.

Potrzebuję napisać kod (preferuję Vim), skompilować i przetestować. Jak mam zadawalające mnie moduły to reboot do Win i ISE aby przygotować binarki dla CPLD i zaprogramować układ.

Pozdrawiam,

Radek

ja pracuje z ukladami altery i jej software 'od zawsze', i nie zauwazylem, by sie czesto wysypywal; te opinie uzytkownikow altery o xilinxie i odwrotnie troszke mi przywodza na mysl wojny kiboli ... :)

JA

Dokładnie to miałem na myśli.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required