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

FPGA na początek, kilka pytań od "zielonego"

fotomh-s 15 Jun 2019 18:45 2154 36
Altium Designer Computer Controls
  • #31
    fotomh-s
    Level 24  
    Teraz mam taki problem:
    Quote:
    vsim +altera -L C:/altera/13.0sp1/MF_VERILOG -L C:/altera/13.0sp1/mf_vhdl -Lf ALT_PRIM_VER -do testfsm_run_msim_gate_verilog.do -l msim_transcript -gui work.fsm
    # vsim +altera -L C:/altera/13.0sp1/MF_VERILOG -L C:/altera/13.0sp1/mf_vhdl -Lf ALT_PRIM_VER -do testfsm_run_msim_gate_verilog.do -l msim_transcript -gui work.fsm
    # Loading work.fsm
    # Loading C:/altera/13.0sp1/MF_VERILOG.cycloneii_io
    # Loading C:/altera/13.0sp1/MF_VERILOG.cycloneii_mux21
    # Loading C:/altera/13.0sp1/MF_VERILOG.cycloneii_dffe
    # Loading C:/altera/13.0sp1/MF_VERILOG.cycloneii_asynch_io
    # Loading C:/altera/13.0sp1/MF_VERILOG.cycloneii_clkctrl
    # Loading C:/altera/13.0sp1/MF_VERILOG.cycloneii_mux41
    # Loading C:/altera/13.0sp1/MF_VERILOG.cycloneii_ena_reg
    # Loading C:/altera/13.0sp1/MF_VERILOG.cycloneii_lcell_comb
    # Loading C:/altera/13.0sp1/MF_VERILOG.cycloneii_lcell_ff
    # Loading instances from testfsm_v.sdo
    # Loading C:/altera/13.0sp1/MF_VERILOG.CYCLONEII_PRIM_DFFE
    # ** Fatal: SDF files require Altera primitive library
    # Time: 0 ps Iteration: 0 Instance: /fsm File: testfsm.vo
    # FATAL ERROR while loading design
    # Error loading design

    Poprzedni problem rozwiązałem kompilując podane pliki, teraz jednak pisze że w pliku SDF nie ma biblioteki altera primitives. W opcjach dodana globalna ścieżka do: C:\altera\13.0sp1\quartus\libraries\primitives, jednak nadal wsykakuje ten problem.
  • Altium Designer Computer Controls
  • #32
    User removed account
    Level 1  
  • Altium Designer Computer Controls
  • #33
    J.A
    Level 28  
    atari_robbo wrote:
    Ale po co chcesz robić gate level simulation?


    rozumiem, ze dla wprawy i nauki; i z ciekawosci jak to bedzie wygladac :);



    fotomh

    troche sie juz gubie, co ci dziala, co nie, i czy uruchamiasz symulacje ze skryptu,
    czy z gui;
    'sdo' to plik z opoznieniami kazdego elementu w cyclonie,
    gdzies w pliku *.vo (gdzies na poczatku) powinno byc cos takiego:

    // synopsys translate_off
    initial $sdf_annotate("<path>/<twoj projekt>.sdo");
    // synopsys translate_on

    te linie 'zaciagaja' opoznienia na bramkach i drutach miedzy nimi;


    ale jak juz wspomnial atari symulacja timingowa netlisty (czyli gate level)
    wielkiego sensu nie ma, od sprawdzenia czestotliwosci z jaka uklad bedzie
    dzialal jest timing analizer, w przypadku Intel-Altera to TimeQuest,
    wbudowany w quartusa

    j.
  • #34
    fotomh-s
    Level 24  
    Co do częstotliwości to wiem że jest coś takiego jak TimeQuest.
    Jeśli chodzi o to po co robię taką symulację to jest to wstęp do późniejszego projektu którym będzie CPU, wtedy będzie dobrze widzieć np. czy block RAM odpowiednio nadąża za całością (bo nie wiem na ile jest on szybki), kolejna sprawa to ciekawość jak to będzie wyglądać w symulacji gate level. Generalnie czyste dane to jedno, ale symulacja pozwala na wizualny wgląd w przebiegi.

    Generalnie to wszystko robię w GUI, unikam skryptów ITP. bo się na tym (jeszcze) nie znam. Dopiero zaczynam swoją przygodę z tymi narzędziami.

    Quote:
    // synopsys translate_off
    initial $sdf_annotate("testfsm_v_fast.sdo");
    // synopsys translate_on


    Oraz dla slow:
    Quote:
    // synopsys translate_off
    initial $sdf_annotate("testfsm_v.sdo");
    // synopsys translate_on


    Dla powolnego tak wygląda plik .SDO:
    Spoiler:
    // Copyright (C) 1991-2013 Altera Corporation
    // Your use of Altera Corporation's design tools, logic functions
    // and other software and tools, and its AMPP partner logic
    // functions, and any output files from any of the foregoing
    // (including device programming or simulation files), and any
    // associated documentation or information are expressly subject
    // to the terms and conditions of the Altera Program License
    // Subscription Agreement, Altera MegaCore Function License
    // Agreement, or other applicable license agreement, including,
    // without limitation, that your use is for the sole purpose of
    // programming logic devices manufactured by Altera and sold by
    // Altera or its authorized distributors. Please refer to the
    // applicable agreement for further details.


    //
    // Device: Altera EP2C5T144C8 Package TQFP144
    //

    //
    // This SDF file should be used for ModelSim-Altera (Verilog) only
    //

    (DELAYFILE
    (SDFVERSION "2.1")
    (DESIGN "fsm")
    (DATE "06/15/2019 18:43:04")
    (VENDOR "Altera")
    (PROGRAM "Quartus II 64-Bit")
    (VERSION "Version 13.0.1 Build 232 06/12/2013 Service Pack 1 SJ Web Edition")
    (DIVIDER .)
    (TIMESCALE 1 ps)

    (CELL
    (CELLTYPE "cycloneii_asynch_io")
    (INSTANCE stop\~I.asynch_inst)
    (DELAY
    (ABSOLUTE
    (IOPATH padio combout (1090:1090:1090) (1090:1090:1090))
    )
    )
    )
    (CELL
    (CELLTYPE "cycloneii_asynch_io")
    (INSTANCE clk\~I.asynch_inst)
    (DELAY
    (ABSOLUTE
    (IOPATH padio combout (1100:1100:1100) (1100:1100:1100))
    )
    )
    )
    (CELL
    (CELLTYPE "cycloneii_clkctrl")
    (INSTANCE clk\~clkctrl)
    (DELAY
    (ABSOLUTE
    (PORT inclk[0] (143:143:143) (143:143:143))
    )
    )
    )
    (CELL
    (CELLTYPE "cycloneii_ena_reg")
    (INSTANCE clk\~clkctrl.extena0_reg)
    (DELAY
    (ABSOLUTE
    (PORT d (304:304:304) (304:304:304))
    (PORT clk (0:0:0) (0:0:0))
    (IOPATH (posedge clk) q (260:260:260) (260:260:260))
    )
    )
    (TIMINGCHECK
    (SETUP d (posedge clk) (60:60:60))
    (HOLD d (posedge clk) (120:120:120))
    )
    )
    (CELL
    (CELLTYPE "cycloneii_asynch_io")
    (INSTANCE rstt\~I.asynch_inst)
    (DELAY
    (ABSOLUTE
    (IOPATH padio combout (945:945:945) (945:945:945))
    )
    )
    )
    (CELL
    (CELLTYPE "cycloneii_asynch_io")
    (INSTANCE run\~I.asynch_inst)
    (DELAY
    (ABSOLUTE
    (IOPATH padio combout (1100:1100:1100) (1100:1100:1100))
    )
    )
    )
    (CELL
    (CELLTYPE "cycloneii_lcell_comb")
    (INSTANCE state\~1)
    (DELAY
    (ABSOLUTE
    (PORT dataa (464:464:464) (464:464:464))
    (PORT datab (5278:5278:5278) (5278:5278:5278))
    (PORT datad (447:447:447) (447:447:447))
    (IOPATH dataa combout (651:651:651) (651:651:651))
    (IOPATH datab combout (544:544:544) (544:544:544))
    (IOPATH datac combout (393:393:393) (393:393:393))
    (IOPATH datad combout (206:206:206) (206:206:206))
    )
    )
    )
    (CELL
    (CELLTYPE "cycloneii_lcell_ff")
    (INSTANCE state\[1\]\~reg0)
    (DELAY
    (ABSOLUTE
    (PORT clk (1490:1490:1490) (1490:1490:1490))
    (PORT datain (108:108:108) (108:108:108))
    (IOPATH (posedge clk) regout (304:304:304) (304:304:304))
    )
    )
    (TIMINGCHECK
    (HOLD datain (posedge clk) (306:306:306))
    )
    )
    (CELL
    (CELLTYPE "cycloneii_lcell_comb")
    (INSTANCE running\~0)
    (DELAY
    (ABSOLUTE
    (PORT dataa (921:921:921) (921:921:921))
    (PORT datab (5281:5281:5281) (5281:5281:5281))
    (PORT datac (442:442:442) (442:442:442))
    (PORT datad (445:445:445) (445:445:445))
    (IOPATH dataa combout (651:651:651) (651:651:651))
    (IOPATH datab combout (544:544:544) (544:544:544))
    (IOPATH datac combout (370:370:370) (370:370:370))
    (IOPATH datad combout (206:206:206) (206:206:206))
    )
    )
    )
    (CELL
    (CELLTYPE "cycloneii_lcell_comb")
    (INSTANCE running\~1)
    (DELAY
    (ABSOLUTE
    (PORT datab (974:974:974) (974:974:974))
    (PORT datad (364:364:364) (364:364:364))
    (IOPATH datab combout (589:589:589) (589:589:589))
    (IOPATH datac combout (393:393:393) (393:393:393))
    (IOPATH datad combout (206:206:206) (206:206:206))
    )
    )
    )
    (CELL
    (CELLTYPE "cycloneii_lcell_ff")
    (INSTANCE running\~reg0)
    (DELAY
    (ABSOLUTE
    (PORT clk (1490:1490:1490) (1490:1490:1490))
    (PORT datain (108:108:108) (108:108:108))
    (IOPATH (posedge clk) regout (304:304:304) (304:304:304))
    )
    )
    (TIMINGCHECK
    (HOLD datain (posedge clk) (306:306:306))
    )
    )
    (CELL
    (CELLTYPE "cycloneii_lcell_comb")
    (INSTANCE state\~0)
    (DELAY
    (ABSOLUTE
    (PORT datab (5281:5281:5281) (5281:5281:5281))
    (PORT datad (737:737:737) (737:737:737))
    (IOPATH datab combout (544:544:544) (544:544:544))
    (IOPATH datac combout (393:393:393) (393:393:393))
    (IOPATH datad combout (206:206:206) (206:206:206))
    )
    )
    )
    (CELL
    (CELLTYPE "cycloneii_lcell_ff")
    (INSTANCE state\[0\]\~reg0)
    (DELAY
    (ABSOLUTE
    (PORT clk (1490:1490:1490) (1490:1490:1490))
    (PORT datain (108:108:108) (108:108:108))
    (IOPATH (posedge clk) regout (304:304:304) (304:304:304))
    )
    )
    (TIMINGCHECK
    (HOLD datain (posedge clk) (306:306:306))
    )
    )
    (CELL
    (CELLTYPE "cycloneii_asynch_io")
    (INSTANCE state\[0\]\~I.asynch_inst)
    (DELAY
    (ABSOLUTE
    (PORT datain (712:712:712) (712:712:712))
    (IOPATH datain padio (3056:3056:3056) (3056:3056:3056))
    )
    )
    )
    (CELL
    (CELLTYPE "cycloneii_asynch_io")
    (INSTANCE state\[1\]\~I.asynch_inst)
    (DELAY
    (ABSOLUTE
    (PORT datain (724:724:724) (724:724:724))
    (IOPATH datain padio (3066:3066:3066) (3066:3066:3066))
    )
    )
    )
    (CELL
    (CELLTYPE "cycloneii_asynch_io")
    (INSTANCE running\~I.asynch_inst)
    (DELAY
    (ABSOLUTE
    (PORT datain (722:722:722) (722:722:722))
    (IOPATH datain padio (3066:3066:3066) (3066:3066:3066))
    )
    )
    )
    )


    Nie wiem jak dodać tą bibliotekę primitives korzystając z GUI.
  • #35
    User removed account
    Level 1  
  • #36
    fotomh-s
    Level 24  
    USB Blaster przyszedł.
    Po podłączeniu do komputera nic. Nie świeciła się nawet zielona dioda LED sygnalizująca zasilanie.
    Okazało się że dołączony kabel (USB A<>mini USB) miał wadliwy wtyk USB A. Po szybkich oględzinach widać było ślady korozji na stykach, skąd się ona wzięła to chyba nikt nie wie...
    O tyle dobrze że mam kilka takich kabli więc nie jest to dla mnie problem.

    Po podłączeniu dobrego kabla zapaliły się 2 diody LED i komputer po kilku sekundach wyświetlił błąd. Okazało się że system W7 bez żadnego pytania zainstalował do tego dongla sterownik od...
    ...Karty sieciowej... ...A przynajmniej tak mi się wydaje bo był to bodajże sterownik realteka który jakoś system znalazł na dysku (nie było to instalowanie sterownika przez sieć)...
    Oczywiście odpalenie menadżera urządzeń i zainstalowanie odpowiedniego sterownika nie było problemem. Tutaj jest opisana procedura "normalnej" instalacji tego drivera jakby ktoś chciał: https://www.intel.com/content/www/us/en/progr...rivers/usb-blaster/dri-usb-blaster-vista.html

    Po tych przejściach udało się poprawnie uruchomić na szybko napisany w verilogu licznik (konfiguracja nietrwała przez złącze JTAG, EPCS4 jeszcze nie testowałem). Kolejny problem pojawił się kiedy chciałem uruchomić analizator stanów logicznych SignalTap II, przy wgrywaniu konfiguracji płytka się resetowała i ładowała (defaultową) konfigurację z EPCSa (czyli migające diody). Okazało się że ten USB Blaster nie jest w stanie dać wystarczającego natężenia aby zasilić te diody (i nieco podgrzać układ ;-) ), trzeba było się wpiąć pod "beczułkę" z zasilaniem 5V (dodatni w środku w bolcu, ujemny na obwodzie), wtedy analizator zaczął śmigać.

    Co teraz? Sam nie wiem. Może jakiś własny CPU, może jakiś gotowiec (np. taki core PDP-11, nie wiem tylko czy się zmieści, jakby co to jest jeszcze np. Z-80), może FDC dla kalkulatora programowalnego, trzeba tylko level shifter zrobić, albo przynajmniej prosty dzielnik rezystorowy bo 5V nie jest miło widziane w tych kręgach i taki flop może usmażyć układ ;-)

    Jeśli chodzi o jakość wykonania płytki i blastera to tak:
    -Płytka miała sporo nasmarkane fluxem, nie dało się nawet odczytać oznaczeń na EPCS4, trzeba było IPA zmyć te smarki.
    -Koło EPCS4 jest jakby wygryziona przez <:3)--- (tak to wygląda jak dziura w serze) masa.
    -Na soldermasce trochę było nasmarkane cyną, oczywiście dało się zeskrobać.
    -Jakość lutowania elementów SMD oraz pinów szpilkowych oceniam na całkiem przyzwoitą jak na moje oko.
    Teraz blaster:
    -Obudowa dosyć łatwo się rozpada.
    -Wewnątrz siedzi STM32F103 i 74HC244D, do tego kwarc i stabilizator 3V3.
    -Jakość lutowania SMD oceniam na znośną (ten STM wygląda jakby się trochę słabo trzymał z jednej strony jednak na chwilę obecną wszystko gra).
    -Złącze to mini USB (nie micro), mam nadzieję że przetrwa nieco dłużej.
  • #37
    gkalfail
    Level 11  
    fotomh-s wrote:

    Jeśli chodzi o jakość wykonania płytki i blastera to tak:


    Dzięki za "mini recenzje". Też zmówiłem ten chiński wynalazek z EP2C5T144C8. Był w podobnej cenie i z podobnymi funkcjonalnościami. Pewnie to ten sam rodzaj, chociaż pewności nie ma. Kto wie w ilu wersjach to sprzedają? W każdym razie wrażenia co do jakości plus minus takie same.

    Natomiast natknąłem się na ciekawą pułapkę - PIN26, PIN81 przez rezystory 0 Ohm są zwarte z zasilaniem 1.2V, natomiast PIN27, PIN80 są przez 0 Ohm rezystor zwarte z masą. Wszystkie 4 rezystory są na spodniej stronie płytki. Oznacza to, że co najmniej te piny, trzeba odpowiednio ustawić, inaczej płynie duży prąd i regulatory się grzeją. Dla chipu FPGA też pewnie to nie jest bez znaczenia. W sieci polecają dać te piny na HiZ z pull downem. Dlaczego tak to jest zrobione? Nie mam pojęcia.

    Schematy i zdjęcia płytki znalazłem tutaj:
    https://www.openimpulse.com/blog/products-pag...144-altera-cyclone-ii-fpga-development-board/

    To nie jest opis od sprzedawcy od którego kupiłem, ale z tego co widzę schemat i zdjęcia się zgadzają.