{"id":1982,"date":"2022-03-09T20:49:58","date_gmt":"2022-03-09T19:49:58","guid":{"rendered":"http:\/\/www.fabienm.eu\/flf\/?p=1982"},"modified":"2022-03-19T20:57:06","modified_gmt":"2022-03-19T19:57:06","slug":"ulx3s","status":"publish","type":"post","link":"http:\/\/www.fabienm.eu\/flf\/ulx3s\/","title":{"rendered":"ULX3S"},"content":{"rendered":"\n<p>Ho mais je me rend compte que je n&rsquo;avais encore rien \u00e9crit sur la carte <a href=\"https:\/\/radiona.org\/ulx3s\/\">ULX3S<\/a> command\u00e9e l&rsquo;\u00e9t\u00e9 dernier. Il faut dire que les d\u00e9lais d&rsquo;approvisionnement \u00e9tant ce qu&rsquo;ils sont aujourd&rsquo;hui la carte a tout de m\u00eame mis presque six mois \u00e0 arriver. J&rsquo;ai donc eu tout le temps de passer \u00e0 autre chose.<\/p>\n\n\n\n<p>Donc oui, apr\u00e8s m&rsquo;\u00eatre <a href=\"http:\/\/www.fabienm.eu\/flf\/ulx3s-ou-orangecrab\/\">pos\u00e9 la question<\/a>, j&rsquo;ai opt\u00e9 pour l&rsquo;ULX3S au d\u00e9triment de l&rsquo;orangecrab. La carte, con\u00e7ue par le Hackerspace Radiona de Zagreb (croatie) arrive dans un petit carton muni de quelques accessoire \u00abpmod\u00bb pour ajouter un second port HDMI, des USB et autres header he10.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-style-rounded\"><a href=\"http:\/\/www.fabienm.eu\/flf\/wp-content\/uploads\/2022\/03\/radiona_deballage.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"1000\" height=\"711\" src=\"http:\/\/www.fabienm.eu\/flf\/wp-content\/uploads\/2022\/03\/radiona_deballage.jpg\" alt=\"\" class=\"wp-image-1983\" srcset=\"http:\/\/www.fabienm.eu\/flf\/wp-content\/uploads\/2022\/03\/radiona_deballage.jpg 1000w, http:\/\/www.fabienm.eu\/flf\/wp-content\/uploads\/2022\/03\/radiona_deballage-300x213.jpg 300w, http:\/\/www.fabienm.eu\/flf\/wp-content\/uploads\/2022\/03\/radiona_deballage-768x546.jpg 768w\" sizes=\"auto, (max-width: 1000px) 100vw, 1000px\" \/><\/a><figcaption>L&rsquo;ULX3S et ses adaptateurs \u00abpmod\u00bb<\/figcaption><\/figure>\n\n\n\n<p>La carte a tout ce qu&rsquo;il faut pour faire une console de jeux \ud83d\ude42 Mais pour le moment, on va surtout s&rsquo;int\u00e9resser \u00e0 la sortie HDMI, apr\u00e8s avoir d\u00e9ball\u00e9 la b\u00eate.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Mise en route<\/strong><\/h2>\n\n\n\n<p>Un guide de mise en route est donn\u00e9 sur le github officiel. Pour d\u00e9marrer la carte il suffit de brancher l&rsquo;ordinateur sur l&rsquo;usb de gauche.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"http:\/\/www.fabienm.eu\/flf\/wp-content\/uploads\/2022\/03\/ulx3s-usb1.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"400\" height=\"259\" src=\"http:\/\/www.fabienm.eu\/flf\/wp-content\/uploads\/2022\/03\/ulx3s-usb1.jpg\" alt=\"\" class=\"wp-image-1993\" srcset=\"http:\/\/www.fabienm.eu\/flf\/wp-content\/uploads\/2022\/03\/ulx3s-usb1.jpg 400w, http:\/\/www.fabienm.eu\/flf\/wp-content\/uploads\/2022\/03\/ulx3s-usb1-300x194.jpg 300w\" sizes=\"auto, (max-width: 400px) 100vw, 400px\" \/><\/a><figcaption>Branchement de l&rsquo;usb pour programmer la carte (src : quickstartguide)<\/figcaption><\/figure><\/div>\n\n\n\n<p>Ce qui a pour effet d&rsquo;allumer quelques leds de toutes les couleurs <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-full\"><a href=\"http:\/\/www.fabienm.eu\/flf\/wp-content\/uploads\/2022\/03\/IMG_20220317_203653.jpg\"><img loading=\"lazy\" decoding=\"async\" width=\"450\" height=\"338\" src=\"http:\/\/www.fabienm.eu\/flf\/wp-content\/uploads\/2022\/03\/IMG_20220317_203653.jpg\" alt=\"\" class=\"wp-image-1996\" srcset=\"http:\/\/www.fabienm.eu\/flf\/wp-content\/uploads\/2022\/03\/IMG_20220317_203653.jpg 450w, http:\/\/www.fabienm.eu\/flf\/wp-content\/uploads\/2022\/03\/IMG_20220317_203653-300x225.jpg 300w\" sizes=\"auto, (max-width: 450px) 100vw, 450px\" \/><\/a><figcaption>\\o\/ plein de LEDs multicolors<\/figcaption><\/figure><\/div>\n\n\n\n<p>et de monter un driver tty sur le pc host :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ dmesg\n&#91;1956889.190788] usb 1-1.1.2: new full-speed USB device number 16 using xhci_hcd\n&#91;1956889.300502] usb 1-1.1.2: New USB device found, idVendor=0403, idProduct=6015, bcdDevice=10.00\n&#91;1956889.300504] usb 1-1.1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3\n&#91;1956889.300506] usb 1-1.1.2: Product: ULX3S FPGA 85K v3.0.8\n&#91;1956889.300507] usb 1-1.1.2: Manufacturer: FER-RADIONA-EMARD\n&#91;1956889.300508] usb 1-1.1.2: SerialNumber: E20000\n&#91;1956889.308375] ftdi_sio 1-1.1.2:1.0: FTDI USB Serial Device converter detected\n&#91;1956889.308401] usb 1-1.1.2: Detected FT-X\n&#91;1956889.308597] usb 1-1.1.2: FTDI USB Serial Device converter now attached to ttyUSB0\n<\/code><\/pre>\n\n\n\n<p>N&rsquo;oublions pas que le FPGA est un ECP5, il y a donc tous les outils opensource disponibles pour d\u00e9velopper avec. De plus, radiona fournie la toolchain pr\u00e9compil\u00e9 pour la carte, il n&rsquo;y a plus qu&rsquo;\u00e0 la t\u00e9l\u00e9charger et l&rsquo;installer comme <a href=\"https:\/\/github.com\/emard\/ulx3s\/blob\/master\/doc\/MANUAL.md#precompiled-opensource-tools-for-all-platforms\">expliqu\u00e9 dans le manuel (424Mo pour un pc x64). <\/a><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ cd \/opt\/\n$ mkdir ulx3s\n$ cd ulx3s\/\n$ wget https:\/\/github.com\/YosysHQ\/oss-cad-suite-build\/releases\/download\/2022-03-17\/oss-cad-suite-linux-x64-20220317.tgz\n$ tar xf oss-cad-suite-linux-x64-20220317.tgz\n<\/code><\/pre>\n\n\n\n<p>Si on veut faire clignoter vite vite vite, dans relancer de synth\u00e8se on peut tout simplement cloner le projet \u00abblink\u00bb et t\u00e9l\u00e9charger le bitstream. \u00c0 titre personnel je pr\u00e9f\u00e8re utiliser <a href=\"https:\/\/github.com\/trabucayre\/openFPGALoader\">openFPGALoader<\/a> (avant m\u00eame d&rsquo;en tester un autre ;).<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ cd \/opt\/ulx3s\n$ git clone https:\/\/github.com\/ulx3s\/blink.git\n$ cd blink\/\n$ tree\n.\n\u251c\u2500\u2500 blink_12f.bit\n\u251c\u2500\u2500 blink_45f.bit\n\u251c\u2500\u2500 blink_85f.bit\n\u251c\u2500\u2500 blinky.v\n\u251c\u2500\u2500 blinky.ys\n\u251c\u2500\u2500 LICENSE\n\u251c\u2500\u2500 Makefile\n\u251c\u2500\u2500 README.md\n\u2514\u2500\u2500 ulx3s_v20.lpf\n\n0 directories, 9 files\n$ openFPGALoader -bulx3s  blink_85f.bit\nJtag probe limited to 3MHz\nJtag frequency : requested 6000000Hz -&gt; real 3000000Hz\nret 0\nOpen file: DONE\nParse file: DONE\nEnable configuration: DONE\nSRAM erase: DONE\nLoading: &#91;==================================================] 100.00%\nDone\nDisable configuration: DONE<\/code><\/pre>\n\n\n\n<p>Le r\u00e9sultat n&rsquo;est pas une LED qui clignote, mais 6 LEDs multicolors qui clignotent (qui compte en binaire).<\/p>\n\n\n\n<p>Le projet blink fourni un makefile pour reconstruire le bitstream si l&rsquo;on veut tester la toolchain :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ export PATH=\/opt\/ulx3s\/oss-cad-suite\/:$PATH\n$ make ulx3s.bit\n$ openFPGALoader -bulx3s ulx3s.bit<\/code><\/pre>\n\n\n\n<p>Et voila \\o\/, c&rsquo;est tout pour la prise en main !<\/p>\n\n\n\n<iframe loading=\"lazy\" src=\"https:\/\/www.youtube.com\/embed\/V-NoSTkbsw4\" title=\"YouTube video player\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen=\"\" width=\"560\" height=\"315\" frameborder=\"0\"><\/iframe>\n\n\n\n<h2 class=\"wp-block-heading\">La suite<\/h2>\n\n\n\n<p>La suite va consister \u00e0 adapter le projet <a href=\"https:\/\/github.com\/Martoni\/HdmiCore\">HdmiCore<\/a> pour la sortie HDMI de la carte.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ressources<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/github.com\/RadionaOrg\/ulx3s-links\/\">Un d\u00e9pot github de radiona<\/a> donne une foule de liens pour commencer<\/li><li><a href=\"https:\/\/github.com\/ulx3s\">Les d\u00e9pots github de l&rsquo;ulx3s.<\/a><\/li><li><a href=\"https:\/\/github.com\/goran-mahovlic\/fpga-odysseus\">Plein de projets d&rsquo;exemples, notamment pour le HDMI<\/a><\/li><li><a href=\"https:\/\/github.com\/emard\/ulx3s\/blob\/master\/doc\/schematics_v317.pdf\">Le sch\u00e9ma de l&rsquo;ulx3s<\/a><\/li><\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ho mais je me rend compte que je n&rsquo;avais encore rien \u00e9crit sur la carte ULX3S command\u00e9e l&rsquo;\u00e9t\u00e9 dernier. Il faut dire que les d\u00e9lais d&rsquo;approvisionnement \u00e9tant ce qu&rsquo;ils sont aujourd&rsquo;hui la carte a tout de m\u00eame mis presque six mois \u00e0 arriver. J&rsquo;ai donc eu tout le temps de passer \u00e0 autre chose. Donc &hellip; <a href=\"http:\/\/www.fabienm.eu\/flf\/ulx3s\/\" class=\"more-link\">Continuer la lecture de <span class=\"screen-reader-text\">ULX3S<\/span> <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","footnotes":""},"categories":[24,1],"tags":[174,206,108,213,215,214,45],"class_list":["post-1982","post","type-post","status-publish","format-standard","hentry","category-materiel","category-non-classe","tag-ecp5","tag-hdmi","tag-lattice","tag-radiona","tag-sdcard","tag-usb","tag-yosys"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"post-thumbnail":false},"uagb_author_info":{"display_name":"Fabien Marteau","author_link":"http:\/\/www.fabienm.eu\/flf\/author\/admin\/"},"uagb_comment_info":1,"uagb_excerpt":"Ho mais je me rend compte que je n&rsquo;avais encore rien \u00e9crit sur la carte ULX3S command\u00e9e l&rsquo;\u00e9t\u00e9 dernier. Il faut dire que les d\u00e9lais d&rsquo;approvisionnement \u00e9tant ce qu&rsquo;ils sont aujourd&rsquo;hui la carte a tout de m\u00eame mis presque six mois \u00e0 arriver. J&rsquo;ai donc eu tout le temps de passer \u00e0 autre chose. Donc\u2026","_links":{"self":[{"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/posts\/1982","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/comments?post=1982"}],"version-history":[{"count":14,"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/posts\/1982\/revisions"}],"predecessor-version":[{"id":2007,"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/posts\/1982\/revisions\/2007"}],"wp:attachment":[{"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/media?parent=1982"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/categories?post=1982"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.fabienm.eu\/flf\/wp-json\/wp\/v2\/tags?post=1982"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}