De afgelopen dagen ben ik bezig geweest met het ontwerpen van een printje van een USB Blaster kloon. De Altera versie kost 150 dollar, en ik ben niet echt bereid om dat er aan uit te geven.

Een schema voor een Byteblaster is overal te vinden (met een 74HC244 enzo) of een Byteblaster II, maar ik heb geen parallele poort op mijn huidige computer. Dit is dus voor mij geen optie.

Er zijn al diverse USB Blaster klonen te koop, maar deze kosten nog altijd rond de 100 dollar.

Sinds enkele dagen werk ik hier met een zelf ge-etst prototype, naar volle tevredenheid. De bedoeling is echter om er een mooi printje voor te laten maken. voor dit ben ik dus op doek naar een paar mensen die hier ook wel heil in zien.

De feiten:
- Het printje is met 36 x 84 millimeter lekker klein.
- De JTAG zijde is future-proof met ondersteunde logica van 5V tot 1,2V.
- Volledig in SMD opgebouwd. Je moet dus wel een beetje van solderen afweten.
- Alle componenten kan ik leveren, als je ze zelf niet kunt vinden.
- De totale kosten van het printje met onderdelen zal zo'n 25-30 euro zijn.

Zet een reply als je intresse gewekt is.

Ik heb over een paar weken een terasic USB blaster aangekocht samen met een 2de DE1 ontwikkelings board. Deze USB blaster zou zelfs beter zijn dan de origineele, wordt compleet geleverd met USB kabel en 10 pin header flatcable en kost $50 omgerekend €37.50 Leveringstermijn was 2 dagen (48 uur)

Dit is een profesioneel product en zeker voor deze prijs niet na te bouwen.

Net zoals de DE1 FPGA board die $150 kost of €113.00 Voor die prijs kun je nauweliks de componenten vinden.

Ik ben bezig met een totaal vernieuwde controller te maken voor al mijn highspeed toepassingen. Daarin wordt ook gebruik gemaakt van de DE1 board. Hoewel die DE1 board zelfstandig een USB onboard heeft heb ik toch die extra USB blaster bijbesteld voor mijn andere toepassingen.

Ik had reeds een origineele ByteblasterII voor op de parallel poort. Met deze combinatie's kan ik nu overal de FPGA's configureren.

Hey Fotoopa! Lang niet meer gesproken!

Die DE1's zijn helaas niet voor mij gemaakt. De reden heb ik wel eens eerder aangegeven. Ik heb inmiddels een Pluto 3 board van fpga4fun.com gekocht en ben er zeer tevreden mee.

Als je dus niets zelf wilt maken dan is de USB blaster kloon van Terasic een goede keuze. Ik was dus eigenlijk op zoek naar mensen die WEL intresse hadden...

Ja die Pluto 3 is zeker een heel goede oplossing. Die is voor heel wat toepassingen perfect inzetbaar.

Maar ik wou gewoon aangeven dat je prijsvergelijk voor bestaande USB blaster clone te hoog was.

Dweil,

Ik heb geen idee wat een Altera USB Blaster is en wat ik er mee kan.

Misschien kan je dat even toelichten?
Zet er meteen een foto bij van wat je nu heb, dan is het ook duidelijker wat er aangeboden wordt.

En met wat voor software het werkt cq getest is.

Edwin,

Als je helemaal niet weet waar het over gaat, is dat geen probleem. Dan is dit namelijk helemaal niets voor jou. Het gaat over een programmeerapparaat voor FPGA's en CPLD's van het merk Altera. hier zijn verschillende versies te krijgen, aangestuurd via de seriele, parallele, ethernet en USB poort. Over de laatste variant heb ik het dus hier.

Deze apparaten zijn goed verkrijgbaar, alleen zitten er allemaal haken en ogen aan wat betreft compatibiliteit. Hij moet minstens om kunnen gaan en werken met het Altera IDE programma Quartus II. Daarnaast moet hij verschillende spanningen aankunnen, voor maximale inzetbaarheid. Snelheid is ook een punt waarop de diverse JTAG adapters verschillen.

Hopelijk schijnt dit wat licht op de zaak.

Fotoopa:

De prijzen van deze klonen lopen nogal uiteen, bijvoorbeeld http://www.amboy.com/ heeft weer een heel ander soort "low-cost" prijs ??

Zelf heb ik ook zo'n USB blaster kloon van terasic en die werkt op zich prima dus echt nodig heb ik zo'n printje niet. Maar ik heb er wel vaak aan gedacht om zoiets te maken voor anderen om het hele CPLD/FPGA gebeuren wat toegankelijker te maken. Parallele USB blaster is leuk maar hopeloos verouderd.

Welke kloon heb je precies gemaakt? Het is ook wel belangrijk dat AS mode ondersteund wordt. Ik zag laatst dat deze kloon nu ook AS mode ondersteunt. Ik weet niet in hoeverre deze helemaal getest is op alle soorten ICs maar de reacties in forums e.d. zagen er goed uit.

Daarnaast heb je nog het probleem dat er vaak in de programmeurs zelf een CPLD zit (of anders microcontroller) die dan ook weer geprogrammeerd moet worden. Met een FT232/245 zou je deze wel kunnen bitbangen, dat heb ik al eens met succes gedaan (nog sneller dan m'n USB blaster). Helaas zit je dan met het probleem dat de bitbang-pinnen dezelfde zijn als de datapinnen (bij de FT245, die meestal gebruikt wordt in die klonen). Je kunt ze niet beide op de JTAG pinnen en op de datapinnen van de CPLD zetten. Misschien valt hier nog wat met jumpers te doen (JTAG CLK afsluiten ofzo), het zou wel heel mooi zijn als je zelf je eigen blaster kunt programmeren via USB. Als je het namelijk in SMD doet (onvermijdelijk) en je laat het de mensen zelf solderen kun je de ICs ook niet van te voren programmeren.

36x84 mm klinkt trouwens nog best groot, maar misschien zie ik iets over het hoofd.

Madwizard,

Dat is op zich niet zo'n slechte gedachte wat je daar zegt. De JTAG pinnen op die MAX 7000's zijn namelijk ook inzetbaar als I/O, mits je hem goed configureerd. Je zou dus eerst via een bitbang programma via de JTAG een lege CPLD kunnen programmeren, en daarna over die zelfde pinnen als I/O het USB Blaster protocol kunnen sturen.

De kloon van mij is inderdaad gebaseerd op de Duitse site wat je zei. Het grote formaat komt door de level shifter welke ik gebruik, en door de los opgebouwde kristal oscillator. Op deze manier kun je namelijk een SMD kristal, conventioneel kristal of een 3 polige resonator gebruiken. en dat is wel zo handig als je een universeel ontwerp wilt hebben.

Maar ik ga eens stoeien met dat bitbang idee van jou..

Op 13 mei 2007 10:40:35 schreef Dweil:
Dat is op zich niet zo'n slechte gedachte wat je daar zegt. De JTAG pinnen op die MAX 7000's zijn namelijk ook inzetbaar als I/O, mits je hem goed configureerd. Je zou dus eerst via een bitbang programma via de JTAG een lege CPLD kunnen programmeren, en daarna over die zelfde pinnen als I/O het USB Blaster protocol kunnen sturen.

Klink tricky maar zou kunnen, ik dacht dat die pinnen echt dedicated waren. Zou wel erg mooi zijn.

De kloon van mij is inderdaad gebaseerd op de Duitse site wat je zei. Het grote formaat komt door de level shifter welke ik gebruik, en door de los opgebouwde kristal oscillator. Op deze manier kun je namelijk een SMD kristal, conventioneel kristal of een 3 polige resonator gebruiken. en dat is wel zo handig als je een universeel ontwerp wilt hebben.

Aja level shifter was ik idd vergeten, dat is ook een essentieel onderdeel. En nog zoiets, die FT245 heeft weer geen CBUS pinnen, bij een FT232R kun je nog een 48/24/12/6MHz klok naar buiten brengen en heb je meteen een klok. Bij de FT245 heb je alleen 12MHz en das misschien weer net een beetje weinig.

Maar ik ga eens stoeien met dat bitbang idee van jou..

Als je details nodig hebt moet je het maar zeggen. Ik heb nog wel code ook maar het hangt een beetje gaar in elkaar nog.
edit: zie ook hier: http://www.circuitsonline.net/forum/view/42939/1

Las ik dat daar dus goed in dat topic van jou, dat geen enkele kloon (behalve die Duitse dus) niet is AS mode kan werken? Hoe kunnen ze zich dan 100% compatible noemen?

Je hebt het over 24 seconden programmeren van een MaxII? Ik weet niet wat normale tijden zijn van de Terasic kloon, maar mijn EP2C5 was voor 83% gevuld, en ik deed er met mijn kloon minder dan een seconde over. (ongeveer een halve)

Volgens mij is die Terasic blaster nu net voor mij als optie afgevallen.

Op 13 mei 2007 11:34:02 schreef Dweil:
Las ik dat daar dus goed in dat topic van jou, dat geen enkele kloon (behalve die Duitse dus) niet is AS mode kan werken? Hoe kunnen ze zich dan 100% compatible noemen?

Dat heeft free_electron vaker gezegd maar is volgens mij niet waar. Met die terasic programmer heb ik het nog niet geprobeerd (AS mode), maar fotoopa wss wel. En ik heb terasic een keer gemaild of AS ondersteund werd en dat is zo.

Je hebt het over 24 seconden programmeren van een MaxII? Ik weet niet wat normale tijden zijn van de Terasic kloon, maar mijn EP2C5 was voor 83% gevuld, en ik deed er met mijn kloon minder dan een seconde over. (ongeveer een halve)

Ik weet niet of dat te vergelijken is. Als je naar een SVF kijkt van een MAX II en een Cyclone zie je bij de max II na elke 16-bits een delay van 10uS. Cyclones hebben geen delay daar maar een continustroom van data. Kan dus goed zijn dat dat stukken sneller gaat.
25 seconden was in ieder geval voor de MAX II (en dat is dus van erase t/m verificatie). Maar m'n eigen bitbang ding deed er dus maar 5 seconden over.

edit: Het is ook nog eens Flash vs RAM met MAX II en Cyclones, of had je een config device geprogrammeerd? (dat is ook weer niet te vergelijken natuurlijk).

Ik word nog eens fan van je bitbang apparaatje, dat ding ziet er keks uit.

Heb jij misschien ook uitleg over het rbf/rpd formaat, waar gewoon de hele bitstream in staat? Misschien is dat makkelijker te maken in bitbang.

AS mode wordt (denk ik) pas ondersteund vanaf de rev B van de USB blaster. Misschien dat daar de verwarring vandaan komt.

Op 13 mei 2007 11:45:47 schreef Dweil:
Ik word nog eens fan van je bitbang apparaatje, dat ding ziet er keks uit.

:) Tis jammer dat het niet met Quartus werkt. Al zou het volgens mij mogelijk zijn de FTDI DLL die Quartus gebruikt te hooken, en dan alle commando's die normaal naar een USB blaster gaan om te zetten naar bitbang commando's. Protocol is nou zo'n beetje bekend dus moet lukken. Maar misschien is dat qua legaliteit wat minder praktisch, weet niet precies hoe dat juridisch zit.

Heb jij misschien ook uitleg over het rbf/rpd formaat, waar gewoon de hele bitstream in staat? Misschien is dat makkelijker te maken in bitbang.

Over de raw files heb ik weinig kunnen vinden, voor Cyclones e.d. is het volgens mij direct de data die in het config rom staat maar heeft het met protocol weinig te maken. Ook heb je bij MAXs deze programming files niet.

Zoals ik in het andere topic zei zijn er twee manieren die goed te gebruiken zijn. De makkelijkste is JAM/STAPL. Deze kun je genereren vanuit Quartus en is een soort programmertaal (al dan niet gecompileerd, er is ascii en bytecode JAM/STAPL). Altera heeft kant en klare source code om deze files te draaien (bytecode is het makkelijkst). Je hoeft dan alleen de stub functies die de I/O pinnen aansturen aan te passen naar de bitbang pinnen. Wel moet je zoveel mogelijk gebruik maken van de synchronous bitbang mode van de FTDI chip, anders is het echt tergend traag.

Dit is en vrij eenvoudige methode maar niet bijzonder snel. Voor een MAX II net iets trager dan die terasic kloon. Maar voor jouw bordje zou het misschien bruikbaar zijn gezien je daar de chip toch maar 1 keer programmeert en een halve minuut wachten moet dan geen probleem zijn.

Als je snelheid wilt zul je JAM/STAPL moeten laten liggen, het is gewoon niet goed geschikt voor synchronous bitbang, het wil veel te vaak data terug hebben (elke 16 bits) waarbij je dus elke keer met de USB latency van minimaal 1ms zit.

Tweede poging was met het serial vector format (SVF) wat ook te genereren is vanuit Quartus. Dat ziet er zo uit:

SIR 10 TDI (032);
RUNTEST 153 TCK;
SIR 10 TDI (022);
RUNTEST 53 TCK;
SDR 32 TDI (FFFFFFFF) TDO (026F5FFF);
SIR 10 TDI (036);

(Dit komt uit een file voor een MAX7000, die van de MAX II zijn stukken eenvoudiger trouwens).
Dit zijn eigenlijk gewoon standaard JTAG operaties, je shift bits in het instructie (SIR) of data (SDR) register. TDI geeft de waarde aan die naar binnen moet, TDO wat naar buiten toe verwacht wordt (als dat niet klopt moet je stoppen). Voordeel van deze manier is dat je de TDO checks ook later kunt doen en dus hele blokken tegelijk kunt bitbangen. Misschien dat het dan wel voorkomt dat je bij een fout te laat stopt, dus ideaal is het ook weer niet.

Ik denk dat die JAM/STAPL oplossing nog wel het makkelijkst is, ik heb geen parser ofzo voor die SVF maar had gewoon de instructies ge-find-and-replaced naar C++ code. Is een hoop meer werk om er echt een generiek iets van te maken. JAM/STAPL is dan wel trager maar als het maar voor een keer is is dat niet zo'n probleem. Ook werkt die code nu al voor alle files.

Op 13 mei 2007 11:38:48 schreef madwizard:
[...]
Dat heeft free_electron vaker gezegd maar is volgens mij niet waar. Met die terasic programmer heb ik het nog niet geprobeerd (AS mode), maar fotoopa wss wel. En ik heb terasic een keer gemaild of AS ondersteund werd en dat is zo.

de terasic kan inderdaad in AS mode draaien omdat dat de ECHTE is ( terasic maakt die eigenlijk voor altera .... )

de andere die te vinden zijn op het net kunnen NIET in AS mode draaien, of ondersteunen niet alle mogelijkheden.

de levelshifters in de originele zijn verduiveld moeilijk te pakken te krijgen ( Maxim )

tweede probleem van die dingen is het kip-ei probleem. er zit een cpld in en je hebt een programmer nodig om de programmer te kunnen maken ....

duitse site .. toch die van Kolja niet ? de laatste keer dat ik daar naar gezien heb was die NIET in staat om in AS mode te draaien. ( vorig jaar in october of zoiets )

Op 14 mei 2007 16:31:07 schreef free_electron:
de terasic kan inderdaad in AS mode draaien omdat dat de ECHTE is ( terasic maakt die eigenlijk voor altera .... )

Op die manier, vandaar ook dat hun developer boards ook via Altera te krijgen zijn. Wel vreemd dat als dat de echte is dat de 'echte echte' 230 euro moet kosten.

de andere die te vinden zijn op het net kunnen NIET in AS mode draaien, of ondersteunen niet alle mogelijkheden.

Als je in ieder geval een config rom kunt programmeren zou dat al wel fijn zijn.

de levelshifters in de originele zijn verduiveld moeilijk te pakken te krijgen ( Maxim )

Zijn dat van die shifters met overspanningsbeveiliging en current limit enzo?

tweede probleem van die dingen is het kip-ei probleem. er zit een cpld in en je hebt een programmer nodig om de programmer te kunnen maken ....

Dat is goed op te lossen met FTDI chipje met bitbangen, enige is dat de JTAG pinnen dan eigenlijk tijdelijk met de datapinnen verbonden moeten kunnen worden.

duitse site .. toch die van Kolja niet ? de laatste keer dat ik daar naar gezien heb was die NIET in staat om in AS mode te draaien. ( vorig jaar in october of zoiets )

Van kolja ja, maar die AS mode is er ook pas sinds oktober vorige jaar en later bijgekomen. Zie het forum topic.

Ik heb het even nagekeken bij Quartus, maar de JTAG pinnen zijn inderdaad toe te wijzen als I/O na het programmeren. Je kunt dan geen gebruik meer maken van de JTAG functie, dus je moet wel weten dat het image wat je er in zet ECHT goed is.

Beetje riskant, ik kon er ook verder niets anders over vinden dan dat het zo werkt. Je zou nog een 74*157 quad multiplexer kunnen inzetten, dat kost je ook de kop niet. Alleen dan wel even naar de delay kijken.

Dat klinkt wel een beetje raar, nu je al een CPLD als Gluelogic(tm) hebt ingezet.. En de functie is al uitgetest, dus wat er in de CPLD komt is betrouwbaar. Zou je mij je code om de STAPL bestanden te decoderen kunnen mailen? Want ik heb eens gekeken naar de voorbeelden van Altera maar kom er niet echt wijs uit..

Ik vond het ook raar klinken toen ik het schreef maar in dit geval kan de CPLD het natuurlijk niet doen. Je sluit dan wel updates van de 'firmware' ook uit en alles moet in 1 keer goed gaan. Is er niet nog een mogelijkheid om evengoed nog in JTAG mode te komen, vlak na het aanzetten ofzo?

Mail is onderweg.

Op 14 mei 2007 16:53:36 schreef madwizard:
[...]
Op die manier, vandaar ook dat hun developer boards ook via Altera te krijgen zijn. Wel vreemd dat als dat de echte is dat de 'echte echte' 230 euro moet kosten.

Zijn dat van die shifters met overspanningsbeveiliging en current limit enzo?

jep. is ene soort partnership...

die level shifters werken tot 50 MHz ( de klok in een echte usb blaster is 48 MHz ... ) en kunnen tussen 5 volt en 1.4 volt io spanning werken.
ze zitten in msop8 verpakking. typenummer ontglipt me nu effe. moet het opzoeken.

Op 14 mei 2007 21:31:02 schreef free_electron:
[...]

jep. is ene soort partnership...

Klopt! vandaar dat ze enkele board types verkopen aan kostprijs om Altera toepassingen te promoten. Dit is oa het geval met de DE1 en de DE2 (deze enkel voor studenten aan verlaagde prijs). Ik vermoed dat de USB blaster hier ook deel uitmaakt vandaar dat die omgerekend ongeveer 37 euro kost. Vandaar dat ik het eigenlijk niet zo zinvol vind om hiervoor veel inspanningen te doen. Het zou praktischer zijn een gezamelijke inkoop te doen van deze USB blaster om de kosten van verzending laag te houden.

In AS mode kan ik hem nog niet testen want ik heb momenteel geen enkele toepassing die AS mode gebruikt. Mijn zelfgebouwde cyclone boardjes hebben enkel jtag mode in gebruik en de DE1 heeft zijn eigen USB blaster ingebouwd. Daar kun je in enkele seconden de EP2C20 (eigenlijk de flash EPSC4) met 20.000 LE's in AS mode programmeren. Met een switch kun je de cyclone ook in jtag mode programmeren wat meer gebruikt wordt voor tijdelijke testen.

Op 14 mei 2007 22:05:07 schreef fotoopa:
Vandaar dat ik het eigenlijk niet zo zinvol vind om hiervoor veel inspanningen te doen. Het zou praktischer zijn een gezamelijke inkoop te doen van deze USB blaster om de kosten van verzending laag te houden.

Dat is ook best een aardig idee (het is wel 44 euro inclusief BTW). Maar ik denk dat een eigen gemaakt printje nog wel wat goedkoper kan, denk dat je met een euro of 15 a 20 een heel eind komt.

Dat, plus dit topic is een beetje veranderd in een "Maak een USB Blaster zonder verdere programmeerhulp".

Ik zie meer heil in een "open-source" ISP programmer hardware en software. Ik ben al eens bezig geweest, bit-bang mode van de FTDI boeit niet, veel te traag. Ik heb nu een werkend ontwerp met een Mega AVR'tje erbij om de USB effectief op hoge snelheid te kunnen gebruiken. Bezig geweest met Visual C om er een GUI aan te plakken en toen is het gestrand omdat het teveel werk was. Sinds kort ben ik opnieuw begonnen en wil de GUI in Python of TCL/TK maken. Ik heb 100 FTDI chippies thuis liggen en als er interesse is ben ik wel bereid om wat van die chippies weg te geven, eventueel ook met een megaAvr. Dus: iemand trek om zo'n project op te starten? Het gaat dus om een generieke progammer waarmee je JTAG en andere seriele ISP/SPI achtige dingen mee kunt doen.

Dat is natuurlijk heel mooi, maar het probleem is dan hoe de ondersteuning wordt van deze programmer in verschillende IDE's. Losse software is leuk, maar er kleven nadelen aan.

Kolja gebruikt een FX2 chip van Cypress om verschillende hardware te emuleren, o.a. de byteblaster en xilinx variant.