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