Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[VHDL] Symulacja kodu w ISE 11.1

06 Lip 2009 15:39 2599 4
  • Poziom 24  
    Witam, błędem było przejście na najnowszy program ISE 11.1. Nie potrafię w żaden sposób zasymulować napisanego kodu. W sensie tworząc VHDL test bench symulacja się odpala, ale nie mogę zdefiniować sygnału zegarowego, a Waveform test bench w tym ISE już podobno niema.

    W jaki sposób mogę zasymulować kod w tej wersji? Było by miło, gdyby ktoś przeprowadził mnie za rękę... przez ten problem.
  • Poziom 21  
    Witaj.

    To co piszesz wydaje się normalne że nie możesz przesymulować. Pewnie clocka nie masz i innych sygnałów. W tym miejscu proponowałbym Ci abyś doinstalował sobie modelsima xe (tylko dla układów firmy xilinx). W poprzednich wersjach było tak, że tworzyłeś sobie plik *.tbw i ustawiałeś clocka itd. w nowej wersji jest inaczej tworzysz sobie plik test bencha, to jest taki drugi plik *.vhd w który określasz w jakich odstępach czasowych możesz generować jakiś dany przebieg ( tu przydatne sa instrukcje np _enb <= not in_syg after 2 ns - używane wyłącznie w symulacji). Zamiast modelsima xe możesz użyć wbudowanego isima. Jakbyś nie dał rady to mogę Ci podesłać albo pliki np. jakiegoś licznika czy innego mrugacza to sobie zobaczysz co i jak. Pozdrawiam i życzę sukcesów
  • Poziom 24  
    Code:
    ...
    
    BEGIN
        -- Instantiate the Unit Under Test (UUT)
       uut: Main PORT MAP (
              CLKin => CLKin,
              CL1 => CL1,
              CL2 => CL2,
              DB => DB,
              DI => DI,
              M => M
            );
        -- No clocks detected in port list. Replace <clock> below with
       -- appropriate port name
        constant CLKin_period := 1ns;
     
       CLKin_process :process
       begin
          CLKin <= '0';
          wait for CLKin_period/2;
          CLKin <= '1';
          wait for CLKin_period/2;
       end process;
     
       -- Stimulus process
       stim_proc: process
       begin      
          -- hold reset state for 100ms.
          wait for 100ms;   

          wait for CLKin_period*10;

          -- insert stimulus here
          wait;
       end process;

    END;

    Powyższy fragment kodu to modyfikacja kodu template z ISE. Sygnał wejściowy to CLKin a okresu nie modyfikowałem. Błąd pojawia się w linii z deklaracją stałej wartości okresu i jest następujący:
    Cytat:
    ERROR:HDLCompiler:806 - "E:/MariuszLorenc - dokumenty/Elektronika/CPLD/MatrixLCD/test.vhd" Line 79: Syntax error near constant.
    ERROR:HDLCompiler:841 - "E:/MariuszLorenc - dokumenty/Elektronika/CPLD/MatrixLCD/test.vhd" Line 79: Expecting type void for <ns>.

    Pozostałe błędy wynikają z braku deklaracji CLKin_period. Coś źle wykonuje? Wolał bym pozostać przy wbudowanym ISim

    System wydaje się być dobry choć bardziej skomplikowany. Można dokładniej określić sposób symulowanych sygnałów wejściowych.
  • Poziom 10  
    Witam

    Stała CLKin_period powinna być zadeklarowana jako typu time, czyli:

    Code:
     constant CLKin_period : time := 1ns; 


    Pozdawiam
  • Poziom 24  
    Niestety nie pomogło... Dodatkowo taki zapis wprowadza błędy odnośnie warunku ustalania stanu sygnału...