cwbe coordinatez:
101
63533
766908
2016246
6501906

ABSOLUT
KYBERIA
permissions
you: r,
system: public
net: yes

neurons

stats|by_visit|by_K
source
tiamat
K|my_K|given_K
last
commanders
polls

total descendants::6
total children::5
3 ❤️


show[ 2 | 3] flat


Weaponized C...0
toxygen0
stick0
Forum o FPGA

vyrobcovia vyvojovych kitov:
digilent inc (FPGA pouzivaju od Xillinx)

kde zohnat hw:
http://shop.trenz-electronic.de/
http://www.dfcdesign.cz/ (primarne dosky od digilent inc., su v Brne, jeden z nich je z FEKT/VUT, u nich je to nejake drahe)

navody:
popis numerickych kniznic (peklo pretypovavania, pouzitie: abstrakcia scitania a odcitania, citacov vo VHDL)




000001010006353300766908020162460650190608620286
Weaponized Cringe
 Weaponized Cringe      27.04.2019 - 19:41:55 [1K] , level: 1, UP   NEW
pozeram, ze tu to zije :)

ja sa prave len zacinam ucit, a (asi ako kazdy) mam dilmeu VHDL vs Verilog.

zatial sa ucim VHDL, lebo syntax mi prisla zrozumitelnejsia, no uz pri druhoch datovych typov mi to prijde cele nejako divne vymyslene a neviem ci by mi Verilog nesadol predsalen lepsie...

nechapem napriklad, preco pre fixed-point existuje okrem signed a unsigned este aj integer... vsade sa hovori o tom, ze to nie su programovacie jazyky, ale jazyky na opis hardware, no nebude ten integer prave na HW urovni identicky s UNSIGNED? ma to nejaky dovod, preco to vo VHDL je takto?

je mi jasne, ze pri integer sa da zadat ako max hodnota aj ine cislo nez 2^n, no neni na HW urovni to iste ked mam integer 0-200 vs 8-bit unsigned (0-255) ?

00000101000635330076690802016246065019060862028608620377
stick
 stick      28.04.2019 - 11:09:47 [1K] , level: 2, UP   NEW
https://stackoverflow.com/questions/23253768/vhdl-unsigned-vector-vs-integer-comparison

0000010100063533007669080201624606501906086202860862037708620404
Weaponized Cringe
 Weaponized Cringe      28.04.2019 - 14:35:33 [1K] , level: 3, UP   NEW
ked mne nejde o to, ze ake rozdielne features ktoremu datovemu typu zadefinovali, skor by som rad pochopil, aky ma zmysel mat pre prirodzene cisla dva rozne datove typy. (a btw, v tom linku tym "comparison" v nadpise nemysleli porovnavanie features tych dvoch datovych typov, ale riesia kedy/ako ich mozu medzi sebou doslova porovnavat v zmysle vacsie mensie rovne ... )

kazdopadne, napr ked si vyhradim miesto pre integer s rozsahom 0-255 a zapisem do neho 170 vs si vyhradim miesto pre 8-bit unsigned a zapisem do neho 10101010, nebude to na HW urovni identicke?
Ak ano, tak aku ma vyhodu, ze sa to da vo VHDL opisat dvoma roznymi sposobmi?
ja vidim zatial len nevyhody - napr ze podla toho, ktorym sposobom (int alebo unsigned) opisem tych istych 8-bitov, ma od toho momentu zacne VHDL jazyk umelo obmedzovat v tom, co s tymi 8-bitmi mozem robit. (lebo int a unsigned maju ine moznosti).

v jazyku, ktory ma opisovat low-level HW vrstvu, navyse v jeho uplnych zakladoch (nie nejaka vysoka abstrakcia), mi to prijde nejake divne, tak by som chcel pochopit, preco/naco to tak je / preco existuje integer a nemame namiesto neho silnejsi unsigned, ktory by umoznoval to iste,, ked je to na HW urovni to iste a ak to spravne chapem, tak sa aj pouzivaju oba typy na to iste (prirodzene cisla)

mi mozno nieco zasadne unika... mozno pochopim ked mi dojde devboard a zacnem s tym realne robit...

000001010006353300766908020162460650190608261509
       06.12.2016 - 12:11:43 [2K] , level: 1, UP   NEW

000001010006353300766908020162460650190606680809
NiO
 NiO      04.06.2012 - 00:40:54 (modif: 14.06.2012 - 02:56:51) [1K] , level: 1, UP   NEW !!CONTENT CHANGED!!
Tieto veci sa tykaju pouzivania Xillinx ISE Webpack spolu s technologiou Spartan 3E a pouzity jazyk je VHDL z roku 1993. Priebezne doplnam nove veci.

Konkretna vyvojova doska Digilent Nexys2 1200k


Doska obcas invertovala vystup na LED, a robila divy s vystupami.
Prekutal som dizajn, dal som konstantne testovacie vystupy... a dizajnom to nebolo.
Nakoniec to bol jumper na doske ktory prepina medzi rezimami JTAG a ROM.
Dizajny som nahraval z pocitaca cez JTAG aby sa mi neopotrebovala ROM-ka a prepinac
som mal v polohe ROM. Tak som to prehodil na JTAG...

Neuplne specifikovane pole signalov v UCF


Chcel som zobrazit obsah 8 bitoveho citaca na LEDky.
Po uspesnom prelozeni dizajnu a nahrati do vyvojovej dosky
sa stalo nieco zvlastne... 3 LED zobrazovali to co maju avsak
zvysnych 5 signalov sa objavilo na nespravnych pinoch, nastastie na
7 segmentovom displeji, v tomto pripade sa nic nemohlo odpalit.
Dovodom chyby bolo ze som zabudol upravit UCF subor ktory urcuje ktory
pin na FPGA sa pouzije a ake ma meno v dizajne.

Nespravny Obsah UCF

# Leds
NET "Led<0>" LOC = "J14";
NET "Led<1>" LOC = "J15";
NET "Led<2>" LOC = "K15";
#NET "Led<3>" LOC = "K14";
#NET "Led<4>" LOC = "E17";
...

Syntetizer nevyhodil chybu, uplne mu stacilo ze boli nadefinovane
3 z 8 LED signalov a ze zvysne chybaju bolo v pohode...
Odkomentoval som teda zvysne def. signalov a islo to v pohode.


Syntetizer vyoptimalizuje nieco prec a chvali sa tym


Robi to pravdepodobne preto, ze ta vec moze sice nieco pocitat a produkovat vystupy,
ale tie vystupy nikde niesu pouzite, tak sa dana cast dizajnu nepouzije...
Napriklad som si spravil obycajny n-bitovy citac s jednym carry vystupom. A v jednom
pripade z neho pouzijem vsetky bity az na ten carry ktory nepotrebujem, tak ten stupen
ktory ho produkuje je nepotrebny.

Syntetizer vyoptimalizuje prec vec, ktora je spravne zapojena do dizajnu



Toto sa mi stalo s nejakym citacom ktory mal active low reset, ale pustal som do neho
active high reset. Syntetizer si najskor odsimuloval ci nedojde k nejakemu ustalenemu
stavu alebo co a usudil ze aj ked nejakych tych 8 cyklov po starte ta vec nieje v resete
(akorat ked su vsetky dobre zapojene komponenty v resete) ale po skonceni resetu
uz ostane (chybne) navzdy resetovany a bude mat konstantne vystupy. Tak to vyhodil prec.
Takejto blbej chybe sa snazim vyhybat systemom ze to co ma negativny reset nazyvam resetn.

Chybove hlasky



can not have such operands in this context


To moze tiez znamenat ze v podmienke if bola pouzita neexistujuca premenna alebo signal.
Treba skontrolovat ci nazov v podmienke sedi s jeho deklaraciou.

000001010006353300766908020162460650190606509918
NiO
 NiO      19.02.2012 - 22:54:32 (modif: 14.06.2012 - 01:44:46) [2K] , level: 1, UP   NEW !!CONTENT CHANGED!!
Tu je par mojich malych FPGA pokusov
nazovytsvnpopis
servo testvideo-kod na testovanie analogoveho RC serva, z tych 3 kusov mozno bude jednoduche roboticke rameno
LFSRvideokodlinear feedback shift register s velkou periodou... mozno by sa to dalo zavesit na stenu, s vhodnym LFSR sa da spravit scrambler a k nemu descrambler aby sa nejaky signal pred odvysielanim zbavil dlhych pasazi s rovnakou logickou hodnotou
tempest txvideokodAj takto sa da pouzit sirokopasmove radio, na odladovanie beziacich ocilatorov alebo na sledovanie sily interferencie, ktoru produkuje nejaka doska, v FPGA sa daju signaly jednoducho modulovat logickou funkciou AND... signal 50MHz AND 800Hz a mate tempestovy vysielac, iba ten signal treba pripojit na externy pin a cesticka na DPS sa postara o rusenie par metrov okolo
citac s 4x7seg displejomvideo-jedna z prvych veci co som skusil, pre kazdu cifru pouzivam BCD citac s periodou 10, tym sa da vyhnut prevodom z binarnej sustavy do dekadickej. Citace su zretazene cez prenos a kazdy citac je zapojeny na jednu cifru bloku co riadi displej. Tento blok striedavo rozsvecuje jednu zo 4 cifier pripojenim jej spolocnej elektrody na napajanie.
led test, binarny citacvideo-Prvy test, jednoduchy binarny citac je pripojeny na zdroj hodin 50MHz, jeho 8 MSB bitov, ktore blikaju viditelnym okom su napojene na 8 LED.


00000101000635330076690802016246065019060650991806584492
toxygen
 toxygen      03.04.2012 - 01:06:12 [1K] , level: 2, UP   NEW
spartan3 je fajn hracka :)

000001010006353300766908020162460650190606502142
NiO
 NiO      15.02.2012 - 13:38:19 (modif: 15.02.2012 - 13:47:34) [1K] , level: 1, UP   NEW !!CONTENT CHANGED!!
pri robeni projektov na moju dosku Nexys2 1200K pouzivam sw ISE Webpack, co je zadarmo a je limitovany kapacitou FPGA do 2000 'kilogates'.
Pouzivam z webpacku program Project Navigator. Pri vytvarani projektu udavam ako working directory work aby sa nerobil bordel v korenovom adresari, vystupny subor (.bit), ktory sa da nahrat do FPGA sa objavi v tom work adresari.

FPGA projekt sa sklada z tychto suborov:
nieco.ucf - user constraints file - obsahuje pomenovanie a nastavenie pinov FPGA v projekte
abcde_top.vhd alebo abcde_top.v - modul ktory je priamo pripojeny k pouzitim pinom na FPGA, pre prehladnost moze byt projekt rozdeleny do viacej suborov - do schematickym blokov/modulov
dalsie_subory.vhd - obsahuju dalsie schematicke bloky mozu sa vnorovat

subory vhd / verilog obsahuju popis obvodu ktory bude FPGA zastupovat, ci uz na abstraktnejsej urovni napr. pomocou procesov (co chcem aby to robilo) alebo na nizsej urovni (logicke rovnice, alebo aj instancovanie ozajstnych struktur priamo z FPGA ako napr. nasobicky, XOR logika, carry chainy a pod.)

Dalej popisem pouzitie jazyka VHDL.
kazdy vhdl subor obsahuje vzdy jednu entity
entita je ten schematicky blok, ktory ma nejake rozhranie - vstupy a vystupy
a potom svoju architekturu - popis co to ma robit + ake dalsie bloky su do toho vnorene.

priklad ucf suboru


NET "Led<0>" LOC = "J14"; # vytvori pole 4 signalov Led
NET "Led<1>" LOC = "J15"; # J14 a pod. je znacenie pinu na cipe FPGA
NET "Led<2>" LOC = "K15";
NET "Led<3>" LOC = "K14";

primitivny priklad top suboru


-- pouzita jedina kniznica
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

-- popis rozhrania projektu, iba jeden vystup na 4 LED
entity simple_led is
Port ( led : out STD_LOGIC_VECTOR (3 downto 0) );
end simple_led;

-- popis toho ako modul funguje...
architecture Behavioral of simple_led is
-- sem by isli pomocne signaly
begin
-- napevno pripoji led vystup na definovane log. hodnoty
led <= "1010";
end Behavioral;