Súťaž o Digilent BASYS1 - Spartan3E100

Všetko možné na prevetranie mozgových závitov.

Moderátori: Merak, Moderátori

This is.... Spartaaan

Zucastnim sa
8
24%
Nezucastnim sa
12
35%
Uz mam FPGA
4
12%
Pracujem s FPGA profesionalne
2
6%
Nemam o FPGA zaujem
4
12%
Blbost
4
12%
 
Celkom hlasov: 34

Používateľov profilový obrázok
Zeren
Nový člen
Nový člen
Príspevky: 81
Dátum registrácie: 09 Nov 2013, 17:28

Re: Súťaž o Digilent BASYS1 - Spartan3E100

Príspevok od používateľa Zeren » 28 Sep 2014, 20:52

Tak já sem přihodím moje řešení tick generátoru.

Kód: Vybrať všetko

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;
entity Tick_generator is
	generic (count_to : integer := 15);
    Port ( clk : in  STD_LOGIC;
           tick : out  STD_LOGIC;
           reset : in  STD_LOGIC;
           enable : in  STD_LOGIC);
end Tick_generator;

architecture Behavioral of Tick_generator is
signal citac : unsigned (count_to-1 downto 0);
constant zmena : unsigned (count_to-1 downto 0) := (others => '1');
begin

	gen : process (clk, citac)
	begin
		if rising_edge(clk) then
			if reset = '1' then
				citac <= (others => '0');
			else
				if enable = '1' then
					citac <= citac + 1;
				end if;
			end if;
		end if;
		if citac = zmena then
			tick <= '1';
		else 
			tick <= '0';
		end if;
	end process;
	
end Behavioral;
Jinak absolutně jsem neměl přes víkend čas na pokračování s fsm... :( Snad přes týden si na to ve škole udělám čas. :)
0
It's better to be hated for who you are, than to be loved for who you are not.

Používateľov profilový obrázok
Tribec Zacks
Pokročilý člen
Pokročilý člen
Príspevky: 709
Dátum registrácie: 26 Jún 2010, 00:00
Bydlisko: Levice / Cork IRL
Vek: 41
Kontaktovať používateľa:

Re: Súťaž o Digilent BASYS1 - Spartan3E100

Príspevok od používateľa Tribec Zacks » 28 Sep 2014, 21:13

to vypada celkom presne nastavitelne s run/stop funkcionalitou ak sa nemylim, da sa aj takto veru ked treba taku funkcnost, alebo aspon generic blok, ktory sa da zase a zase pouzit bez babrania sa v nom :)
mne ten tickgen riadil refresh 7segmentu a counter na rom offset, tak som nepotreboval nejak presne riesit cas. keep it up Zeren.

btw ja som chcel stihnut prebehnut vysledne projekty tak, aby som to stihol odoslat, alebo dorucit cez sviatky ked budem na svk, ale to sa da kedykolvek. ked uz bude vseobecna nalada, ze sa ide o placku, tak sa to vtedy porobi, ale este treba pockat aby bol ten level vedomosti co a ako aspon trochu vybalancovany.

---
btw co som tu postol ten diagram, tak trvalo par dni porobit sinusovku s linearnou interpolaciou, uz to vypada dobre <- to len ze nieje to vsetko hned ked to clovek chce riesit sam
0
Kreativita a motivacia je to, co prinasa originalne napady a myslienky, disciplina je to, co ich dokaze zrealizovat.

mato3000
Power user
Power user
Príspevky: 9767
Dátum registrácie: 04 Jan 2009, 00:00
Bydlisko: BA

Re: Súťaž o Digilent BASYS1 - Spartan3E100

Príspevok od používateľa mato3000 » 28 Sep 2014, 22:14

:? dokelu všetko mám viac menej rovnaké, samozrejme inak nazvané signály , ale ja som dal zle posledné end if; . To je neskutočné :confused: . Všetko je už tak ako má byť.


prosím, ťa možeš mi nejako v skratke popísať tento riadok ? lebo ja tam mám len :

gen2: process (clk_tik) begin


a ty tam máš :

tick:process(clk, tick1_clk, tick2_clk, tick1_clk_q, tick2_clk_q) begin

na výsledku ale nevdím žiaden rozdiel, teda simuláciu som ešte nerobil - zatial
0

Používateľov profilový obrázok
Tribec Zacks
Pokročilý člen
Pokročilý člen
Príspevky: 709
Dátum registrácie: 26 Jún 2010, 00:00
Bydlisko: Levice / Cork IRL
Vek: 41
Kontaktovať používateľa:

Re: Súťaž o Digilent BASYS1 - Spartan3E100

Príspevok od používateľa Tribec Zacks » 28 Sep 2014, 22:39

mato, to je koli simulatoru na logiku to nema vplyv, skusime predpokladat ze mame uplne stupidny simulator co nic nevie, nastaveny je na 1ps, teda analyzuje vsetky signaly kazdu pikosekundu, ak v procese nechas len clock, tak bude analyzovat stav signalov len pocas clocku co sa snimi deje, ak by si mal nejaky asynchronny signal ktory meni hodnotu medzi medzi nabeznou a zostupnou hranou tak to na simulatore pre dany process neuvidis, uvidel by si zmenu, alebo efekt tej zmeny len pocas nabeznej hrany, ak by si zahrnul ten asynchronny signal v sensitivity liste, tak by simulator analyzoval dany signal kazdu pikosekundu pocas trvania celeho clock cyklu a teda by si to na simulatore videl, ten process obsahuje combinational logic, preto to tam mam, aby aj simulacia odpovedala realite. ak vsetko clockujes tak samozrejme staci clock do sensitivity listu process(clk)begin...
normalne ale simulatory vedia detektnut, ze su tam aj asynchronne signaly a odsimuluju ich aj tak, ak to z toho sensitivitu odstranis a skusis prebehnut syntezu tak ti da nastroj hlasku, ze tam tie signaly maju byt, vidiet ze o nich vie ;-)
0
Kreativita a motivacia je to, co prinasa originalne napady a myslienky, disciplina je to, co ich dokaze zrealizovat.

mato3000
Power user
Power user
Príspevky: 9767
Dátum registrácie: 04 Jan 2009, 00:00
Bydlisko: BA

Re: Súťaž o Digilent BASYS1 - Spartan3E100

Príspevok od používateľa mato3000 » 28 Sep 2014, 22:51

do prdele, a ja som deň bojoval s tým, že mi simulátor nič nedával na výstupe :confused: , nakoniec som tam pridal externý CLK a všetko fičalo, ale nedávalo mi to logiku . Ja tam má totiško dva clk generátory, lebo som si najprv upravil 50MHz na 25 MHz , to len tak cvične a z tými 25MHz som šiel na ten tvoj generátor, ale nefungoval mi výstup v simulátore a už viem pre čo . No čo sa tu človek nedozvie :wink:

Hej videl som tie Warningy, ale neprikladal som im dôležitosť. Proste som im nerozumel, ale už to je jasné
0

Používateľov profilový obrázok
Tribec Zacks
Pokročilý člen
Pokročilý člen
Príspevky: 709
Dátum registrácie: 26 Jún 2010, 00:00
Bydlisko: Levice / Cork IRL
Vek: 41
Kontaktovať používateľa:

Re: Súťaž o Digilent BASYS1 - Spartan3E100

Príspevok od používateľa Tribec Zacks » 28 Sep 2014, 23:32

nieje problem,
btw potom neurobit podobnu chybu ako sa nedavno naskytla, ak treba nieco casovat inak, tak pomocou enable na jednotlivych registroch a celu logiku casovat jednym system clockom, teda vsetky procesy casovane: if rising_edge (vsade_rovnaky_clock) then... vytvorit std_logic flag, a if flag='1' then ... atd, alebo if akykolvekregister(23) = '1' then .... atd
alebo ak nejaky signal o clock pozdrzat:
destination <= source;
destination_d <= destination;
a stale kukat na rtl wiever co to robi a ci logika odpoveda zameru

pokial sa kazdemu nepodari urobit nejake stopky, codelock, zapis a citanie s ram/rom, (najlepsie dva rozdielne projekty) tak zatial nepojdeme o placku, nemalo by to zmysel davat ten projekt skor. dovtedy treba riesit podobne veci
0
Kreativita a motivacia je to, co prinasa originalne napady a myslienky, disciplina je to, co ich dokaze zrealizovat.

Používateľov profilový obrázok
danhard
Ultimate člen
Ultimate člen
Príspevky: 3226
Dátum registrácie: 15 Apr 2009, 00:00
Bydlisko: Jesenice u Prahy
Vek: 68

Re: Súťaž o Digilent BASYS1 - Spartan3E100

Príspevok od používateľa danhard » 29 Sep 2014, 00:40

Synchronni design je pro amatéry, staří psi zvládají asynchronní design :)
O metastabilitě KO mohu psát romány.
ps. odkojen jsem řadou XC4000 :lol:
0

Používateľov profilový obrázok
Tribec Zacks
Pokročilý člen
Pokročilý člen
Príspevky: 709
Dátum registrácie: 26 Jún 2010, 00:00
Bydlisko: Levice / Cork IRL
Vek: 41
Kontaktovať používateľa:

Re: Súťaž o Digilent BASYS1 - Spartan3E100

Príspevok od používateľa Tribec Zacks » 29 Sep 2014, 09:30

zdar danhard, no ono ked clovek rad skodi sam sebe a ignoruje constraints tak jop, asynchronny design "is way to go" :-) ale je pravda, ked uz clovek pochopi ako treba pri tom rozmyslat, tak uz to nieje take zle.

predsa to tu nieje take zle s ludmi okolo fpga :)
0
Kreativita a motivacia je to, co prinasa originalne napady a myslienky, disciplina je to, co ich dokaze zrealizovat.

mato3000
Power user
Power user
Príspevky: 9767
Dátum registrácie: 04 Jan 2009, 00:00
Bydlisko: BA

Re: Súťaž o Digilent BASYS1 - Spartan3E100

Príspevok od používateľa mato3000 » 29 Sep 2014, 20:56

Jedna otázka. Musia všetky komponenty používať rovnaký zdroj CLK ? Teda ak si v prvom komponente vytvorím iný clk a použijem ho v druhom ako zdroj clk, bude to fungovať ? Lebo mne to funguje len vtedy ak oba komponenty napájam rovnakým clk a ten nový clk používam na počítanie toho registru.

iba takto mi funguje simulácia :confused:
clk = 50MHz
tik_clk = 25MHz

//ale inak mi ide simulácia na 100% , takže to bude asi správne.
Prílohy
Sejmutý obrázek 1.png
0

Používateľov profilový obrázok
AndiCibula
Ultimate člen
Ultimate člen
Príspevky: 2494
Dátum registrácie: 29 Nov 2009, 00:00
Bydlisko: Brno
Vek: 33
Kontaktovať používateľa:

Re: Súťaž o Digilent BASYS1 - Spartan3E100

Príspevok od používateľa AndiCibula » 29 Sep 2014, 21:35

Nižší clock sa má generovať pomocou hlavného clk + enable signál, je to nejaký fundament tejto digitálnej techniky, ale už si nepamätám prečo presne.

Tuná sú na to dobré prednášky a cviká:
http://www.umel.feec.vutbr.cz/BDIO/

A tieto, ale nejak som ich neskúmal, absolvoval som tú výuku, ale podklady dodával priamo vyučujúci:
http://www.urel.feec.vutbr.cz/MPLD/

//No veď to som chcel povedať že musí. :D
0
Naposledy upravil/-a AndiCibula v 29 Sep 2014, 21:49, upravené celkom 1 krát.
Performance in nanospace.

mato3000
Power user
Power user
Príspevky: 9767
Dátum registrácie: 04 Jan 2009, 00:00
Bydlisko: BA

Re: Súťaž o Digilent BASYS1 - Spartan3E100

Príspevok od používateľa mato3000 » 29 Sep 2014, 21:45

ale ja som sa pýtal na to že či musí byť vo všetkých komponentoch rovnaký hlavný CLK, tak ako je to na tej schéme, alebo či sa to dá spraviť jednoduchšie, tak aby z toho vypadol signál clk , ten modrý .. ale asi nedá, neviem a preto sa pýtam. Generovať nižší clk neni žiaden problém
0

Používateľov profilový obrázok
Tribec Zacks
Pokročilý člen
Pokročilý člen
Príspevky: 709
Dátum registrácie: 26 Jún 2010, 00:00
Bydlisko: Levice / Cork IRL
Vek: 41
Kontaktovať používateľa:

Re: Súťaž o Digilent BASYS1 - Spartan3E100

Príspevok od používateľa Tribec Zacks » 30 Sep 2014, 22:35

mato, ked si takto vygenerujes iny clock, tak tool ti ho pekne rozpozna ako clock a nie ako generovany logicky signal a bude nim casovat blok logiky ktoru chces (clk na registroch), aj ked sa to zda logicky spravne tak nieje. tie dva clocky ked ich vytvoris, na vystupe registra z generatora synchronne budu, ale tool ich dalej bude brat ako dva rozdielne clocky a bude ich aj rutovat po rozdielne dlhych trasach dalej.
skus si predstavit blok co generuje nejake data casovany system clockom, tie privadzas na nejaky register casovany clockom ktory si si vytvoril,
dlzka rutovania clock signalu a dlzka rutovania dat bude kompletne ina a teda to synchronne nikdy nebude. nastroj ti toto ani neohlasi ako nejaky violation. v podstate co sa deje, prevadzas data z jednej clock domeny do druhej, na to su techniky ako clock domain data crossing, alebo lahsie povedane, treba na to nejaky synchronizer, alebo este lepsie povedane, vyhnut sa tomu ked sa da :-)
nejaky obrazok asi vysvetli lepsie ako tisic slov
http://www.eetimes.com/document.asp?doc_id=1279906
https://asicdigitaldesign.wordpress.com ... chronizer/

alebo mozno pomoze si to lepsie predstavit, blok logiky casovany 100mhz => data kazdych 10ns, druhy blok je casovany 50mhz ocakava data kazdych 20ns, koli rozdielnej dlzke na clock signaloch je rozdiel v synchronizacii povedzme 0.5ns, prvy blok generuje data kazde 2cykly => rozdiel v casovani 1ns... je to vela, je to malo? je to koledovanie o problem => metastability.

btw, skus si takto vytvorit clock a v ise po synteze si pozri design summary/reports, v liste vyber clock report, najdes tam aj tvoj vygenerovany clock, teda uz nie signal brany ako logicky signal co bude pouzity na enable na registroch.

hadam sa to dalo nejak zrozumet a ja som velmi nenaplacal ;-)

----
ale pekny tick generator som zabudol :-)
0
Kreativita a motivacia je to, co prinasa originalne napady a myslienky, disciplina je to, co ich dokaze zrealizovat.

mato3000
Power user
Power user
Príspevky: 9767
Dátum registrácie: 04 Jan 2009, 00:00
Bydlisko: BA

Re: Súťaž o Digilent BASYS1 - Spartan3E100

Príspevok od používateľa mato3000 » 30 Sep 2014, 23:20

ahá, super. Už to chápem, resp niečo podobné som si naštudoval, len som si to chcel overiť. Takže by sa to po istej dĺžke signálovo rozpadlo .

Akurát som dorobil debouncery tlačítok a zase trochu podľa seba :D , ale je to časované presne tak isto ako si uviedol vo videu, zopnutie trvá cca 5,2ms a vypne sa to po pustení tlačítka za 1,3ms.

Inak som to spravil preto, že zatiaľ sa nepodarilo napísať ten posun, ale zajtra to možno tak spravím. Namiesto posunu pripočítavam a potom vyhodnotím danú hodnotu.

Pomaly sa dostanem k tým 7 segmentovkám :wink:
0

Používateľov profilový obrázok
Tribec Zacks
Pokročilý člen
Pokročilý člen
Príspevky: 709
Dátum registrácie: 26 Jún 2010, 00:00
Bydlisko: Levice / Cork IRL
Vek: 41
Kontaktovať používateľa:

Re: Súťaž o Digilent BASYS1 - Spartan3E100

Príspevok od používateľa Tribec Zacks » 01 Okt 2014, 00:02

pekne pekne, normalne tu mame nejaky progress vsade :-)
a inak hej, tlacitka sa daju debouncovat aj meranim casu alebo pomocou tick a shiftregistru, to je asi ako komu viacej chuti, mne pride shift register pristup blizsie k hardwaru, a tiez mi to pride ako elegantnejsie riesenie:

shiftreg std_logic_vector(7 downto 0); napr
shiftreg <= shiftreg(6 downto 0) & tlacitko <--- omg aka chyba tam bola :-)

ja som casto riesil rovnaky problem dvomi cestami a porovnaval co to robi, celkom to pomohlo v mysleni a pristupe
0
Kreativita a motivacia je to, co prinasa originalne napady a myslienky, disciplina je to, co ich dokaze zrealizovat.

BOBOR
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1069
Dátum registrácie: 15 Dec 2006, 00:00
Bydlisko: Snina, Košice

Re: Súťaž o Digilent BASYS1 - Spartan3E100

Príspevok od používateľa BOBOR » 04 Okt 2014, 11:41

tak som ten svoj kód ktorý nefungoval na FPGA nahral do CPLD (MAX V) s nakáblovaným displejom a zdá sa že tu funguje


ale začal som písať druhý kód tak ako si mi poradil, do večera by mohol byť hotový (malo by to byť niečo ako stopky/časovač)
0

Používateľov profilový obrázok
Tribec Zacks
Pokročilý člen
Pokročilý člen
Príspevky: 709
Dátum registrácie: 26 Jún 2010, 00:00
Bydlisko: Levice / Cork IRL
Vek: 41
Kontaktovať používateľa:

Re: Súťaž o Digilent BASYS1 - Spartan3E100

Príspevok od používateľa Tribec Zacks » 04 Okt 2014, 13:58

no BOBOR, pekne to kotlis, keep it up :) neviem ako rutuje cpld oproti fpga, ani aka je jeho architektura, alebo aky coding style mu vyhovuje. zjavne s tym nema problem, ale nechcem placat, nemam s cpld ziadne skusenosti. urcite skusi aj tym druhym stylom a otestovat popripade poslat nech vidime co to robi.
0
Kreativita a motivacia je to, co prinasa originalne napady a myslienky, disciplina je to, co ich dokaze zrealizovat.

BOBOR
Zaslúžilý člen
Zaslúžilý člen
Príspevky: 1069
Dátum registrácie: 15 Dec 2006, 00:00
Bydlisko: Snina, Košice

Re: Súťaž o Digilent BASYS1 - Spartan3E100

Príspevok od používateľa BOBOR » 04 Okt 2014, 14:13

ten druhý kód ti asi pošlem na otestovanie, pretože už teraz presahuje kapacitu CPLD :)
0

Používateľov profilový obrázok
Tribec Zacks
Pokročilý člen
Pokročilý člen
Príspevky: 709
Dátum registrácie: 26 Jún 2010, 00:00
Bydlisko: Levice / Cork IRL
Vek: 41
Kontaktovať používateľa:

Re: Súťaž o Digilent BASYS1 - Spartan3E100

Príspevok od používateľa Tribec Zacks » 04 Okt 2014, 14:22

hehe, v pohode :) ja mam tiez zase "lots of fpga fun weekend" takze neni problem
0
Kreativita a motivacia je to, co prinasa originalne napady a myslienky, disciplina je to, co ich dokaze zrealizovat.

Používateľov profilový obrázok
Zeren
Nový člen
Nový člen
Príspevky: 81
Dátum registrácie: 09 Nov 2013, 17:28

Re: Súťaž o Digilent BASYS1 - Spartan3E100

Príspevok od používateľa Zeren » 04 Okt 2014, 20:42

Ok, řekněme, že jsem na dobré cestě. Jenom to chce ještě dotáhnout. Vlastně poprvé jsem rozchodil nějaký display :-D
https://www.dropbox.com/s/li1j6mz5i9zp1 ... 4.jpg?dl=0
Teď ještě musím přijít na to, proč je to ujetý stranou. :?
0
It's better to be hated for who you are, than to be loved for who you are not.

Používateľov profilový obrázok
Tribec Zacks
Pokročilý člen
Pokročilý člen
Príspevky: 709
Dátum registrácie: 26 Jún 2010, 00:00
Bydlisko: Levice / Cork IRL
Vek: 41
Kontaktovať používateľa:

Re: Súťaž o Digilent BASYS1 - Spartan3E100

Príspevok od používateľa Tribec Zacks » 04 Okt 2014, 21:15

no Zeren pekne pekne, AHOJ :-) btw fajna pohladnica :O

inak mas to cele hw? state machine a tak inicializacia a podobne, alebo blaze mcu?
0
Kreativita a motivacia je to, co prinasa originalne napady a myslienky, disciplina je to, co ich dokaze zrealizovat.

Zamknuté