Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Lattice. Nie działają proste kody.

11 Sep 2017 10:54 3312 52
  • #1
    User removed account
    Level 1  
  • Helpful post
    #2
    yakuza_2000
    Level 21  
    Brakuje synchronizacji sygnałów wejściowych do domeny zegarowej CLK_40MHz.
    Na CPLD działało ponieważ wszystko było na jednej domenie zegarowej, tutaj masz dwie i pojawiają się metastabliności.
  • #3
    User removed account
    Level 1  
  • Helpful post
    #4
    __Grzegorz__
    Level 29  
    Po co synchro do lokalnego oscylatora,
    nie wystarczy:
    Code: vhdl
    Log in, to see the code


    ?

    Jeżeli nie, "dosynchronizuj" sygnał CLK
    Code: vhdl
    Log in, to see the code
  • #5
    User removed account
    Level 1  
  • #6
    __Grzegorz__
    Level 29  
    tu jest ból:

    [syntax="VHDL"]
    elsif rising_edge(CLK_40MHz) then
    CLK_old <= CLK;
    if CLK = '1' and CLK_old = '0' then
    [/syntax]

    CLK jest asynchro względem zegara clk_40M...
  • #8
    User removed account
    Level 1  
  • #9
    yakuza_2000
    Level 21  
    A co z linią DIN? Trzeba przesynchronizować wszystkie przejścia między domenami, bo problem może wrócić.
  • #10
    User removed account
    Level 1  
  • #11
    yakuza_2000
    Level 21  
    Jeśli DIN jest synchroniczny do CLK to będzie się on zmieniać zaraz po zmianie stanu CLK, do tego dołóż możliwe różnice opóźnień między CLK i DIN na PCB oraz w FPGA i problem może wystąpić. Jest to mało prawdopodobne, ale nie niemożliwe :wink:
  • #12
    User removed account
    Level 1  
  • #13
    __Grzegorz__
    Level 29  
    Sprawdziłbym pinout report (tak to się nazywało w ISE :),
    w Lattice Diamond robi się to chyba przez Spreadsheet View -> Port Assignment View.

    Czy na pewno porty Test_Counter są typu push/pull, i nie przywlókł się gdzieś tristate,
    albo czy synteza tego sygnału się w ogóle nie pozbyła z jakiegoś powodu...

    W logu kompilacji nie ma żadnych ostrzeżeń? Czasem Warto się z nimi zapoznać :)
  • #14
    User removed account
    Level 1  
  • #16
    User removed account
    Level 1  
  • #18
    User removed account
    Level 1  
  • #20
    User removed account
    Level 1  
  • #22
    User removed account
    Level 1  
  • #23
    User removed account
    Level 1  
  • #24
    JarekC
    Level 32  
    Nie używałem Clarity Designer ale po zdefiniowaniu powinieneś wygenerować moduł z opcją automatycznego dołączenia do projektu.
  • #25
    User removed account
    Level 1  
  • Helpful post
    #26
    JarekC
    Level 32  
    U siebie mam zainstalowanego tylko starego Dimond 1.1 który nie obsługuje ECP5.
    Ale na próbę zrobiłem test z ECP3.

    Przy pomocy IPExpress (w wersji 1.1 nie ma Clarity Designer) wygenerowałem komponent pll1 skonfigurowany jako baypass.
    Po generacji w katalogu projektu pojawiły się pliki pll1.vhd i pll1_mtpl.vhd.
    Plik pll1.vhd dodałem do projektu.
    Ręcznie dodałem do projektu nowy plik z projektem top.vhd w którym umieściłem między innymi deklarację kompomentu pll1 i jego mapowanie (wzorce są w pliku pll1_tmjpl.vhd).
    Uruchomiłem syntezę i przeszła poprawnie.
    Po uruchomieniu Map Design a następnie Spreadsheet View pojawiła się możliwość przypisania pinów.
    Code: vhdl
    Log in, to see the code
  • #27
    User removed account
    Level 1  
  • #29
    User removed account
    Level 1  
  • #30
    JarekC
    Level 32  
    A nie możesz przypisać w Spreadsheet View kolumna SignalName?

    Na schemacie jest LRC_GPLL0T_IN a nie jak pomyłkowo napisałem LRC_GPLL0C_IN, sygnał z generatora 24MHz TXCO.