Novy(?) rychly binarni citac pro pomala FPGA (bez carry, jako Actel) -- prosba o kritiku
Marek Peca
marek na duch.cz
Pátek Září 7 13:47:48 CEST 2012
Zdravim digitalni kolegy,
uvitam hodnoceni nasledujiciho navrhu dvojkoveho citace, predevsim zda
- je to puvodni;
- je to uzitecne.
Navrh citace byl veden snahou co nejvic zkratit logickou cestu mezi D-cky
az na jedine hradlo (MUX), za cenu toho, ze dvojkova posloupnost citani
nebude uplne primocara. Motivaci byla prace na *pomalych* FPGA Actel (nyni
MicroSemi, ma to Wek v diagramu?) ProASIC/IGLOO, kde neni zadna tvrda
logika pro zrychleni prenosu.
Behem prace na Actelich FPGA (v zasade jen 3-LUT a Dcka) jsem byl
obeznamen jen s nasledujicimi rychlejsimi druhy citacu:
- LFSR citac (pseudonahodny)
- Johnsonuv citac
- "RLA counter" (nabizeny Actelim generatorem SmartGen)
Johnsoni jsou na prd quliva O(2^n) slozitosti (kde n je pocet bitu). LFSR
jsou prima, ale je tezke sestavit inverzni fci k pseudonahodnemu citani,
pokud vim, bez tabulky to asi nikdo neumi (nebo jo??), tudiz opet
neprakticke pro sirsi citace. "RLA counter" se zda pro urcita pouziti
porad prilis pomaly a slozity (napr. nezvlada >24bitu @>100MHz).
Navrhuji tedy citac, postaveny na kaskade synchronnich delicek dvema,
obsahujicich 1-bitovou pipelinu a prenos pulsem o sirce jedineho
hodinoveho taktu. Struktura je jednoducha a rychla, predbezne vysledky ze
Synplify a Actel Designeru ukazuji, ze 32bit @200MHz by melo bezet.
Bohuzel, vystupni bitove linky jsou nerovnomerne zpozdene o celociselny
pocet hodinovych period. Abychom ziskali linearne rostouci pocet
nacitanych cyklu, je treba pouzit inverzni funkci. Nastesti je tato fce,
narozdil od LFSR, celkem jednoduse popsatelna; receno v jazyce C:
for (k = 1; k < n; k++)
if ((y & ((1<<k)-1)) < k)
y = y ^ (1<<k);
-- i inverze muze byt implementovana ve VHDL, popr. muze zustat bezet na
CPU, zalezi na potrebe uzivatele.
Prikladam navrhove soubory a dekoder/enkoder bitovych slov v C. Navrh je
spustitelny pomoci GHDL pouhym "make testrun", pokud se chcete podivat na
prubehy, pak "make testvcd".
* Tazi se:
- existuje tento druh citace, pokud ano, pouziva se? Jak se jmenuje?
- pokud ne, myslite, ze je tento navrh k necemu?
V pripade kladneho ohlasu rad nahraji tento zaklad na OpenCores a necham
se sezrat presilou odborniku v comp.arch.fpga.
Diky za zpetnou vazbu,
Marek
-------------- next part --------------
A non-text attachment was scrubbed...
Name: pulscounter.tar.gz
Type: application/octet-stream
Size: 1497 bytes
Desc:
URL: <http://list.hw.cz/pipermail/hw-list/attachments/20120907/32a1d537/attachment.obj>
Další informace o konferenci Hw-list